在GRUB和menu.lst的帮助下运行脚本?

时间:2010-01-14 06:25:41

标签: linux startupscript

我无法通过在/boot/grub/menu.lst中的Linux条目中添加一行来运行 myScript

title           Ubuntu 9.04, kernel 2.6.28-11-generic
uuid            b20f1720-b3f5-4162-bc92-ab2deb8d5d04
#kernel         /boot/vmlinuz-2.6.28-11-generic root=UUID=b20f1720-b3f5-4162-kernel/boot/vmlinuz-2.6.28-11-generic root=UUID=b20f1720-b3f5-4162-bc92-ab2deb8d5d04 ro
initrd          /boot/initrd.img-2.6.28-11-generic
/home/baltoros/Desktop/myScript

是否可以在这个时间点运行myScript?

2 个答案:

答案 0 :(得分:2)

在奇怪的情况下,你需要内核加载'init'以外的东西(反过来调用rc脚本),你可以在grub的init=/path/to/program行附加kernel ,它告诉内核第一个运行的程序。

例如:

kernel /boot/vmlinuz-2.6.xx root=/dev/sda3 ro init=/bin/bash

...将运行bash而不是init,这意味着不会运行rc脚本。 Bash会有PID 1,就像init通常那样。

这对于自助服务终端,移动设备以及独立管理其服务的其他内容非常有用(或者根本不管理)。

否则,正如其他人所说的那样,只需编写一个init脚本并将其命名为与您希望它运行的引导过程中的哪一点一致。

答案 1 :(得分:1)

如果要在启动过程中运行脚本,则需要使用init执行此操作。

在适当的运行级别(如果运行GUI,则很可能为5,如果只是启动到命令行,则为3)目录,则需要添加S ##脚本。

在我的主系统上,那将是:

/etc/rc.d/rc5.d/S00whatever 

并在那里添加脚本命令。因为我使用了多个00,所以你的脚本将在启动过程中很早就运行。因此,很少有服务会启动(例如,网络将不会被初始化)。如果您只想在启动过程中运行脚本并且在启动过程中不需要它,那么您需要使用更高的数字:

/etc/rc.d/rc5.d/S98whatever