Difference between pages "ZFS Install Guide" and "User:Golodhrim"

From Funtoo
(Difference between pages)
Jump to: navigation, search
(Add force for dozfs and fix default name of crypted sda)
 
 
Line 1: Line 1:
== Introduction ==
+
{{Person
 +
|Full name=Martin 'golodhrim' Scholz
 +
|Email=golodhrim@funtoo.org
 +
|Nick=golodhrim
 +
|Geoloc=51.13379, 8.86179
 +
|Location name=Ederbringhauen, Hessen, Germany
 +
|Roles={{Role
 +
|Role type=Staff
 +
|Role desc=Core Community Manager
 +
|Start date=2009/09/01
 +
}}{{Role
 +
|Role type=User
 +
|Role desc=Just a User
 +
|Start date=2009/01/01
 +
|End date=2009/09/30
 +
}}
 +
|Maintains={{Ebuild
 +
|Ebuild=www-servers/nginx
 +
|Overlay=Funtoo
 +
}}{{Ebuild
 +
|Ebuild=sys-process/whenjobs
 +
|Overlay=Funtoo
 +
}}{{Ebuild
 +
|Ebuild=dev-lua/linotify
 +
|Overlay=Funtoo
 +
}}{{Ebuild
 +
|Ebuild=net-im/prosody-modules
 +
|Overlay=Funtoo
 +
}}
 +
|Blogs=
 +
}}
 +
{{User page
 +
|fileextention=png
 +
|welcome= == Mae Govannen randir ==
 +
pedo mellon a minno
 +
(be greeted hiker)
 +
|biography=studied Math and Chemstry for educational science. Normally I'm found online in jabber/xmpp network all the time. Next to it I hang around in [irc://irc.freenode.net/funtoo #funtoo], [irc://irc.freenode.net/funtoo-quebec #funtoo-quebec] and some others not related to funtoo... After I quit my studies, I now started to work as a Trainee IT specialist system integration for the german internet name center.
 +
|history_linux=I started my way to Linux by an advice of an teacher of mine with SuSE Linux 6.* stayed there until 9.0 and it was fun as long as you didn't update your system, this period hold for about 2 years, then I switched to debian and stayed there until Spring 2009, that was the time I gave Gentoo a try and it was fun at first to install it, but the war of releasing upgrades without a careful testing made it a hell and so I switched from gentoo to funtoo only after about a quarter year. Since then I stayed with funtoo.
 +
|oss_information=working on some ConTeXt projects too, right now try to write an source ebuild for it...
 +
|history_funtoo=using it since 2009 and beeing very happy with it, maintaining my private overlay with smaller ebuilds...
 +
|real_life=<pre>$ man rl
  
This tutorial will show you how to install Funtoo on ZFS (rootfs). This tutorial is meant to be an "overlay" over the [[Funtoo_Linux_Installation|Regular Funtoo Installation]]. Follow the normal installation and only use this guide for steps 2, 3, and 8.
+
rl(1)                            The Real Life                            rl(1)
  
=== Introduction to ZFS ===
 
  
Since ZFS is a new technology for Linux, it can be helpful to understand some of its benefits, particularly in comparison to BTRFS, another popular next-generation Linux filesystem:
 
  
* On Linux, the ZFS code can be updated independently of the kernel to obtain the latest fixes. btrfs is exclusive to Linux and you need to build the latest kernel sources to get the latest fixes.
+
NAME
 +
      rl - reallife
  
* ZFS is supported on multiple platforms. The platforms with the best support are Solaris, FreeBSD and Linux. Other platforms with varying degrees of support are NetBSD, Mac OS X and Windows. btrfs is exclusive to Linux.
+
SYNOPSIS
 +
      rl [ Options ]
  
* ZFS has the Adaptive Replacement Cache replacement algorithm while btrfs uses the Linux kernel's Last Recently Used replacement algorithm. The former often has an overwhelmingly superior hit rate, which means fewer disk accesses.
+
DESCRIPTION
 +
      rl, short for reallife, refers to life in the real world.
  
* ZFS has the ZFS Intent Log and SLOG devices, which accelerates small synchronous write performance.
+
      rl would mean that you have a life next to Funtoo, Linux or hacking,
 +
      what wouldn't affect all the devs, except for a little offtime they take
 +
      for regenerating their internal batteries. Therefore "rl" has several
 +
      options that can be used to explain what to do in rl mode.
  
* ZFS handles internal fragmentation gracefully, such that you can fill it until 100%. Internal fragmentation in btrfs can make btrfs think it is full at 10%. Btrfs has no automatic rebalancing code, so it requires a manual rebalance to correct it.
+
      The rl-mode can only be set in combination with a Geek or Hacker that you
 +
      have in front of the computer screen.
  
* ZFS has raidz, which is like RAID 5/6 (or a hypothetical RAID 7 that supports 3 parity disks), except it does not suffer from the RAID write hole issue thanks to its use of CoW and a variable stripe size. btrfs gained integrated RAID 5/6 functionality in Linux 3.9. However, its implementation uses a stripe cache that can only partially mitigate the effect of the RAID write hole.
+
OPTIONS
 +
      --eat, -e <MEAL> <TIME>
 +
              Used to move the Geek or Hacker into the kitchen and let him prepare
 +
              a meal specified by <MEAL> for the given daytime <TIME>, where <TIME>
 +
              is in the form of mm/dd/yyyy-hh:mm. If <MEAL> and <TIME> isn't
 +
              specified it means that the Geek/Hacker will grab the next phone,
 +
              call the local Pizza or Doener delivery service and order a Pizza or
 +
              Doener there, that he will consume as soon as it arrives.
  
* ZFS send/receive implementation supports incremental update when doing backups. btrfs' send/receive implementation requires sending the entire snapshot.
+
      --weekend, -we
 +
              moves the Geek or Hacker into a two day lasting weekend where he is
 +
              normaly not available on the PC, but it might happen that he has a
 +
              connection to the internet from his cell-phone, so better take it
 +
              away.
  
* ZFS supports data deduplication, which is a memory hog and only works well for specialized workloads. btrfs has no equivalent.
+
      --suspend, --sleep, -s <TIME>
 +
              moves the Geek or Hacker for <TIME> in seconds to sleep, if <TIME>
 +
              isn't specified it defaults here to 10800 seconds what would be 3hrs.
  
* ZFS datasets have a hierarchical namespace while btrfs subvolumes have a flat namespace.
+
      --drink, -d <DRINK> <AMOUNT> <TIME>
 +
              so that the Geek or Hacker doesn't die, he also sometimes need to drink.
 +
              this moves him to get <AMOUNT> of <DRINK> at <TIME>. If you specified
 +
              <DRINK> it is necessary that you also specify the <AMOUNT> else the
 +
              command is abborted. When the drinking should happen at a special time
 +
              add <TIME> in format mm/dd/yyyy-hh:mm to the command. If you just use
 +
              the drink-option it will default to <DRINK>=coffee or Jolt-coke
 +
              depending on what the Geek or Hacker sees first and <AMOUNT>=2-3 cups
 +
              or cans and <TIME>=now.
  
* ZFS has the ability to create virtual block devices called zvols in its namespace. btrfs has no equivalent and must rely on the loop device for this functionality, which is cumbersome.
+
      --holiday, -away, -a <TIME>
 +
              will move the Geek or Hacker away from the net for <TIME> and give him
 +
              a recreational pause. He will come back after <TIME> to work with more
 +
              power and even better ideas. <TIME> here is explicit needed and has to
 +
              be given in format of days or weeks, so 14d will be equal to 2w.
  
The only area where btrfs is ahead of ZFS is in the area of small file
+
      --social_contact, -sc <PERSON> or <GROUP>
efficiency. btrfs supports a feature called block suballocation, which
+
              that moves the Geek or Hacker away from the PC for a short period where
enables it to store small files far more efficiently than ZFS. It is
+
              a <PERSON> or <GROUP> comes over to visit him or he needs to move to
possible to use another filesystem (e.g. reiserfs) on top of a ZFS zvol
+
              them. The period of time he is away can vary from several hours to some
to obtain similar benefits (with arguably better data integrity) when
+
              days, so be patient if this option is set.
dealing with many small files (e.g. the portage tree).
+
 
+
=== Disclaimers ===
+
 
+
{{fancywarning|This guide is a work in progress. Expect some quirks.}}
+
{{fancyimportant|'''Since ZFS was really designed for 64 bit systems, we are only recommending and supporting 64 bit platforms and installations. We will not be supporting 32 bit platforms'''!}}
+
 
+
== Video Tutorial ==
+
 
+
As a companion to the install instructions below, a YouTube video ZFS install tutorial is now available:
+
 
+
{{#widget:YouTube|id=kxEdSXwU0ZI|width=640|height=360}}
+
 
+
== Downloading the ISO (With ZFS) ==
+
In order for us to install Funtoo on ZFS, you will need an environment that provides the ZFS tools. Therefore we will download a customized version of System Rescue CD with ZFS already included. When booting, use the "alternate"-kernel. The ZFS-module won't work with the default kernel.
+
 
+
<pre>
+
Name: sysresccd-3.8.1_zfs_0.6.2.iso  (510 MB)
+
Release Date: 2013-11-03
+
md5sum aa33ef61c5d85ad564372327940498c3
+
 
</pre>
 
</pre>
 
+
|lang_skills=I speak German as my native lang and learned English for 8 and French for 5 years at School. ATM I'm not really used to talk French any more as I hadn't had a opportunity to do so for the last years... So will give my best to also help our french users, feel free to ask. For places to meet me see at Biography...
 
+
|working_on= * working on [[flora]], the Funtoo Linux Overlay for User Contribution
'''[http://ftp.osuosl.org/pub/funtoo/distfiles/sysresccd/ Download System Rescue CD with ZFS]'''<br />
+
* writing howto for [[nginx]]
 
+
* writing howto for [[wpa_supplicant]]
== Creating a bootable USB from ISO ==
+
* writing an ebuild for ConTeXt-minimals source based, atm a low priority project...
After you download the iso, you can do the following steps to create a bootable USB:
+
|worked_on=* updated ebuild for dhcpcd-5.2.11
 
+
* tested sandbox 2.5 with metro
<console>
+
* starting to rewrite the quick install howto from Guy Fontaine to [[Funtoo_Quick_Install]]
Make a temporary directory
+
* update Funtoo install guide with quick install guide
# ##i##mkdir /tmp/loop
+
* writing guide for [[flora]], the Funtoo Linux Overlay for User Contribution
 
+
}}
Mount the iso
+
== Boxes ==
# ##i##mount -o ro,loop /root/sysresccd-3.7.1_zfs_0.6.2.iso /tmp/loop
+
* mordor -- Homeserver (x86_64 architecture) ~funtoo
 
+
* hobbigen -- Main PC (x86_64 architecture) ~funtoo will be there for a gentoo bug resolver
Run the usb installer
+
* lorien -- Laptop (x86_64 architecture) ~funtoo HP Compaq 6820s (died 2011)
# ##i##/tmp/loop/usb_inst.sh
+
* lorien -- Laptop (x86_64 architecture) ~funtoo experimental Dell Vostro 6830
</console>
+
 
+
That should be all you need to do to get your flash drive working.
+
 
+
When you are booting into system rescue cd, make sure you select the '''alternative 64 bit kernel'''. ZFS support was specifically added to the alternative 64 bit kernel rather than the standard 64 bit kernel.
+
 
+
== Creating partitions ==
+
There are two ways to partition your disk: You can use your entire drive and let ZFS automatically partition it for you, or you can do it manually.
+
 
+
We will be showing you how to partition it '''manually''' because if you partition it manually you get to create your own layout, you get to have your own separate /boot partition (Which is nice since not every bootloader supports booting from ZFS pools), and you get to boot into RAID10, RAID5 (RAIDZ) pools and any other layouts due to you having a separate /boot partition.
+
 
+
==== gdisk (GPT Style) ====
+
 
+
'''A Fresh Start''':
+
 
+
First lets make sure that the disk is completely wiped from any previous disk labels and partitions.
+
We will also assume that <tt>/dev/sda</tt> is the target drive.<br />
+
 
+
<console>
+
# ##i##gdisk /dev/sda
+
 
+
Command: ##i##x ↵
+
Expert command: ##i##z ↵
+
About to wipe out GPT on /dev/sda. Proceed?: ##i##y ↵
+
GPT data structures destroyed! You may now partition the disk using fdisk or other utilities.
+
Blank out MBR?: ##i##y ↵
+
</console>
+
 
+
{{fancywarning|This is a destructive operation. Make sure you really don't want anything on this disk.}}
+
 
+
Now that we have a clean drive, we will create the new layout.
+
 
+
'''Create Partition 1''' (boot):
+
<console>
+
Command: ##i##n ↵
+
Partition Number: ##i##↵
+
First sector: ##i##↵
+
Last sector: ##i##+250M ↵
+
Hex Code: ##i##↵
+
</console>
+
 
+
'''Create Partition 2''' (BIOS Boot Partition):
+
<console>Command: ##i##n ↵
+
Partition Number: ##i##↵
+
First sector: ##i##↵
+
Last sector: ##i##+32M ↵
+
Hex Code: ##i##EF02 ↵
+
</console>
+
 
+
'''Create Partition 3''' (ZFS):
+
<console>Command: ##i##n ↵
+
Partition Number: ##i##↵
+
First sector: ##i##↵
+
Last sector: ##i##↵
+
Hex Code: ##i##bf00 ↵
+
 
+
Command: ##i##p ↵
+
 
+
Number  Start (sector)    End (sector)  Size      Code  Name
+
  1            2048          514047  250.0 MiB  8300  Linux filesystem
+
  2          514048          579583  32.0 MiB    EF02  BIOS boot partition
+
  3          579584      1953525134  931.2 GiB  BF00  Solaris root
+
 
+
Command: ##i##w ↵
+
</console>
+
 
+
 
+
=== Format your boot volume ===
+
Format your separate /boot partition:
+
<console># ##i##mkfs.ext2 /dev/sda1</console>
+
 
+
=== Encryption (Optional) ===
+
If you want encryption, then create your encrypted vault(s) now by doing the following:
+
 
+
<console>
+
# ##i##cryptsetup luksFormat /dev/sda3
+
# ##i##cryptsetup luksOpen /dev/sda3 vault_1
+
</console>
+
 
+
=== Create the zpool ===
+
We will first create the pool. The pool will be named `rpool` and the disk will be aligned to 4096 (using ashift=12)
+
<console># ##i##zpool create -f -o ashift=12 -o cachefile= -O compression=on -m none -R /mnt/funtoo rpool /dev/sda3</console>
+
 
+
{{fancyimportant|If you are using encrypted root, change '''/dev/sda3 to /dev/mapper/vault_1'''.}}
+
 
+
{{fancynote|'''ashift<nowiki>=</nowiki>12''' should be use if you have a newer, advanced format disk that has a sector size of 4096 bytes. If you have an older disk with 512 byte sectors, you should use '''ashift<nowiki>=</nowiki>9''' or don't add the option for auto detection}}
+
 
+
{{fancynote|If you have a previous pool that you would like to import, you can do a: '''zpool import -f -R /mnt/funtoo <pool_name>'''}}
+
 
+
=== Create the zfs datasets ===
+
We will now create some datasets. For this installation, we will create a small but future proof amount of datasets. We will have a dataset for the OS (/), and your swap. We will also show you how to create some optional datasets: /home, /var, /usr/src, and /usr/portage.
+
 
+
<console>
+
Create some empty containers for organization purposes, and make the dataset that will hold /
+
# ##i##zfs create rpool/ROOT
+
# ##i##zfs create -o mountpoint=/ rpool/ROOT/funtoo
+
 
+
Optional, but recommended datasets: /home
+
# ##i##zfs create -o mountpoint=/home rpool/HOME
+
 
+
Optional, portage tree, distfiles, and binary packages:
+
# ##i##zfs create rpool/FUNTOO
+
# ##i##zfs create -o mountpoint=/usr/portage -o compression=off rpool/FUNTOO/portage
+
# ##i##zfs create -o mountpoint=/usr/portage/distfiles rpool/FUNTOO/portage/distfiles
+
# ##i##zfs create -o mountpoint=/usr/portage/packages rpool/FUNTOO/portage/packages
+
 
+
Optional datasets: /usr/src
+
# ##i##zfs create -o mountpoint=/usr/src rpool/FUNTOO/src
+
</console>
+
 
+
=== Create your swap zvol ===
+
'''Make your swap +1G greater than your RAM. An 8G machine would have 9G of SWAP (This is kinda big though). For machines with this much memory, You could just make it 2G if you don't have any problems.'''
+
<console>
+
# ##i##zfs create -o sync=always -o primarycache=metadata -o secondarycache=none -o volblocksize=4K -V 1G rpool/swap
+
</console>
+
 
+
=== Format your swap zvol ===
+
<console>
+
# ##i##mkswap -f /dev/zvol/rpool/swap
+
# ##i##swapon /dev/zvol/rpool/swap
+
</console>
+
 
+
 
+
=== Last minute checks and touches ===
+
Check to make sure everything appears fine. Your output may differ depending on the choices you made above:
+
<console>
+
# ##i##zpool status
+
  pool: rpool
+
state: ONLINE
+
  scan: none requested
+
config:
+
 
+
        NAME        STATE    READ WRITE CKSUM
+
        rpool      ONLINE      0    0    0
+
          sda2      ONLINE      0    0    0
+
 
+
errors: No known data errors
+
 
+
# ##i##zfs list
+
rpool              3.10G  15.5G  136K  none
+
rpool/HOME          136K  15.5G  136K  /mnt/funtoo/home
+
rpool/ROOT          308K  15.5G  136K  none
+
rpool/ROOT/funtoo  172K  15.5G  172K  /mnt/funtoo
+
rpool/swap        3.09G  18.6G    76K  -
+
</console>
+
 
+
Now we will continue to install funtoo.
+
 
+
== Installing Funtoo ==
+
[[Funtoo_Linux_Installation|Download and extract the Funtoo stage3 and continue installation as normal.]]
+
 
+
Then once you've extracted the stage3, chroot into your new funtoo environment:
+
<console>
+
Go into the directory that you will chroot into
+
# ##i##cd /mnt/funtoo
+
 
+
Mount your boot drive
+
# ##i##mount /dev/sda1 /mnt/funtoo/boot
+
 
+
Bind the kernel related directories
+
# ##i##mount -t proc none /mnt/funtoo/proc
+
# ##i##mount --rbind /dev /mnt/funtoo/dev
+
# ##i##mount --rbind /sys /mnt/funtoo/sys
+
 
+
Copy network settings
+
# ##i##cp /etc/resolv.conf /mnt/funtoo/etc/
+
 
+
chroot into your new funtoo environment
+
# ##i##env -i HOME=/root TERM=$TERM chroot /mnt/funtoo /bin/bash --login
+
 
+
Place your mountpoints into your /etc/mtab file
+
# ##i##cat /proc/mounts > /etc/mtab
+
 
+
Sync your tree
+
# ##i##emerge --sync
+
</console>
+
 
+
=== Add filesystems to /etc/fstab ===
+
 
+
Before we continue to compile and or install our kernel in the next step, we will edit the /etc/fstab file because if we decide to install our kernel through portage, portage will need to know where is your /boot so that it can place the files in there. We also need to update /etc/mtab so our system knows what is mounted
+
 
+
<console>
+
# ##i##nano /etc/fstab
+
 
+
# <fs>                  <mountpoint>    <type>          <opts>          <dump/pass>
+
# Do not add the /boot line below if you are using whole-disk zfs
+
/dev/sda1              /boot          ext2            defaults        0 2
+
/dev/zvol/rpool/swap    none            swap            sw              0 0
+
</console>
+
 
+
== Kernel Configuration ==
+
To speed up this step, you can install "bliss-kernel" since it's already properly configured for ZFS and a lot of other configurations. The kernel is also compiled and ready to go. To install 'bliss-kernel' type the following:
+
 
+
<console>
+
# ##i##emerge bliss-kernel
+
</console>
+
 
+
Now make sure that your /usr/src/linux symlink is pointing to this kernel by typing the following:
+
 
+
<console>
+
# ##i##eselect kernel list
+
Available kernel symlink targets:
+
[1]   linux-3.10.10-FB.01 *
+
</console>
+
 
+
You should see a star next to the bliss-kernel version you installed. In this case it was 3.10.10-FB.01. If it's not set, you can type '''eselect kernel set #'''.
+
 
+
== Installing the ZFS userspace tools and kernel modules ==
+
 
+
<console># ##i##emerge -av zfs spl zfs-kmod</console>
+
 
+
(spl = Solaris Porting Layer)
+
 
+
Check to make sure that the zfs tools are working, the zpool.cache file that you copied before should be displayed.
+
 
+
<console>
+
# ##i##zpool status
+
# ##i##zfs list
+
</console>
+
 
+
If everything worked, continue.
+
 
+
== Install the bootloader ==
+
=== GRUB 2 ===
+
Before you do this, make sure this checklist is followed:
+
* Installed kernel and kernel modules
+
* Installed zfs package from the tree
+
* /dev, /proc, /sys are mounted in the chroot environment
+
 
+
Once all this is checked, let's install grub2. First we need to enable the "libzfs" use flag so zfs support is compiled for grub2.
+
 
+
<console># ##i##echo "sys-boot/grub libzfs" >> /etc/portage/package.use</console>
+
 
+
Then we will compile grub2:
+
 
+
<console># ##i##emerge -av grub</console>
+
 
+
Once this is done, you can check that grub is version 2.00 by doing the following command:
+
<console>
+
# ##i##grub-install --version
+
grub-install (GRUB) 2.00
+
</console>
+
 
+
Now try to install grub2:
+
<console># ##i##grub-install --no-floppy /dev/sda</console>
+
 
+
You should receive the following message
+
<console>Installation finished. No error reported.</console>
+
 
+
If not, then go back to the above checklist.
+
 
+
=== LILO ===
+
Before you do this, make sure the following checklist is followed:
+
* /dev/, /proc and /sys are mounted.
+
* Installed the sys-fs/zfs package from the tree.
+
Once the above requirements are met, LILO can be installed.
+
 
+
Now we will install LILO.
+
<console># ##i##emerge -av sys-boot/lilo</console>
+
Once the installation of LILO is complete we will need to edit the lilo.conf file.
+
<console># ##i##nano /etc/lilo.conf
+
boot=/dev/sda
+
prompt
+
timeout=4
+
default=Funtoo
+
 
+
image=/boot/bzImage
+
      label=Funtoo
+
      read-only
+
      append="root=rpool/ROOT/funtoo"
+
      initrd=/boot/initramfs
+
</console>
+
All that is left now is to install the bootcode to the MBR.
+
 
+
This can be accomplished by running:
+
<console># ##i##/sbin/lilo</console>
+
If it is successful you should see:
+
<console>
+
Warning: LBA32 addressing assumed
+
Added Funtoo + *
+
One warning was issued
+
</console>
+
 
+
== Create the initramfs ==
+
There are two ways to do this, you can use genkernel, or you can use my bliss initramfs creator. I will show you both.
+
 
+
=== genkernel ===
+
<console>
+
# ##i##emerge -av sys-kernel/genkernel
+
# You only need to add --luks if you used encryption
+
# ##i##genkernel --zfs --luks initramfs
+
</console>
+
 
+
=== Bliss Initramfs Creator ===
+
If you are encrypting your drives, then add the "luks" use flag to your package.use before emerging:
+
 
+
<console>
+
# ##i##echo "sys-kernel/bliss-initramfs luks" >> /etc/portage/package.use
+
</console>
+
 
+
Now install the creator:
+
 
+
<console>
+
# ##i##emerge bliss-initramfs
+
</console>
+
 
+
 
+
Then go into the install directory, run the script as root, and place it into /boot:
+
<console># ##i##cd /opt/bliss-initramfs
+
# ##i##./createInit
+
# ##i##mv initrd-<kernel_name> /boot
+
</console>
+
'''<kernel_name>''' is the name of what you selected in the initramfs creator, and the name of the outputted file.
+
 
+
== Using boot-update ==
+
=== /boot on separate partition ===
+
If you created a separate non-zfs partition for boot then configuring boot-update is almost exactly the same as a normal install except that auto detection for root does not work. You must tell boot-update what your root is.
+
==== Genkernel ====
+
If your using genkernel you must add 'real_root=ZFS=<root>' and 'dozfs' to your params.
+
Example entry for boot.conf:
+
<console>
+
"Funtoo ZFS" {
+
        kernel vmlinuz[-v]
+
        initrd initramfs-genkernel-x86_64[-v]
+
        params real_root=ZFS=rpool/ROOT/funtoo
+
        params += dozfs=force
+
        # Also add 'params += crypt_root=/dev/sda3' if you used encryption
+
        # Adjust the above setting to your system if needed
+
}
+
</console>
+
 
+
==== Bliss Initramfs Creator ====
+
If you used the Bliss Initramfs Creator then all you need to do is add 'root=<root>' to your params.
+
Example entry for boot.conf:
+
<console>
+
"Funtoo ZFS" {
+
        kernel vmlinuz[-v]
+
        initrd initrd[-v]
+
        params root=rpool/ROOT/funtoo quiet
+
        # If you have an encrypted device with a regular passphrase,
+
        # you can add the following line
+
        params += enc_root=/dev/sda3 enc_type=pass
+
}
+
</console>
+
 
+
After editing /etc/boot.conf, you just need to run boot-update to update grub.cfg
+
<console># ##i##boot-update</console>
+
 
+
=== /boot on ZFS ===
+
TBC - pending update to boot-update to support this
+
 
+
== Final configuration ==
+
=== Add the zfs tools to openrc ===
+
<console># ##i##rc-update add zfs boot</console>
+
 
+
=== Clean up and reboot ===
+
We are almost done, we are just going to clean up, '''set our root password''', and unmount whatever we mounted and get out.
+
 
+
<console>
+
Delete the stage3 tarball that you downloaded earlier so it doesn't take up space.
+
# ##i##cd /
+
# ##i##rm stage3-latest.tar.xz
+
 
+
Set your root password
+
# ##i##passwd
+
>> Enter your password, you won't see what you are writing (for security reasons), but it is there!
+
 
+
Get out of the chroot environment
+
# ##i##exit
+
 
+
Unmount all the kernel filesystem stuff and boot (if you have a separate /boot)
+
# ##i##umount -l proc dev sys boot
+
 
+
Turn off the swap
+
# ##i##swapoff /dev/zvol/rpool/swap
+
 
+
Export the zpool
+
# ##i##cd /
+
# ##i##zpool export rpool
+
 
+
Reboot
+
# ##i##reboot
+
</console>
+
 
+
{{fancyimportant|'''Don't forget to set your root password as stated above before exiting chroot and rebooting. If you don't set the root password, you won't be able to log into your new system.'''}}
+
 
+
and that should be enough to get your system to boot on ZFS.
+
 
+
== After reboot ==
+
=== Create initial ZFS Snapshot ===
+
Continue to set up anything you need in terms of /etc configurations. Once you have everything the way you like it, take a snapshot of your system. You will be using this snapshot to revert back to this state if anything ever happens to your system down the road. The snapshots are cheap, and almost instant.
+
 
+
To take the snapshot of your system, type the following:
+
<console># ##i##zfs snapshot -r rpool@install</console>
+
 
+
To see if your snapshot was taken, type:
+
<console># ##i##zfs list -t snapshot</console>
+
 
+
If your machine ever fails and you need to get back to this state, just type (This will only revert your / dataset while keeping the rest of your data intact):
+
<console># ##i##zfs rollback rpool/ROOT/funtoo@install</console>
+
 
+
{{fancyimportant|'''For a detailed overview, presentation of ZFS' capabilities, as well as usage examples, please refer to the [[ZFS_Fun|ZFS Fun]] page.'''}}
+
 
+
[[Category:HOWTO]]
+
[[Category:Filesystems]]
+
[[Category:Featured]]
+
 
+
__NOTITLE__
+

Revision as of 01:08, 7 January 2014

Martin 'golodhrim' Scholz

Staff, Core Community Manager (Start date 2009-09-01)

Contact

freenode: golodhrim
golodhrim@funtoo.org

Location

Loading map...
Ederbringhauen, Hessen, Germany (51° 8' 1.644", 8° 51' 42.444")


Mae Govannen randir

pedo mellon a minno (be greeted hiker)

Biography

studied Math and Chemstry for educational science. Normally I'm found online in jabber/xmpp network all the time. Next to it I hang around in #funtoo, #funtoo-quebec and some others not related to funtoo... After I quit my studies, I now started to work as a Trainee IT specialist system integration for the german internet name center.

History using Linux

I started my way to Linux by an advice of an teacher of mine with SuSE Linux 6.* stayed there until 9.0 and it was fun as long as you didn't update your system, this period hold for about 2 years, then I switched to debian and stayed there until Spring 2009, that was the time I gave Gentoo a try and it was fun at first to install it, but the war of releasing upgrades without a careful testing made it a hell and so I switched from gentoo to funtoo only after about a quarter year. Since then I stayed with funtoo.

History on Funtoo

using it since 2009 and beeing very happy with it, maintaining my private overlay with smaller ebuilds...

Collaboration on Open Source projects

working on some ConTeXt projects too, right now try to write an source ebuild for it...

Language Skills

I speak German as my native lang and learned English for 8 and French for 5 years at School. ATM I'm not really used to talk French any more as I hadn't had a opportunity to do so for the last years... So will give my best to also help our french users, feel free to ask. For places to meet me see at Biography...

Parts working on at the moment

  • working on flora, the Funtoo Linux Overlay for User Contribution
  • writing howto for nginx
  • writing howto for wpa_supplicant
  • writing an ebuild for ConTeXt-minimals source based, atm a low priority project...

Parts worked on

  • updated ebuild for dhcpcd-5.2.11
  • tested sandbox 2.5 with metro
  • starting to rewrite the quick install howto from Guy Fontaine to Funtoo_Quick_Install
  • update Funtoo install guide with quick install guide
  • writing guide for flora, the Funtoo Linux Overlay for User Contribution


About real life

$ man rl

rl(1)                             The Real Life                             rl(1)



NAME
       rl - reallife

SYNOPSIS
       rl [ Options ]

DESCRIPTION
       rl, short for reallife, refers to life in the real world.

       rl would mean that you have a life next to Funtoo, Linux or hacking,
       what wouldn't affect all the devs, except for a little offtime they take
       for regenerating their internal batteries. Therefore "rl" has several
       options that can be used to explain what to do in rl mode.

       The rl-mode can only be set in combination with a Geek or Hacker that you
       have in front of the computer screen.

OPTIONS
       --eat, -e <MEAL> <TIME>
              Used to move the Geek or Hacker into the kitchen and let him prepare
              a meal specified by <MEAL> for the given daytime <TIME>, where <TIME>
              is in the form of mm/dd/yyyy-hh:mm. If <MEAL> and <TIME> isn't
              specified it means that the Geek/Hacker will grab the next phone,
              call the local Pizza or Doener delivery service and order a Pizza or
              Doener there, that he will consume as soon as it arrives.

       --weekend, -we
              moves the Geek or Hacker into a two day lasting weekend where he is
              normaly not available on the PC, but it might happen that he has a
              connection to the internet from his cell-phone, so better take it
              away.

       --suspend, --sleep, -s <TIME>
              moves the Geek or Hacker for <TIME> in seconds to sleep, if <TIME>
              isn't specified it defaults here to 10800 seconds what would be 3hrs.

       --drink, -d <DRINK> <AMOUNT> <TIME>
              so that the Geek or Hacker doesn't die, he also sometimes need to drink.
              this moves him to get <AMOUNT> of <DRINK> at <TIME>. If you specified
              <DRINK> it is necessary that you also specify the <AMOUNT> else the
              command is abborted. When the drinking should happen at a special time
              add <TIME> in format mm/dd/yyyy-hh:mm to the command. If you just use
              the drink-option it will default to <DRINK>=coffee or Jolt-coke
              depending on what the Geek or Hacker sees first and <AMOUNT>=2-3 cups
              or cans and <TIME>=now.

       --holiday, -away, -a <TIME>
              will move the Geek or Hacker away from the net for <TIME> and give him
              a recreational pause. He will come back after <TIME> to work with more
              power and even better ideas. <TIME> here is explicit needed and has to
              be given in format of days or weeks, so 14d will be equal to 2w.

       --social_contact, -sc <PERSON> or <GROUP>
              that moves the Geek or Hacker away from the PC for a short period where
              a <PERSON> or <GROUP> comes over to visit him or he needs to move to
              them. The period of time he is away can vary from several hours to some
              days, so be patient if this option is set.

Boxes

  • mordor -- Homeserver (x86_64 architecture) ~funtoo
  • hobbigen -- Main PC (x86_64 architecture) ~funtoo will be there for a gentoo bug resolver
  • lorien -- Laptop (x86_64 architecture) ~funtoo HP Compaq 6820s (died 2011)
  • lorien -- Laptop (x86_64 architecture) ~funtoo experimental Dell Vostro 6830