JeOS на Btrfs
Показание к операции
Постановка опыта с пересадкой altlinux с ext2/3/4 на btrfs для выяснения вопроса о приживаемости btrfs в altlinux
Используемые инструменты
- VirtualBox в качестве операционной
- свежий Starterkit JeOS
- свежий SystemResqueCD (или любой другой LiveCD, способный смонитировать btrfs и чрутнуться туда, к сожалению на текщий момент установочный образ jeos не умеет btrfs)
Подготовка
просто ставим jeos в vbox
- весь жесткий диск в один раздел монтируем в / (условие задачи)
- apt-get update
по окончанию должна получиться живая система с рабочим apt
Процедура
необходимо
- конвертнуть fs
- поставить и настроить загрузчик
- пересобрать initrd
поехали
конвертить будем прямо из этойже системы
apt-get install btrfs-progs
грузимся с cd (я все еще грузился с родной iso), спрыгиваем в tty2, понимаем, что sda1 уже захвачен devmapper-ом, монтируем его readonly, чтобы можно было конвертить, чрутимся внутрь, конвертим:
mount -o ro /dev/mapper/sda1 /mnt mount --bind /dev /mnt/dev mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys chroot /mnt bash btrfs-convert /dev/sda1 ^D
тут понимаем, что отмонтировать уже не удастся, маппер вообще это все потерял. ресетим виртуалку, и понимаем, что смонтировать уже не выйдет
все это можно было бы сделать сразу из sysresqcd даже без монтирования и чрута, но хотелось использовать родное
грузимся с sysresqcd, тут devmapper не мешается, монтируем просто /dev/sda1 уже в rw, чрутимся, доделываем сетку и ставим extlinux
echo nameserver 8.8.8.8 >/etc/resolv.conf apt-get install extlinux
на самом деле можно было поставить extlinux сразу, но кто же знал...
ну и еще про лодырей:
- попытка использовать grub обломалась об не понимание файловой системы при загрузке
- изначально я ставил syslinux, и к нему до кучи syslinux-extlinux - трата времени
строим extlinux:
dd if=/boot/extlinux/mbr.bin of=/dev/sda1
на самом деле я это ↑ накатил еще из syslinux, но суть не меняется
extlinux -i /
попытавшись ребутнуться можно насладиться тем, что конфигу (которую любезно уже нарисовали) оно не видит
чиним это:
ln -s syslinux /boot/extlinux
в самой конфиге extlinux.conf
меняем @ROOTDEV@
на /dev/sda1
(возможно что-то это должно сменить самостоятельно?)
тамже в append добавляем fastboot
, иначе обломаемся об altbug #37842:
APPEND fastboot ro root=/dev/sda1
т.к. UUID после конвертации сменился - также обновляем fstab
пересобираем initrd:
т.к. мы уже на btrfs, то никаких колдунств с модулями не нужно
make-initrd -k {версия ядра}
тут `uname -r`
не прокатит, ибо загружено другое ядро, так что руками
ну гдето тут можно еще и подчистить старую ненужность:
btrfs subvolume delete /ext2_saved
That's all Folks!
А еще можно просто использовать https://www.altlinux.org/Altlive - он устанавливается на btrfs сразу с помощью https://packages.altlinux.org/en/sisyphus/srpms/live-install