web-dev-qa-db-ja.com

Linuxカーネル3.14のコンパイルがUbuntu 14.04でエラーなしで停止する

Linuxカーネル3.14をubuntu 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コマンドに追加すると、すべてが魅力のように機能しました。

1

問題は、[〜#〜] lilo [〜#〜]がレガシーブートローダーであり、機能がないためにほとんどのLinuxディストリビューションで使用されていないことです。最近のディストリビューションでは、[〜#〜] grub [〜#〜]が広く使用されています。

したがって、GRUBで新しくコンパイルされたLinuxカーネルを使用する場合は、公式のLinuxカーネルMakefileがそれを行わないため、手動で/ bootディレクトリにコピーする必要があります。

次のコマンドはあなたのためにそれをします:

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

[〜#〜] ps [〜#〜]rmコマンドを使用して、/ bootディレクトリの古いvmlinuzおよびinitramfsを削除する必要があります。 mkinitcpioを使用します。

[〜#〜] ps [〜#〜]:この命令は、テストするときにLinux Archで機能します。

この質問をLinuxおよびUnixスタックに移動できますか?

0
malloc