最近想试试将 debian 安装在 btrfs raid1 上.
用安装盘安装, 直接安装在 btrfs raid1上, 会在安装 grub 的时候出错.
使用单盘 btrfs 安装完后, 再加另一个盘组 raid1 倒是可以.
就是以后如果重装, 又要的拆成单盘再重装, 很麻烦.
试了下 debootstrap 安装debian, 直接就能安装在 btrfs raid1 上, 记录下安装过程.

安装 debootstrap

启动 debian live cd
sudo su -
apt update
apt install debootscrap

硬盘分区 建立 btrfs raid1

#新建分区表
sgdisk /dev/sda -o
#第一个分区留给bios引导用, 使用bios+gpt方式, 设置legacy_boot flag
#如果使用uefi+gpt方式, 第一个分区留512M, 分区type code用ef00
#第二个分区swap
#第三个分区btrfs

#bios
sgdisk /dev/sda -n 0:2048:+1M -t 0:ef02 -A 1:set:2
#uefi
sgdisk /dev/sda -n 0:2048:+512M -t 0:ef00
mkfs.fat -F 32 /dev/sda1

sgdisk /dev/sda -n 0:0:+8G -t 0:8200
sgdisk /dev/sda -n 0:0:0 -t 0:8300

#swap
mkswap /dev/sda2

#复制分区表
sgdisk -R /dev/sdb /dev/sda

#让分区UUID一样
dd if=/dev/sda1 of=/dev/sdb1
dd if=/dev/sda2 of=/dev/sdb2

btrfs raid1, subvolume

#建立 raid 1, 挂载到 /mnt
mkfs.btrfs -f -m raid1 -d raid1 /dev/sda3 /dev/sdb3
mount -t btrfs /dev/sda3 /mnt

#新建subvolume, 2个 subvolume 给 / 和 /home 用
btrfs sub create /mnt/@
btrfs sub create /mnt/@home

#挂载 @ 用于安装系统
umount /mnt
mount -t btrfs -o [email protected] /dev/sda3 /mnt

debootstrap 安装基本系统

debootscrap --arch amd64 buster /mnt https://mirrors.huaweicloud.com/debian

chroot

mount -t proc /proc /mnt/proc/
mount -t sysfs /sys /mnt/sys/
mount -t devpts /dev/pts /mnt/dev/pts
mount -o bind /dev /mnt/dev/
chroot /mnt /bin/bash

fstab

vi /etc/fstab

UUID=xxxx /      btrfs defaults,[email protected]       0 0
UUID=xxxx /home  btrfs defaults,[email protected]   0 0
UUID=xxxx /rpool btrfs defaults,subvol=/       0 0
UUID=xxxx none   swap  rw                      0 0

配置 apt sources

vi /etc/apt/sources.list

deb https://mirrors.huaweicloud.com/debian/ buster main contrib non-free
deb https://mirrors.huaweicloud.com/debian/ buster-updates main contrib non-free
deb https://mirrors.huaweicloud.com/debian-security/ buster/updates main contrib non-free
deb https://mirrors.huaweicloud.com/debian/ buster-backports main contrib non-free

apt update

系统配置

#修改密码
passwd

#locales tzdata
apt install locales
dpkg-reconfigure locales
dpkg-reconfigure tzdata

#中文字体
apt install fonts-wqy-microhei

#btrfs-progs
apt install btrfs-progs

#安装kernel, 驱动
apt install linux-image-amd64
apt install firmware-linux

#网卡驱动
#firmware-realtek

#network
vi /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp

vi /etc/resolv.conf
nameserver 114.114.114.114

#安装标准工具
tasksel install standard

GRUB

#rootflags 加上 degraded, 在丢盘的时候也能正常开机
vi /etc/grub.d/10_linux
rootflags=degraded,subvol...

#bios
apt install grub2
update-grub
grub-install /dev/sda
grub-install /dev/sdb

#uefi
apt install grub-efi
update-grub
grub-install --efi-dir=/boot/efi
dd if=/dev/sda1 of=/dev/sdb1


#grub 安装失败问题:
# grub-install: warning: Attempting to install GRUB to a disk with multiple partition labels. This is not supported yet..
# grub-install: error: filesystem `btrfs' does not support blocklists.
用 wipefs -o 0x10040 /dev/sdx 命令来擦掉 BTRFS superblock