Skip to content

Instantly share code, notes, and snippets.

@jlaffaye
Created November 22, 2018 19:17
Show Gist options
  • Save jlaffaye/09715bae33277e64fefb64cb9d8546ef to your computer and use it in GitHub Desktop.
Save jlaffaye/09715bae33277e64fefb64cb9d8546ef to your computer and use it in GitHub Desktop.
How to install FreeBSD with RAIDZ on OVH

On commence par dézinguer tous les anciens pools ZFS :

zpool import -fR /mnt zroot zpool destroy zroot

On crée ensuite les partitions qui vont bien aller :

une partition de boot de 512ko
une partition de swap de 2Go
le reste en partition de pool ZFS

On en profite pour installe le bootloader GPT au passage. (Le script suivant considère que vous utilisez 3 disques, adaptez-le en conséquence)

foreach n ( 0 1 2 ) gpart destroy -F ada${n} gpart create -s gpt ada${n}

gpart add -a 4k -s 512k -t freebsd-boot -l boot${n} ada${n}
gpart add -a 4k -s 2g -t freebsd-swap -l swap${n} ada${n}
gpart add -a 4k -t freebsd-zfs -l disk${n} ada${n}

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada${n}

gnop create -S 4096 /dev/gpt/disk${n}

end

On créé ensuite le pool ZFS en raidZ, avec les 3 disques formatés :

zpool create -o altroot=/mnt -O canmount=off -o compression=lz4 -o checksum=fletcher4 -o atime=off -m none zroot raidz /dev/gpt/disk0 /dev/gpt/disk1 /dev/gpt/disk2

zfs create -o mountpoint=none -o quota=10G zroot/ROOT zfs create -o mountpoint=/ zroot/ROOT/default zfs create -o mountpoint=/tmp -o quota=2G -o setuid=off zroot/tmp

Ensuite, on installe le futur système sur le pool nouvellement créé :

chmod 1777 /mnt/tmp

zpool set bootfs=zroot/ROOT/default zroot

set FREEBSD_VERSION = 10.3-RELEASE foreach file ( base kernel lib32 ) wget -O - ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/${FREEBSD_VERSION}/${file}.txz | tar -Upxf - -C /mnt end

cat > /mnt/etc/fstab <<EOF /dev/gpt/swap0 none swap sw 0 0 /dev/gpt/swap1 none swap sw 0 0 /dev/gpt/swap2 none swap sw 0 0 EOF

echo zfs_load="YES" >> /mnt/boot/loader.conf

sed -i "" "s/^#PermitRootLogin .*/PermitRootLogin prohibit-password/" /mnt/etc/ssh/sshd_config

cat > /mnt/etc/rc.conf <<EOF hostname="pony.example.org"

ifconfig_igb0="inet X.X.X.X netmask 255.255.255.0 broadcast X.X.X.255" defaultrouter="X.X.X.254"

ifconfig_igb0_ipv6="inet6 XXX:XXX:XXX:XXXX:: prefixlen 64 accept_rtadv no_radr" ipv6_network_interfaces="igb0" ipv6_default_interface="igb0" ipv6_defaultrouter="XXXX:XXXX:XXXX:XXff:ff:ff:ff:ff" ipv6_route_ovhgw="XXXX:XXXX:XXXX:XXff:ff:ff:ff:ff -prefixlen 128 -interface igb0" ipv6_static_routes="ovhgw"

dumpdev="AUTO" clear_tmp_enable="YES" accounting_enable="YES"

unbound_enable="NO" sshd_enable="YES" ntpd_enable="YES" postfix_enable="YES" zfs_enable="YES" EOF

mkdir -p /mnt/root/.ssh/ cat > /mnt/root/.ssh/authorized_keys <<EOF EOF

cat > /mnt/etc/resolv.conf <<EOF domain example.org search example.org nameserver 213.186.33.99 EOF

chroot /mnt passwd

On repasse le serveur en boot sur le disque, et on lance un reboot. Normalement, votre nouvelle machine devrait prendre vie rapidement !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment