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

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

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

Оффлайн Pasha__kun

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

Из функционала: copy2ram в двух вариантах, сохраненка в модуль, файл или каталог, планирую сетевую загрузку, сохранение при выходе и выбор/настройку дистра при запуске в псевдографическом меню (dialog). Из особых фишек - puppy_modules.order: файл рядом с ядром, в котором указываются модули, которые надо загрузить. Минимально вот такой: prar/base/000-kernel-4.15.4-pf_64.pfs
prar/base/001-prar-c-180101-sf06.pfs
prar/base/035-gtk2-2.24.31-1-180101-sf06.pfs
prar/base/075-minirc-p-sf01.pfs
prar/base/089-prar-upd-180101-sf26.pfs
:saveram
Загрузит модули из базы и сохраненку в памяти.

Про "комиляцию" скриптов можно посмотреть на гитхабе, здесь.

Пока как-то как. Идеи/предложения/баги принимаются здесь
« Последнее редактирование: 29 Май 2018, 13:56:10 от Pasha__kun »

Оффлайн DdShurick

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6088
  • Репутация: +156/-0
  • Старый чайник
"комиляцию" скриптов
Не перебор? Простой sh легче править.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)

Оффлайн Pasha__kun

  • Пользователь
  • **
  • Сообщений: 26
  • Репутация: +1/-0
Код получается более читаемым и меньше размер скрипта. Да и собирать initrd все равно нужно, у меня все собирается простым make`ом

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 9789
  • Репутация: +100/-0
коментарии через // зачем в скриптах? все ведь привыкли к #

от конструкций "монтируем 10 раз" надо избавляться, лучше уж 10 раз проверить готовность устройства (мы для этого патч на ядро накладываем, чтобы в логи выводило что usb все определены)
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн DdShurick

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6088
  • Репутация: +156/-0
  • Старый чайник
Код получается более читаемым и меньше размер скрипта.
Размер и читабельность кода зависит от писателя.
у меня все собирается простым make`ом
А у меня простым скриптом.
"монтируем 10 раз"
Если это так (я подробно код не смотрел), то никуда не годится.

Просьба к автору подробно объяснить алгоритм и получаемые преимущества.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)

Оффлайн Pasha__kun

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


от конструкций "монтируем 10 раз" надо избавляться
Вообще они не выводятся с quiet, но в принципе можно и убрать.

10 раз проверить готовность устройства
Не совсем понял. Я и так ровно 10 раз пытаюсь смонтировать каждое устройство.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 9789
  • Репутация: +100/-0
Не совсем понял. Я и так ровно 10 раз пытаюсь смонтировать каждое устройство.
вместо 10 раз выполнения действия, выполнять 10 проверку готовности и выполнять действие, когда готово.

Вообще они не выводятся с quiet, но в принципе можно и убрать.
я не про сами сообщения в логи, я про цикл в коде
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Pasha__kun

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

я не про сами сообщения в логи, я про цикл в коде
Ну цикл там не просто так, модули-то монтировать надо.

Оффлайн Pro

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

Оффлайн DdShurick

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6088
  • Репутация: +156/-0
  • Старый чайник
// switch_root = pivot_root + chroot
// НО switch_root не позволяет сохранить исходный корень,
// поэтому мы не используем его
cd /pup_new
pivot_root . mnt/pinitrd
exec chroot . /sbin/init
// DO NOT USE: exec switch_root /pup_new /sbin/init
Обоснуйте.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)

Оффлайн DdShurick

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6088
  • Репутация: +156/-0
  • Старый чайник
 В качестве linuxrc используется мой слегка изменённый init, тогда вопрос, что собственно делает pinitrd, если aufs к моменту его запуска уже собрана? Не проще сразу перейти в новую систему и запустить её родной init или systemd? Очень похоже на пятое колесо.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)

Оффлайн DdShurick

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6088
  • Репутация: +156/-0
  • Старый чайник
Из особых фишек - puppy_modules.order: файл рядом с ядром, в котором указываются модули, которые надо загрузить.
?? Дублирует загрузку из modules. Может тогда modules выкинуть, оставить только optional?
планирую сетевую загрузку
Было, не востребовано.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)

Оффлайн Pasha__kun

  • Пользователь
  • **
  • Сообщений: 26
  • Репутация: +1/-0
Обоснуйте.
Как написано. В /mnt/pinitrd сохраняется корень initrd.

что собственно делает pinitrd, если aufs к моменту его запуска уже собрана
Нет, aufs не собрана. Он ее собирает.

Дублирует загрузку из modules. Может тогда modules выкинуть, оставить только optional?
В теории модули можно хранить где угодно. С puppy_modules.order не надо при каждой загрузке искать модули + нет ключей load/noload, которые всегда криво работали

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23159
  • Репутация: +167/-0
    • PuppyRus-A
Погодите углубляться в детали реализации.
Давайте разберемся :
a. чем pinitrd будет лучше имеющихся porteus rootaufs2 uird Дяди_Шурика ...?
b. Т.е. чего не хватало в имеющихся? Или это  просто "проще написать свое , чем разбираться с чужим"
c. Надо переписывать с нуля или проще доработать имеющиеся

1.
Цитировать
Современный copy2ram - распаковка модулей в память
В чем современность и вообще сиысл. Есть же rootcopy и copy2ram

2.
Цитировать
Выборочный copy2ram
http://wiki.puppyrus.org/soft/porteus-initrd#rammod

3.
Цитировать
Редактирование puppy_modules.order при загрузке
Чем это лучше редактирования конфига grub*

4.
Цитировать
load    Список, разделитель - ,
Если планируется использование в ПРА - лучше максимально сделать синтаксис, как в имеющихся , т.е. здесь ;

5. pinitrd под спец. ядра (с вкомпиленными ФС) или любые aufs?

Оффлайн Pasha__kun

  • Пользователь
  • **
  • Сообщений: 26
  • Репутация: +1/-0
В чем современность и вообще сиысл. Есть же rootcopy и copy2ram
Больше расход памяти, но меньше нагрузка на процессор. Как rootcopy, но из модулей.

rammod
Забыл про него

Чем это лучше редактирования конфига grub*
Удобнее, имхо. Каждый модуль на отдельной строке, без всяких разделителей.

Если планируется использование в ПРА - лучше максимально сделать синтаксис, как в имеющихся , т.е. здесь ;
Это осталось из initrd DdShurick`а, могу поменять

pinitrd под спец. ядра (с вкомпиленными ФС) или любые aufs?
Пока загрузки модулей ядра нет, но я ее делаю.

Вообще в планах псевдографический конфигуратор и минимум опций ядра. Т.е. initrd для "стационарной" установки, а не для флешек.