Введение в Btrfs.

Установите пакет пользовательских утилит btrfs-progs .

1
pacman -S btrfs-progs arch-install-scripts

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

Так как Btrfs не может содержать swap-файл, необходимо заранее позаботиться о разделе с подкачкой, если он вам нужен.

1
mkswap /dev/sda2

Создаём файловую систему на разделе. Для разделов от 1ГБ и меньше, чтобы более эффективно использовать пространство, рекомендуется передать ключ -M к параметрам mkfs.btrfs.

При желании можно задать лэйбл ключом -L.

1
2
mkfs.btrfs /dev/sda<цифра>
mkfs.btrfs -L "root" /dev/sda<цифра>

Теперь монтируем.

1
mount /dev/sdb1 /mnt

Затем создадим два подтома под корень и домашние каталоги пользователей.

1
2
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
1
btrfs subvolume list /mnt

И отмонтируем корень ФС.

1
umount /mnt

Для того, чтобы монтировать подтом подобно обычному разделу диска, команде mount нужно указывать опцию subvol.

Монтируем корень.

1
mount -o subvol=@,compress=lzo,relatime,space_cache,autodefrag /dev/sdb1 /mnt

Так же в параметрах мы указали использовать сжатие (lzo), что даёт прирост экономии места плюс повышает производительность, и дефрагметацию в фоне.

Создаём папку и монтируем в неё наш будущий каталог пользователей.

1
2
mkdir /mnt/home
mount -o subvol=@home,compress=lzo,relatime,space_cache,autodefrag /dev/sdb1 /mnt/home

Дальше действуем по вики, т.е. выбираем зеркала и ставим базовую систему. При генерации initramfs mkinitcpio будет ругаться на отсутствие fsck.btrfs - это нормальное явление. Уберём этот хук fsck из конфига, т.к. для Btrfs он не требуется.

1
nano /etc/mkinitcpio.conf

Вот данная строка в файле.

1
HOOKS="base udev autodetect modconf block filesystems keyboard"

И пересоздадим initramfs.

1
mkinitcpio -p linux

И ещё момент по поводу загрузчика, не знаю как другие, а grub точно умеет грузиться с Btrfs, так что выбрать лучше именно его. Так же не забудьте установить пакет btrfs-progs и позаботиться о бэкапах.

Использование btrfs.

Снимки. Монтируем корень ФС.

1
mount /dev/sdb1 /mnt

Создаём снимок корня системы.

1
2
3
4
btrfs subvolume snapshot /mnt/@ /mnt/@_bac
btrfs subvolume snapshot /mnt/@home /mnt/@home_bac

btrfs subvolume list /mnt

Каталоги абсолютно идентичны, и пока мы не начнём изменять файлы, снимки места не занимают.

Удаление.

1
btrfs subvolume delete /mnt/@

Откат: грузимся с live CD, монтируем корень ФС и переименовываем подтома. Так же подтома можно переименовать прямо в рабочей системе, если загрузка удачна.

1
2
3
4
5
6
mount /dev/sdb1 /mnt
mv /mnt/@ /mnt/@_bad
mv /mnt/@_bac /mnt/@

mv /mnt/@home /mnt/@home_bad
mv /mnt/@home_bac /mnt/@home

Либо грузимся как обычно, а в меню grub’а указываем подтом с бэкапом rootflags=subvol=backup.

Копирование при записи (CoW). Если использовать команду cp с ключом --reflink=auto, то копия файла не будет занимать место на диске. И впоследствии, допустим, при изменении скопированного файла, записываться на диск будут только изменённые блоки.

“Онлайн”-проверка ФС. При которой осуществляется чтение всех данных/метаданных с перепроверкой контрольных сумм, при наличии ошибок обнаружение их и исправление по возможности.

1
btrfs scrub start -B /

Если опустить ключ -B, процесс уйдёт в фон, и о ходе выполнения можно будет узнать командой.

1
btrfs scrub status /

Пример вывода.

