From owner-freebsd-current@FreeBSD.ORG Sat Jul 11 23:03:41 2009 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1F86C106566B for ; Sat, 11 Jul 2009 23:03:41 +0000 (UTC) (envelope-from olivier@gid0.org) Received: from mail-fx0-f224.google.com (mail-fx0-f224.google.com [209.85.220.224]) by mx1.freebsd.org (Postfix) with ESMTP id 9A7BE8FC08 for ; Sat, 11 Jul 2009 23:03:40 +0000 (UTC) (envelope-from olivier@gid0.org) Received: by fxm24 with SMTP id 24so1282826fxm.43 for ; Sat, 11 Jul 2009 16:03:39 -0700 (PDT) MIME-Version: 1.0 Received: by 10.204.117.16 with SMTP id o16mr3510389bkq.100.1247353419394; Sat, 11 Jul 2009 16:03:39 -0700 (PDT) In-Reply-To: <790a9fff0907110606t61da8ebbufa5575d12d949ca@mail.gmail.com> References: <790a9fff0907101159w495b644dge4a4bd81de0bda9b@mail.gmail.com> <20090710211809.GA84773@crodrigues.org> <790a9fff0907101911y7143ed4bnbb050d78ebc21558@mail.gmail.com> <790a9fff0907110606t61da8ebbufa5575d12d949ca@mail.gmail.com> Date: Sun, 12 Jul 2009 01:03:39 +0200 Message-ID: <367b2c980907111603t74766651gf52310d38dc48dd2@mail.gmail.com> From: Olivier SMEDTS To: Scot Hetzel Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-current Subject: Re: [SOLVED]Re: How to create ZFS on Root using MBR slices? X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jul 2009 23:03:41 -0000 2009/7/11 Scot Hetzel : > I was able to re-solve this problem with creating a ZFS root using a > partition on a slice. =A0The hint came from a message sent by Doug > Rabson in response to the 'ZFS boot on zfs mirror' discussion on the > FreeBSD-Stable list. > > On Tue, May 26, 2009 at 12:06 PM, Doug Rabson wrote: >> >> On Tue, 26 May 2009 19:57:03 +0300, Andriy Gapon wrote= : >>> on 26/05/2009 19:42 George Hartzell said the following: >>>> I'm still confused about the two parts of zfsboot and what's magical >>>> about seeking to 1024. >>> >>> Can't help with answer to this, but cc-ing the one who can (I think). >>> I am interested too :-) >> >> This is due to the primitive DOS boot sequence. Basically the BIOS loads >> the first sector of the partition and executes it. For zfsboot, that is = the >> first 512 bytes of /boot/zfsboot. The next stage of the bootstrap is tuc= ked >> away in a convenient hole in the ZFS on-disk formwat which is located ju= st >> after the ZFS metadata - this is the seek=3D1024 part. The first 512 byt= e >> part is a tiny assembler program that loads the rest into memory and >> executes it. The second part is large enough and smart enough to underst= and >> the ZFS filesystem format directly and it loads /boot/loader directly fr= om >> the filesystem and transfers control to that. The third stage >> (/boot/loader) is what puts up the boot menu and loads the kernel etc. > > Thanks Doug for a great explanation. > > Below is the revised instructions for creating a ZFS Root w/MBR, > Slices, and Partitions > > Scot > > -------------------------------------------------------------------------= -------------------------------------------------- > > Creating ZFS Root ZFS Root w/MBR, Slices, and Partitions > > 1. Boot FreeBSD install CD/DVD > > 2. Choose Fixit option in sysinstall > > 3. Create Slice using gpart > > Fixit# gpart show ad0 > =3D> =A0 =A0 =A0 63 =A0625142385 =A0ad0 =A0MBR =A0(289G) > =A0 =A0 =A0 =A0 63 =A0209712447 =A0 =A01 =A0!7 =A0(100G) > =A0209712510 =A0 =A0 417690 =A0 =A02 =A0!136 =A0(204M) > =A0210130200 =A0415012248 =A0 =A0 =A0 - free - =A0(198G) > > > Fixit# gpart add -b 210130200 =A0-s 415012248 -t freebsd ad0 > ad0s3 added > > Fixit# gpart show ad0 > =3D> =A0 =A0 =A0 63 =A0625142385 =A0ad0 =A0MBR =A0(289G) > =A0 =A0 =A0 =A0 63 =A0209712447 =A0 =A01 =A0!7 =A0(100G) > =A0209712510 =A0 =A0 417690 =A0 =A02 =A0!136 =A0(204M) > =A0210130200 =A0415012248 =A0 =A0 3 =A0freebsd =A0(198G) > > 4. Create partitions (ad0s3a and ad0s3b) > > Fixit# gpart show ad0s3 > =3D> =A0 =A0 =A0 =A00 =A0415012248 =A0ad0s3 =A0BSD =A0(198G) > =A0 =A0 =A0 =A0 =A00 =A0415012248 =A0ad0s3 =A0- free - =A0(198G) > > Fixit# gpart add -i 1 -b 0 -s 40663421 -t freebsd-zfs ad0s3 > ad0s3a added > > Fixit# gpart show ad0s3 > =3D> =A0 =A0 =A0 =A00 =A0415012248 =A0ad0s3 =A0BSD =A0(198G) > =A0406631421 =A0 =A0 =A01 =A0freebsd-zfs =A0(194G) > =A0406631421 =A0 =A08380827 =A0 =A0 =A0 =A0 - free - =A0(4.0G) > > Fixit# gpart add -i 2 -b 406626334 -s 8380811 -t freebsd=3Dswap ad0s3 > ad0s3b added > > Fixit# gpart show ad0s3 > =3D> =A0 =A0 =A0 =A00 =A0415012248 =A0ad0s3 =A0BSD =A0(198G) > =A0406631421 =A0 =A0 =A01 =A0freebsd-zfs =A0(194G) > =A0406631421 =A0 =A08380827 =A0 =A0 =A02 =A0freebsd-swap =A0(4.0G) > > 5. load zfs kernel module > > kldload /mnt2/boot/kernel/opensolaris.ko > kldload /mnt2/boot/kernel/zfs.ko > > 6. Create Zpool > > zpool create zroot /dev/ad0s3a > zpool set bootfs=3Dzroot zroot > > 7. Create filesystem hierarchy > > zfs create -o compression=3Don =A0 =A0-o exec=3Doff =A0 =A0 -o setuid=3Do= ff =A0 zroot/tmp > > zfs create =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0zroot/usr > zfs create -o compression=3Don =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0-o = setuid=3Doff =A0 zroot/usr/ports > zfs create -o compression=3Doff =A0 -o exec=3Doff =A0 =A0 -o > setuid=3Doff =A0 =A0 =A0zroot/usr/ports/distfiles > zfs create -o compression=3Doff =A0 -o exec=3Doff =A0 =A0 -o setuid=3Doff= =A0 zroot/usr/ports/packages > zfs create -o compression=3Don =A0 =A0-o exec=3Doff =A0 =A0 -o setuid=3Do= ff =A0 zroot/usr/src > > zfs create =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0zroot/var > zfs create -o compression=3Don =A0 =A0-o exec=3Doff =A0 =A0 -o setuid=3Do= ff =A0 zroot/var/crash > zfs create =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0-o exec=3Doff =A0 = =A0 -o setuid=3Doff =A0 zroot/var/db > zfs create -o compression=3Don =A0 =A0-o exec=3Don =A0 =A0 =A0-o setuid= =3Doff =A0 zroot/var/db/pkg > zfs create =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0-o exec=3Doff =A0 = =A0 -o setuid=3Doff =A0 zroot/var/empty > zfs create -o compression=3Don =A0 =A0-o exec=3Doff =A0 =A0 -o setuid=3Do= ff =A0 zroot/var/log > zfs create -o compression=3Don =A0 =A0-o exec=3Doff =A0 =A0 -o setuid=3Do= ff =A0 zroot/var/mail > zfs create =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0-o exec=3Doff =A0 = =A0 -o setuid=3Doff =A0 zroot/var/run > zfs create -o compression=3Don =A0 =A0-o exec=3Doff =A0 =A0 -o setuid=3Do= ff =A0 zroot/var/tmp > > 8. install FreeBSD to zroot > > cd /dist/8.0-20090628-SNAP > export DESTDIR=3D/zroot > for dir in base catpages dict doc games info lib32 manpages ports; do > (cd $dir ; ./install.sh) ; done > cd src ; ./install.sh all > cd ./kernel ; ./install.sh dv8135nr ; ./install.sh generic > cd /zroot/boot ; cp -rp GENERIC/* ../kernel > > 9. create rc.conf, loader.conf, src.conf > > echo 'zfs_enable=3D"YES"' > /zroot/etc/rc.conf > > echo 'LOADER_ZFS_SUPPORT=3DYES' >> /zroot/etc/src.conf > > echo 'zfs_load=3D"YES"' >> /zroot/boot/loader.conf > echo 'vfs.root.mountfrom=3D"zfs:zroot"' >> /zroot/boot/loader.conf > > 10. change root password > > chroot /zroot > passwd > exit > > 11. create zpool.cache > > mkdir /boot/zfs > zpool export zroot && zpool import zroot > cp /boot/zfs/zpool.cache /zroot/boot/zfs/zpool.cache > > 12. export LD_LIBRARY_PATH > > export LD_LIBRARY_PATH=3D/mnt2/lib > > 13. Change mount points for zroot pool > > zfs set mountpoint=3Dlegacy zroot > zfs set mountpoint=3D/tmp zroot/tmp > zfs set mountpoint=3D/usr zroot/usr > zfs set mountpoint=3D/var zroot/var > > 14. Install boot Manager > > fdisk -B -b /boot/boot0 ad0 > > 15. Install ZFS boot > > - Install the boot1 stage on the drive: > > dd if=3D/mnt2/boot/zfsboot of=3D/dev/ad0s3 count=3D1 > > Install the boot2 zfs stage into the convienient hole in the ZFS > filesystem on-disk format which is located just after the ZFS metadata > (this is the seek=3D1024). > > dd if=3D/mnt2/boot/zfsboot of=3D/dev/ad0s3a skip=3D1 seek=3D1024 Can you successfuly boot this ZFS-Only FreeBSD on MBR slices ? I tried the zfsboot trick few months ago and it didn't work for me. And it still doesn't work, I'm stuck at the loader with no prompt. I tried both with a BSD partition (freebsd-zfs type) and without, directly on the MBR slice. --=20 Olivier Smedts _ ASCII ribbon campaign ( ) e-mail: olivier@gid0.org - against HTML email & vCards X www: http://www.gid0.org - against proprietary attachments / \ "Il y a seulement 10 sortes de gens dans le monde : ceux qui comprennent le binaire, et ceux qui ne le comprennent pas."