Solved [Solved] 10.0-RELEASE + zfs not booting

Hi guys,

I'm trying to install FreeBSD 10.0-RELEASE from Rescue-pro on Kimsufi (basically like a Fixit). There's no console so I do not have much info on what is wrong. I managed to get to the logs after unsuccessful boot, and here's what /var/log/messages says:

Code:
Sep 17 12:04:29 b0ink kernel: Trying to mount root from zfs:zroot []...

It is the last line in /var/log/messages.

My procedure:
  1. Set the machine to boot in rescue mode
  2. remove partitions you had there already
    Code:
    # gpart destroy -F ada0
  3. create partitions and copy bootcode:
    Code:
    gpart create -s gpt ada0
    gpart add -b 34 -s 94 -t freebsd-boot ada0
    gpart add -t freebsd-zfs -l disk0 ada0
    gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
  4. create pool:
    Code:
    zpool create -f zroot /dev/gpt/disk0
  5. set bootfs, checksums etc
    Code:
    zpool set bootfs=zroot zroot
    zfs set checksum=fletcher4 zroot
    zfs set mountpoint=/mnt zroot
  6. get a copy of zpool.cache:
    Code:
    zpool export zroot
    zpool import -o cachefile=/var/tmp/zpool.cache zroot
  7. create filesystems:
    Code:
    zfs create zroot/usr
    zfs create zroot/usr/home
    zfs create zroot/var
    zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
    zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
    zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
    zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
    zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src
    zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
    zfs create -o exec=off -o setuid=off zroot/var/db
    zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
    zfs create -o exec=off -o setuid=off zroot/var/empty
    zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
    zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
    zfs create -o exec=off -o setuid=off zroot/var/run
    zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp
  8. create swap:
    Code:
    zfs create -V 32G zroot/swap
    zfs set org.freebsd:swap=on zroot/swap
    zfs set checksum=off zroot/swap
  9. symlinks:
    Code:
    chmod 1777 /mnt/tmp
    cd /mnt ; ln -s usr/home home
    chmod 1777 /mnt/var/tmp
  10. prepare virtual filesystem for *.txz files (~300MB)
    Code:
    mkdir /tmp/system
    mount -t tmpfs -o size=300000000 dummy /tmp/system
    cd /tmp/system
  11. download files:
    Code:
    fetch ftp://ftp.fr.freebsd.org/pub/FreeBSD/releases/amd64/10.0-RELEASE/base.txz
    fetch ftp://ftp.fr.freebsd.org/pub/FreeBSD/releases/amd64/10.0-RELEASE/lib32.txz
    fetch ftp://ftp.fr.freebsd.org/pub/FreeBSD/releases/amd64/10.0-RELEASE/kernel.txz
    fetch ftp://ftp.fr.freebsd.org/pub/FreeBSD/releases/amd64/10.0-RELEASE/doc.txz
  12. install FreeBSD:
    Code:
    sh
    cd /tmp/system
    export DESTDIR=/mnt
    for file in base.txz lib32.txz kernel.txz doc.txz;
    do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done
  13. copy zpool.cache:
    Code:
    cp /var/tmp/zpool.cache /mnt/boot/zfs/zpool.cache
  14. create necessary entries in rc.conf and loader.conf and empty fstab:
    Code:
    echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf
    echo 'zfs_load="YES"' >> /mnt/boot/loader.conf
    echo 'vfs.root.mountfrom="zfs:zroot"' >> /mnt/boot/loader.conf
    touch /mnt/etc/fstab
  15. other necessary entries (OVH-specific):
    Code:
    echo 'sshd_enable="YES"' >> /mnt/etc/rc.conf
    echo 'ifconfig_em0="inet XXX.XXX.XXX.XXX netmask 255.255.255.0 broadcast XXX.XXX.XXX.255"' >> /mnt/etc/rc.conf
    echo 'defaultrouter="XXX.XXX.XXX.XXX"' >> /mnt/etc/rc.conf
  16. change entries in /mnt/etc/ssh/sshd_config:
    Code:
    echo "PermitRootLogin without-password" >> /mnt/etc/ssh/sshd_config
  17. copy keys to root's home:
    Code:
    mkdir /mnt/root/.ssh
    vi /mnt/root/.ssh/authorized_keys
    chmod 700 /mnt/root/.ssh
    chmod 600 /mnt/root/.ssh/authorized_keys
  18. unmount and fix ZFS mount points:
    Code:
    zfs set readonly=on zroot/var/empty
    zfs umount -af
    zfs set mountpoint=legacy zroot
    zfs set mountpoint=/tmp zroot/tmp
    zfs set mountpoint=/usr zroot/usr
    zfs set mountpoint=/var zroot/var
  19. reboot
Any idea what might be wrong? I do believe it was working for 9.1-RELEASE.
 
