?

Log in

No account? Create an account

Previous Entry Share Next Entry
Установка FreeBSD на ZFS в MBR раздел
victor_sudakov
Последовательность действий для установки 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 перекроет / исходной системы.

Сам пример установки:
#!/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://bitbucket.org/victor_sudakov/faq/src/tip/FreeBSD/Installing_FreeBSD_Root_on_ZFS_using_FreeBSD-ZFS_partition_in_a_FreeBSD_MBR_Slice.txt

Оригинал сообщения находится по адресу https://victor-sudakov.dreamwidth.org/437590.html. Пожалуйста оставляйте комментарии там. Всего сейчас comment count unavailable комментариев.