The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
смена 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, 11:55 , 04-Май-07 (1)
    Все... Проблема решена.
    Ответ прост. Копать нужно было 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 не умеет передавать ядру такие ключи, хотя в документации они утверждают обратное. Но я как не крутил - не получалось.
    Спасибо.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру