LINUX.ORG.RU

Загрузка нескольких Linux с одного РАЗДЕЛА

 , , ,


0

1

128 гб SSD и делать отдельные разделы для каждого линя - и там и там и там - теряется много места.

Отвел:

5 гб efi fat32 - откуда грузятся также 5 WinPe*.wim

70 гб ntfs - откуда грузятся до десятка разных виндоус с w11*.vhd

44 гб ext4 - откуда грузятся 4 блочных линя - каждый в своей папке - но общими Home Root tmp Загрузки,

Еще надо запускать с этого ОДНОГО раздела - 2 рассыпных линя Manjaro Arch - также каждый в своей папке.

Пытался загрузить рассыпной линь с папки (hd0,3)/mnj-kde/

	menuentry "  /mnj-kde/boot/vmlinuz-kver-x86_64  " {
set kver=6.12
set     ucode=/mnj-kde/boot/intel-ucode.img
set   vmlinuz=/mnj-kde/boot/vmlinuz-$kver-x86_64
set initramfs=/mnj-kde/boot/initramfs-$kver-x86_64.img
	search --set=root  -f  ${vmlinuz}  ;  prefix=/mnj-kde/boot/grub
echo  ====-f   kver == $kver  rt==$root${vmlinuz}  prefix==$prefix  ;  sleep -i 4
echo	root=(hd0,msdos3)  ;  prefix=/boot/grub
echo  ====rt   kver == $kver  rt==$root${vmlinuz}  prefix==$prefix  ;  sleep -i 4
echo	root=LABEL=Manjaro_128   root=UUID=       root=/dev/sda3
	linux	 ${vmlinuz}  root=/dev/sda3  rw  quiet  splash  udev.log_priority=3
	initrd	 ${ucode} ${initramfs}	 }

Не грузится: как правильно прописать здесь root=/dev/sda3 ??? - для загрузки рассыпного линя со своей папки ?

=================

P.S.

У меня под постами тут подпись:

Везде трудно первые 15 лет, потом легче.

Все проблемы имеют ПРОСТОЕ решение.

Так и эта проблема: оказалась с простым решением.

Разобрался с btrfs - поставил в ОДИН раздел россыпью и Arch и Manjaro и Kubuntu - вынеся общие большие папки - для совместного пользования,

Всем: доступен весь размер ВСЕГО раздела - что и ставилось задачей.



Последнее исправление: alex52mail (всего исправлений: 4)

Я не совсем понимаю вопроса. У меня на разделе 4 линукса разных версий

$ ls /boot
boot.0800   boot.10301  grub  System.map  vmlinuz          vmlinuz-6.1.106  vmlinuz-6.1.77
boot.10300  boot.10302  map   System.old  vmlinuz-6.1.105  vmlinuz-6.1.114  vmlinuz.old
Пока места хватает, то можешь хоть 500 линуксов сделать. Вопрос в чём?

vbcnthfkmnth123 ★★★★★
()
Ответ на: комментарий от vbcnthfkmnth123

Много лет сидел на винде - и снова вернулся на линь - многое подзабыл.

И вопрос был:

Как правильно прописать здесь root= - для загрузки рассыпного линя со своей папки ?

Где у вас находятся разные лини - и какие ?

Сам пока вижу: только распихать каждый в свою папку.

У вас возможно: в vmlinuz или initrd - прописано с какой папки грузить.

Мне бы пока без этого.

Вопрос: как указать

linux ${vmlinuz} root=

  • что рассыпной линь - находится не в корне / - а в папке /mnj-kde ?
alex52mail
() автор топика
Последнее исправление: alex52mail (всего исправлений: 2)
Ответ на: комментарий от CrX

Да - корень у всех тот же - все лини в ОДНОМ разделе.

Но как прописывать в Grub2 - запуск каждого линя - из СВОЕЙ папки ?

Чтобы эта папка: монтировалась при загрузки как /

В блочных линях - это делается.

Как сделать это с рассыпными линями ?

alex52mail
() автор топика

Если я тебя правильно понял, для твоего случая лучше использовать btrfs, у нее есть функция создания подразделов. В одном разделе сможешь создать столько подразделов, сколько тебе нужно. А в конфиге загрузчика для каждого дистра добавишь:

root=UUID_раздела rootflags=subvol=@

UUID у всех один и тот же будет, а вот вместо @ будешь писать название подраздела.

Kron4ek ★★★★★
()
Ответ на: комментарий от Kron4ek

Пишите не читая.

В первом посту было четко расписано: для чего это делается.

