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

Автор Тема: Скрипт init  (Прочитано 3114 раз)

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

Онлайн DdShurick

  • Это Риччи
  • Модератор
  • Ветеран
  • ****
  • Сообщений: 7109
  • Репутация: +167/-2
  • Старый чайник
Скрипт init
« : 18 Март 2019, 20:48:09 »
 Начал очередное "причёсывание" скрипта init. Попутно могу "разобрать его по косточкам". Интересующиеся есть? Sfs, ты вроде плакал?
Моноблок 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@jabber.ru

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 1725
  • Репутация: +59/-0
Re: Скрипт init
« Ответ #1 : 18 Март 2019, 21:07:09 »
Интересующиеся есть?
    очень быстро запускается, я такого ни в каких линуксах не видел.

Не разбирались, за счет чего?
  Интерес действительно есть. Запуск retro в течении нескольких секунд (3-5 сек :)) будет хорошим подспорьем в его продвижении и конкурентноспособности среди множества компактных сборок в сети (имхо).

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26127
  • Репутация: +178/-0
    • PuppyRus-A
Re: Скрипт init
« Ответ #2 : 18 Март 2019, 21:44:37 »
Интересующиеся есть?
Да. Хорошо бы для начала универсальный инитрд и параметры запуска для тестирования под ним других дистров на предмет выявления чудесных свойств
Ну и кто в теме - код посмотрит. Может там и так все понятно. У Вас (на мой взгляд) достаточно хорошо читающийся код

Онлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1253
  • Репутация: +20/-1
Re: Скрипт init
« Ответ #3 : 19 Март 2019, 00:02:02 »
Попутно могу "разобрать его по косточкам". Интересующиеся есть?
есть интересующиеся
еще бы каменты к коду на великом и могучем
1.нетбук  Samsung N145 (оси: Debian+OLS, ddr01)
2.стационары(пеньки,2-8Gb,Radeon RX460,HD7850 ubuntu+openBox+LXPanel, PRA, ddr01)

Оффлайн imp

  • /dev/бубен
  • Ветеран
  • *****
  • Сообщений: 698
  • Репутация: +28/-1
  • /dev/hands over /dev/ass
Re: Скрипт init
« Ответ #4 : 19 Март 2019, 00:19:04 »
В самом начале есть один замечательный коммент. Его достаточно.
Интереснее посмотреть, что в rc.d валяется, да лень)
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Оффлайн imp

  • /dev/бубен
  • Ветеран
  • *****
  • Сообщений: 698
  • Репутация: +28/-1
  • /dev/hands over /dev/ass
Re: Скрипт init
« Ответ #5 : 19 Март 2019, 03:35:12 »
Наверное, не в тему, если что - прошу переместить. Есть пара вопросов к Ddshurik.

Ричи на данный момент собирается из исходников или из пакетов старших дистров?Используется ли какое-либо средство автоматизации. Фулл и jwm не рассматриваются?

универсальный инитрд и параметры запуска для тестирования под ним других дистров на предмет выявления чудесных свойств
Для не puppy-подобных проблематично. Да и не нужно. А так, меняем инитрамдиск, distro_specs, переименовываем и пользуемся.
« Последнее редактирование: 19 Март 2019, 03:52:08 от imp »
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Онлайн DdShurick

  • Это Риччи
  • Модератор
  • Ветеран
  • ****
  • Сообщений: 7109
  • Репутация: +167/-2
  • Старый чайник
Re: Скрипт init
« Ответ #6 : 19 Март 2019, 07:50:45 »
Ричи на данный момент собирается из исходников или из пакетов старших дистров?
По обстоятельствам. Стараюсь использовать пакеты от Slackware-current, иногда Sisyphus (Altlinux), но и компилировать приходится часто.
Используется ли какое-либо средство автоматизации.
Нет. Автоматика может тиражировать ошибки.
Фулл и jwm не рассматриваются?
Full - категорически нет, jwm для меня просто непривычен.
Для не puppy-подобных проблематично.
altlinux-p7-icewm запускал для интереса, никаких особых проблем.
Интереснее посмотреть, что в rc.d валяется, да лень)
Не получится, rc.d не используется.
Моноблок 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@jabber.ru

