![]() |
Поделиться |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Поделиться |
![]()
Сообщение
#1
|
|
Странник ![]() ![]() Группа: Пользователь Сообщений: 27 Регистрация: 12.7.2020 Вставить ник Цитата Из: Калининград Пользователь №: 3037 Страна: Россия Город: Калининград Пол: Муж. Репутация: ![]() ![]() ![]() |
Richy не дистрибутив, это испытательный полигон и основа для "конструктора". Что-то вроде самоходного шасси, был такой смешной трактор во времена СССР, мотор сзади, кузов спереди.
Меня интересует как все устроено. 1) Загружаются ядро и рамдиск, как у всех. Запускается скрипт init.2) Поиск модулей. Если указаны dev (носитель) и/или dir (директория), то поиск ограничен только на них, если не указаны - на всех разделах, что замедляет загрузку. 3) По мере нахождения модулей они монтируются: основные (находятся в поддиректории base) - к /base, /kernel, /Xorg, /save; дополнительные (из modules) к создаваемым в корне по мере необходимости одноимённым с модулями точкам монтирования. 4) Записываются некоторые переменные в /etc/initvars. 5) Монтируется aufs Код mount -t aufs -o udba=reval,diropq=w,dirs=/changes=rw:${SAVEXZM}${UMNTRO}${KERNEL}/base=ro aufs /pup_new где:/changes - директория для записи изменений. Всегда rw и верхний слой. Обычно находится в ram, но может быть и на реальном носителе. ${SAVEXZM} - модуль сохранённых изменений, если такой есть (поэтому обозначается переменной $SAVEXZM). Второй слой сверху. ${UMNTRO} - список модулей с программами. ${KERNEL} - "ядерный" модуль, если такой есть. Второй слой снизу. /base - базовый модуль. Всё это монтируется к точке монтирования /pup_new 6) Перемонтирование (mount -o move) циклом всех точек монтирования в корне в /pup_new/mnt/bundles${ONEMNT} (${ONEMNT} - имя точки монтирования) 7) Монтирование пользовательского раздела home на реальном носителе, если указан параметр home в загрузочной строке. 8. Смена корня. Переходим в систему aufs и запускаем "настоящий" init Код exec switch_root /pup_new /sbin/init Далее загрузка системы не отличается от обычной. Может использоваться SysVinit или systemd. В Richy - busybox init + udev + kmod. Надеюсь, что хоть что-то понятно. Сообщение отредактировал DdShurick - 22.7.2020, 22:01 |
|
|
![]() |
![]()
Сообщение
#2
|
|
Профессионал ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Активный Пользователь Сообщений: 1194 Регистрация: 10.4.2015 Вставить ник Цитата Пользователь №: 2798 Страна: Казахстан Город: Уральск Пол: Муж. Репутация: ![]() ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 2.7.2025, 0:24 |