cobold ★★★★★ (27.01.25 21:21:18 MSK) - Что такое рассыпные и блочные лини?

Блочные: набор архивов с одной папки на fat или ntfs или ext - типа vdroot-1.vdi или 00-filesystem-x64.sqfs - монтируются слоями на / и так запускается блочный линь.

Россыпью: это обычный линь.

У меня с ext4 /dev/sda3 с папок: /prar2110 /lmde /runtu /minios - нормально запускаются блочные лини.

А в папки /arch /manjaro - развернул эти лини.

Все эти папки: в ОДНОМ разделе.

Блочные лини запускаются - а вот /arch /manjaro - пока запустить не могу.

Есть у кого мысля - как запустить рассыпной линь из папки.

Из другого: линя можно запустить через chroot

Как запустить через Grub2 ?

alex52mail
() автор топика
Последнее исправление: alex52mail (всего исправлений: 2)
Ответ на: комментарий от alex52mail

В общем, Linux может запускать двумя способами.

Способ первый, только ядро Linux:

  • ядро Linux загружается в память;
  • ядро подключает файловую систему, указанную в параметре root в качестве корня /
  • переключает /{dev,proc/sys} в корень
  • ядро запускает /sbin/init

Способ второй, ядро Linux + initramfs (initrd):

  • ядро Linux загружается в память;
  • в память загружается файл с initramfs
  • ядро Linux монтируется в качестве / (корня) минимальную систему из загруженного в память initramfs
  • ядро Linux вызывает /sbin/init из смонтированного initramfs в память
  • сценарии в initramfs выполняют действия предварительные действия для монтирования реальной корневой файловой системы, например загружают модули ядра, драйверы диска, файловой системы, инициализируют RAID (mdadm), lvm, расшифровывают шифрованные контейнеры, ждут появления нужных устройств
  • в конечном итоге монтируют основную файловую систему, допустим в /mnt/root
  • монтируют в /mnt/root/{dev,proc,sys} псевдо файловые системы
  • вызывают метод ядра pivot_root или switch_root и подают ядру сигнал смены корня
  • ядро меняет точку корневую файловую систему относительно точки монтирования /mnt/root
  • ядро запускает /sbin/init с нового корня.

Так вот, тебе нужно разобраться есть ли реализованная функция hook (хук) для сценариев в initramfs, чтобы переключение корневой файловой системы было не в /mnt/root, а в /mnt/root/ubuntu.

У меня с ext4 /dev/sda3 с папок: /prar2110 /lmde /runtu /minios - нормально запускаются блочные лини.

У тебя загрузчик подключает в /lmde /runtu и прочее vdi образы файловых систем, при этом создаётся /dev/loop и передаёт ядру точку монтирования файловой системы или указывает, что смонтировать нужно /dev/loop.

Как это точно реализовано сказать не могу, не использую такие вещи.

Главный вывод, что ядро само по себе ожидает, что в корневой файловой системе, которую ты указываешь в параметре ядра root= будет файловая система со структурой директорий:

bin
boot
data
dev
etc
home
lib
lib32
lib64
libx32
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

А не то, что там будет поддиректория, в которую уже нужно делать switch_root.

Если тебе нужно так - изучай скрипты в Initramfs каждого дистрибутива и если там нет нужного метода - пиши свой скрипт, пересобирай initramfs и добавляй параметр ядра, который будешь обрабатывать скриптом.

Условно параметры ядра будут примерно такие: root=/dev/sda3 subsys=arch

И тебе правильно подсказали - используй btrfs или другую систему с томами.

Там ты сможешь указывать собственно файловую систему и subvolume в ней, который будет доступен так же как директория.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 2)
Ответ на: комментарий от alex52mail

монтируются слоями на / и так запускается блочный линь.

Собственно так и запускаются некоторые LiveCD дистрибутивы, например slax - это по сути набор squashfs файловых систем, которые каскадно монтируются скриптами в Initramfs, а потом в общую точку монтирования переключается ядро.

У меня с ext4 /dev/sda3 с папок: /prar2110 /lmde /runtu /minios - нормально запускаются блочные лини.

Через что ты так запускаешь?

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Через что ты так запускаешь?

Если есть grub.cfg - то тупо запускаю что идет с дистрибутива типа:

menuentry "  /lmde/boot/grub/grub.cfg "  { 
	search --set  -l  ext_128  ;  prefix=/lmde/boot/grub 
echo  ====  CnfgFile==$root$prefix  configs==$configs  ;  sleep -i 5  ;  configfile  $prefix/grub.cfg  }