Re: 10.0-RELEASE + zfs not booting (kimsufi rescue-pro insta

I just found out that the issue is with creating ZFS file systems. If I don't do any then system boots with just root file system and swap.

Any idea where I made a mistake?
 
Re: 10.0-RELEASE + zfs not booting (kimsufi rescue-pro insta

Let me rephrase ;-) My full script:
Code:
zpool destroy zroot
gpart destroy -F ada0

gpart create -s gpt ada0
gpart add -a 4k -s 512k -t freebsd-boot ada0
gpart add -a 4k -t freebsd-zfs -l disk0 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0

gnop create -S 4096 /dev/gpt/disk0
zpool create -f -o altroot=/tmp/mnt -o cachefile=/var/tmp/zpool.cache zroot /dev/gpt/disk0.nop
zpool export zroot
gnop destroy /dev/gpt/disk0.nop
zpool import -o altroot=/tmp/mnt -o cachefile=/var/tmp/zpool.cache zroot

zpool set bootfs=zroot zroot
zpool set listsnapshots=on zroot
zpool set autoreplace=on zroot
zfs set checksum=fletcher4 zroot
zfs set atime=off zroot

zfs create zroot/usr
zfs create zroot/usr/home
zfs create zroot/var
zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
zfs create -o exec=off -o setuid=off zroot/var/db
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
zfs create -o exec=off -o setuid=off zroot/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
zfs create -o exec=off -o setuid=off zroot/var/run
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp

zfs create -V 32G zroot/swap
zfs set org.freebsd:swap=on zroot/swap

cd /tmp/mnt/zroot ; ln -s usr/home home

mkdir /tmp/system
mount -t tmpfs -o size=300000000 dummy /tmp/system
cd /tmp/system

fetch ftp://ftp.fr.freebsd.org/pub/FreeBSD/releases/amd64/10.0-RELEASE/base.txz
fetch ftp://ftp.fr.freebsd.org/pub/FreeBSD/releases/amd64/10.0-RELEASE/lib32.txz
fetch ftp://ftp.fr.freebsd.org/pub/FreeBSD/releases/amd64/10.0-RELEASE/kernel.txz
fetch ftp://ftp.fr.freebsd.org/pub/FreeBSD/releases/amd64/10.0-RELEASE/doc.txz

sh
cd /tmp/system
export DESTDIR=/tmp/mnt/zroot
for file in base.txz lib32.txz kernel.txz doc.txz;
do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done

cp /var/tmp/zpool.cache /mnt/zroot/boot/zfs/zpool.cache

echo 'zfs_enable="YES"' >> /tmp/mnt/zroot/etc/rc.conf
echo 'zfs_load="YES"' >> /tmp/mnt/zroot/boot/loader.conf
echo 'vfs.root.mountfrom="zfs:zroot"' >> /tmp/mnt/zroot/boot/loader.conf

echo 'kern.geom.label.disk_ident.enable="0"' >> /tmp/mnt/zroot/boot/loader.conf
echo 'kern.geom.label.gpt.enable="1"' >> /tmp/mnt/zroot/boot/loader.conf
echo 'kern.geom.label.gptid.enable="0"' >> /tmp/mnt/zroot/boot/loader.conf

echo 'sshd_enable="YES"' >> /tmp/mnt/zroot/etc/rc.conf
echo 'local_unbound_enable=yes' >> /tmp/mnt/zroot/etc/rc.conf
echo 'hostname="b0ink"' >> /tmp/mnt/zroot/etc/rc.conf
echo 'ifconfig_em0="inet XXX.XXX.XXX.XXX netmask 255.255.255.0 broadcast XXX.XXX.XXX.255"' >> /tmp/mnt/zroot/etc/rc.conf
echo 'defaultrouter="XXX.XXX.XXX.XXX"' >> /tmp/mnt/zroot/etc/rc.conf
echo 'syslogd_flags="-ss"' >> /tmp/mnt/zroot/etc/rc.conf

echo "PermitRootLogin without-password" >> /tmp/mnt/zroot/etc/ssh/sshd_config

echo 'dumpdev="NO"' >> /tmp/mnt/zroot/etc/rc.conf
echo 'sendmail_enable="NO"' >> /tmp/mnt/zroot/etc/rc.conf
echo 'sendmail_submit_enable="NO"' >> /tmp/mnt/zroot/etc/rc.conf
echo 'sendmail_outbound_enable="NO"' >> /tmp/mnt/zroot/etc/rc.conf
echo 'sendmail_msp_queue_enable="NO"' >> /tmp/mnt/zroot/etc/rc.conf

touch /tmp/mnt/zroot/etc/fstab

mkdir /tmp/mnt/zroot/root/.ssh
#vi /tmp/mnt/zroot/root/.ssh/authorized_keys
cat << EOF >> /tmp/mnt/zroot/root/.ssh/authorized_keys
PASTE KEYS HERE
EOF
chmod 700 /tmp/mnt/zroot/root/.ssh
chmod 600 /tmp/mnt/zroot/root/.ssh/authorized_keys

sync
sync

Is not booting, however if I remove following section from it (leaving intact rest of the script):
Code:
zfs create zroot/usr
zfs create zroot/usr/home
zfs create zroot/var
zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
zfs create -o exec=off -o setuid=off zroot/var/db
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
zfs create -o exec=off -o setuid=off zroot/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
zfs create -o exec=off -o setuid=off zroot/var/run
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp

System is booting up properly, but just with root filesystem and swap.
Honestly I have no idea where I am making mistake, but obviously something is wrong with my script.

Any help appreciated.
 
Re: 10.0-RELEASE + zfs not booting (kimsufi rescue-pro insta

Solved ;-) One thing was missing from the script:

Code:
zfs set mountpoint=/ zroot
 
Back
Top