- 加入我的QQ群
- 关注我的百家号
扫描下面的二维码,“关注”我的百家号。
解压Linux kernel源码包 linux-4.15.3.tar.xz
然后进入源码包, 运行以下命令准备编译
make mrproper
这将保证内核树的绝对干净。内核小组建议在每次编译之前都执行此命令,无用的代码将会在解压后删除。
如果不做内核定制,可以使用make defconfig
来入门,它将根据你的宿主机环境做相关的配置。
如果自己定义,可以输入make menuconfig
来自定义配置,请确认以下这些特性,是否禁用或启用
Device Drivers ---> Generic Driver Options ---> [ ] Support for uevent helper [CONFIG_UEVENT_HELPER] [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS] Kernel hacking ---> Choose kernel unwinder (Frame pointer unwinder) ---> [CONFIG_UNWINDER_FRAME_POINTER]
如果硬件用的是 UEFI,则需要开启如下一项。一般不会开启它
Processor type and features ---> [*] EFI stub support [CONFIG_EFI_STUB]
我在使用脚本命令无打扰安装的时候,是略过了配置这一项,而用之前相同内核版本的配置的kernel.config文件拿过来直接使用
cp /tools/kernel.config .config
编译
make
安装模块
make modules_install
拷贝对应的内核镜像
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-4.15.3-lfs-8.2
拷贝内核符号文件
cp -iv System.map /boot/System.map-4.15.3
拷贝之前命令 make menuconfig 里生成的内核配置文件 .config 包含了当前编译的内核的所有配置
cp -iv .config /boot/config-4.15.3
安装 Linux 内核文档
install -d /usr/share/doc/linux-4.15.3 cp -r Documentation/* /usr/share/doc/linux-4.15.3
配置 Linux 模块加载顺序
虽然大多数情况下,Linux 模块会被自动加载,但是有时候需要特别指定加载顺序。modprobe 或 insmod 在 加载模块时会读取 /etc/modprobe.d/usb.conf。如果将 USB 设备(ehci_hcd、ohci_hcd 和 uhci_hcd) 编译为模块,则需要此文件,这样它们就会以正确的顺序加载。ehci_hcd 需要在 ohci_hcd 和 uhci_hcd 之前 加载,否则在系统启动过程中将会输出警告。
运行以下命令建立 /etc/modprobe.d/usb.conf 文件
install -v -m755 -d /etc/modprobe.d cat > /etc/modprobe.d/usb.conf <<"EOF" install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true EOF