Если нет grub.cfg - прописывается типа:

	menuentry "  prar2110  from ntfs  "  {
set dir=/prar2110
set vml=boot/vmlinuz-5.13.0-pf5-lf_64
	search --set-root  -f $dir/$vml
	search --set=root -l System_128  ;  prefix=$dir
echo  ==== vml==$dir/$vml  rt==$root  prefix==$prefix ;  sleep -i 4 
	linux  $dir/$vml net.ifnames=0 biosdevname=0 dir=$dir rw quiet copy2ram noswap root=UUID=$uuid 
	initrd  $dir/initrd.xz 	 }

Здесь указывается ядру флаг dir=$dir - на папку - где линь.

Вот и интересуюсь: можно ли так указывать другим ядрам

Как узнать: какие флаги принимает vmlinuz

Главный вывод, что ядро само по себе ожидает, что в корневой файловой системе, которую ты указываешь в параметре ядра root= будет файловая система со структурой директорий:

bin
boot
data
dev
etc
home
....

Все это есть в папках с россыпными линями.

Попробую ядро с блочного линя - где есть dir=$dir - примерить на россыпном.

И тебе правильно подсказали - используй btrfs или другую систему с томами

Наоборот: хочу уйти от многих томов - а все запускать с одного раздела.

Спасибо за ссылку - будем изучать - там точно такая же задача - как и у меня.

Но надо посмотреть: можно ли что сделать в Grub - не залазия в initrd

Все же - можно ли узнать: какие флаги принимает vmlinuz - не разбирая ядро ?

alex52mail
() автор топика
Последнее исправление: alex52mail (всего исправлений: 1)
Ответ на: комментарий от alex52mail

Здесь указывается ядру флаг dir=$dir - на папку - где линь.

Как узнать: какие флаги принимает vmlinuz

Почитай вот здесь: https://docs.kernel.org/admin-guide/kernel-parameters.html

Но параметра dir= в параметрах ядра нет. Само ядро Linux про него ничего не знает. Через строку параметров ядра передавать можно любые параметры, их будет обрабатывать ядро или сценарии в initramfs.

