Запускать скрипт с помощью GRUB и menu.lst? - PullRequest
1 голос
/ 14 января 2010

Не могу ли я запустить myScript , добавив строку к записи Linux в /boot/grub/menu.lst как:

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 ]

2 голосов
/ 14 января 2010

В нечетных случаях, когда вам нужно ядро ​​для загрузки чего-то другого, кроме 'init' (который, в свою очередь, вызывает скрипты rc), вы можете добавить init=/path/to/program в строку kernel в grub, которая сообщает kernel первая программа для запуска.

Например:

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

... будет запускать bash вместо init, что означает, что никакие сценарии rc не будут запускаться. Bash будет иметь PID 1, как обычно init.

Это полезно для киосков, мобильных устройств и других вещей, которые управляют своими услугами независимо (или вообще не управляют ими).

В противном случае, как уже говорили другие, просто напишите сценарий инициализации и назовите его так, чтобы он совпадал с той точкой процесса загрузки, которую вы хотите запустить.

1 голос
/ 14 января 2010

Если вы хотите запустить скрипт как часть процесса загрузки, вы должны сделать это с помощью init .

В соответствующем уровне запуска (скорее всего 5, если вы запускаете графический интерфейс, но 3, если вы загружаетесь только из командной строки), вы захотите добавить скрипт S ##.

В моей основной системе это будет:

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

и добавьте туда свои команды скрипта. Поскольку я использовал число 00, ваш скрипт будет запущен очень рано в процессе загрузки. Из-за этого будет запущено очень мало служб (например, сеть не будет инициализирована). Если вы просто хотите запустить скрипт как часть загрузки и не нуждаетесь в нем в самом начале процесса загрузки, вам нужно использовать большее число:

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