Онлайн DdShurick

  • Это Риччи
  • Модератор
  • Ветеран
  • ****
  • Сообщений: 7109
  • Репутация: +167/-2
  • Старый чайник
Re: Скрипт init
« Ответ #7 : 19 Март 2019, 18:17:45 »
 Комментарий к
Код
#DdShurick переписал всё нафиг с 85 строки
Стандартный скрипт init от Puppy содержит более полутора тысяч строк кода и написан в академически-бюрократическом стиле. Задаются переменные, затем производится поиск файлов puppy (довольно запутанный), далее выбор сценария ($PUPMODE), на основании выбранного сценария производится загрузка файлов puppy и только после этого создаётся aufs. Я поступил проще: нашёл файл -> подключил куда надо -> сделал отметку в переменной. Из полученных переменных создаётся строка монтирования aufs. Получилось триста строк, а ведь добавлена секция подключения модулей.
Моноблок 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@jabber.ru

Онлайн DdShurick

  • Это Риччи
  • Модератор
  • Ветеран
  • ****
  • Сообщений: 7109
  • Репутация: +167/-2
  • Старый чайник
Re: Скрипт init
« Ответ #8 : 19 Март 2019, 19:58:03 »
 В начале скрипта функция check_status, которая выводит сообщение "готово" зелёного цвета при отсутствии ошибки и "ошибка" красного плюс поледние 4 строки bootinit.log и dmesg с выходом в первичную консоль при ошибке. Эта секция сохранена из стандартного init Puppy.
 Далее задаются переменные как в Puppy, с небольшими изменениями. Следующий шаг - минимально необходимое монтирование. Секция tuxonice от Pro, которая на последних ядрах не работает, отсутствует каталог /sys/power/tuxonice. Далее моё творчество
Код
blkid > /tmp/uuid.lst
if [ $PDEV ]; then
if [ "$(grep $PDEV /tmp/uuid.lst)" = "" ]; then
sleep 5
blkid > /tmp/uuid.lst
fi
PDEV1=$(grep $PDEV /tmp/uuid.lst | cut -b6-9) #
else
PDEV1=$(egrep -v 'loop|swap' /tmp/uuid.lst | cut -b6-9)
fi
Это даёт возможность задавать dev= по uuid, что немаловажно для флешек. Если dev не указано, то берутся все обнаруженные и отправляются в цикл
Код
 for DEV in $PDEV1
 do
  grep $DEV /tmp/uuid.lst | grep ntfs && MNT=ntfs-3g || MNT=mount
  mkdir /mnt/$DEV
  N=0
  until $MNT /dev/$DEV /mnt/$DEV $RO 2>/dev/null
do
  sleep 1
  echo -n . >/dev/console
  N=$(expr $N + 1)
  [ $N = 10 ] && check_status 1
done
 DIR=$(ls /mnt/$DEV/$PDIR/base/kernel-${KERNELVER}.xzm 2>/dev/null | cut -d'/' -f4- | sed 's|/base/kernel.*||')
if [ ! $DIR ]; then
umount /mnt/$DEV
rmdir /mnt/$DEV
  continue
  elif [ "$(echo $DIR | wc -w)" -gt 1 ]; then
  echo "Выберите загрузочный каталог и напечатайте его имя:" > /dev/console
  echo $DIR > /dev/console
  read DIR
  fi
  PDEV=$DEV
  PDIR=$DIR
  check_status 0
  break
 done
Из этого следует, что dev= и dir= параметры не обязательные, но желательные для ускорения загрузки.
Моноблок 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@jabber.ru

