Linux 内核 3.14 的编译在 ubuntu 14.04 上停止,没有任何错误

Linux 内核 3.14 的编译在 ubuntu 14.04 上停止,没有任何错误

我正在尝试3.14在 ubuntu 上编译 linux 内核14.04。在任何人指出之前,我知道有较新的稳定版本的内核可用,但我被要求3.14自行安装。因此,我编写了一个脚本,它可以解压源 tar 并开始构建内核。但它中途停止而没有生成任何错误。我试图摆弄代码,但每次仍然会出现相同的错误。

脚本片段:

# Prepare for compilation
make -j1 mrproper
# Set default configuration
make -j1 defconfig
# Compile the kernel image and modules
make -j1
# Install the modules
make -j1 modules_install
# Install the firmware
make -j1 firmware_install

# Install the kernel
cp -v arch/x86_64/boot/bzImage /boot/vm_linuz-3-14-systemd
# Install the map file
cp -v System.map /boot/system-map-3-14-systemd
# Backup kernel configuration file
cp -v .config /boot/config-backup-3-14

日志的最后几行:

 LD [M]  net/ipv4/netfilter/iptable_nat.ko
 LD [M]  net/ipv4/netfilter/nf_nat_ipv4.ko
 LD [M]  net/netfilter/nf_nat.ko
 LD [M]  net/netfilter/nf_nat_ftp.ko
 LD [M]  net/netfilter/nf_nat_irc.ko
 LD [M]  net/netfilter/nf_nat_sip.ko
 LD [M]  net/netfilter/xt_LOG.ko
 LD [M]  net/netfilter/xt_mark.ko
 LD [M]  net/netfilter/xt_nat.ko
 HOSTCC  arch/x86/boot/tools/build
 CPUSTR  arch/x86/boot/cpustr.h
 CC      arch/x86/boot/cpu.o
 MKPIGGY arch/x86/boot/compressed/piggy.S
 AS      arch/x86/boot/compressed/piggy.o
 LD      arch/x86/boot/compressed/vmlinux
 ZOFFSET arch/x86/boot/zoffset.h
 OBJCOPY arch/x86/boot/vmlinux.bin
 AS      arch/x86/boot/header.o
 LD      arch/x86/boot/setup.elf
 OBJCOPY arch/x86/boot/setup.bin
 BUILD   arch/x86/boot/bzImage
 Setup is 15232 bytes (padded to 15360 bytes).
 System is 5433 kB
 CRC 62b609cb
 Kernel: arch/x86/boot/bzImage is ready  (#1)

 Building modules, stage 2.
   MODPOST 11 modules
   CC      drivers/thermal/x86_pkg_temp_thermal.mod.o
   LD [M]  drivers/thermal/x86_pkg_temp_thermal.ko
   CC      net/ipv4/netfilter/ipt_MASQUERADE.mod.o
   LD [M]  net/ipv4/netfilter/ipt_MASQUERADE.ko
   CC      net/ipv4/netfilter/iptable_nat.mod.o
   LD [M]  net/ipv4/netfilter/iptable_nat.ko
   CC      net/ipv4/netfilter/nf_nat_ipv4.mod.o
   LD [M]  net/ipv4/netfilter/nf_nat_ipv4.ko
   CC      net/netfilter/nf_nat.mod.o
   LD [M]  net/netfilter/nf_nat.ko
   CC      net/netfilter/nf_nat_ftp.mod.o
   LD [M]  net/netfilter/nf_nat_ftp.ko
   CC      net/netfilter/nf_nat_irc.mod.o
   LD [M]  net/netfilter/nf_nat_irc.ko
   CC      net/netfilter/nf_nat_sip.mod.o
   LD [M]  net/netfilter/nf_nat_sip.ko
   CC      net/netfilter/xt_LOG.mod.o
   LD [M]  net/netfilter/xt_LOG.ko
   CC      net/netfilter/xt_mark.mod.o
   LD [M]  net/netfilter/xt_mark.ko
   CC      net/netfilter/xt_nat.mod.o
   LD [M]  net/netfilter/xt_nat.ko
 sh /finalize-system/linux-kernel/linux-3.14/arch/x86/boot/install.sh      3.14.21 arch/x86/boot/bzImage \
    System.map "/boot"
 Cannot find LILO.

更新

我已经更新了我的构建日志。这次它显示错误Cannot find LILO。但我已在系统上安装Grub 2。那为什么它要求LILO?可能这是从一开始的错误,这次它在屏幕上显示了它。

答案1

ARCH=x86_64在所有命令中添加标志后make,一切都运行正常。

答案2

问题是,莉萝是传统引导加载程序,由于功能不足,几乎没有 Linux 发行版再使用它。在现代发行版中,GRUB被广泛使用。

因此,如果你想在 GRUB 中使用新编译的 Linux 内核,你应该手动将其复制到/启动目录,因为官方的Linux内核Makefile不会为你做这件事。

以下命令可以为您完成此操作:

sudo make headers_install INSTALL_HDR_PATH=/usr/src/linux-5.0.2
sudo cp arch/x86_64/boot/bzImage /boot/vmlinuz-5.0.2
sudo cp System.map /boot/System-5.0.2.map
sudo mkinitcpio -k 5.0.2 -c /etc/mkinitcpio.conf -g /boot/initramfs-5.0.2.img

附言:你应该删除旧的维姆林兹初始化内存文件系统/启动通过使用目录R M命令,在使用之前启动

附言:经我测试,该指令在 Linux Arch 上有效。

有人可以将这个问题转移到更合适的 Linux 和 Unix 堆栈吗?

相关内容