Установка Rosa в btrfs с переносом в подтома после установки — различия между версиями
Filicorn (обсуждение | вклад) (→Делаем chroot и Правим fstab) |
Filicorn (обсуждение | вклад) |
||
Строка 143: | Строка 143: | ||
Перезагружаемся!!! | Перезагружаемся!!! | ||
+ | |||
+ | |||
+ | |||
+ | == '''Макет системы''' == | ||
+ | subvolid=5 | ||
+ | | | ||
+ | | ──── @ | ||
+ | | | | ||
+ | | |── /usr | ||
+ | | | | ||
+ | | |── /bin | ||
+ | | | | ||
+ | | |── /home (пустой каталог. точка монтирования home) | ||
+ | | |── … | ||
+ | | | ||
+ | | | ||
+ | |── @home | ||
+ | |── @_snapshot | ||
+ | | | ||
+ | └── @... | ||
+ | |||
+ | Благодарность за помощь в редакции данной статьи Михаилу Новоселову! | ||
+ | |||
+ | |||
+ | Внешние ссылки | ||
+ | |||
+ | [https://btrfs.wiki.kernel.org/index.php/Main_Page Вики btrfs]<br /> | ||
+ | [https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs%285%29#MOUNT_OPTIONS Опции монтирования]<br /> | ||
+ | [https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3 Балансировка btrfs]<br /> | ||
+ | [http://wiki.rosalab.com/ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_Rosa_%D0%B2_btrfs_%D1%81_%D0%BF%D0%BE%D0%B4%D1%82%D0%BE%D0%BC%D0%B0%D0%BC%D0%B8_%D0%BD%D0%B0_%D1%8D%D1%82%D0%B0%D0%BF%D0%B5_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B8&action=edit]<br /> | ||
+ | [http://wiki.rosalab.com/ru/index.php/%D0%92%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D1%87%D0%B8%D0%BA%D0%B0_Grub2]<br /> | ||
+ | [https://wiki.archlinux.org/index.php/EFI_System_Partition%20(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)]<br /> | ||
+ | [https://habr.com/post/314412/]<br /> | ||
+ | [https://wiki.archlinux.org/index.php/Change_root_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)]<br /> | ||
+ | [https://losst.ru/oshibka-grub-rescue-unknown-filesystem]<br /> | ||
[[Категория:Документация]] | [[Категория:Документация]] | ||
[[Категория:Руководства]] | [[Категория:Руководства]] |
Версия 14:38, 26 июня 2018
Статья рассчитана на повышение уровня владения операционной системой Роса, а также более глубокое понимание файловой системы btrfs. Статья позволит повысить вам стабильность, отказоустойчивость системы.
Система btrfs уникальна тем, что являясь по себе файловой системой, внутри может содержать подтома, которые имеют функции разделов.
В данной инструкции нужно строго следить за номерами разделов. Своими действиями. Понимать принцип монтирования разделов, команд копирования/переноса и иметь минимальный опыт работы в терминале.
Статья подходит и для других дистрибутивов, умеющих работать с файловой системой btrfs.
Что такое подтома в системе btrfs?
При разметке диска опытные стараются ставить корень, home и другие каталоги в разные разделы, которые имеют структуру sdxX, а в системе uefi их может быть множество.
В случае же с btrfs раздел может быть один, а вот подтома заменяют дополнительные разделы. И в итоге у нас получается - к примеру раздел с btrfs - sda1 один, а подтома - @, @home, @var, @opt, @usr разные и независимые, с тем только условием, что они имеют точки монтирования в корневом подтоме @ и прописаны в /etc/fstab.
Содержание
Основные команды, которыми мы будем пользоваться
man mkdir cd mount umount btrfs subvolume list btrfs subvolume create btrfs subvolume snapshot mv mc
Структура операций
1. Установить систему на раздел с btrfs.
2. Запустить LiveCD и примонтировать установленую систему для работы в каталог /media/rosa.
3. Создать подтома корня и домашнего каталога (@ и @home).
4. Сделать chroot в систему с опцией subvol=@ в разделе btrfs (subvolid=5).
Разметим диск
Грузимся в LiveCD открываем gparted и делаем простую разметку. Раздел с корнем и раздел подкачки.
Или устанавливаем сразу, без режима LiveCD, и редактируем разделы в diskdrake (Управление дисковыми разделами росы).
Примечание: Стоит отметить, что раздел подкачки не нужен, если у вас более 4Gb оперативной памяти! Если система UEFI, то раздел /boot будет в fat32/vfat и иметь вид “/sdxX /boot fat32 350Mb-500Mb”.
Если у нас UEFI, то при разметке поменяется нумерация разделов от той, что в статье - "/boot/efi sda1, /корень sda2, /swap sda3". Читаем про утилиту efibootmg и флаги для разделов esp,boot.
Итак, ефи у нас не будет, поэтому создаем корень и свап:
/sda1 / btrf 50Gb /sda2 swap 4Gb
Установим систему в btrfs
Устанавливаем систему как обычно в подготовленные разделы. В итоге у нас весь subvolid=5 заполниться системными каталогами и файлами, с которыми не удобно работать при создании снапшотов!
После установки, выключаем систему и загружаемся в LiveCD. Все дальнейшие действия по переносу в подтома можно осуществлять только в этом режиме, иной метод может привести к потере данных.
Создание подтомов в системе btrfs
Монтируем нашу систему в каталог media
mkdir /media/rosa mount /dev/sda1 /media/rosa
Переходим в папку rosa
cd /media/rosa ls ./home - проверяем, видим имя нашего пользователя в установленной системе.
Продолжаем. Не забываем, что мы находимся в каталоге rosa.
Создадим подтома (@ и @home) в системе btrfs на разделе /dev/sda1, который мы смонтировали в /media/rosa:
btrfs subvolume create ./@ btrfs subvolume create ./@home
Проверим, что подтома созданы верно @ и @home
ls ./rosa - увидим системные каталоги, включая @ и @home или btrfs subvolume list ./ ID 263 gen 31 top level 5 path @ ID 264 gen 32 top level 5 path @home
Перенос в подтома
На этом этапе стоит дать пояснения. Можно не переносить каталог /home в подтом @home, а просто перенести всё содержимое в @. Тогда уменьшится количество команд при создании снапшотов и станет легче обслуживать систему. Сократиться количество подтомов.
Но есть и минусы этой простоты, если home не отделить, он тоже будет снапшотится. Естественно это скажется на размере снапшотов и занимаемом дисковом пространстве, при внушительном размере хомяка))).
Установим утилиты nano и mc, если их нет!
Запустим Midnight Commander:
mc
Легких путей Мы не ищем, поэтому поместим все по своим местам в подтома @ и @home.
Перенос /home в @home:
Находясь в MC, слева перейдем в каталог @home, справа перейдем в каталог /home. Выберем нашего юзера - /user и нажмем на клавиатуре клавишу insert (выделит все файлы и папки в каталоге).
Затем нажмем F6 для переноса из /home в подтом @home. Проверить это легко - справа в mc каталог /home будет пуст.
Перенесем остальные каталоги и файлы в подтом @
Теперь нужно перенести все каталоги и файлы в подтом @, кроме @home. Удалять папку /home не нужно, она будет точкой монтирования нашего подтома @home.
Слева перейдем в @, а справа передвигаемся по каталогам, нажимая клавишу insert выделим все файлы, кроме @home. Нажмем F6 и перенесем все выделенное в @.
Выйдем из редактора MC - введем exit.
Дальше нам нужно поправить fstab и обновить загрузчик grub2!
Делаем chroot и Правим fstab
Мы перенесли систему в подтома и параметр монтирования нам нужен не /, а subvol=@. Нужно примонтировать наш btrfs раздел с опцией subvol=@ и сделать chroot в систему!
cd /tmp - Перейдем в папку tmp mkdir 0 - создадим папку 0 mount | grep rosa - Проверяем расположение нашей системы и параметры монтирования /dev/sda1 on /media/rosa type btrfs (rw,nosuid,nodev,relatime,space_cache,subvolid=5,subvol=/,uhelper=udisks2)
mount /dev/sda1 0 -o subvol=@ - Монтируем раздел btrfs на /dev/sda1 в папку 0 с опцией subvol=@ ls 0 - Проверяем. Видим список каталогов нашей системы
Смонтируем временные интерфейсные файловые системы в 0 (из хостовой системы в гостевую):
for i in dev sys proc; do mount --bind -v /$i 0/$i; done mount: /dev bound on /tmp/0/dev. mount: /sys bound on /tmp/0/sys. mount: /proc bound on /tmp/0/proc.
Пояснение: /$i - из хостовой системы, 0/$i - в гостевую. Программа, запущенная в окружении chroot не может получить доступ к файлам вне нового корневого каталога.
Делаем chroot в папку 0:
chroot 0 ls - Проверяем. Видим список каталогов нашей системы
Правим fstab в /etc/fstab:
Горячие клавиши в nano: выделить строку shift+end, копировать Alt+6, вставить Ctrl+U, сохранить изменения Ctrl+O, выход Ctrl+X. nano /etc/fstab UUID=3c9c9142-ac07-45ed-99b5-773f3cea2ce1 / btrfs relatime,nofail,subvol=@ 1 1 UUID=3c9c9142-ac07-45ed-99b5-773f3cea2ce1 /home btrfs relatime,nofail,subvol=@home 1 1 Опции relatime,nofail можно заменить на defaults
Обновляем загрузчик и перезагружаемся
update-grub2 - для росы update-grub - для убунту/дебиано подобных
Обновление загрузчика может не сработать в росе, рекомендуется установить загрузчик по новой в /dev/sda сразу, командами ниже. Или же после перезагрузки при неудаче, по небольшой инструкции "Система не запустилась и выдает ошибку" можно зайти в систему и установить загрузчик из под суперпользователя.
Установка grub2 в /dev/sda (находимся в chroot 0):
grub2-install /dev/sda grub-install /dev/sda - для убунту/дебиано подобных и остальных
Проверяем
cat /boot/grub2/grub.cfg | grep /boot - для росы cat /boot/grub/grub.cfg | grep /boot - для остальных
Видим что boot раздел находиться в @ -/@/boot, все верно и сделано правильно!
Перезагружаемся в нашу систему. Если всё сделано правильно, то всё загрузится и заработает! Дальше можно приступать к созданию снапшотов.
Проверить наши подтома можно примонтировав раздел btrfs в запущеной системе, в нашем случае это sda1:
su - mount /dev/sda1 /mnt ls /mnt/@/home - будет пуст, а ls /mnt/@home - покажет нам нашего пользователя!!! umount /mnt - отмонтировать раздел
Система не запустилась и выдает ошибку
Находясь в chroot мы обновили загрузчик grub2. Перезагружаем и видим такой вывод - “error file boot/grub/i386-pc/normal.mod not found” и "grub rescue>". Загрузчик не нашел путь до модуля normal.mod
Без модулей grub поддерживает только ту файловую систему, которая была в /boot. Вы можете попытаться просмотреть содержимое каждого раздела чтобы определить где находятся файлы модулей.
Наш boot там же, где и @.
grub rescue> ls
Пример: по команде ls, отображаются разделы: (hd0) (hd0,msdos4) (hd0,msdos3) (hd0,msdos2) (hd0,msdos2) (hd0,msdos1) и их нумерация будет такая: ls (hd0,1)/ ls (hd0,2)/ ls (hd0,3)/ ls (hd0,4)/
В таких случаях нам нужно найти раздел /boot. Мы знаем, что /boot у нас в @, поэтому ищем где наши @ и @home.
Ищем @ и @home в разделе hd0,1:
ls (hd0,1)/ @ @home ls (hd0,1)/@ - команда выведет каталоги в @. Где мы увидим наш /boot.
Если вы увидели папку boot, значит это наш раздел. Дальше устанавливаем этот раздел значением переменной root с помощью команды set:
set root=(hd0,1) set prefix=($root)/@/boot/grub2
Загружаем и запускаем модуль normal, который должен загрузить все, что нам необходимо:
insmod $prefix/i386-pc/normal.mod normal
Происходит загрузка в систему.
Дальше в системе устанавливаем загрузчик grub2 в /dev/sda:
su - grub2-install /dev/sda
Перезагружаемся!!!
Макет системы
subvolid=5 | | ──── @ | | | |── /usr | | | |── /bin | | | |── /home (пустой каталог. точка монтирования home) | |── … | | |── @home |── @_snapshot | └── @...
Благодарность за помощь в редакции данной статьи Михаилу Новоселову!
Внешние ссылки
Вики btrfs
Опции монтирования
Балансировка btrfs
[1]
[2]
[3]
[4]
[5]
[6]