Оффлайн imp

  • /dev/бубен
  • Ветеран
  • *****
  • Сообщений: 698
  • Репутация: +28/-1
  • /dev/hands over /dev/ass
Re: Скрипт init
« Ответ #9 : 19 Март 2019, 21:03:19 »
В этом я разобрался. Действительно стопиццот строк, как в буржуинском ините, не нужно. После switch root не смотрел. Интересно как все дальше работает. Чему передается управление (я не про /sbin/init). Было лень, а сейчас нет времени разбираться.
Секцию с tuxonice выпилил. Ибо ядро паниковало (4.9.6). Загрузил свое поделие (woof, cosmic) с Вашим инитом. Подумал и вынес подключение модулей (в т.ч. иксы) в rc.sysinit.  Почему?А чтобы лишнего в ОЗУ не грузить. Да и заменить почти все "по горячему" в теории можно. Все гут, токмо флешку нельзя вынимать. Обидно.
« Последнее редактирование: 19 Март 2019, 21:20:10 от imp »
Компьютер имеет то преимущество перед мозгом, что им пользуются.

Онлайн DdShurick

  • Это Риччи
  • Модератор
  • Ветеран
  • ****
  • Сообщений: 7109
  • Репутация: +167/-2
  • Старый чайник
Re: Скрипт init
« Ответ #10 : 20 Март 2019, 08:23:45 »
Интересно как все дальше работает. Чему передается управление (я не про /sbin/init).
Дальше - /etc/inittab
Код
tty1::respawn:/sbin/getty -n -l /bin/autologin 38400 tty1
autologin (или login) запускает bash, выполняется /etc/profile, последняя строка запускает X
Код
 exec /usr/bin/xinit $HOME/.xinitrc -- -br -nolisten tcp > /tmp/xerrs.log 2>&1
Далее выполняется ~/.xinitrc
Моноблок 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@jabber.ru

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26127
  • Репутация: +178/-0
    • PuppyRus-A
Re: Скрипт init
« Ответ #11 : 20 Март 2019, 10:13:54 »
Хорошо бы для начала универсальный инитрд и параметры запуска для тестирования под ним других дистров на предмет выявления чудесных свойств
С пра03 initrd не взлетел (см. скрин с параметрами ядрва) . С родными сквошами исо(сделал на скелете пра) в виртуалке тоже не пошел
Что делаю не так?
Работает только с xzm ? Мне переименование не помогло
« Последнее редактирование: 20 Март 2019, 10:17:39 от sfs »

Онлайн DdShurick

  • Это Риччи
  • Модератор
  • Ветеран
  • ****
  • Сообщений: 7109
  • Репутация: +167/-2
  • Старый чайник
Re: Скрипт init
« Ответ #12 : 20 Март 2019, 17:42:21 »
Что делаю не так?
А вывод прочитать лень? Он же говорит, что не находит DISTRO_SPECS.
Работает только с xzm ?
Да, как с более распространённым.
С пра03 initrd не взлетел
Сильно не расстраивайся, у меня PRA тоже не запустился ни разу.
« Последнее редактирование: 20 Март 2019, 17:45:36 от DdShurick »
Моноблок 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@jabber.ru

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 1725
  • Репутация: +59/-0
Re: Скрипт init
« Ответ #13 : 20 Март 2019, 17:48:33 »
А вывод прочитать лень? Он же говорит, что не находит DISTRO_SPECS.
Я тоже попробовал запустить retro с initrd32.gz. И тоже получил такой же вывод как на скриншоте, хотя DISTRO_SPECS есть.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26127
  • Репутация: +178/-0
    • PuppyRus-A
Re: Скрипт init
« Ответ #14 : 20 Март 2019, 18:04:03 »
DISTRO_SPECS есть.
У меня тоже в папке с /base и пр.
Или он должен быть в базе?
« Последнее редактирование: 20 Март 2019, 18:05:37 от sfs »