hyper v中安装debian(在zfs中)
安装 Debian 10 到 ZFS Mirror 阵列 | LOGGER
How to install ZFS in Debian 12 "Bookworm" - nixCraft
先使用live镜像 Debian -- Live 安装映像
开启终端
先给分区
ls /dev/sd?
看看读到了哪个盘。。。
fdisk /dev/sda
m
看下有什么指令gdisk也行,但我还是喜欢fdisk
g
新建GPT分区列表
n
1
第一个分区默认2048开始,直接回车执行default
+1G
因为之前的PVE的efi分区不够大给我整的。。。
默认的分区类型是linux filesystem。。。所以我们按
t
1
改成efi 分区
PVE是直接就一个zfs的。。。我不仿照debian10的办法再来个bpool了,直接rpool了。。。
n
三个回车,虚拟硬盘剩下的全给这个分区了。。。
t
default 是 2就直接回车了
l
看下需要设置成啥。。。apple zfs啥的我记得。。。solaris /usr & apple zfs最后的end 按q
157
w
写入分区就结束了
最好还是最寻官方的:
sudo -i
切换到root
设置变量DISK,SATA_disk1要改成你具体硬盘的
DISK=/dev/disk/by-id/scsi-SATA_disk1
DISK=/dev/disk/by-id/scsi-SATA_disk1
下面就是zfs驱动的问题了。。。
第一步改源
sudo sed -r -i'.BAK' 's/^deb(.*)$/deb\1 contrib/g' /etc/apt/sources.list
额。。。debain 12的user没权限。。。
sudo apt update
sudo apt install linux-headers-amd64 zfsutils-linux zfs-dkms zfs-zed
2025年
sudo apt install zfsutils-linux
就可以,livecd中linux-headers不需要额外装,zfsutils-linux装完zfs-dkms zfs-zed就不用装了
如果是云服务参考这个 sudo apt install linux-headers-cloud-amd64 zfsutils-linux zfs-dkms zfs-zed
不是就忽略。不知道是不是我4096的内存分配不够。。。卡在zfs-dkms上。。。并不是。。。而是第一个linux-headers-amd64卡在78%。。。或者说。。。等久点就好了。。。鼠标出来容易彻底卡死。。。反正我给8G的内存了。。。
开启
sudo modprobe zfs
查看是否成功
sudo zfs version
会返回
zfs-2.1.11-1+deb12u1
zfs-kmod-2.1.11-1+deb12u1
sudo zpool create create rpool /dev/sda2
然后zfs新建个给根目录的,我是对home没有求,直接放在根下就好了
sudo zfs create rpool/ROOT
在ROOT下面在新建个可以mount到/的,我也不知道为什么仿照pve和truenas这么做的,pve的canmount没有特殊设置,truenas的noauto挺多的。。。mountpoint=none也没太大必要
那我就仿照上面的
sudo zfs create -o mountpoint=/ rpool/ROOT/Debian12
因为debian10的那个是-o canmount=noauto,所以需要sudo zfs mount rpool/ROOT/Debian12
安装debian
sudo apt install debootstrap
然后可以通过debootstrap来安装
sudo debootstrap buster /mnt
Debian Bookworm Root on ZFS — OpenZFS documentation
我还是按照openzfs官网的Debian Bookworm来吧
sudo debootstrap bookworm /mnt
进入mnt中的系统设置
mkdir /mnt/etc/zfs
sudo cp /etc/zfs/zpool.cache /mnt/etc/zfs/
1 跟换 HOSTNAME
成你自己想要的hostname:
Add a line:
127.0.1.1 HOSTNAME
or if the system has a real name in DNS:
127.0.1.1 FQDN HOSTNAME
2 设置网络,因为国会得chroot在mnt中的系统中apt需要的包
查看有什么网络可以用的
ip addr show
改变eth0成为你的具体网卡的名字
sudo vi /mnt/etc/network/interfaces.d/eth0
auto eth0
iface eth0 inet dhcp
3 设置源
sudo vi /mnt/etc/apt/sources.list
deb http://deb.debian.org/debian bookworm main contrib non-free-firmware
deb-src http://deb.debian.org/debian bookworm main contrib non-free-firmware
deb http://deb.debian.org/debian-security bookworm-security main contrib non-free-firmware
deb-src http://deb.debian.org/debian-security bookworm-security main contrib non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware
可以清除全部直接复制这个
4 从liveCD切换到刚刚debootstrap在mnt中的系统
sudo mount --make-private --rbind /dev /mnt/dev
sudo mount --make-private --rbind /proc /mnt/proc
sudo mount --make-private --rbind /sys /mnt/sys
sudo chroot /mnt /usr/bin/env DISK=$DISK bash --login
5 在/mnt中的系统安装包
apt update
apt install --yes console-setup locales
选择 en_US.UTF-8
就行了
dpkg-reconfigure locales tzdata keyboard-configuration console-setup
6 安装zfs到刚才的mnt中的系统
apt install --yes dpkg-dev linux-headers-generic linux-image-generic
apt install --yes zfs-initramfs
echo REMAKE_INITRD=yes > /etc/dkms/zfs.conf
7 LUKS 安装的设置这个,一般不用设置
apt install --yes cryptsetup cryptsetup-initramfs
echo luks1 /dev/disk/by-uuid/$(blkid -s UUID -o value ${DISK}-part4) \
none luks,discard,initramfs > /etc/crypttab
apt install systemd-timesyncd
8 安装NTP
apt install systemd-timesyncd
9 设置grub
这是legacy (BIOS)
apt install --yes grub-pc
EFI安装
apt install dosfstools
mkdosfs -F 32 -s 1 -n EFI ${DISK}-part2
mkdir /boot/efi
echo /dev/disk/by-uuid/$(blkid -s UUID -o value ${DISK}-part2) \
/boot/efi vfat defaults 0 0 >> /etc/fstab
mount /boot/efi
apt install --yes grub-efi-amd64 shim-signed
我自己整的最后找不到boot。。。
最后根据官方的来了。。。
gsettings set org.gnome.desktop.media-handling automount false
sudo -i
apt install --yes debootstrap gdisk zfsutils-linux
DISK=/dev/disk/by-id/scsi-SATA_disk1
swapoff --all
wipefs -a $DISK
blkdiscard -f $DISK
sgdisk --zap-all $DISK
sgdisk -a1 -n1:24K:+1000K -t1:EF02 $DISK
sgdisk -n2:1M:+1G -t2:EF00 $DISK
sgdisk -n3:0:+3G -t3:BF01 $DISK
sgdisk -n4:0:0 -t4:BF00 $DISK
zpool create \
-o ashift=12 \
-o autotrim=on \
-o compatibility=grub2 \
-o cachefile=/etc/zfs/zpool.cache \
-O devices=off \
-O acltype=posixacl -O xattr=sa \
-O compression=lz4 \
-O normalization=formD \
-O relatime=on \
-O canmount=off -O mountpoint=/boot -R /mnt \
bpool ${DISK}-part3
zpool create \
-o ashift=12 \
-o autotrim=on \
-O acltype=posixacl -O xattr=sa -O dnodesize=auto \
-O compression=lz4 \
-O normalization=formD \
-O relatime=on \
-O canmount=off -O mountpoint=/ -R /mnt \
rpool ${DISK}-part4
zfs create -o canmount=off -o mountpoint=none rpool/ROOT
zfs create -o canmount=off -o mountpoint=none bpool/BOOT
zfs create -o canmount=noauto -o mountpoint=/ rpool/ROOT/debian
zfs mount rpool/ROOT/debian
zfs create -o mountpoint=/boot bpool/BOOT/debian
zfs create rpool/home
zfs create -o mountpoint=/root rpool/home/root
chmod 700 /mnt/root
zfs create -o canmount=off rpool/var
zfs create -o canmount=off rpool/var/lib
zfs create rpool/var/log
zfs create rpool/var/spool
zfs create -o com.sun:auto-snapshot=false rpool/var/cache
zfs create -o com.sun:auto-snapshot=false rpool/var/lib/nfs
zfs create -o com.sun:auto-snapshot=false rpool/var/tmp
chmod 1777 /mnt/var/tmp
zfs create -o com.sun:auto-snapshot=false rpool/tmp
chmod 1777 /mnt/tmp
mkdir /mnt/run
mount -t tmpfs tmpfs /mnt/run
mkdir /mnt/run/lock
apt install debootstrap
debootstrap bookworm /mnt
mkdir /mnt/etc/zfs
cp /etc/zfs/zpool.cache /mnt/etc/zfs/
----------------------------------------
apt install vim
hostname UX-Debian
hostname > /mnt/etc/hostname
vi /mnt/etc/hosts
ip addr show
vi /mnt/etc/network/interfaces.d/eth0
-------------------------
auto eth0
iface eth0 inet dhcp
-------------------------
vi /mnt/etc/apt/sources.list
----------------------------------
deb http://deb.debian.org/debian bookworm main contrib non-free-firmware
deb-src http://deb.debian.org/debian bookworm main contrib non-free-firmware
deb http://deb.debian.org/debian-security bookworm-security main contrib non-free-firmware
deb-src http://deb.debian.org/debian-security bookworm-security main contrib non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware
deb-src http://deb.debian.org/debian bookworm-updates main contrib non-free-firmware
----------------------------------
mount --make-private --rbind /dev /mnt/dev
mount --make-private --rbind /proc /mnt/proc
mount --make-private --rbind /sys /mnt/sys
chroot /mnt /usr/bin/env DISK=$DISK bash --login
apt update
apt install --yes console-setup locales
dpkg-reconfigure locales tzdata keyboard-configuration console-setup
apt install --yes dpkg-dev linux-headers-generic linux-image-generic
apt install --yes zfs-initramfs
echo REMAKE_INITRD=yes > /etc/dkms/zfs.conf
apt install systemd-timesyncd
apt install dosfstools
mkdosfs -F 32 -s 1 -n EFI ${DISK}-part2
mkdir /boot/efi
echo /dev/disk/by-uuid/$(blkid -s UUID -o value ${DISK}-part2) \
/boot/efi vfat defaults 0 0 >> /etc/fstab
mount /boot/efi
apt install --yes grub-efi-amd64 shim-signed
apt purge --yes os-prober
passwd
vi /etc/systemd/system/zfs-import-bpool.service
------------------------------
[Unit]
DefaultDependencies=no
Before=zfs-import-scan.service
Before=zfs-import-cache.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/zpool import -N -o cachefile=none bpool
# Work-around to pres
erve zpool cache:
ExecStartPre=-/bin/mv /etc/zfs/zpool.cache /etc/zfs/preboot_zpool.cache
ExecStartPost=-/bin/mv /etc/zfs/preboot_zpool.cache /etc/zfs/zpool.cache
[Install]
WantedBy=zfs-import.target
------------------------------
systemctl enable zfs-import-bpool.service
cp /usr/share/systemd/tmp.mount /etc/systemd/system/
systemctl enable tmp.mount
ssh
apt install --yes openssh-server
vi /etc/ssh/sshd_config
# Set: PermitRootLogin yes
--------------------------------
grub-probe /boot
update-initramfs -c -k all
----------------------------
vi /etc/default/grub
# Set: GRUB_CMDLINE_LINUX="root=ZFS=rpool/ROOT/debian"
----------------------------
vi /etc/default/grub
# Remove quiet from: GRUB_CMDLINE_LINUX_DEFAULT
# Uncomment: GRUB_TERMINAL=console
# Save and quit.
----------------------------
update-grub
grub-install --target=x86_64-efi --efi-directory=/boot/efi \
--bootloader-id=debian --recheck --no-floppy
Fix filesystem mount ordering:
mkdir /etc/zfs/zfs-list.cache
touch /etc/zfs/zfs-list.cache/bpool
touch /etc/zfs/zfs-list.cache/rpool
zed -F &
Verify:
cat /etc/zfs/zfs-list.cache/bpool
cat /etc/zfs/zfs-list.cache/rpool
zfs snapshot bpool/BOOT/debian@install
zfs snapshot rpool/ROOT/debian@install
exit
mount | grep -v zfs | tac | awk '/\/mnt/ {print $3}' | \
xargs -i{} umount -lf {}
zpool export -a
reboot