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

Автор Тема: pivot_root vs switch_root  (Прочитано 7778 раз)

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 31069
  • Репутация: +207/-0
  • Автор темы
    • PuppyRus-A
pivot_root vs switch_root
« : 24 Март 2018, 08:01:26 »
в портеус используется pivot_root, а надо было switch_root, не пришлось бы столько костылей городить.
Можно подробнее...

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8146
  • Репутация: +183/-2
  • Старый чайник
Re: pivot_root vs switch_root
« Ответ #1 : 24 Март 2018, 08:46:22 »
Можно подробнее...
Смотри linuxrc после строки 9. Комментарии на русском сам писал? Значит читал.
Строка 9
Код
# Включить pivot_root в initramfs чтобы он вел себя как initrd:
Строка 11
Код
exec switch_root /m linuxrc "$@"
Строка 670
Код
pivot_root /union  /union/mnt/live
Строка 673
Код
exec $chroot . /mnt/live/bin/init "$@" <dev/console >dev/console 2>&1
Зачем все эти "прыжки в сторону"?
Для сравнения init (Richy)
Строка 303
Код
exec switch_root /pup_new /sbin/init
Получаем ту же самую aufs (или overlayfs)
Понял? Или дальше жевать?
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 31069
  • Репутация: +207/-0
  • Автор темы
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #2 : 24 Март 2018, 09:00:29 »
Комментарии на русском сам писал? Значит читал.
Нет - переводили из оригинала. Честно говоря смысла этого текста я не понял
Зачем все эти "прыжки в сторону"?
Не знаю. автор не я
Я руководствовался - "не понимаешь - не лезь" + "работает не трогай"
Понял?
Не понял главного: кроме экономии пары строк кода - какие-то плюсы есть?
дальше жевать?
да. Хорошо бы

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8146
  • Репутация: +183/-2
  • Старый чайник
Re: pivot_root vs switch_root
« Ответ #3 : 24 Март 2018, 09:06:14 »
какие-то плюсы есть?
Не знаю. автор не я
Надеюсь, понятно?
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 31069
  • Репутация: +207/-0
  • Автор темы
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #4 : 24 Март 2018, 09:10:24 »
Про неподкапотные плюсы не понятно
Я "не автор" не только  портеуса но и ядра и всей репы и что с того?

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8146
  • Репутация: +183/-2
  • Старый чайник
Re: pivot_root vs switch_root
« Ответ #5 : 24 Март 2018, 09:22:42 »
Про неподкапотные плюсы не понятно
Я "не автор"
Init Richy автор я, но вам на это наплевать, вам милее "непонятный" porteus. Позвольте и мне быть "взаимно вежливым".
кроме экономии пары строк кода
Весь процесс создания aufs проще и понятнее.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 31069
  • Репутация: +207/-0
  • Автор темы
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #6 : 24 Март 2018, 09:33:00 »
Init Richy автор я, но вам на это наплевать
Нет. Я очень уважительно отношусь к людям, которые могут что-то довести до результата
Предлагал Вам сделать доку и initrd для ПРа
Весь процесс создания aufs проще и понятнее.
Автору - наверное да
Но для меня оба варианта чужие
Ваш менее документированнный и функциональный
Про уменьшение костылей и пользы для юзеров я пока ничего внятного не услышал

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8146
  • Репутация: +183/-2
  • Старый чайник
Re: pivot_root vs switch_root
« Ответ #7 : 24 Март 2018, 09:47:49 »
пользы для юзеров
Если уж вам непонятно, то что говорить про юзеров.
Честно говоря, надоела мне до чёртиков "борьба с ветряными мельницами". Линукс катится в пропасть, а в одиночку всё не перепишешь, жизни не хватит. Поэтому позвольте мне остаться в моём "единственном однопользовательском" и делайте что хотите.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 31069
  • Репутация: +207/-0
  • Автор темы
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #8 : 24 Март 2018, 09:50:50 »
Если уж вам непонятно, то что говорить про юзеров.
Ну так объясните чтобы всем было понятно
Пока кроме того, что автору ближе свой код - мне ничего не понятно
У Вас же : вброс - пафос - слив с обидами на весь мир

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8146
  • Репутация: +183/-2
  • Старый чайник
