Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

zfs-install doc update for grub commands on lines 109, 119 #17

Open
VERTlG0 opened this issue Nov 26, 2017 · 0 comments
Open

zfs-install doc update for grub commands on lines 109, 119 #17

VERTlG0 opened this issue Nov 26, 2017 · 0 comments

Comments

@VERTlG0
Copy link

VERTlG0 commented Nov 26, 2017

Located on lines 109 and 119, 'grub2-probe' and 'grub2-install' are now 'grub-probe' and 'grub-install'

Boot Linux Live CD with ZFS support

fearedbliss maintains a variant of System Rescue CD that is highly recommended:

https://wiki.gentoo.org/wiki/User:Fearedbliss

Instruction for a USB key version

http://www.sysresccd.org/Sysresccd-manual-en_How_to_install_SystemRescueCd_on_an_USB-stick

Create pool

zpool create -f -o ashift=12 -o cachefile=/tmp/zpool.cache -O normalization=formD -m none -R /mnt/gentoo -d -o feature@async_destroy=enabled -o feature@empty_bpobj=enabled -o feature@lz4_compress=enabled -o feature@spacemap_histogram=enabled -o feature@enabled_txg=enabled -o feature@extensible_dataset=enabled -o feature@bookmarks=enabled rpool /dev/sda

Workaround 0.6.4 regression

zfs umount "/mnt/gentoo/rpool"
rmdir "/mnt/gentoo/rpool"

Create rootfs

zfs create -o mountpoint=none rpool/ROOT
zfs create -o mountpoint=/ rpool/ROOT/gentoo

Create home directories

zfs create -o mountpoint=/home rpool/HOME
zfs create -o mountpoint=/root rpool/HOME/root

Create portage directories

zfs create -o mountpoint=none -o setuid=off rpool/GENTOO
zfs create -o mountpoint=/usr/portage -o atime=off rpool/GENTOO/portage
zfs create -o mountpoint=/usr/portage/distfiles rpool/GENTOO/distfiles

Create portage build directory

zfs create -o mountpoint=/var/tmp/portage -o compression=lz4 -o sync=disabled rpool/GENTOO/build-dir

Create optional packages directory

zfs create -o mountpoint=/usr/portage/packages rpool/GENTOO/packages

Create optional ccache directory

zfs create -o mountpoint=/var/tmp/ccache -o compression=lz4 rpool/GENTOO/ccache

Set bootfs

zpool set bootfs=rpool/ROOT/gentoo rpool

Download stage3

wget 'ftp://gentoo.osuosl.org/pub/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-[0-9]*.tar.bz2'

Extract stage3

tar -xvjpf stage3-amd64-*.tar.bz2 -C /mnt/gentoo

Copy zpool.cache into chroot

mkdir -p /mnt/gentoo/etc/zfs
cp /tmp/zpool.cache /mnt/gentoo/etc/zfs/zpool.cache

Copy resolv.conf into chroot

cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf

Mount filesystems

mount -t proc none /mnt/gentoo/proc
mount --rbind /dev /mnt/gentoo/dev
mount --rbind /sys /mnt/gentoo/sys

chroot

chroot /mnt/gentoo /bin/bash
env-update; source /etc/profile; export PS1="(chroot) $PS1"; cd

Get portage snapshot (use OSUOSL mirror because it is usually fast)

env GENTOO_MIRRORS="http://gentoo.osuosl.org" emerge-webrsync

Install genkernel

emerge sys-kernel/genkernel

Install sources

emerge sys-kernel/gentoo-sources

Build initial kernel (required for checks in sys-kernel/spl and sys-fs/zfs)

FIXME: Make genkernel support modules_prepare

genkernel kernel --no-clean --no-mountboot

Install ZFS

echo "sys-kernel/spl ~amd64" >> /etc/portage/package.accept_keywords
echo "sys-fs/zfs-kmod ~amd64" >> /etc/portage/package.accept_keywords
echo "sys-fs/zfs ~amd64" >> /etc/portage/package.accept_keywords
emerge sys-fs/zfs

Add zfs to boot runlevel

rc-update add zfs-import boot
rc-update add zfs-mount boot
rc-update add zfs-share default
rc-update add zfs-zed default

Install gptfdisk

emerge sys-apps/gptfdisk

Make BIOS Boot Partition (make certain /dev/sda is your actual block device!)

sgdisk --new=2:48:2047 --typecode=2:EF02 --change-name=2:"BIOS boot partition" /dev/sda

Flush the page cache to ensure GRUB2 sees the latest disk content

echo 1 > /proc/sys/vm/drop_caches

Install GRUB2

echo "sys-boot/grub:2 libzfs" >> /etc/portage/package.use/zfs
echo "sys-boot/grub:2 ~amd64" >> /etc/portage/package.accept_keywords
emerge sys-boot/grub:2
touch /etc/mtab

sys-fs/zfs-kmod and sys-fs/zfs switched to a proposed stable /dev/zfs API in

0.6.5.3. This breaks GRUB2 if the userland expects the new ABI and the kernel

modules in the live environment do not support it.

Provided you have the latest ebuilds (0.6.5.3-r1), your userland should be

using the stable ABI. You can see if the new stable ABI is supported in your

live environment by running grub2-probe:

grub2-probe /

Idealy, grub2-probe would print "zfs" (without the quotes). If grub2-probe

reported an error, it is likely that your kernel modules from your live

environment do not support the new ABI. The kernel modules from 0.6.5.3-r1

support both, so install the older userland tools as a workaround. This will

avoid a failure in grub2-install and/or genkernel's invocation of grub2-mkconfig.

emerge -1v --nodeps =sys-fs/zfs-0.6.5.3

Install GRUB2 to disk (make certain /dev/sda is your actual block device!)

grub2-install /dev/sda

We must create an empty configuration file so genkernel fines the right one.

touch /boot/grub/grub.cfg

Build kernel and initramfs

genkernel all --no-clean --no-mountboot --zfs --bootloader=grub2 --callback="emerge @module-rebuild"

If you needed to install the old tools, you should run the following to

install the new tools again and update the initramfs archive.

emerge -1v --nodeps sys-fs/zfs
genkernel initramfs --no-clean --no-mountboot --zfs

Comment the BOOT, ROOT and SWAP lines in /etc/fstab

sed -i -e "s/(.)/(BOOT|ROOT|SWAP)(.)/#\1/\2\3/g" /etc/fstab

Follow chapters 8 through 12 of Gentoo Handboook: http://www.gentoo.org/doc/en/handbook/

Make recovery snapshot after booting into new install

zfs snapshot rpool/ROOT/gentoo@install

Additional tips

ARC tuning - You can configure the RAM that ARC uses in bytes

echo options zfs zfs_arc_max=536870912 >> /etc/modprobe.d/zfs.conf

Set portage niceness to minimize potential for updates to cause lag

echo PORTAGE_NICENESS=19 >> /etc/make.conf

Set portage to compile in a CGROUP to minimize lag

cat << END > /usr/local/sbin/portage-cgroup
#!/bin/sh

$1 must be the portage PID

cgroup=$(mktemp -d --tmpdir=/sys/fs/cgroup/cpu portage-XXXX) &&
echo $1 &gt; "${cgroup}/tasks" &&
echo 1 > "${cgroup}/notify_on_release"
echo 256 > "${cgroup}/cpu.shares"
END
chmod u+x /usr/local/sbin/portage-cgroup
echo 'PORTAGE_IONICE_COMMAND="/usr/local/sbin/portage-cgroup ${PID}"' >> /etc/make.conf

Swap support

zfs create -o sync=always -o primarycache=metadata -o secondarycache=none -b 4K -V 8G rpool/swap
mkswap -f /dev/zvol/rpool/swap
zfs snapshot rpool/swap@install

Edit fstab to use swap here

Note: Integrate zfs create -o mountpoint=/home/user rpool/HOME/user into procedure

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant