в портеус используется pivot_root, а надо было switch_root, не пришлось бы столько костылей городить.Можно подробнее...
Можно подробнее...Смотри linuxrc после строки 9. Комментарии на русском сам писал? Значит читал.
# Включить pivot_root в initramfs чтобы он вел себя как initrd:
exec switch_root /m linuxrc "$@"
pivot_root /union /union/mnt/live
exec $chroot . /mnt/live/bin/init "$@" <dev/console >dev/console 2>&1
exec switch_root /pup_new /sbin/init
Комментарии на русском сам писал? Значит читал.Нет - переводили из оригинала. Честно говоря смысла этого текста я не понял
Зачем все эти "прыжки в сторону"?Не знаю. автор не я
Понял?Не понял главного: кроме экономии пары строк кода - какие-то плюсы есть?
дальше жевать?да. Хорошо бы
какие-то плюсы есть?
Не знаю. автор не яНадеюсь, понятно?
Про неподкапотные плюсы не понятноInit Richy автор я, но вам на это наплевать, вам милее "непонятный" porteus. Позвольте и мне быть "взаимно вежливым".
Я "не автор"
кроме экономии пары строк кодаВесь процесс создания aufs проще и понятнее.
Init Richy автор я, но вам на это наплеватьНет. Я очень уважительно отношусь к людям, которые могут что-то довести до результата
Весь процесс создания aufs проще и понятнее.Автору - наверное да
пользы для юзеровЕсли уж вам непонятно, то что говорить про юзеров.
Если уж вам непонятно, то что говорить про юзеров.Ну так объясните чтобы всем было понятно
Ну так объяснитеПопробую. Правда популяризатор из меня.....
Не понятно главного - чем именнно в портеус хуже?А вы сами не догадались? У них "масло масляное".
if [ -d /m ]; then
mount -nt tmpfs tmpfs -o mode=0755 /m
cp -a ??* /m 2>/dev/null
exec switch_root /m linuxrc "$@"
fi
сценарий инициализации uird-init и библиотека функций к нему livekitlib (доработанный аналог liblinuxlive проекта slax).debiandog
# Move entire initramfs tree to tmpfs mount.
# It's a bit tricky but is necessray to enable pivot_root
# even for initramfs boot image
This file indicates that we successfully escaped initramfs
# Переместить все дерево initramfs в mount tmpfs.
# Это немного сложно, но необходимо включить pivot_root
# даже для загрузочного образа initramfs
Этот файл указывает, что мы успешно сбежали от initramfs
А плохо то (юзеру) чем?Юзеру всё это фиолетово.
Больше памяти естся или проблемы какие-то?Больше памяти, потому что две копии рамдиска. Проблемы, например, двойное монтирование, когда кликаешь sda3 а попадаешь в какие-то дебри.
Кстати - в портеус не первоисточник.Как обычно, один намудил, остальные повторяют, ибо нет ума разобраться, или просто лень.
Без проблем юзается еще в uirdЯ не утверждаю, что мой вариант init лучший, но я его знаю, понимаю и могу изменять его как захочу.
InitramfsПохоже - историческая вещь. Раньше было по другому нельзя
В ядре Linux 2.6 появилась новая концепция загрузочного диска — он представляет собой сжатый gzip'ом cpio-архив.
один намудил, остальные повторяют, ибо нет ума разобраться, или просто лень.
Больше памяти, потому что две копии рамдиска.Так ли это - первая копия после скачка разве не самоуничтожается?
В итоге старый ivekitlib чем хуже то?
Это разные механизмы. Один для блочного устройства - initrd, другой для ramfs - initramfs.Теперь понятно объяснил. Получается что в porteus switch_root + chroot используется как костыль для pivot_root. Впрочем они этого и не скрывают.
Initramfs - более современноЭто единственный плюс?
Один для блочного устройства - initrd, другой для ramfs - initramfs.По ссылкам выше тоже это понял. Только не понятно каким образом определить где initrd, а где initramfs... Вроде везде cpio.*z и внутри примерно одинаково
А вообще всё это, о чём мы спорим, "мышиная возня".Вы ее затеяли. И как всегда намутив, сливаетесь. Меня устраивало "Работает - не трогай"
каким образом определить где initrd, а где initramfs...Понятнее не стало
Понятнее не сталоhttps://wiki.gentoo.org/wiki/Initramfs/Guide/ru
Содержимое initramfs делается путем создания cpio-архива.Все наши initrd.gz, initrd.xz, initrd.lz внутри cpio-архивы и, следовательно, загружаются в initramfs
initramfs - это начальная файловая система в оперативной памяти, основанная на tmpfsЗначит надо использовать switch_root. В porteus switch_root применяется как костыль
# Включить pivot_root в initramfs чтобы он вел себя как initrd:
if [ -d /m ]; then
mount -nt tmpfs tmpfs -o mode=0755 /m
cp -a ??* /m 2>/dev/null
exec switch_root /m linuxrc "$@"
fi
Хотя способ, включающий в себя initrd - это все, что требуется, он имеет несколько недостатков:Сопоставив это получаем, что в porteus неоправданно усложнён процесс начальной загрузки, неоправданный перерасход памяти и неоправданное усложнение дерева каталогов создаваемой системы. О чём я вам и твержу уже не первый год.
Это полноценное блочное устройство, требующее дополнительные расходы на целую файловую систему, и оно имеет фиксированный размер. Если выбрать initrd достаточно маленьким, то все требуемые скрипты не поместятся. Если сделайте его слишком большим, то растратите память впустую.
По той причине, что это действительное устройство, оно также требует кэш-память ядра Linux и подлежит используемым методам управления памятью и файлами (таким как подкачка страниц), что делает расходы памяти еще более худшими.
Чтобы решить эти вопросы, была создана initramfs.
Так ли это - первая копия после скачка разве не самоуничтожается?
Там хоть и мало, но если можно лучше - отлично
Чтобы по итогу темы был результат:
Можете поправить пра-портеус?
Только то что обсуждали
Ну или если есть еще идеи - готов обсудить
если есть еще идеиИдей нет, желания тоже, gtk+-3 меня окончательно добил. Бесполезно всё это.
gtk+-3 меня окончательно добил.Ну хоть где-то не я виноват :D :D :D
porteus, fatdog - нет. Опять "не читал, но осуждаю"Как раз читал, коды, потому и осуждаю. Причину я уже неоднократно озвучивал, неправильное, двойное, монтирование. Носом ткнуть?
неправильное, двойное, монтирование.Это инитрд, а не ядро
Носом ткнуть?да. Чем это плохо?
да. Чем это плохо?Ok.
grep -n pivot linuxrc
9:# Включить pivot_root в initramfs чтобы он вел себя как initrd:
670: pivot_root /union /union/mnt/live
bash-4.4$ grep -n chroot linuxrc
672: [ -e bin/chroot ] && chroot=bin/chroot || chroot=usr/sbin/chroot #sfs
673: exec $chroot . /mnt/live/bin/init "$@" <dev/console >dev/console 2>&1
9: # Включить pivot_root в initramfs чтобы он вел себя как initrd:
10: if [ -d /m ]; then
11: mount -nt tmpfs tmpfs -o mode=0755 /m
12: cp -a ??* /m 2>/dev/null
13: exec switch_root /m linuxrc "$@"
14: fi
неоправданный перерасход памятиБездоказательно
Дайте исправленный init - протестирую.Это мне? А почему я должен чужие ошибки исправлять. У меня свой init, бери и пользуйся, я не жадный.
Если не готовы улучшатьЭто бессмысленно. С такими врождёнными пороками только переписывать с нуля. А зачем, если есть мой init?