Сайт | Скачать | Видео | Wiki

Автор Тема: [INITRAMFS] pinitrd - новый рамдиск для щенка, копмилируем sh-скрипты  (Прочитано 38284 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Стандартная загрузка без диалогов. С опцией config или при ошибке - открывается меню
Это понятно. В меню то что? Что кроме синенького фона даст dialog против обычного:
echo "Please enter PRA dir name":
read DIRNAME

Какие вообще меню предполагаются? То есть что от пользователя требуется вводить/выбирать?
Где будет храниться введенное? На одну загрузку или внешний конфиг для инитрд?

Оффлайн Pasha__kun

  • Пользователь
  • **
  • Сообщений: 26
  • Репутация: +1/-0
  • Автор темы
Какие вообще меню предполагаются
Главное меню, настройка модулей, настройка загрузки (опции ядра), параметры системы (опции ядра, читаемые не ядром/initrd), сохранение и выход.

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

Оффлайн Pasha__kun

  • Пользователь
  • **
  • Сообщений: 26
  • Репутация: +1/-0
  • Автор темы
Пока есть беда с ncurses и русским языком, пол дня уже ничего не работает. В консоли (echo) русский текст работает. Dialog на хосте с русским работает. Тот же самый dialog в initrd не работает. Выглядит это вот так:


Может кто знает, как побороть?

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Главное меню, настройка модулей, настройка загрузки (опции ядра), параметры системы (опции ядра, читаемые не ядром/initrd), сохранение и выход.
Как вы собираетесь передавать ядру не из cmdline ядра? Система будет брать параметры тоже из /proc/cmdline, не думаю, что туда можно записать. Если вся задумка только в том как разрулить для новичка load/noload может проще добавить интерактивный режим загрузки при котором перед подключением каждого найденного модуля (игнорируя noload)  спрашивать подключать его или нет. Или я вообще не о том?
На одну загрузку, с возможностью сохранить в каталог паппи.
Если на одну загрузку как это поможет юзверю? Если с сохранением, то опять проблема. О том откуда  читается ядро и инитрд знает только загрузчик. То есть инитрд не  в курсе откуда его прочитали, а значит не в курсе где брать этот конфиг если путь не передать параметром через тот же cmdline ядра. Это же относится и к файлу со списком модулей. Есть мысли как обойти? Особенно учитывая заявленную вами возможность загрузки по сети.

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Пока есть беда с ncurses и русским языком, пол дня уже ничего не работает. В консоли (echo) русский текст работает. Dialog на хосте с русским работает. Тот же самый dialog в initrd не работает. Выглядит это вот так:
Были такие проблемы с mc в uird. Если вспомню напишу как лечиться.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Dialog можно статический собрать? Если да то попробовать
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Pasha__kun

  • Пользователь
  • **
  • Сообщений: 26
  • Репутация: +1/-0
  • Автор темы
Как вы собираетесь передавать ядру не из cmdline ядра?
Include в конфиге grub, например.
Код
# grub.conf
menuentry 'Puppy linux' {
  set prefix=hd0,gpt1
  . /puppy/puppy_boot.conf
}

перед подключением каждого найденного модуля спрашивать подключать его или нет
Можно и так

Если на одну загрузку как это поможет юзверю?
Например: Обновление сломало систему. Отключаем модуль с обновлением, загружаемся, откатываем (или ставим другое обновление).

О том откуда  читается ядро и инитрд знает только загрузчик
Не, ну каталог с модулями initrd знает.

Особенно учитывая заявленную вами возможность загрузки по сети
Думаю отказаться от нее и сделать упор на простоту настройки через dialog.

Пока идей очень много

Dialog можно статический собрать
Он у меня статически собран

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Include в конфиге grub, например.
Это добавит параметр в cmdline при загрузке ядра. А из интрд то как? Ядро загружено.
Например: Обновление сломало систему. Отключаем модуль с обновлением, загружаемся, откатываем (или ставим другое обновление).
Проще в меню груба добавить пункт загрузки без модулей с обновлениями. Нет?
Не, ну каталог с модулями initrd знает.
Тогда выходит как про яйцо и курицу. Вы не можете передать в инитрд из конфига расположение папки с модулями ибо для поиска конфига нужна инфа о рапосложении папки с модулями :)



