Установка FreeBSD на ZFS в MBR раздел
Mar. 20th, 2018 08:46 amПоследовательность действий для установки FreeBSD (RootOnZFS) в качестве второй (третьей, четвертой... ) операционки. Система получается beadm-ready.
Важно: man zfsboot и статьи https://wiki.freebsd.org/RootOnZFS/ZFSBootPartition , https://wiki.freebsd.org/RootOnZFS/ZFSBootSlice содержат ошибку: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=226714 Если делать по написанному в мане (создавать BSD label в разделе, "gpart create -s BSD"), то FreeBSD грузиться не будет.
Ошибка найдена благодаря
dadv, см. также https://docs.freebsd.org/cgi/getmsg.cgi?fetch=22620+0+current/freebsd-questions
Также мой пример использует altroot, что делает установку/клонирование более удобным и исключает ошибку, при которой вновь созданный zroot перекроет / исходной системы.
Сам пример установки:
UPD: моя попытка написать новую статью для FreeBSD Wiki: https://hg.sr.ht/~vas/FAQ/browse/default/FreeBSD/Installing_FreeBSD_Root_on_ZFS_using_FreeBSD-ZFS_partition_in_a_FreeBSD_MBR_Slice.txt
Важно: man zfsboot и статьи https://wiki.freebsd.org/RootOnZFS/ZFSBootPartition , https://wiki.freebsd.org/RootOnZFS/ZFSBootSlice содержат ошибку: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=226714 Если делать по написанному в мане (создавать BSD label в разделе, "gpart create -s BSD"), то FreeBSD грузиться не будет.
Ошибка найдена благодаря
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Также мой пример использует altroot, что делает установку/клонирование более удобным и исключает ошибку, при которой вновь созданный zroot перекроет / исходной системы.
Сам пример установки:
#!/bin/sh # sysctl kern.geom.debugflags=0x10 # should not be necessary DISK=da1 POOL="zroot-test3" NEWSYSTEM=newsystem SLICE=2 partition() { gpart create -s mbr ${DISK} gpart add -t fat32 -s 1G ${DISK} gpart add -t freebsd -s 2G -i ${SLICE} ${DISK} gpart set -a active -i ${SLICE} ${DISK} } bootcode() { gpart bootcode -b /boot/boot0 ${DISK} dd if=/dev/zero of=/dev/${DISK}s${SLICE} count=2 dd if=/boot/zfsboot of=/dev/${DISK}s${SLICE} count=1 dd if=/boot/zfsboot of=/dev/${DISK}s${SLICE} iseek=1 oseek=1024 } zfscreate() { zpool create -m none -R /${NEWSYSTEM} ${POOL} ${DISK}s${SLICE} zfs create -o mountpoint=none ${POOL}/ROOT zfs create -o mountpoint=/ ${POOL}/ROOT/default zfs create -o mountpoint=/usr -o canmount=off ${POOL}/usr zfs create -o mountpoint=/var -o canmount=off ${POOL}/var zfs create -o mountpoint=/tmp ${POOL}/tmp zfs create -o mountpoint=/usr/home ${POOL}/usr/home zfs create -o mountpoint=/usr/src ${POOL}/usr/src zfs create -o mountpoint=/usr/ports ${POOL}/usr/ports zfs create -o mountpoint=/var/audit ${POOL}/var/audit zfs create -o mountpoint=/var/crash ${POOL}/var/crash zfs create -o mountpoint=/var/log ${POOL}/var/log zfs create -o mountpoint=/var/mail ${POOL}/var/mail zfs create -o mountpoint=/var/tmp ${POOL}/var/tmp zfs create -V 1G -o org.freebsd:swap=on ${POOL}/swap zpool set bootfs=${POOL}/ROOT/default ${POOL} } clone() { cd /${NEWSYSTEM} || exit 3 #sleep 10 dump -0af - / | restore -ryf - || exit 3 mv etc/fstab etc/fstab.bak echo '# empty' > etc/fstab rm etc/hostid rm etc/ssh/*key* echo 'zfs_enable="YES"' >> etc/rc.conf.local echo 'zfs_load="YES"' >> boot/loader.conf cd /root } zfsexport() { zpool export ${POOL} } partition bootcode zfscreate clone zfsexport
UPD: моя попытка написать новую статью для FreeBSD Wiki: https://hg.sr.ht/~vas/FAQ/browse/default/FreeBSD/Installing_FreeBSD_Root_on_ZFS_using_FreeBSD-ZFS_partition_in_a_FreeBSD_MBR_Slice.txt