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

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

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23693
  • Репутация: +173/-0
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #15 : 24 Март 2018, 19:22:36 »
Вот это хоть что-то проясняет
https://wiki.gentoo.org/wiki/Initramfs/Guide/ru
https://www.linux.org.ru/forum/general/11516791

https://ru.wikipedia.org/wiki/Initrd
Цитировать
Initramfs
В ядре Linux 2.6 появилась новая концепция загрузочного диска — он представляет собой сжатый gzip'ом cpio-архив.
Похоже - историческая вещь. Раньше было по другому нельзя
А дальше "работает - не трогай"

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23693
  • Репутация: +173/-0
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #16 : 25 Март 2018, 08:38:10 »
один намудил, остальные повторяют, ибо нет ума разобраться, или просто лень.
Больше памяти, потому что две копии рамдиска.
Так ли это - первая копия после скачка разве не самоуничтожается?
Там хоть и мало, но если можно лучше - отлично

Чтобы по итогу темы был результат:
Можете поправить пра-портеус?
Только то что обсуждали
Ну или если есть еще идеи - готов обсудить

В арче (и соответственно rootaufs2) switch_root
В UIRD похоже pivot_root - интересно было бы услышать авторов

Оффлайн betcher

  • Ветеран
  • *****
  • Сообщений: 1408
  • Репутация: +14/-0
    • Беседка магос
Re: pivot_root vs switch_root
« Ответ #17 : 25 Март 2018, 09:53:56 »
Я, честно говоря, не в теме. Антон говорит, что switch то есть то что в дракуте.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 993
  • Репутация: +15/-0
Re: pivot_root vs switch_root
« Ответ #18 : 25 Март 2018, 09:58:22 »
В livekitlib есть функция передачи управления через pivot_root. Ее не удаляли, но и не используем. Аналогично с рядом других функций с pxe связанных.

А реально отрабатывает dracut через switch при этом как в режиме обычного init, так и в режиме когда systemd в роли init.


Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23693
  • Репутация: +173/-0
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #19 : 25 Март 2018, 10:04:36 »
В итоге старый ivekitlib  чем хуже то?

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 993
  • Репутация: +15/-0
Re: pivot_root vs switch_root
« Ответ #20 : 25 Март 2018, 12:20:33 »
В итоге старый ivekitlib  чем хуже то?

Какой старый?
Livekitlib что в uird переписан на 80%.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23693
  • Репутация: +173/-0
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #21 : 25 Март 2018, 15:44:59 »
Не важно. Как по Вашему правильнее и почему: pivot_root vs switch_root

Оффлайн neobht

  • Ветеран
  • *****
  • Сообщений: 993
  • Репутация: +15/-0
Re: pivot_root vs switch_root
« Ответ #22 : 25 Март 2018, 16:47:17 »
Это разные механизмы. Один для блочного устройства - initrd, другой для ramfs - initramfs.

Initramfs - более современно. Ядро копирует архив в tmfs и передает управление. При initrd надо при создании делать блочное устройство, но зато проще редактировать - можно сделать mount.


Оффлайн DdShurick

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6293
  • Репутация: +161/-0
  • Старый чайник
Re: pivot_root vs switch_root
« Ответ #23 : 25 Март 2018, 18:05:40 »
Это разные механизмы. Один для блочного устройства - initrd, другой для ramfs - initramfs.
Теперь понятно объяснил. Получается что в porteus switch_root + chroot используется как костыль для pivot_root. Впрочем они этого и не скрывают.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23693
  • Репутация: +173/-0
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #24 : 26 Март 2018, 09:32:32 »
Initramfs - более современно
Это единственный плюс?
Один для блочного устройства - initrd, другой для ramfs - initramfs.
По ссылкам выше тоже это понял. Только не понятно каким образом определить где initrd, а где initramfs... Вроде везде cpio.*z и внутри примерно одинаково
Или отличие как раз в pivot|switch?

Оффлайн DdShurick

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6293
  • Репутация: +161/-0
  • Старый чайник
Re: pivot_root vs switch_root
« Ответ #25 : 26 Март 2018, 10:12:29 »
 Для старых ядер надо было указывать системный раздел параметром загрузки root (например root=/dev/sda1 или root=/dev/ram). При full установке Puppy загружался намного быстрее без initrd.gz, строка initrd в menu.lst просто удалялась. Указанный раздел сразу монтировался в корень как блочное устройство. С современными ядрами такой фокус не проходит, обязателен initrd, который загружается в RAM, получается initramfs. Отсюда делаю вывод - pivot_root устарел.
 А вообще всё это, о чём мы спорим, "мышиная возня". Любой грамотный программист на коленке напишет скрипт инициализации. Не верите? Спросите у Гугла.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23693
  • Репутация: +173/-0
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #26 : 26 Март 2018, 10:33:06 »
А вообще всё это, о чём мы спорим, "мышиная возня".
Вы ее затеяли. И как всегда намутив, сливаетесь. Меня устраивало "Работает - не трогай"
каким образом определить где initrd, а где initramfs...
Понятнее не стало

Оффлайн DdShurick

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6293
  • Репутация: +161/-0
  • Старый чайник
Re: pivot_root vs switch_root
« Ответ #27 : 26 Март 2018, 10:59:28 »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 23693
  • Репутация: +173/-0
    • PuppyRus-A
Re: pivot_root vs switch_root
« Ответ #28 : 26 Март 2018, 11:32:53 »
Если уже разобрались - можете коротко объяснить?

Оффлайн DdShurick

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 6293
  • Репутация: +161/-0
  • Старый чайник
Re: pivot_root vs switch_root
« Ответ #29 : 26 Март 2018, 11:51:22 »
Цитировать
Содержимое 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 - это все, что требуется, он имеет несколько недостатков:

    Это полноценное блочное устройство, требующее дополнительные расходы на целую файловую систему, и оно имеет фиксированный размер. Если выбрать initrd достаточно маленьким, то все требуемые скрипты не поместятся. Если сделайте его слишком большим, то растратите память впустую.

    По той причине, что это действительное устройство, оно также требует кэш-память ядра Linux и подлежит используемым методам управления памятью и файлами (таким как подкачка страниц), что делает расходы памяти еще более худшими.

Чтобы решить эти вопросы, была создана initramfs.
Сопоставив это получаем, что в porteus неоправданно усложнён процесс начальной загрузки, неоправданный перерасход памяти и неоправданное усложнение дерева каталогов создаваемой системы. О чём я вам и твержу уже не первый год.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)