Mail archive
alpine-user

Re: [alpine-user] Re: ZFS boot and root

From: paul gauret <pgauret_at_yahoo.com>
Date: Fri, 29 Mar 2019 08:29:52 +0000 (UTC)

 Not sure what you are testing on, in my case was using a cheap dedicated server without being able to see boot messages. I ended up creating a VirtualBox replica which was essential to get the thing booting. In the end there's not that many things that you need to adjust manually, Alpine actually boots fine on ZFS without an /etc/fstab :)
I wrote a bit of a guide for my own reference (setting up Alpine from scratch with full ZFS root, IPv4/6 network configuration for hosting at Scaleway, LXC containers with ZFS backend, hosting for web, e-mail, mysql, openldap, nextcloud). I plan to clean it up and publish it on the Alpine wiki.
To answer your question on quirks found so far (bear in mind I've just been playing with this setup for less than a week).- There's a showstopper bug with MySQL on ZFS https://bugs.alpinelinux.org/issues/9046 [MDEV-16015] Probably out of disk space error with docker for mac/win + bind mounts - Jira

|
|
| |
[MDEV-16015] Probably out of disk space error with docker for mac/win + ...


 |

 |

 |



- I have an issue with deleting LXC containers on ZFS lxc-destroy fails on zfs backend · Issue #2916 · lxc/lxc

|
|
|
| | |

 |

 |
|
| |
lxc-destroy fails on zfs backend · Issue #2916 · lxc/lxc

The template below is mostly useful for bug reports and support questions. Feel free to remove anything which do...
 |

 |

 |




Otherwise all good for now.




    On Tuesday, March 26, 2019, 1:00:13 AM GMT+1, David Davies <David.Davies_at_cybersecure.com> wrote:
 
 #yiv4614375856 #yiv4614375856 -- P {margin-top:0;margin-bottom:0;}#yiv4614375856
Yes I took some inspiration from that guide, but I could never get it to work. Probably an essential service I forgot to enable or a necessary conf file that didn't get created. It's also why I like using the setup script, it creates /etc/fstab and all those other little things you can forget.







Not sure if you read my comments at the end, did you have similar experiences, or find any little quirks?
From: paul gauret <pgauret_at_yahoo.com>
Sent: Tuesday, 26 March 2019 2:12:48 AM
To: alpine-user_at_lists.alpinelinux.org; David Davies
Subject: Re: [alpine-user] Re: ZFS boot and root I've managed to get ZFS root working using the instructions on
Alpine ZFS Root | bit-strickerei.de


|
|
| |
Alpine ZFS Root | bit-strickerei.de

Stefan Wagner


 |

 |

 |


Only twist is *not* to add the two entries to update-extlinux.conf as suggested towards the end. On my setup they made grub fail to generate a proper grub.cfg file.On Wednesday, March 20, 2019, 3:54:13 AM GMT+1, David Davies <David.Davies_at_cybersecure.com> wrote:

OK, I've worked it out. Sorry if I missed a couple of steps, this is just an overview for someone already pretty familiar with doing this on other distros. It's a bit long, sorry.
The basic process for me is:
   
   - Boot Alpine iso 
      - At the moment use the extended iso, it comes with zfs. The standard iso used to work but if you use it now and install zfs in live environment you'll get issues because the vanilla kernel version from packages is different to what's on the iso. This is only since 3.9.2

   - Run these commands so you can install packages
      - cp -pR /.modloop/modules /tmp
      - umount /.modloop
      - rm /lib/modules
      - mv /tmp/modules /lib

   - Install some other stuff you need and run the following
      - apk add util-linux eudev
      - setup-udev (this will give you your /dev/disk/by-*)

   - Now install zfs in live environment
      - apk add zfs zfs-libs zfs-vanilla
      - modprobe zfs

   - Create your zpool and zfs file systems. I choose to use the following layout, see also guides on the web for more info
      - /dev/sda1 ------> 500 MB "boot bios" partition
      - /dev/sda2 ------> What's left, single unformatted partition
      - Have your / mounted to /mnt and /boot mounted to /mnt/boot when you create your zpool with the "-R" parameter

   - Go through the "setup-alpine" wizard and keep typing "none" when you get to the point of installing to disk
   - This is a total hack, but it works. Edit the file /sbin/setup-disk
      - Go to line 210 and add zfs to the supported filesystems (see below)
      - local supported="ext2 ext3 ext4 btrfs xfs vfat zfs"
      - Save and exit

   - Run the following command
      - setup-disk -m sys -v /mnt
      - Install will work but will exit with an error. Just ignore it, it's done

   - Now prepare to chroot
      -
      - mount -t proc none /mnt/proc
      - mount --rbind /sys /mnt/sys
      - mount --rbind /dev /mnt/dev
      - chroot /mnt /bin/ash -l

   - Inside the chroot run the following
      - apk del syslinux (we want to use grub)
      - export ZPOOL_VDEV_NAME_PATH=1 (this lets grub install with zfs on root)
      - apk add grub grub-bios
      - grub-install /dev/sda
      - grub-mkconfig -o /boot/grub/grub.cfg

   - Add zfs to /etc/mkinitfs/mkinitfs.conf, to make it look something like
      - features="ata base ide scsi usb virtio zfs"

   - Edit /etc/fstab and get rid of the ZFS entries at the top
   - Now run mkinitfs
   - Install anything else you need, create accounts etc
   - Exit chroot and run the following
      -
      - umount -R /mnt/dev
      - umount -R /mnt/proc
      - umount -R /mnt/sys
      - zpool export zroot

   - Now reboot into your zfs root on alpine goodness!


A couple of things I have found so far
   - You DON'T need to enable zfs-import, zfs-mount services with rc-update IF you only have the zpool on the root file system. I haven't tested how this goes if you have other zpools. But, these services can be enabled easily enough if needed
   - On poweroff you may get the error: "Unable to save dependency cache". I managed to find an obscure reference to this on a gentoo forum, the file systems are unmounted before this service can complete. I could "fix" it by editing /etc/conf.d/zfs and changing the line
      - ZFS_UMOUNT="no"
      - Oddly enough, after re-enabling this (putting "yes" back) I don't get this error anymore

   - On boot you get the errors:
      - cannot import 'zroot' : pool already exists
      - cannot mount '/' directory not empty
      - No idea what to do about this. It sounds like initramfs has already mounted zroot (great) but for some reason something tries to mount it again? And this is with the zfs-import and zfs-mount services NOT enabled

   - Creating other zfs file systems for things like /usr /var /home etc. causes really strange errors and a broken system. Would love to know if someone else has got this working
   - Installing this to a USB drive gives you an unbootable USB as far as I can tell. I could only get it to work using vmware and booting with plop. I tried tinkering with ZFS_INITRD_PRE_MOUNTED_SLEEP and ZFS_INITRD_POST_MODPROBE_SLEEP in /etc/conf.d/zfs - but it made no difference for me

Would love to hear feedback and other people's experiences as well. Would REALLY love if ZFS could be a supported file system on install, it's just a matter of hacking the setup scripts properly, not like what I've done.


On 6 Feb 2019, at 11:18, David Davies <David.Davies_at_cybersecure.com> wrote:
Hi,

We've been trying to get ZFS on root working for some time. The best we can do at the moment is have /boot on an ext4 partition with ZFS on root. Is it possible to have alpine boot with ZFS on /boot and / - whole disk with no partitions necessary? I have tried every ZFS root guide for Gentoo, Arch, Ubuntu, Centos and a couple for Alpine but simply can't get this to work.

The best I can do is manually load initrd and linux-vanilla from grub but it crashes to an emergency shell on boot.

Any ideas on if this is currently possible? If not could this be support in a future release, even have ZFS as a possible default install option in the setup-alpine script?

Thanks

David

  


---
Unsubscribe:  alpine-user+unsubscribe_at_lists.alpinelinux.org
Help:         alpine-user+help_at_lists.alpinelinux.org
---
Received on Fri Mar 29 2019 - 08:29:52 UTC