bugfix: disks within a strip have the same partitioning
[zfsinstaller.git] / zfsinstall.sh
index b34634952c9b653978e44408ee87db8180790d6e..b9004655a306771fc4202085446766c8a878fee8 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-DESTDISK="ada0"
+DESTDISKS="ada0 ada1"
 DESTDIR="/mnt/zfs"
 ZPOOL="zroot"
 
@@ -17,36 +17,44 @@ fi
 
 # check if the disk is ok for writing
 
-echo checking sanity ${DESTDISK} 
-echo =============
-gpart show ${DESTDISK}  1>/dev/null
-if [ "${?}" -eq 0 ]; then
 
-       gpart destroy -F ${DESTDISK}
-       if [ "${?}" -ne 0 ]; then
-               echo unable to reset ${DESTDISK}
-               exit 1
-       fi
-fi
 
-echo partitioning ${DESTDISK} 
-echo =============
+for D in ${DESTDISKS}; do
+       if [ -z "${DESTDISK_1}" ]; then
+               DESTDISK_1=${D}
+       fi
 
-gpart create -s gpt ${DESTDISK}
-gpart add -a 4k -t freebsd-boot -s 512k -l gptboot0 ${DESTDISK}
-gpart add -a 1m -s 32G -t freebsd-swap -l swap0 ${DESTDISK}
-gpart add -a 1m -t freebsd-zfs -l zfs0 ${DESTDISK}
-gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ${DESTDISK}
-gpart set -a active ${DESTDISK}
+       echo checking sanity ${D} 
+       echo =============
+       gpart show ${D}  1>/dev/null
+       if [ "${?}" -eq 0 ]; then
 
-gpart show ${DESTDISK}  
+               gpart destroy -F ${D}
+               if [ "${?}" -ne 0 ]; then
+                       echo unable to reset ${D}
+                       exit 1
+               fi
+       fi
+       echo partitioning ${D} 
+       echo =============
+       N=$( echo ${D} | tr -c -d '0-9' )
+       gpart create -s gpt ${D}
+       gpart add -a 4k -t efi -s 200M -l efiboot${N} ${D} 
+       gpart bootcode -p /boot/boot1.efifat -i 1 ${D} 
+       gpart add -a 4k -t freebsd-boot -s 512k -l gptboot${N} ${D} 
+       gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 2 ${D} 
+       gpart add -a 1m -s 32G -t freebsd-swap -l swap${N} ${D} 
+       gpart add -a 1m -t freebsd-zfs -l zfs${N} ${D} 
+       gpart set -a active ${D}
+       gpart show ${D}  
+done
 
 sysctl vfs.zfs.min_auto_ashift=12
 
 echo set up zfs pool: ${ZPOOL} alt mount: ${DESTDIR}
 echo =================
 
-zpool create  -m none -f -R ${DESTDIR} ${ZPOOL} ${DESTDISK}p3 ada1
+zpool create  -m none -f -R ${DESTDIR} ${ZPOOL} /dev/gpt/zfs*
 if [ "${?}" -ne 0 ]; then
        echo "unable to create zpool"
        exit 1
@@ -88,7 +96,7 @@ zfs list -r ${ZPOOL}
 
 cd ${DESTDIR}/tmp
 if [ "${?}" -ne 0 ]; then
-       echo zfs mountpoints arent ready
+       echo zfs mountpoints are not ready
        exit 1
 fi
 
@@ -97,7 +105,7 @@ echo =======================================
 
 
 for I in base.txz kernel.txz lib32.txz; do
-       fetch http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/11.2-RELEASE/${I}
+       fetch http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/12.0-BETA3/${I}
        tar --unlink -pJxf ${I} -C ${DESTDIR}
 done
 
@@ -105,7 +113,7 @@ echo writing configuration files
 echo ==========================
 
 cat << EOF >> ${DESTDIR}/etc/fstab
-/dev/${DESTDISK}p2 none        swap    sw  0   0
+/dev/${DESTDISK_1}p3 none        swap    sw  0   0
 tmpfs  /tmp    tmpfs   rw,mode=1777    0       0
 EOF
 
@@ -118,37 +126,28 @@ cat << EOF >> ${DESTDIR}/boot/loader.conf.local
 vfs.root.mountfrom="zfs:${ZPOOL}/ROOT/master"
 EOF
 
-cat << EOF >> ${DESTDIR}/etc/rc.conf
-sshd_enable="YES"
-sendmail_enable="NONE"
-kld_list="vmm cuse4bsd cpuctl filemon"
-ntpd_enable="YES"
-# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
-dumpdev="AUTO"
-zfs_enable="YES"
-EOF
-
-cd ${SCRIPTBASE}
-for I in resolv.conf rc.conf.local; do
-       if [ -r "${I}" ]; then
-               echo installing ${I}
-               install -o root -g wheel -m 0644  ${I} ${DESTDIR}/etc/
-       fi
+COPYCAT="/etc"
+cd ${SCRIPTBASE}${COPYCAT} || exit 1
+echo installing files into ${COPYCAT}
+for I in *.conf*; do
+        if [ -r "${I}" -a -f ${I} ]; then
+                install -o root -g wheel -m 0644  ${I} ${DESTDIR}${COPYCAT}/
+        fi
 done
-
-for I in loader.conf.local; do
-       if [ -r "${I}" ]; then
-               echo installing ${I}
-               install -o root -g wheel -m 0644 ${I} ${DESTDIR}/boot/
-       fi
+COPYCAT="/etc/rc.conf.d"
+cd ${SCRIPTBASE}${COPYCAT} || exit 1
+echo installing files into ${COPYCAT}
+install -o root -g wheel -d -m 0755 ${DESTDIR}${COPYCAT} || exit 1
+for I in *; do
+        if [ -r "${I}" -a -f ${I} ]; then
+                       install  -o root -g wheel -m 0644 * ${DESTDIR}${COPYCAT}/
+               fi
 done
-
-echo installing rc.conf.d
-install -o root -g wheel -d -m 0755 ${DESTDIR}/etc/rc.conf.d 
-if [ -d "./rc.conf.d" ]; then 
-       echo installing files into rc.conf.d
-       install -o root -g wheel -m 0644 ./rc.conf.d/* ${DESTDIR}/etc/rc.conf.d/
-fi
+COPYCAT="/etc/rc.conf.d/network"
+cd ${SCRIPTBASE}${COPYCAT} || exit 1
+install -o root -g wheel -d -m 0755 ${DESTDIR}${COPYCAT} || exit 1
+echo installing files into ${COPYCAT}
+install  -o root -g wheel -m 0644 * ${DESTDIR}${COPYCAT}/
 
 chroot ${DESTDIR} passwd
 chroot ${DESTDIR} adduser