Установка нескольких Linux-дистрибутивов на разные разделы одного HDD?
Не сочтите за наглость, но хочу услышать подробный и доскональный ответ по данному вопросу.
Максимум в своей жизни что приходилось делать — устанавливать Windows c usb/disk.
Имеется простецкий по своим характеристикам ноутбук. Нужно на него накатить 2-3 разных дистрибутива lin’я, чтобы они были на разных разделах одного HDD. При этом, нужно чтобы для всех этих дистрибутивов был доступен один огромный раздел, для обращения ко всяким мультимедиа и документам.
P.S. гугл выдает всякие инструкции по похожему вопросу, но там все не так доступно для чайника, как мне того требуется.
А предложения о виртуалке или о чём-то стороннем не гожий вариант.
P.S.S. Вопрос о том, какие конкретно дистрибутивы требуются к установке — не расматривается. Так как «клиент всегда прав». Ему фиг объяснишь. Ясно одно — для ежедневной работы; с высоким быстродействием ОС.
Берете диск, разбиваете на разделы и ставите.
Все.
Никакие инструкции не нужны.
Современные дистрибутивы сами находят соседей и добавляют их в граб, есть такой зверь, как os-prober для граба.
Есть ли какие-то важные детали во всей этой простотЕ, или же исключения? И, после того как все будет успешно установлено — граб будет предоставлять меню выбора для загрузки ОС?
Угу. Если только дистрибутивы не древние вперемешку с новыми, чтобы не получилось так, что после установки современного с grub2 ставился мамонт с grub1.
МУЛЬТИ-УСТАНОВКА дистрибутивов Linux НА ОДИН РАЗДЕЛ в SUBVOLUME-BTRFS на примере Дистрибутива MANJARO
МУЛЬТИ-УСТАНОВКА дистрибутивов Linux НА ОДИН РАЗДЕЛ в SUBVOLUME-BTRFS на примере Дистрибутива MANJARO с мульти-загрузкой двух или даже многоуровнего GRUB загрузчика для каждого дистрибутива. Все мы привыкли к ситуациям, когда на одном ПК у нас стоит один Linux дистрибутив и например Windows дистрибутив. Иногда системы три, иногда четыре, но это бывает редко. В основном этот подход подразумевает под собой установку разных операционных систем или разных дистрибутивов на разные разделы ваших дисков. Но что если я сейчас вам покажу то, что различные Linux дистрибутивы или один дистрибутив с различными десктопами и для различных нужд могут уживаться на одном единственном разделе и при этом каждый будет жить своей собственной жизнью, а каталог пользователя и его подкаталоги будут объедены в один общий? Такого не может быть? Ну что же, давайте посмотрим 🙂
Все тесты проводились на дистрибутиве MANJARO KDE, но по сути, не имеет никакого значения какой из доступных дистрибутивов MANJARO выберете вы!
Для начала грузимся с лайв CD/USB, после чего открываем консоль, получаем постоянные root права на эту сессию через «sudo su -» и начинаем 🙂 Нам нужно выполнить разметку диска и присвоить каждому разделу код файловой системы и название. Для этого будем последовательно использовать 2 программы, потому что в одной проще сделать разметку, а во второй присвоить коды и дать название разделам. Опытные пользователи могут выбрать свой вариант.
1. Создаем GPT метку диска утилитой «parted» — нажимаем — «p» — на экран будет выведена информация о разделах и если они есть, то удаляем их командой «rm» — где «1» это номер раздела. Команду нужно повторить для всех разделов. Их список мы смотрели на предыдущем шаге командой «p».
Теперь создаем разметку GPT, пишем «mklabel gpt» — «yes» — «q» и «ENTER»
2. Создаём раздел на 31МБ для будущего GRUB загрузчика. Нажимаем — «Новый» — пишем «31M» — выбираем тип файловой системы «EFI»
По этому же принципу делаем остальные разделы
3. Создаём раздел на 128МБ для будущего /BOOT раздела. Переключаемся на неразмеченную область — «Новый» — пишем «128M» — выбираем тип файловой системы «BIOS boot»
4. Создаём раздел на 50ГБ для будущего / раздела систем (у меня на виртуалке для наглядного примера это 25ГБ), переключаемся на неразмеченную область — «Новый» — пишем «50G» и «ENTER»
Установленных систем разных или одного дистрибутива может быть 2! на 50GB или даже 3! Тут есть один нюанс — если у вас имеется в наличии например 1SSD на 128ГБ или 256ГБ и 2SSD или HDD на 1ТБ например для /DATA файлов (по сути будущие подкаталоги /home/user/. то можете в этом пункте отдать под этот раздел 100ГБ. Чем больше места будет в корне, тем большее кол-во разных дистрибутивов или копий одного дистрибутива вы сможете на него установить. Если конечно вам это нужно. Тут важно понимать, что /DATA (это /home/user/..) у нас будет (5) пятым разделом и места под него должно быть достаточно для ВАШИХ нужд! Например у меня на рабочей системе для этого раздела выделен отдельный HDD на 1TB и мне этого хватает для всего что мне нужно.
5. Создаём раздел на RAM+2GB (у меня на виртуалке это 4+2, вы рассчитывайте свой объём оперативной памяти и прибавляйте 2GB), переключаемся на неразмеченную область — «Новый» — пишем «размер равный вашей оперативной памяти + 2ГБ» и «ENTER» — выбираем тип файловой системы «Linux своп»
6. Создаём раздел на всё остальное место для /DATA (будущий /home/user/..), переключаемся на неразмеченную область — «Новый» — жмем «ENTER» чтобы выбрать оставшееся место на диске под будущий /DATA раздел. Нажимаем «Запись» пишем «yes» и нажимаем «ENTER» а после «Выход»
7. Запускаем программу разметки диска # gdisk /dev/sda — и далее присваиваем для каждого раздела код файловой системы и метку раздела (не путайте с меткой диска, это мы сделаем чуть позже при форматировании разделов), всё цифры и имена набираем с клавиатуры.
t - 1 - EF02 - ENTER t - 2 - 8300 - ENTER t - 3 - 8300 - ENTER t - 4 - 8200 - ENTER t - 5 - 8300 - ENTER c - 1 - UEFI - ENTER c - 2 - BOOT - ENTER c - 3 - SYSTEM - ENTER c - 4 - SWAP - ENTER c - 5 - DATA - ENTER
Number Start (sector) End (sector) Size Code Name 1 2048 67583 32.0 MiB EF02 UEFI 2 67584 2164735 128.0 MiB 8300 BOOT 3 2164736 107022335 50.0 GiB 8300 SYSTEM 4 107022336 136382463 6.0 GiB 8200 SWAP 5 136382464 500118158 18.8 GiB 8300 DATA
Не забудьте сохранить изменения и выйти, для этого нажмите «w» а после «y» и «ENTER»
8. Запускаем графический установщик. В разделе «Клавиатура» рекомендую пока выбрать «English (US)» и нажать «Далее». Второй язык сможете добавить позднее. Выбираем «Ручная разметка» после выбираем «/dev/sda3» и нажимаем «Править» — выбираем «Форматировать» — «Файловая фистема» — «Btrfs» и «Точка монтирования» — «/» чтобы система понимала, на какой раздел нужно производить установку. Потом выбираем «/dev/sda4» и нажимаем «Править» — выбираем «Форматировать» — «Файловая система» — «Область подкачки Linux» и «Точка монтирования» без изменений. После нажимаем «Ок» и «Далее» — настраиваем имена и пароли. На окно с предупреждением нажимаем «ОК» — «Далее» и у вас должно было быть сейчас что-то вроде этого. Ну всё, можем запускать графическую установку, нажимайте «Установить» и «Приступить к установке» а после завершения процесса установки не перезагружайтесь!
9. Далее переходим к настройке GRUB загрузчика, назовём его установку двухуровневой. Что это нам даёт — у каждой системы есть свой взгляд на загрузку и для того, чтобы избежать конфликтов, мы пропишем GRUB на отдельный раздел и он будет передавать управление тому GRUB загрузчику, чью систему мы будем загружать через GRUB меню при старте ПК/Ноутбука.
10. Форматирование раздела под наш загрузчик «-L BOOT» задаёт метку разделу, он же «LABEL» и «-m0» отключает резерв места для записи от пользователя
# mkfs.ext3 -L BOOT -m0 /dev/sda2
12. Монтируем наш отформатированный раздел по заданной ранее при форматировании метке, то есть по «LABEL»
13. Так как при установке системы она поставила свою загрузочную запись на /dev/sda, то нам нужно забрать у системного загрузчика управление назад и прописать туда наш
# grub-install --boot-directory=/mnt/BOOT/ /dev/sda
"Выполняется установка для платформы i386-pc. Установка завершена. Ошибок нет."
# btrfs filesystem label /dev/sda3 SYSTEM
16. Смонтируем наш системный раздел по метке в созданный каталог для доступа к нашим /@SOBVOLUMES — он пригодится нам для будущей работы с нашими субсистемами 🙂
17. Для начала сделаем 2 снимка (SNAPSHOT) нашей системы установленной на /@SUBVOLUMES, она сейчас установлена в каталок «/@» — для этого выполним команду
# btrfs subvolume snapshot /mnt/SUB/@ /mnt/SUB/@MSTABLE # btrfs subvolume snapshot /mnt/SUB/@ /mnt/SUB/@MSECOND
18. И сразу сделаем бэкап свежеустановленной системы в «/@» для того, чтобы у нас вдруг с ним не вощник конфликт делёжки GRUB конфига и заодно если что, можно будет откатиться к свежачку 🙂
К слову, снимок системы, то есть SNAPSHOT по факту ничего не весит и не замимает места на вашем SSD или HDD, а так же его создание занимает, ну хорошо если 1 секунду 🙂 Таким образом мы сейчас установили на один раздел 2 копии НЕЗАВИСИМЫХ друг от друга систем! Которые не занимают места на диске. Я думаю из названий снимков уже понятно, какая будет у нас основной, а какая второстепенной. А та система, которая была установлена при установке в «/@» пусть там и лежит. Если что-то пойдёт не так, то мы просто загрузимся с LiveCD/USB или из второй системы «@MSECOND», смонтируем нашу систему в «/mnt/SUB» командой «mount -L SYSTEM /mnt/SUB», переименуем наш SNAPSHOT «/@MSTABLE» в «/@MOLD» и сделаем ещё один снимок (SNAPSHOT) командой «btrfs subvolume snapshot /mnt/SUB/@ /mnt/SUB/@MSTABLE». И не забывайте, SNAPSHOT системы не занимает места на вашем диске, а значит вы можете делать его, например перед обновлением или установкой незнакомого софта или же просто имея желание поэкспериментировать с системой.
19. Теперь нужно прописать в загрузчик временный путь к нашему /@MSTABLE SUBVOLUME, чтобы он загрузил именно эту систему. Сделать это можно следующим образом
# nano -w /mnt/SUB/@MSTABLE/boot/grub/grub.cfg
Находим первую запись в строке с названием «### BEGIN /etc/grub.d/10_linux ###»
И заменяем в этом разделе все «/@» на «/@MSTABLE» — должно получиться вот так
### BEGIN /etc/grub.d/10_linux ### menuentry 'Manjaro Linux' --class manjaro --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-2282e840-f7a1-4312-b6e9-912ea9f9541c' < load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod btrfs set root='hd0,gpt3' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3 2282e840-f7a1-4312-b6e9-912ea9f9541c else search --no-floppy --fs-uuid --set=root 2282e840-f7a1-4312-b6e9-912ea9f9541c fi linux /@MSTABLE/boot/vmlinuz-5.10-x86_64 root=UUID=2282e840-f7a1-4312-b6e9-912ea9f9541c rw rootflags=subvol=@MSTABLE quiet apparmor=1 security=apparmor udev.log_priority=3 initrd /@MSTABLE/boot/intel-ucode.img /@MSTABLE/boot/initramfs-5.10-x86_64.img >
# nano -w /mnt/SUB/@MSECOND/boot/grub/grub.cfg
# nano -w /mnt/BOOT/grub/grub.cfg
set timeout=5 set default=0 insmod part_gpt insmod btrfs menuentry 'Start MANJARO STABLE' < configfile (hd0,gpt3)/@MSTABLE/boot/grub/grub.cfg >menuentry 'Start MANJARO-SECOND'< configfile (hd0,gpt3)/@MSECOND/boot/grub/grub.cfg >
Естественно, если схема разбивки вашего диска иначе, то «hd0» подгоните под номер вашего диска и «gpt3» под номер раздела на диске 🙂
Вам нужны доказательства что эти системы не имеют общих папок, что это две абсолютно независимые друг от друга системы? Давайте в @MSTABLE и в @MSECOND создадим в /ROOT/ каталоге по одному файлу и назовём их @MSTABLE-proof и @MSECOND-proof 🙂 а после их загрузки убедимся в том, что это две разные системы на одном разделе!
# touch /mnt/SUB/@MSTABLE/root/@MSTABLE-proof # touch /mnt/SUB/@MSECOND/root/@MSECOND-proof
# umount /mnt/SUB # umount /mnt/BOOT # reboot
22. Загрузились 🙂 запускаем консоль, получаем root права через «sudo su -» и первым делом настраиваем все параметры конкретной загруженной системы под её загрузчик, потом повторяем то же самое для второй системы и перезагружаемся!
# grub-mkconfig -o /boot/grub/grub.cfg
23. Теперь отформатируем наш /DATA раздел, чтобы в последующем перенастроить пути к домашним каталогам пользователей, но для этого выйдет отдельная статья!
# mkfs.btrfs -L DATA /dev/sda5 # mkdir /mnt/BOOT # mkdir /mnt/SUB
Я немного затупил вконце видео, не понял почему файл оставленный на Рабочем столе одной системы появился на второй ) Но у нас же они идентичные, юзер один и тот же и домашние каталоги общие 🙂 Но это тема отдельной статьи!
На этом мы закончили и как видите, на одном «/dev/sda3» разделе может существовать бесконечное множество дистрибутивов. Сам я около 3 месяцев как перешёл на Линукс и мне посчастливилось познакомиться на канале @calculatelinux в Телеграм с замечательным и умнейшим человеком под ником @Kewol. Именно он рассказал мне о такой возможности и на пальцах показал все преимущества такого подхода, за что ему огромнейшее человеческое спасибо! Он так же написал статью на https://wiki.calculate-linux.org/ru/install_multy_distrs_to_btrfs_subvol/draft (к сожалению её пока не подтвердили, да и писал он больше для себя и для того, чтобы увидеть её, нужно пройти регистрацию). Дело в том, что по всей видимости не каждый дистрибутив умеет сразу ставить себя в /@ SUBVOLUME, но когда мы начали пробовать на MANJARO Linux, то он был очень удивлён, так как на этом дистрибутиве всё встало само собой! Очень надеюсь, что статья вызовет резонанс среди продвинутых пользователей и пригодится новичкам 🙂
Скоро выложу вторую часть по настройке домашних каталогов на другой раздел диска.
Видеоинструкция тут: https://www.youtube.com/watch?v=tQvttHujarY www.youtube.com/watch?v=tQvttHujarY
Всем спасибо за внимание и всем добра!