我已经有几年没有编译过 Linux 内核了,现在我又开始这样做了,我发现模块默认安装有调试符号,除非INSTALL_MOD_STRIP=1传递给make modules_install,这使得它们如此庞大,以至于我的 initrd 映像增长到了数百个兆字节。
我只是在谷歌INSTALL_MOD_STRIP搜索了相当多的时间后才找到了这个选项,即使这样,也只是在论坛帖子中,人们问为什么他们的模块如此大。
所以我想知道,当我使用预编译内核时,这种变化的原因是什么?是否有一个原因是模块现在默认安装有调试符号(即使二进制发行版仍然将它们剥离)?在内核中使用调试符号似乎相当深奥,而且在安装大小方面显然有很大的缺点。
基本上,我应该只考虑INSTALL_MOD_STRIP作为标准内核编译公式的一部分吗?从 ~2.6.25 开始,构建过程还有其他我应该注意的变化吗?
我试图了解将 Alpine 安装介质制作为只读类型 (LiveCD) 和标准磁盘模式(可以保存操作系统状态)有什么区别。modloop当本文的作者 ( https://wiki.alpinelinux.org/wiki/Create_UEFI_boot_USB ) 为 UEFI 启动模式配置加载程序条目时,我已经看到了该选项:
Contents of loader/entries/alpine.conf
title Alpine Linux
linux /boot/vmlinuz-hardened
initrd /boot/initramfs-hardened
options modloop=/boot/modloop-hardened modules=loop,squashfs,sd-mod,usb-storage quiet
Run Code Online (Sandbox Code Playgroud)
问题是本节modloop=/boot/modloop-hardened modules=loop,squashfs,sd-mod中列出的选项如何相互关联,它们的含义是什么?
我可以使用lsmod或获取模块列表cat /proc/modules。这两种方法是否使用相同的机制来检索模块?我想知道这一点,因为我们可以用它来找到一些隐藏的恶意模块。
我在互联网上阅读了几篇博客文章,似乎暗示可以启动至少一些带有无缓冲 ECC 内存和安装了 Xeon 43xx 处理器的 i7 主板。
我可以使用 X4370 处理器和标准非 ECC 内存启动我的 MSI P55-GD80 主板,但是当我安装两个无缓冲 ECC 内存 DIMM 时,它会挂起 FF 邮政编码。有趣的是,如果我错误地安装了内存,它会显示一小段邮政编码,然后发出无内存哔声代码。
我有一个很长的项目计划破解内存参考代码,以允许使用 ECC DIMM 启动(未启用 ECC),然后启用单个位纠错作为第二个项目。
有没有人试过这样做? 成功地?
我有一台 linux pc,其中配置了多个用户登录。对于同一台 PC,我有 root 访问权限(用户名和密码)。我丢失了其中一个用户帐户的密码。如何取回该特定用户帐户的密码。我已经尝试了以下作为 root 用户
passwd <login name>
Enter new password
confirm new password
Run Code Online (Sandbox Code Playgroud)
但它并不富有成效,请您提出一些恢复密码的方法。
另外,我知道密码以加密形式存储在 /etc/shadow 文件中。有谁知道如何获得加密密码的解密形式。
我有一台想摆弄的一次性廉价笔记本电脑,Thinkpad SL 500。
困扰我的是两个 LED,一个用于无线连接,一个用于休眠,它们根本不亮,尽管它们可以正常工作,但我已在 Windows 上尝试过。
所以我想为他们编写一个内核驱动程序,没什么大不了的,只是玩弄内核看起来是个好主意。
我的问题是我应该系统地遵循什么方法来找出哪些设备负责这些 LED(一般来说,不一定特定于我的硬件),以及哪些驱动程序负责其他两个 LED 工作,蓝牙和电池指示灯?
当我说方法论时,我真正的意思是方法论,一步一步,每一步都有原因,就像我在这里给其他人的答案一样:&&在 void *p = &&abc; 中是什么意思;
我精通使用静态代码分析器和 co 对大型代码存储库进行 fgrepping,但我认为我缺乏硬件知识阻碍了我解决这个问题。
PS:我使用的是 ArchLinux,所以几乎是最新的内核版本。
我正在从头开始构建 Linux。目前我有内核、glibc 和 sysvinit。我按照这些说明自己编译了所有内容。虽然我的glibc版本是2.19。另外,我使用 grub 而不是 lilo,但我认为这不会有任何效果。
不管怎样,当我启动时,我最后得到了这个:
Starting init: /sbin/init exists but couldn't execute it (error -8)
Kernel panic - not syncing: No working init found. (and so on)
Run Code Online (Sandbox Code Playgroud)
错误代码 8 表示可执行格式有问题。我还尝试制作另一个打印“asdf”的可执行文件,但这也不起作用(相同的错误)。
那么我应该使用旧版本的 glibc、另一个 c 库、另一个 init 程序(如 systemd)还是这些指令不好?
在基于Linux的操作系统中,我们可以找到内核版本和内核版本。那么Release和Version之间的确切区别是什么?
当我在 Windows PC 上安装 WSL2 后,我就安装了一个改编的 CentOS 8.2版本。当我探索它时,我发现我可以开箱即用地在主机的 NTFS 文件系统中进行读写。它也连接到互联网,但我无法找到管理连接的方法;Could not create NMClient object我可以安装网络管理器,但每当运行命令时我都会收到一个nmcli。我没有找到 SELinux ( getenforce)。我安装了firewalld,但随后firewall-cmd会抛出Failed to connect to socket /run/dbus/system_bus_socket. systemctl出现错误System has not been booted with systemd...,然后我了解到Windows 应用商店正在提供“Fedora Remix for WSL”,价格为 9.99 美元,并注明:
以下软件包已从 Fedora Remix for WSL 的默认安装中删除:grub、plymouth、kernel、sssd、linux-firmware、dracut、parted、e2fsprogs、iprutils、ppc64-utils、selinux-policy、policycoreutils、sendmail、firewalld、 fedora-release、fedora-logos 和 fedora-release-notes。
那么,主要问题是:WSL 如何限制 Linux 功能?
那么,我们感兴趣的显然是如何绕过它们:我首先担心的是:与互联网的连接安全吗?在我看来,如果人们可以通过某些服务连接到我的 WSL Linux,则没有防火墙可以阻止他们进入我的主机 PC。关于我上面写的内容:为什么我会收到该错误nmcli?到底有没有可能让 SELinux 运行起来?是否有可能像人们一样管理单位systemctl?
centos linux-kernel windows-subsystem-for-linux redhat-enterprise-linux wsl2