URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6436
[ Назад ]

Исходное сообщение
"смена runlevel во время загрузки"

Отправлено den23513 , 03-Май-07 22:33 
Доброе всем время суток!
У меня задача сделать загрузочный сидюк с двумя опциями:
1) загрузка в консоль (init 3)
2) загрузка в кдм (init 5)

Я придумал такую схему:
В isolinux.cfg прописываю следующее:
LABEL 1
    MENU LABEL Boot to kde
    KERNEL /boot/linux
    APPEND root=/dev/ram0 initrd=initrd.gz init=linuxrc rw livecd boot_to_kde load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444 verbose vga=791

LABEL 2
    MENU LABEL Safe boot (recovery console)
    KERNEL /boot/linux
    APPEND root=/dev/ram0 initrd=initrd.gz init=linuxrc rw livecd load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444 verbose

Обратите внимание на ключ boot_to_kde в первом ярлыке

Затем создал скипт запускающийся до того как init переходит на 3 уровень, который в моем inittab является по умолчанию:
#! /bin/bash
# Check if this script running from CDROM
if grep -iq "livecd" /proc/cmdline; then
    if grep -iq "boot_to_kde" /proc/cmdline; then
    sed -i 's/id:3:initdefault:/id:5:initdefault:/' /etc/inittab
    fi
fi

Загрузка происходит без ошибок, в фаиле inittab меняется значение уровня по умолчанию на 5, но система остается на третьем уровне.
Где копать?

Когда система установлена на HD и используя загрузчик лило можно передать ядру ключ init 5
тогда все работает (проверено). А syslinux не понимает такого ключа :-(
Какие будут предложения?
Заранее благодарен.


Содержание

Сообщения в этом обсуждении
"смена runlevel во время загрузки"
Отправлено den23513 , 04-Май-07 11:55 
Все... Проблема решена.
Ответ прост. Копать нужно было initrd.gz а не скрипты после него.
В скрипте linuxrc добавил проверку на ключ:

#start of linuxrc
...
...
if grep -iq "livecd" /proc/cmdline; then
    if grep -iq "boot_to_kde" /proc/cmdline; then
       INIT_LEVEL=5
    else
       INIT_LEVEL=3
    fi
fi
...
...
...
exec chroot . /sbin/init ${INIT_LEVEL} ....
...
#end of linuxrc

А ваще очень странно что такой мощный пакет загрузки как syslinux не умеет передавать ядру такие ключи, хотя в документации они утверждают обратное. Но я как не крутил - не получалось.
Спасибо.