Оффлайн Pasha__kun

  • Пользователь
  • **
  • Сообщений: 26
  • Репутация: +1/-0
  • Автор темы
Ядро загружено.
После перезагрузки. Далеко не все опции реально нужны ядру. Например, сохраненка или модули.

Проще в меню груба добавить пункт загрузки без модулей с обновлениями. Нет?
Возможно, кому-то проще.

Вы не можете передать в инитрд из конфига расположение папки с модулями ибо для поиска конфига нужна инфа о рапосложении папки с модулями
Часто ли вы перемещаете модули? Расположение папки с модулями не изменяется. Оно записывается в конфиг при установке и изменяется при переустановке initrd.

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
После перезагрузки
То есть предлагаете из инитрд писать в конфиги загрузчика? Не думаю, что хорошая идея. Инитрд в общем случае не знает ни где загрузчик, ни что за загрузчик. Можно конечно прибить гвоздями, но в итоге получится система которая нормально работает только в стандартных стерильных условиях со своим загрузчиком из одной папки и т.д.
Расположение папки с модулями не изменяется. Оно записывается в конфиг при установке и изменяется при переустановке initrd.
То есть если я хочу параллельно со сборкой в /pra64 завести для тестов такую же сборку в папке /pra_test мне нужно пересобрать инитрд?
З.Ы. Не подумайте, что придираюсь. Как раз наоборот хочу понять нехватка каких возможностей в стандартном инитрд pra или тем паче в uird сподвигла вас на написание собственной реализации. Пока не уяснил. Может в результате обсуждения что-то родится :)

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Далеко не все опции реально нужны ядру. Например, сохраненка или модули.
То есть предлагаете из инитрд писать в конфиги загрузчика?
Зачем? Вы привыкли передавать параметры загрузки скрипту init через cmdline. Но это костыль, этого можно и не делать, а задавать их "на лету".
Вот мой cmdline:
Код
# cat /proc/cmdline 
dev=sda1 dir=BB_64 UUID="5682bcea-ad74-486f-892b-f82c534922d1" video=LVDS-1:d
Устройство, каталог, /home (по UUID), последний параметр специально для моей видеокарты. Но если я уберу эти параметры, система тоже загрузится, только несколько медленнее из-за поиска файлов. Если приостановить исполнение скрипта init (linuxrc.sh) в самом начале после mount -t rootfs , то можно добавить|изменить любые параметры загрузки в командной строке или через dialog, это как вам больше нравится.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Зачем? Вы привыкли передавать параметры загрузки скрипту init через cmdline
Это я понимаю. Более того в магос и сейчас так. Можно добавить в cmdline "qs", загрузка остановится в начале работы uird, все локальные носители будут смонтированы в /mnt/sda1, /mnt/sda2 и т.д. Далее можно отредактировать хоть конфиг uird, хоть конфиг самого магос. А после можно перезагрузить либо продолжить загрузку.
Но тут речь о параметрах ядра, а их без ребута не применить, а значит придется писать в конфиг загрузчика.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Но тут речь о параметрах ядра
Я понял так, что редактироваться будут только параметры загрузки системы. Параметры ядра да, только через конфиг загрузчика.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
У меня для вас вести от пользователей, в моем лице:
"Я не желаю менять загрузку и заниматься какими то выборами на этапе загрузки. Я хочу чтобы система загрузилась максимально быстро, а уж потом я поменяю чего надо в загрузчике и перезагружусь." 
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Я не желаю менять загрузку и заниматься какими то выборами на этапе загрузки. Я хочу чтобы система загрузилась максимально быстро,
Штатно так и должно быть.