由于最近 Debian 更改了默认行为dmesg,我不能简单地从本地用户使用它。
% dmesg
dmesg: read kernel buffer failed: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
同样适用于:
% cat /dev/kmsg
cat: /dev/kmsg: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
以错误跟踪器为主角,这导致:
如何将此行为改回前一个行为,其中允许本地用户使用 dmesg。我找不到它的特定组(例如 sudoers 或类似的东西)。
在我当前的 Linux 系统(Debian Jessie amd64)上,我的dd使用行为有所不同/dev/urandom(/dev/random行为已正确记录)。如果我天真地想要 1G 的随机数据:
$ dd if=/dev/urandom of=random.raw bs=1G count=1
0+1 records in
0+1 records out
33554431 bytes (34 MB) copied, 2.2481 s, 14.9 MB/s
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)
在这种情况下,只存储了 34MB 的随机数据,而如果我使用多次读取:
$ dd if=/dev/urandom of=random.raw bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 70.4749 s, 14.9 MB/s
Run Code Online (Sandbox Code Playgroud)
然后我正确地得到了我的 1G 随机数据。
的文档/dev/urandom相当难以捉摸:
从 /dev/urandom 设备读取不会阻塞等待更多熵。因此,如果熵池中没有足够的熵,则返回值理论上容易受到对驱动程序使用的算法的加密攻击。当前未分类的文献中没有关于如何做到这一点的知识,但理论上可能存在这种攻击。如果这是您的应用程序中的一个问题,请改用 /dev/random。
我猜文档暗示urandom.
我还猜测我的系统上熵池的大小是 34MB,这可以解释为什么read1G 中的第一个失败了大约 …
我盯着以下的输出:
% file -b /lib/x86_64-linux-gnu/*.so | grep ", for" | colrm 1 130 | sort -u
=5018237bbf012b4094027fd0b96fc22a24496ea4, for GNU/Linux 3.2.0, not stripped
9f21d, for GNU/Linux 3.2.0, stripped
bee51, for GNU/Linux 3.2.0, stripped
, for GNU/Linux 3.2.0, stripped
sha1]=2e5abcee94f3bcbed7bba094f341070a2585a2ba, for GNU/Linux 3.2.0, stripped
Run Code Online (Sandbox Code Playgroud)
GNU/Linux 3.2.0 有什么特别之处?这是在 Debian/bullseye 系统 (amd64) 上。
换句话说:GNU/Linux 3.2.0 中引入了哪些 API/功能(线程模型、安全功能...)如此重要?所需版本的显式设置将阻止用户使用某些LD_ASSUME_KERNEL值,因此我猜测有充分的理由拒绝旧值,例如LD_ASSUME_KERNEL=2.4.19(例如)。
我想弄清楚为什么以下设备未在我的Creator CI20上设置为其驱动程序。作为参考,我使用的是 Linux 内核 v4.13.0 并在本地进行编译:
make ARCH=mips ci20_defconfig
make -j8 ARCH=mips CROSS_COMPILE=mipsel-linux-gnu- uImage
Run Code Online (Sandbox Code Playgroud)
从正在运行的系统中,我可以看到:
ci20@ci20:~# find /sys | grep rng
/sys/firmware/devicetree/base/jz4780-cgu@10000000/rng@d8
/sys/firmware/devicetree/base/jz4780-cgu@10000000/rng@d8/compatible
/sys/firmware/devicetree/base/jz4780-cgu@10000000/rng@d8/name
/sys/bus/platform/drivers/jz4780-rng
/sys/bus/platform/drivers/jz4780-rng/bind
/sys/bus/platform/drivers/jz4780-rng/unbind
/sys/bus/platform/drivers/jz4780-rng/uevent
Run Code Online (Sandbox Code Playgroud)
所以设备在运行时被内核看到,现在缺少的部分是为什么驱动程序从未绑定?我会期待这样的事情:
/sys/bus/platform/drivers/jz4780-rng/100000d8.rng
Run Code Online (Sandbox Code Playgroud)
我确实找到了其他一些解释如何调试正在运行的系统的帖子,例如:
虽然这些帖子上的信息是准确的,但对我来说并不是很有帮助。由于我在本地构建我的内核(我printk在jz4780-rng驱动程序的探测功能中添加了),我的问题是:
jz4780-rng驱动程序调用探测函数的准确信息?driver_probe_device?我printk可以在代码中的任何地方添加来调试它。问题是:哪个函数正在遍历设备树并调用probe/init 函数?
以供参考:
$ dtc -I fs -O dts /sys/firmware/devicetree/base | grep -A 1 rng
rng@d8 {
compatible = "ingenic,jz4780-rng";
};
Run Code Online (Sandbox Code Playgroud)
兼容字符串声明为:
cgu: jz4780-cgu@10000000 {
compatible = …Run Code Online (Sandbox Code Playgroud) 有没有办法(除了在目标机器上允许 root 登录)来解决以下问题:
$ ssh 192.168.0.14
user@192.168.0.14's password:
"System is booting up. Unprivileged users are not permitted to log in yet. Please come back later. For technical details, see pam_nologin(8)."
Run Code Online (Sandbox Code Playgroud)
我正在尝试远程调试无法启动 X 会话。
目前,以下链接对我不起作用:
我正在尝试一个天真的:
$ cat * | sort -u > /tmp/bla.txt
Run Code Online (Sandbox Code Playgroud)
失败了:
-bash: /bin/cat: Argument list too long
Run Code Online (Sandbox Code Playgroud)
因此,为了避免像(创建一个巨大的临时文件)这样的愚蠢解决方案:
$ find . -type f -exec cat {} >> /tmp/unsorted.txt \;
$ cat /tmp/unsorted.txt | sort -u > /tmp/bla.txt
Run Code Online (Sandbox Code Playgroud)
我虽然我可以使用一个一个地处理文件(这应该减少内存消耗,并且更接近流式机制):
$ cat proc.sh
#!/bin/sh
old=/tmp/old.txt
tmp=/tmp/tmp.txt
cat $old "$1" | sort -u > $tmp
mv $tmp $old
Run Code Online (Sandbox Code Playgroud)
接着是:
$ touch /tmp/old.txt
$ find . -type f -exec /tmp/proc.sh {} \;
Run Code Online (Sandbox Code Playgroud)
是否有更简单的更 unix 风格的替代:cat * | sort -u当文件数量达到时MAX_ARG?为这样一个常见的任务编写一个小的 shell 脚本感觉很尴尬。
我参考了以下链接,解决方案有效。
当您手动删除文件时,上述解决方案有效。但我有一个删除文件的 python 脚本(自动过程)。有时,当脚本尝试删除文件时,我会收到“设备或资源繁忙错误”。因此,我的脚本失败了。我不知道如何使用我的 python 脚本解决这个问题。
编辑: 脚本从日志服务器下载日志文件。然后这些文件由我的脚本处理。处理完成后,脚本会删除这些日志文件。我不认为设计有什么问题。
确切错误:
OSError: [Errno 16] Device or resource busy: '/home/johndoe/qwerty/.nfs000000000471494300000944'
Run Code Online (Sandbox Code Playgroud) UBIFS在基于MLC NAND 的Linux 中的地位从来都不是完美的。虽然如今此条目已从常见问题解答中删除,但现在官方报告称不支持 MLC NAND 上的 UBIFS:
patchwork.kernel.org 上的完整线程:
所以我现在正在寻找MIPS Creator CI20上的 MLC NAND 的长期文件系统替代品:
这是三星 K9GBG08UOA NAND 闪存,似乎没有办法将此设备置于 SLC 模式。
似乎 jffs2 也不是替代品:
是否有其他替代文件系统(可能具有可比的性能)?
我在旧的 Mac Mini G4 上使用 Debian/PPC,它目前用作 DLNA 服务器 (UPnP),没有插入鼠标或键盘。
我希望我的电源按钮也可以关闭盒子。目前它什么都不做,在最近的 x86 上,我会使用这里描述的 ACPI 。
但是,我的 G4 盒子中似乎没有 ACPI(例如,请参见此处或此处),仅pbbuttonsd可用,请参阅链接。
我找不到按下电源按钮时是否发送了任何事件(APM 类型?)。我知道我可以按住电源按钮 4 秒然后机器停止,但我更喜欢干净的关机。作为最后的手段,我可以插入键盘,但我正在寻找没有鼠标或键盘的解决方案。
怎么做呢?
编辑:使用 web.archive.org 我能够阅读:http ://web.archive.org/web/20110317165103/http://blog.blinker.net/2010/06/20/mac-mini-g4- homeserver-with-ubuntu-linux-10-04-wpa2/
我使用了建议的解决方案:
我通过安装 pbbuttonsd 在我的 G4 Quicksilver 和 Ubuntu 上工作。
我不得不修改 /etc/pbbuttonsd.conf 并更改这一行:
OnAC_KeyAction = 无
到:
OnAC_KeyAction = 关机
我运行 /etc/init.d/pbbuttonsd restart 重新启动守护程序,然后电源按钮起作用以触发干净关闭。
但这对我不起作用,也许 PowerBook 和 Mac Mini G4 之间存在差异。
出于某种原因,我无法 cd 进入我有权访问的特定远程目录,它失败了:
$ cd Data\ Services/
-bash: cd: Data Services/: Invalid argument
Run Code Online (Sandbox Code Playgroud)
这是我安装它的方式:
$ sudo mount -t cifs //big.acme.corp/network/ ~/z -o username=myuser,domain=mydomain,uid=$(id -u),gid=$(id -g),vers=1.0
Password for myuser@//big.acme.corp/network/: *********
Run Code Online (Sandbox Code Playgroud)
我可以从我的 Windows 8 笔记本电脑(相同的用户名/密码)访问它。
以供参考:
$ ls -ald "Data Services"
drwx--x--x 2 myuser myuser 0 Dec 13 09:21 Data Services
Run Code Online (Sandbox Code Playgroud)
至少在我这边,这个快捷方式似乎被视为一个目录:
$ find Data\ Services -type d
Data Services
find: ‘Data Services’: Invalid argument
Run Code Online (Sandbox Code Playgroud)
因此,我不能用它做太多事情:
$ cat Data\ Services
cat: Data Services: Invalid argument
Run Code Online (Sandbox Code Playgroud)
甚至
$ hexdump Data\ Services
hexdump: Data …Run Code Online (Sandbox Code Playgroud)