Re: pivot_root vs switch_root
« Ответ #9 : 24 Март 2018, 12:13:47 »
Ну так объясните
Попробую. Правда популяризатор из меня.....
Init Richy до строки 92 мало отличается от init Puppy и PR.
Стр. 9 -33 функция check_status, выдаёт "готово" или "ошибка"
Стр. 35 - загрузка шрифта
Далее до строки 69 задаются переменные
Стр. 71 - 73 монтируются внутренние ФС
Стр. 80 - 90 секция tuxonice
Дальше моё "художество". Сначала определяем $PDEV и $PDIR если не заданы dev и dir в /proc/cmdline, иначе говоря в строке загрузки menu.lst, при этом dev может быть указан и как sd.. и как uuid.
В строке 134 - копирование DISTRO_SPECS в /etc/initvars.
После этого разбираемся с $PCOPY, если устройство "removable"  && PCOPY="yes"
Дальше совсем просто, ищем по имени и сразу монтируем базу, затем файл или каталог сохранения, затем kernel (по uname -r) и отмечаем его наличие переменной ZLAYER=':/kernel=ro'.
Аналогично, только циклом, происходит монтирование модулей из modules и их запись в $UMNTRO
Стр. 236 -241 записываем переменные в /etc/initvars
Стр. 245 - главная строка монтирования aufs
После этого модули перемонтируются в /pup_new/... и монтируется раздел /home, если таковой указан.
В завершение отмонтируются внутренние ФС (/proc и /sys) и exec switch_root /pup_new /sbin/init - переходим внутрь созданной aufs и запускаем init.
Вот и всё
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 31069
  • Репутация: +207/-0
  • Автор темы
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #10 : 24 Март 2018, 13:37:37 »
Не понятно главного - чем именнно в портеус хуже?

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8146
  • Репутация: +183/-2
  • Старый чайник
Re: pivot_root vs switch_root
« Ответ #11 : 24 Март 2018, 17:25:24 »
Не понятно главного - чем именнно в портеус хуже?
А вы сами не догадались? У них "масло масляное".
Initrd - Initial RAM Disk, запускается где? В RAM. Так какого же хрена в первых же строках linuxrc создаётся tmpfs и всё туда копируется с последующим switch_root
Код
if [ -d /m ]; then
    mount -nt tmpfs tmpfs -o mode=0755 /m
    cp -a ??* /m 2>/dev/null
    exec switch_root /m linuxrc "$@"
fi
Дальше можно не смотреть, квалификация борзописцев понятна.
Из-за этой "двойной виртуальности" получается усложнённое дерево каталогов, а так же эффект двойного монтирования.
« Последнее редактирование: 24 Март 2018, 17:33:48 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 31069
  • Репутация: +207/-0
  • Автор темы
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #12 : 24 Март 2018, 18:44:26 »
Я не знаю зачем так сделано
А плохо то (юзеру) чем?
Больше памяти естся или проблемы какие-то?

Кстати - в портеус не первоисточник. Это модификация https://www.linux-live.org/
Без проблем юзается еще в uird
Цитата
сценарий инициализации uird-init и библиотека функций к нему livekitlib (доработанный аналог liblinuxlive проекта slax).
debiandog

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 31069
  • Репутация: +207/-0
  • Автор темы
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #13 : 24 Март 2018, 18:57:27 »
Вот кстати автор поясняет
https://github.com/Tomas-M/linux-live/blob/master/livekitlib
Цитата
# 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

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8146
  • Репутация: +183/-2
  • Старый чайник
Re: pivot_root vs switch_root
« Ответ #14 : 24 Март 2018, 19:01:04 »
А плохо то (юзеру) чем?
Юзеру всё это фиолетово.
Больше памяти естся или проблемы какие-то?
Больше памяти, потому что две копии рамдиска. Проблемы, например, двойное монтирование, когда кликаешь sda3 а попадаешь в какие-то дебри.
Кстати - в портеус не первоисточник.
Как обычно, один намудил, остальные повторяют, ибо нет ума разобраться, или просто лень.
Без проблем юзается еще в uird
Я не утверждаю, что мой вариант init лучший, но я его знаю, понимаю и могу изменять его как захочу.
Всё. Хорош. Надоело всё до чёртиков.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150) Richy64
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150) Richy32
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400) Richy64