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

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

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

Оффлайн sfs

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

Оффлайн DdShurick

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

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: pivot_root vs switch_root
« Ответ #3 : 24 Март 2018, 09:06:14 »
какие-то плюсы есть?
Не знаю. автор не я
Надеюсь, понятно?
Моноблок 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: pivot_root vs switch_root
« Ответ #4 : 24 Март 2018, 09:10:24 »
Про неподкапотные плюсы не понятно
Я "не автор" не только  портеуса но и ядра и всей репы и что с того?

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-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, 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: pivot_root vs switch_root
« Ответ #6 : 24 Март 2018, 09:33:00 »
Init Richy автор я, но вам на это наплевать
Нет. Я очень уважительно отношусь к людям, которые могут что-то довести до результата
Предлагал Вам сделать доку и initrd для ПРа
Весь процесс создания aufs проще и понятнее.
Автору - наверное да
Но для меня оба варианта чужие
Ваш менее документированнный и функциональный
Про уменьшение костылей и пользы для юзеров я пока ничего внятного не услышал

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: pivot_root vs switch_root
« Ответ #7 : 24 Март 2018, 09:47:49 »
пользы для юзеров
Если уж вам непонятно, то что говорить про юзеров.
Честно говоря, надоела мне до чёртиков "борьба с ветряными мельницами". Линукс катится в пропасть, а в одиночку всё не перепишешь, жизни не хватит. Поэтому позвольте мне остаться в моём "единственном однопользовательском" и делайте что хотите.
Моноблок 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: pivot_root vs switch_root
« Ответ #8 : 24 Март 2018, 09:50:50 »
Если уж вам непонятно, то что говорить про юзеров.
Ну так объясните чтобы всем было понятно
Пока кроме того, что автору ближе свой код - мне ничего не понятно
У Вас же : вброс - пафос - слив с обидами на весь мир

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-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, 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: pivot_root vs switch_root
« Ответ #10 : 24 Март 2018, 13:37:37 »
Не понятно главного - чем именнно в портеус хуже?

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-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, 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: pivot_root vs switch_root
« Ответ #12 : 24 Март 2018, 18:44:26 »
Я не знаю зачем так сделано
А плохо то (юзеру) чем?
Больше памяти естся или проблемы какие-то?

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-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

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