帮助linux内核编译脚本

时间:2010-12-05 18:11:25

标签: bash shell linux-kernel

我编写了一个编译内核的脚本:

cd /usr/src/linux-2.4.18-14custom
make bzImage
make modules
make modules_install
cd arch/i386/boot
yes|cp bzImage /boot/vmlinuz-2.4.18-14custom
cd /boot
yes|mv 2.4.18-14custom.img 2.4.18-14custom.img.back
mkinitrd 2.4.18-14custom.img 2.4.18-14custom
reboot

如果我执行控制台中的每一行都可以,但是当我将所有这些行放在脚本中时,它只执行这两行并结束:

    make bzImage
    make modules

任何让它运作的想法?

1 个答案:

答案 0 :(得分:0)

内核构建

make -C /usr/src/linux help显示了构建和安装内核的选项。

  • initramfs允许内置的initrd等价物,不需要后期构建工作。我不知道是否已将其移植到linux-2.4;但为什么2.4?

  • 使用make all install modules_install安装所有内容。也许2.4 Makefile也需要一个单独的“模块”目标。

切换到initramfs后,可能只需一个make命令即可完成所有操作:

 make -C /usr/src/linux  all install modules_install

脚本

有关安装脚本的示例,请参阅 arch / i386 / boot / install.sh 。另外,在同一目录中看到 Makefile ,看看它是如何工作的。如果存在系统范围的installkernel脚本(Gentoo中的 / sbin / installkernel ),或者用户一个$ HOME / bin / installkernel,则会使用该脚本。

最初使用此问题发布的脚本将在适当的条件下运行。我跑了;但是伪造了mkinitrd,并且跳过了重启。

  • 脚本不检查失败。它应该在make失败时停止,如果mv或cp的旧fies不存在则不会失败。
  • 化妆品:yes|mvyes|cp应替换为cp -fmv -f。请参阅手册页(或mv --helpcp --help)。