Skip to content

Instantly share code, notes, and snippets.

@knakayama
Created November 14, 2014 12:55
Show Gist options
  • Save knakayama/6d9adab8fbdeb812a41b to your computer and use it in GitHub Desktop.
Save knakayama/6d9adab8fbdeb812a41b to your computer and use it in GitHub Desktop.
#!/bin/sh -ex
for disk in $(sysctl -n kern.disks | sed 's/ cd[0-9]//' | awk '{num=split($0, a); for (i=num; i>0; i--) {print a[i]}}'); do
gpart destroy -F "$disk"
gpart create -s gpt "$disk"
gpart add -s 64k -t freebsd-boot "$disk"
gpart add -t freebsd-zfs "$disk"
gpart bootcode -b "/boot/pmbr" -p "/boot/gptzfsboot" -i 1 "$disk"
done
kldload -n opensolaris
kldload -n zfs
zpool create -f -o altroot=/media tank raidz1 $(sysctl -n kern.disks | sed 's/ cd[0-9]//' | awk '{num=split($0,a); for (i=num; i>0; i--) {printf "%s%s ", a[i], "p2"}} END{printf "\n"}')
zfs create tank/root
zfs create -o mountpoint=/root/var tank/var
zfs create -o mountpoint=/root/iroiro tank/iroiro
zfs create -o mountpoint=/root/usr/home tank/home
zfs create -V 16G -o org.freebsd:swap=on -o checksum=off tank/swap
cd /media/root && ln -s usr/home home
zpool set bootfs=tank/root tank
fetch -q -o - ftp://204.152.184.73/pub/FreeBSD/releases/amd64/amd64/$(uname -r)/base.txz | tar xzvpf - -C /media/root
fetch -q -o - ftp://204.152.184.73/pub/FreeBSD/releases/amd64/amd64/$(uname -r)/kernel.txz | tar xzvpf - -C /media/root
fetch -q -o - ftp://204.152.184.73/pub/FreeBSD/releases/amd64/amd64/$(uname -r)/src.txz | tar xzvpf - -C /media/root
cat << EOT >> "/media/root/boot/loader.conf"
zfs_load="YES"
vfs.root.mountfrom="zfs:tank/root"
EOT
cat << EOT >> "/media/root/etc/rc.conf"
hostname="localhost"
ifconfig_bge0="inet 192.168.0.4 netmask 255.255.255.0"
defaultrouter="192.168.0.1"
keymap="jp.106"
ntpd_enable="YES"
zfs_enable="YES"
sshd_enable="YES"
EOT
printf "/dev/zvol/tank/swap\tnone\t\tswap\tsw\t\t0\t0\n" >> "/media/root/etc/fstab"
echo "nameserver 192.168.0.1" >> "/media/root/etc/resolv.conf"
ln -s "/usr/share/zoneinfo/Asia/Tokyo" "/media/root/etc/localtime"
echo << EOT >> "/media/root/etc/make.conf"
NO_GUI=yes
WITHOUT_X11=yes
EOT
sleep 5
zfs umount -a
mount -t tmpfs tmpfs /tmp
zpool export tank
zpool import -o cachefile=/tmp/zpool.cache -o altroot=/media tank
cp -p /tmp/zpool.cache /media/root/boot/zfs
sleep 5
zfs umount -a
zfs set mountpoint=none tank
zfs set mountpoint=/ tank/root
zfs set mountpoint=/iroiro tank/iroiro
zfs set mountpoint=/usr/home tank/home
zfs set mountpoint=/var tank/var
zfs set mountpoint=legacy tank/root
sync;sync;sync
shutdown -r now
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment