我一直在用 C++ 编写一个应用程序,它通过写入连接到串行端口的调制解调器来传输无线电消息。为此,我需要使用以下形式的代码获取文件描述符
fd1=open(“/dev/ttyS0?, O_RDWR | O_NOCTTY | O_NDELAY);
Run Code Online (Sandbox Code Playgroud)
这让我对 /dev 中项目的性质感到好奇。为了尝试了解这些项目的内容,我尝试了
sudo cat /dev/ttyS0
Run Code Online (Sandbox Code Playgroud)
只为得到消息
cat: /dev/ttyS0: Input/output error
Run Code Online (Sandbox Code Playgroud)
这根本没有帮助我的理解。这些项目实际上是一个文件还是只是一种允许访问驱动程序功能的链接?
可能的重复:
为什么 Ubuntu 只显示 3GB 的内存?
前几天买了戴尔XPS 13。安装了 64 位版本的 ubuntu,并将内核更改为:
3.2.0-29-generic #46+kamal5~DellXPS-Ubuntu SMP Sun Jul 29 18:49:08 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
我的系统只能看到 3.2GB (3275MB) 的 4GB 内存。我检查了股票的 ubuntu 内核,情况是一样的。显卡是Intel HD3000。
pmd@daftbook:~$ free -m
total used free shared buffers cached
Mem: 3275 2580 695 0 321 1100
-/+ buffers/cache: 1158 2117
Swap: 2047 0 2047
Run Code Online (Sandbox Code Playgroud)
来自 lshw:
*-memory
description: System Memory
physical id: 4
slot: System board or motherboard
size: 4GiB
*-bank:0
description: DIMM DDR3 Synchronous 1333 MHz …
Run Code Online (Sandbox Code Playgroud) 是一种完全用软件实现的虚拟网络设备。
但是这个实现实际上是如何完成的,你如何操作它呢?
据我所知,IP在本地路由表中被标记为本地:
ip route show table local
Run Code Online (Sandbox Code Playgroud)
发送到标记为本地的 IP 将触发环回设备。 但是这种检测是完全由路由表完成的还是由其他一些内核操作完成的?
编辑:我的最终目标是操纵循环设备配置,以便在我的笔记本电脑上的接口(两个 wlan 适配器)之间发送数据报将导致网络中的真实流量/数据报,而不是本地循环。接口 1 -> WLAN -> 接口 2 而不是:接口 1 -> LOOP -> 接口 2
我刚刚从 3.13.0-40 升级到 3.13.0-43,现在我无法启动 - 我的系统挂在带有五个橙色点的 ubuntu 闪屏上。我的粉丝都在全倾斜运行,系统完全没有响应 - 我无法按 ctrl-alt-f1 进入命令提示符。
我确定这与升级有关,因为我仍然可以启动到 3.13.0-40 就好了。我试过重新安装 linux-generic 和 linux-image-generic,它没有改变任何东西。
当我查看 syslog 时,似乎没有任何来自失败启动的条目。
我如何解决导致我的系统挂起的内核版本的问题?
系统规格:Ubuntu 14.04,AMD Radeon HD 7750 显卡,使用开源驱动
我需要sudo modprobe wacom
在启动时运行以防止在将标准 Wacom Intous (CTH-480) 平板电脑插入库存 Xubuntu 14.04 LTS 上的 USB 端口时发生不可恢复的内核恐慌(黑屏掉到终端,重复 1 秒音频循环和零响应) . 我相信主线内核前段时间解决了这个问题。
此配置的首选位置在哪里?它必须作为root
.
我看过这个
如何在启动时运行脚本?但我不确定哪个答案适用于modprobe
.
因为这个答案仅适用于内核 3.13,所以我想分享Failed to build vmnet
内核 3.19 及更早版本的问题的解决方案。因此,这不是我的实际问题,只是为了帮助未来的读者。
当我第一次想运行 VMware Workstation 或 VMware Player 时,它需要在内核级别部署一些包,但它失败并出现这行错误。
无法构建 vmnet。无法执行构建命令。
我应该怎么做才能解决这个问题?
我的系统上安装了两个内核。3.16... 和 3.19.3...我正在运行 Ubuntu 14.10,它带有 3.16...内核。我决定尝试最新的内核(3.19.3...),但我有时会出错并且系统感觉不稳定。我认为没有理由保留这个新内核。如果我选择启动到较旧的内核,然后使用 Synaptic 删除较新的内核,是否会遇到任何问题?一旦我重新启动,我会遇到问题,还是 Ubuntu 会自动启动到旧内核而不大惊小怪?
任何有关正确程序以及最能实现我的目标的方法的建议将不胜感激。谢谢。
我有一个带有 RAID1 根分区的服务器,但它在两个驱动器中的每一个上都有一个用于 /boot 的小分区:每当进行更新时,我都会将一个“dd”到另一个。
不幸的是 /boot 分区太小 - 当内核更新时 initramfs 没有空间将新的 initrd.img 写入该分区。修复分区大小意味着暂时剥夺公司的关键服务,我想避免这种情况。
据我了解 grub 启动,initrd.img 只在真正的分区被挂载之前使用。是否可以在系统运行时删除现有的 initrd.img 并释放空间来构建新的?
我想为几个人运行一个老式的 shell 服务器,即。一种用户可以获得 ssh 访问权限,以便他们可以运行软件(他们自己的或提供的)。我关心的是用户之间的适当分离。
我不希望他们查看彼此的进程、访问彼此的文件(除非明确允许)等。最好不要被每个权限提升错误所困扰,或者每次小内核更新时都不会重新启动服务器。在这些安全措施到位的情况下,保留运行公共服务(如网络和邮件托管)的选项将是完美的。
回到我使用 grsec 的那一天,但这需要使用较旧的内核并处理自己编译的麻烦。是否有更现代、更 Ubuntu 的方式来确保共享服务器上的用户分离?
也许你可以用 AppArmor 做点什么来达到这个效果?或者也许有一个为共享环境预先配置的内核存储库?还是基于容器的解决方案?这些最近很流行。
每当我更新 Linux 时,例如从 4.4.0.65 到 4.4.0.66 :
initrd.img-4.4.0.XX-generic
在尝试最新版本之前,软件更新工具会下载大约 40 个以前的版本/boot
填上从版本 29 开始,我已经处理了很长时间。
我发现的唯一解决方法每次更新需要我一个小时。我在更新期间打开命令行,并在下载版本时删除它们。最终,更新工具满意它已下载所有以前的版本、下载最新版本并配置系统。
这是来自的输出 dpkg -l | grep linux-image
rc linux-image-3.19.0-15-generic 3.19.0-15.15 amd64 Linux kernel image for version 3.19.0 on 64 bit x86 SMP
rc linux-image-4.2.0-34-generic 4.2.0-34.39 amd64 Linux kernel image for version 4.2.0 on 64 bit x86 SMP
ii linux-image-4.2.0-35-generic 4.2.0-35.40 amd64 Linux kernel image for version 4.2.0 on 64 bit x86 SMP
ii linux-image-4.4.0-21-generic 4.4.0-21.37 amd64 Linux kernel image for version 4.4.0 …
Run Code Online (Sandbox Code Playgroud)