1
2
3
scrub status for 56edc366-a153-4eee-b2a6-471b7066b93d
scrub started at Sat Dec 14 06:37:19 2013 and finished after 3242 seconds
total bytes scrubbed: 222.45GB with 0 errors

Рекомендуется проводить проверку регулярно (еженедельно). “Оффлайн” - проверка ФС (на отмонтированном разделе). При отсутствии ошибок утилита возвратит 0.

1
btrfs check /dev/sda

Установка из существующей системы или с live usb.

1
pacman -S btrfs-progs arch-install-scripts

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

Так как Btrfs не может содержать swap-файл, необходимо заранее позаботиться о разделе с подкачкой, если он вам нужен.

1
mkswap /dev/sda2

Внимание! это отформатирует весь ваш диск, с потерей данных!

1
mkfs.btrfs -f -L WD /dev/sdbX

Монтируем.

1
mount /dev/sdb /mnt

Создадим два подтома под root и домашний каталог пользователя.

1
2
btrfs subvolume create /mnt/root
btrfs subvolume create /mnt/home

И отмонтируем корень ФС.

1
umount /mnt

Монтируем корень.

1
mount -o subvol=@,compress=lzo,relatime,space_cache,autodefrag /dev/sdb /mnt

Создаём папку и монтируем в неё наш будущий каталог пользователей.

1
2
mkdir /mnt/home
mount -o subvol=@home,compress=lzo,relatime,space_cache,autodefrag /dev/sdb /mnt/home

Создаем папку и монтируем boot, если нужно.

1
2
3
4
5
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount -t sysfs none /mnt/sys

swapon /dev/sda2

Проверим.

1
btrfs subvolume list /mnt

Устанавливаем базовые пакеты.

1
pacstrap /mnt base xorg-xinit xorg-server grub zsh mc

Создаём fstab.

1
2
genfstab -pU /mnt
genfstab -U /mnt >> /mnt/etc/fstab

Или.

1
genfstab -pU /mnt >> /mnt/etc/fstab

Проверяем

1
cat /mnt/etc/fstab

Входим в систему

1
arch-chroot /mnt /bin/zsh

Или Debian подобных.

1
chroot /mnt /bin/bash

Называем компьютер.

1
echo ctlos > /etc/hostname

Локализация.

1
nano /etc/locale.gen

Расскомментировать.

1
2
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8

Сгенерировать локали.

1
locale-gen

Выберем локаль для системы.

1
nano /etc/locale.conf

Прописать в /etc/locale.conf.

1
2
LANG=ru_RU.UTF-8
LC_MESSAGES=ru_RU.UTF-8

Создаём рам-диск mkinitcpio и добавим русскую локаль в консоль.

1
nano /etc/mkinitcpio.conf

В /etc/mkinitcpio.conf, в разделе HOOKS, должен быть прописан хук keymap, и убрать fsck.

В разделе MODULES нужно прописать свой драйвер видеокарты: i915 для Intel, radeon для AMD, nouveau для Nvidia.

1
mkinitcpio -p linux

Задать пароль рута.

1
passwd

Создать пользователя.

1
useradd -m -g users -G wheel,audio,video,storage -s /bin/zsh st

И задать ему пароль.

1
passwd st

Расскомментировать в /etc/pacman.conf.

1
2
[multilib]
Include = /etc/pacman.d/mirrorlist

Затем выполнить.

1
2
3
pacman-key --init
pacman-key --populate archlinux
pacman -Syy

Установка boot loaderа.

1
2
grub-install /dev/sdb
grub-mkconfig -o /boot/grub/grub.cfg

Выбор часового пояса.

1
timedatectl set-timezone Europe/Moscow

Русский шрифт в консоли.

1
nano /etc/vconsole.conf

С таким содержимым.

1
2
KEYMAP=ru
FONT=cyr-sun16

Настройка sudo.

1
EDITOR=nano visudo

Дать пользователю привилегии суперпользователя или группе, когда он вводит sudo.

1
malody ALL=(ALL) ALL

Или.

1
%wheel ALL=(ALL) ALL

Чтобы не спрашивать пароль у пользователя.

1
Defaults:malody      !authenticate