Так что параметр dir=$dir обрабатывает не ядро, а сценарии в initramfs того дистрибутива, что у тебя описан в секции menuentry " prar2110 from ntfs " {

И параметр copy2ram намекает на то, что у тебя файл с образом файловой системы (диска) считывается с директории dir в оперативную память и для ядра Linux, когда ему будет передано управление считанный в память vdi файл будет виден как /dev/loopN (0..8), а в нём уже будет файловая система с некоторым UUID (идентификатором файловой системы), который указывается в параметре root=UUID=$uuid.

Так что в конечном итоге всё, что у тебя сейчас есть - это указание в параметре dir, переданном через строку параметров ядра, пути (поддиректории), обрабатываемым некоторым скриптом в initramfs, который загружает в оперативную память файлы из этой директории.

Все это есть в папках с россыпными линями.

Отлично, но ни ядро Linux, ни стандартные скрипты в initramfs дистрибутивов не умеют переключать корень в поддиректорию, дописывай сам.

Наоборот: хочу уйти от многих томов - а все запускать с одного раздела.

Так ты почитай в начале, что такое subvolume (том) в btrfs, а потом пиши, что хочешь уйти куда-то. С точки зрения btrfs том представляется почти что директорией, точнее если ты просто смонтируешь btrfs, то тома (subvolumes) будут видны как поддиректории относительно корня файловой системы btrfs.

В начале изучи, что тебе ответили, а потом делай выводы.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от kostik87

Так ты почитай в начале, что такое subvolume (том) в btrfs, а потом пиши, что хочешь уйти куда-то. С точки зрения btrfs том представляется почти что директорией, точнее если ты просто смонтируешь btrfs, то тома (subvolumes) будут видны как поддиректории относительно корня файловой системы btrfs.

В начале изучи, что тебе ответили, а потом делай выводы.

Говорят: почитать надо отца и мать

Мне важно не как видны - а как считается занятое место. Если место считается общее для всего раздела\директории - то это решение.

Действительно: надо выяснить с этой btrfs

lzx сжатие давно применяется в win*.vhd - а сжатие файлов в линях - раньше не слышал.

Слышал: в btrfs можно сжимать файлы - что не только экономит место - но и убыстряет работу.

alex52mail
() автор топика

Я был бы рад такой возможности, ведь тогда схожие файлы из всех дистрибутивов можно заменить на жёсткие ссылки освободив пространство, но думаю лялих не способен монтировать директорию как / даже если сделать это скриптами в initramfs.

drl
()
Ответ на: комментарий от Shadow

Взяли бы да рассказали - как использовать chroot при загрузке из папок - не загружая другую систему - и не отнимая ресурс компа.

Как это делается при каждодневном включении компа для обычной работы.

Как говорили пионеры: автор за предложением.

На HDD форматнул раздел в btrfs - похоже подходит для задачи.

Надо проверить влияние на производительность - о чем пишут.

К сожалению, btrfs «благодаря» своей архитектуре крайне подвержена такому явлению, как фрагментация

Таким образом, частые изменения весьма сильно фрагментируют файлы, увеличивая «разбросанность» фрагментов, в общем случае — по нескольким дискам. Это приводит к увеличенной нагрузке на CPU и неоправданному расходу памяти. Сильнее всего фрагментированности подвержены базы данных и образы виртуальных машин.

alex52mail
() автор топика
Последнее исправление: alex52mail (всего исправлений: 3)
Ответ на: комментарий от kostik87

набор squashfs файловых систем, которые каскадно монтируются скриптами в Initramfs,

у dracut есть модуль fstab.sys. В нем можно указать fstab файл, который будет обрабатываться дракутом, и прописать там, как монтировать root и всё остальное. Я так собираю RW root из RO root + overlayfs.

По идее bind mount директории ещё проще будет сделать.

MirandaUser2
()
Последнее исправление: MirandaUser2 (всего исправлений: 1)
Ответ на: комментарий от kostik87

вызывают метод ядра pivot_root или switch_root и подают ядру сигнал смены корня

этой штукой можно себе rm -rf корня устроить, я уже так попадал, когда пытался из одного дистрибутива перейти в другой без перезагрузки. Хорошо тот который убился был не очень нужный.

Xenius ★★★★★
()
Ответ на: комментарий от MirandaUser2

Или btrfs subvolume так тоже умеет?

Разумеется, это же просто отдельное пространство имён. Грубо говоря, обычный каталог, но с некоторыми специальными свойствами.

anonymous
()

5 гб efi fat32 - откуда грузятся также 5 WinPe*.wim
70 гб ntfs - откуда грузятся до десятка разных виндоус с w11*.vhd
44 гб ext4 - откуда грузятся 4 блочных линя - каждый в своей папке - но общими Home Root tmp Загрузки,
Еще надо запускать с этого ОДНОГО раздела - 2 рассыпных линя Manjaro Arch - также каждый в своей папке

Наркоман штоле?

Chord ★★★★
()
Ответ на: комментарий от kostik87

Спасибо за настойчивость.

У меня под постами тут подпись:

Везде трудно первые 15 лет, потом легче.

Все проблемы имеют ПРОСТОЕ решение.

Так и эта проблема: оказалась с простым решением.

Разобрался с btrfs - поставил туда россыпью Arch и Manjaro

Сейчас скачал и поставлю еще в тот-же раздел Kubuntu

Штатная установка Manjaro: делает корнем btrfs раздел - а в папки направляет - флагом ядра root=UUID_раздела rootflags=subvol=@

UUID=0B24-0C15                            /boot/efi      vfat    defaults,umask=0077 0 2
UUID=4d4f33e6-01aa-4829-9ba4-639cb8a225e3 /              btrfs   subvol=/@,defaults,compress=zstd:1 0 0
UUID=4d4f33e6-01aa-4829-9ba4-639cb8a225e3 /home          btrfs   subvol=/@home,defaults,compress=zstd:1 0 0
UUID=4d4f33e6-01aa-4829-9ba4-639cb8a225e3 /var/cache     btrfs   subvol=/@cache,defaults,compress=zstd:1 0 0
UUID=4d4f33e6-01aa-4829-9ba4-639cb8a225e3 /var/log       btrfs   subvol=/@log,defaults,compress=zstd:1 0 0
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0

Каждому из монтированного: доступен ВЕСЬ размер раздела - что и ставилось задачей.

Сейчас допиливаю: вынося из папок - для общего использования большие общие папки типа: Downloads HardWare

Тестировал доступ к разным разделам.

Наберу данные: напишу отдельно как и влияет ли - тип раздела на производительность.

1). Чем в линях тестировать производительность ?

Chord ★★★★ (28.01.2025 11:37:13 +02:00) Наркоман штоле?

В винде: мерял время выполнения тех же задач в разных системах - это единственное мерило производительности.

alex52mail
() автор топика