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

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

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

Оффлайн DdShurick

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

Оффлайн krasnyh

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

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

Оффлайн sfs

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

Оффлайн k0l0p0k

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

Оффлайн imp

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

Оффлайн imp

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

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

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

Оффлайн DdShurick

  • Это Риччи
  • Модератор
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-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, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн DdShurick

  • Это Риччи
  • Модератор
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-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, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн DdShurick

  • Это Риччи
  • Модератор
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-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, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн imp

  • cat /dev/ass > /dev/head
  • Ветеран
  • *****
  • Сообщений: 1708
  • Репутация: +49/-1
  • /dev/hands < /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

  • Это Риччи
  • Модератор
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-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, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

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

Оффлайн DdShurick

  • Это Риччи
  • Модератор
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-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, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн krasnyh

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

Оффлайн sfs

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