mirror of https://github.com/archzfs/archzfs
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
325 lines
12 KiB
325 lines
12 KiB
======================================
|
|
Arch ZFS - ZFS On Linux Kernel Modules
|
|
======================================
|
|
:Modified: Fri Apr 26 21:13:37 PDT 2013
|
|
:status: hidden
|
|
|
|
.. important:: The archzfs packages are now hosed in the demz-repo-core
|
|
repository and is located at
|
|
"http://demizerone.com/$repo/$arch". Please update the server
|
|
lines in your pacman.conf as necessary.
|
|
|
|
This is the official web page of the Arch ZFS kernel module packages for native
|
|
ZFS on Linux. Here you can find pacman package sources and pre-built x86_64 and
|
|
i686 packages. For effortless package installation and updates, it is possible
|
|
to add the unofficial repository to your pacman.conf. There is also a special
|
|
repository for using ZFS with the archiso install media for installing arch
|
|
onto a ZFS root filesystem, or doing emergency maintenance. To see the package
|
|
sources and repository development history, see archzfs-github_.
|
|
|
|
.. note:: The ZFS and SPL packages are depend on a specific kernel
|
|
version. You will not be able to perform kernel updates until updated
|
|
ZFS packages are pushed to the archzfs repository for the new kernel
|
|
version. If you installing ZFS manually using the AUR packages, you
|
|
would be required to first un-install ZFS, perform the kernel update,
|
|
restart the host, and then build and install the updated AUR ZFS
|
|
packages.
|
|
|
|
32bit support for ZFS on Linux is unstable due to inconsistencies in memory
|
|
management between the Solaris kernel and the Linux kernel. See `ZFS on Linux
|
|
FAQ - 64bit`_ However, users have reported on the AUR ZFS page of running ZFS
|
|
with compiled 32bit packages without any problems. For this reason, ZFS on Arch
|
|
Linux does support i686.
|
|
|
|
The archzfs repository and packages are signed, but the key is not trusted by
|
|
any of the Arch Linux master keys. You will have to locally sign the key and
|
|
add it to your trust. See below for more info.
|
|
|
|
For more information about the packager, Jesus Alvarez, see demizerone.com_.
|
|
|
|
------------------------------------
|
|
The archzfs un-official repositories
|
|
------------------------------------
|
|
|
|
This repository is updated on every kernel release. This allows for effortless
|
|
installation and updates.
|
|
|
|
To start, add the server information to `/etc/pacman.conf`,
|
|
|
|
.. code-block:: bash
|
|
|
|
[demz-repo-core] # For zfs packages
|
|
Server = http://demizerone.com/$repo/$arch
|
|
|
|
Both the database and the packages are signed, so you will have to add the
|
|
signing key to pacman's trusted key list:
|
|
|
|
.. code-block:: console
|
|
|
|
# pacman-key -r 0EE7A126
|
|
|
|
verify it using the info below and then sign it with the local master key
|
|
|
|
.. code-block:: console
|
|
|
|
# pacman-key --lsign-key 0EE7A126
|
|
|
|
next, update your pacman database
|
|
|
|
.. code-block:: console
|
|
|
|
# pacman -Syy
|
|
|
|
and finally, install the package group
|
|
|
|
.. code-block:: console
|
|
|
|
# pacman -S archzfs
|
|
|
|
.. note:: To read about key management in Arch, see pacman-key_ and
|
|
pacman.conf_
|
|
|
|
ZFS support for testing
|
|
=======================
|
|
|
|
It is possible to use ZFS with the official Arch Linux testing repository.
|
|
|
|
.. code-block:: bash
|
|
|
|
[demz-repo-testing] # For zfs packages
|
|
Server = http://demizerone.com/$repo/$arch
|
|
|
|
ZFS support for archiso
|
|
=======================
|
|
|
|
If emergency maintenance is ever required on a ZFS file system from an archiso
|
|
live environment, you will need to use the archzfs repository that tracks the
|
|
current archiso release. To use it, follow the steps above for accessing the
|
|
archzfs repository, but instead use the special server line below when adding
|
|
the server information to pacman.conf:
|
|
|
|
.. code-block:: bash
|
|
|
|
[demz-repo-archiso]
|
|
Server = http://demizerone.com/$repo/$arch
|
|
|
|
-----------------------
|
|
Signing key for archzfs
|
|
-----------------------
|
|
|
|
The ZFS packages and database are signed with the package maintainer's key. The
|
|
current maintainer is Jesus Alvarez and his key can be verified at
|
|
demizerone.com_ This key is not trusted by any of the Arch Linux Master Keys.
|
|
|
|
0EE7A126_
|
|
=========
|
|
|
|
The short version::
|
|
|
|
pub 2048R/0EE7A126 2012-10-24
|
|
Key fingerprint = B18A 9C9F 1E4E EAFF 072D AB9E 5E1A BF24 0EE7 A126
|
|
uid Jesus Alvarez <jeezusjr@gmail.com>
|
|
sub 2048R/DAB97A2B 2012-10-24
|
|
|
|
and the long version::
|
|
|
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
Version: SKS 1.1.0
|
|
|
|
mQENBFCHi6oBCADbqiZasgwE//HtfGvyOynXapEP67tNFsKUgFR/XIVi8Io5ehCD88wOpN0O
|
|
02u73OjDssTNh+yEN8ItixhxbZQClE7X4AG2/I49PBsPnY2G3zGPa2TB6vt5GStyVOFJjxsX
|
|
F3sWcxfaBXSGonc9Qc8MSKmwwyvG5ASjCYYjK60UKoEqRF09DI/fMaOWcGoosNzNUntzuyAw
|
|
9anRPZc/Chtmpd0DyQ4MhkGV18BWSsoGJsTeASo+jq98FcTKhUOfzpPccwmrQ+ViX+RIXIc/
|
|
6WtnFs1rE0peWio3sgy+JvywT+8z2yrKZ+ovE1BQYgm2hZ4z6t55gdjfpw4uWtV4BsGzABEB
|
|
AAG0Ikplc3VzIEFsdmFyZXogPGplZXp1c2pyQGdtYWlsLmNvbT6JATgEEwECACIFAlCHi6oC
|
|
GwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEF4avyQO56EmiKoH/iPqzt2+OycQ+tXX
|
|
Gv2f/21dSEihGzvyXaC+yOwVrtvMamgxTeChnGi8H3gSabmTGyTJT60WsMmVtgUKZ7rqKh6b
|
|
KbV1mIU8m/ZrzGJVrDc8JI+MrDmeaCaqTqZby+NeM5QNZ+FQiHX0dogpO3nvr3EvuipeSGu/
|
|
KKsCfR9UxK0SwowBbfn6/3t7obO1il+eq6fHOB0+SuM6a9CssTOtPXim43VaDusaDJ13d5+3
|
|
Ey/Mxbif5N+RzMgVavkAL5w0Cf4PElqNWA4aGfDxfhUvZ+WUOC+AFGZ/uGHwxdJLaCSx4aEI
|
|
8CDj3trZnPit2umi64JHBb3KYLKey0duz/ztgtS5AQ0EUIeLqgEIALZx/agW3opcodJvUF7K
|
|
4L1H9xnqw+bVBXIFyDvSCfWxLgS2MDTl/q38o62u4Htngwix8RsLEWqrtFfAi90VAxJ57pQZ
|
|
xYZBAyEOoEOOBYJWbNxneHUSCp6+yGQiiyB0kMoCG9JMlcEmv8fwGqqardBR4+ZM2Acf+aLg
|
|
xxi+7B3Ey7Vo/2MnzIu5GeUolDSmyDkUA91WdQByEoUWRVcRvQ+gQz/HGInHxPmqRIKFWSbg
|
|
k1oBpCD7yJV+MfJAFaXvrEXn6jLKdIzWixIzhbVpt5RA+2wLzuTA/V5OGglNKOCWshkkjQBw
|
|
SCOKPnYez/081Quw+1TIY8FuJY/fEv1Z1ZEAEQEAAYkBHwQYAQIACQUCUIeLqgIbDAAKCRBe
|
|
Gr8kDuehJh47B/4myliSn3064a+a77wmvxNphuxKkUPU1gYu0aKF5bmT6nD3iOt3WA8pEcXL
|
|
aVkA++nquTu2K8vGqZT4qBvcxP5W8s7mjVhP0h9N7VpikiAouRjEFYCVTjdwJbn0junCTjm4
|
|
Ixr4fX5L7EgqCrToKbuQhlocwNPy1aJglm2MwDFzOFxK8R8Dx5O7xD/2b0pBdX/KHPqn2ENC
|
|
yiKh/uUuykKpwEXVPPijL6nuA7BBacseXTn8ldAHStrhPEKnZ7mPV9j3VjlRHbYblvLGBBQi
|
|
R6y3yNGqe7NjgJQW4e0ibvsbkG6PyUP4BLVUY6CGQFPt1p7dX4xioErHqdqPkjLzMvpi
|
|
=TUqo
|
|
-----END PGP PUBLIC KEY BLOCK-----
|
|
|
|
--------------------
|
|
ZFS update procedure
|
|
--------------------
|
|
|
|
This is the procedure the ZFS package maintainer should use to update the ZFS
|
|
package versions on the development host. This could be provoked by a new ZFS
|
|
release version or a kernel update.
|
|
|
|
Create a new branch in git (optional)
|
|
=====================================
|
|
|
|
The new git branch should be name for the current version of the ZFS on Linux
|
|
project and the Linux Kernel version it will target.
|
|
|
|
.. code-block:: console
|
|
|
|
$ git checkout -b zfs-0.6.1_3.7.X
|
|
|
|
This branch has 'X' as the last revision number because when a minor point
|
|
release kernel is released, such as 3.7, it can take a while for it to move
|
|
into the [core] repository. The 3.7 kernel can remain in testing for multiple
|
|
revisions.
|
|
|
|
Building the packages
|
|
=====================
|
|
|
|
Building the packages requires that the devtools_ package be installed. This
|
|
section assumes the host system is of x86_64 architecture.
|
|
|
|
update.sh builds i686 and x86_64 packages in a clean chroot environment. This
|
|
method requires 5-10GB of space and some setup time in order to work properly.
|
|
The size is largely determined by the number of chroots you have. On my system
|
|
I have four copies and two root copies, totaling 13GB.
|
|
|
|
Creating the chroot environment
|
|
-------------------------------
|
|
|
|
The steps below outline the creation of the of the chroot root copy that a
|
|
clean chroot is made from using rsync. This root environment is only used as a
|
|
pristine copy, no packages are installed or built inside the root copy.
|
|
|
|
You can adjust the variables used by pbldr when working with chroot
|
|
environments with the config.json configuration file in the project root
|
|
directory, or you can pass them as arguments to the script.
|
|
|
|
32bit chroot environment
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
See `Buldinig 32-bit packages on a 64-bit system`_ for more information. While
|
|
this wiki article can be used as a reference, the pbldr tool expects the
|
|
directory structure defined in the following code block.
|
|
|
|
.. code-block:: console
|
|
|
|
# mkdir -p /opt/chroot/{i686,x86_64}
|
|
# setarch i686 mkarchroot -C "/usr/share/devtools/pacman-extra.conf" \
|
|
-M "/usr/share/devtools/makepkg-i686.conf" /opt/chroot/i686 base base-devel sudo
|
|
|
|
Edit pacman.conf and makepkg.conf and adjust to your desire. Specifically, the
|
|
packager and host fields.
|
|
|
|
.. code-block:: console
|
|
|
|
# vim /opt/chroot/i686/root/etc/makepkg.conf \
|
|
/opt/chroot/i686/root/etc/pacman.conf
|
|
|
|
It is necessary to periodically perform updates to the chroot root copy, to do
|
|
this, you will have to chroot into the root copy and perform the update. This
|
|
same method is used to install new packages in the root copy.
|
|
|
|
.. code-block:: console
|
|
|
|
# linux32 arch-chroot /opt/chroot/i686/root /bin/bash
|
|
# pacman -Syu
|
|
# pacman -S <package>
|
|
# exit
|
|
|
|
64bit chroot environment
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
The procedure for creating the 64bit chroot root environment is nearly
|
|
identical to the commands used to create the 32bit chroot environment.
|
|
|
|
.. code-block:: console
|
|
|
|
# mkarchroot -C "/usr/share/devtools/pacman-multilib.conf" \
|
|
-M "/usr/share/devtools/makepkg-x86_64.conf" /opt/chroot/x86_64 base \
|
|
multilib-devel sudo
|
|
|
|
Edit pacman.conf and makepkg.conf and adjust to your desire. Specifically, the
|
|
packager and host fields.
|
|
|
|
.. code-block:: console
|
|
|
|
# vim /opt/chroot/x86_64/root/etc/makepkg.conf /opt/chroot/x86_64/root/etc/pacman.conf
|
|
|
|
Periodically it is necessary to perform updates to the chroot root copy, to do
|
|
this, you will have to chroot into the root copy and perform the update. This
|
|
is the same method used to install new packages in the root copy.
|
|
|
|
.. code-block:: console
|
|
|
|
# arch-chroot /opt/chroot/x86_64/root /bin/bash
|
|
# pacman -Syu
|
|
# pacman -S <package>
|
|
# exit
|
|
|
|
Build the packages
|
|
------------------
|
|
|
|
The specially made update script will automatically replace the version string
|
|
with the new one and also add the built packages to the repo. To change the
|
|
paths of the script, edit it and update the variables.
|
|
|
|
.. code-block:: console
|
|
|
|
# ./update.sh -k 3.8.8 -p 2 -t core
|
|
|
|
This command will build i686 and x86_64 packages in a clean chroot copy.
|
|
|
|
Once the packages are added to the repo, sync the databases using pacman and
|
|
update or install archzfs.
|
|
|
|
.. code-block:: console
|
|
|
|
# pacman -Sy archzfs
|
|
|
|
Start the ZFS service
|
|
=====================
|
|
|
|
This step is not necessary if you are using ZFS as root.
|
|
|
|
.. code-block:: console
|
|
|
|
# systemctl daemon-reload
|
|
# zpool import -a
|
|
# systemctl start zfs
|
|
|
|
Commit changes to git
|
|
=====================
|
|
|
|
Add PKGBUILD.py and archzfs/ to the index and commit the changes with
|
|
|
|
.. code-block:: console
|
|
|
|
$ git commit -m "Update core to 0.6.1_3.8.8-2"
|
|
|
|
.. note:: "-2" at the end of the ZFS version is the pkgrel.
|
|
|
|
Update the webpage
|
|
==================
|
|
|
|
The webpage is a simple restructured text file. To regenerate it, I use a
|
|
script that also pushes the repository to the website.
|
|
|
|
.. code-block:: console
|
|
|
|
$ ./push_demz_repos -n
|
|
|
|
'-n' is used to verify the files being pushed are correct. Once that is done,
|
|
re-use the command without the dry-run argument.
|
|
|
|
The script can be found here: https://github.com/demizer/binfiles/blob/master/push_demz_repos.sh
|
|
|
|
.. _archzfs-github: https://github.com/demizer/archzfs
|
|
.. _demizerone.com: http://demizerone.com
|
|
.. _0EE7A126: http://pgp.mit.edu:11371/pks/lookup?op=vindex&search=0x5E1ABF240EE7A126
|
|
.. _pacman-key: https://wiki.archlinux.org/index.php/Pacman-key
|
|
.. _pacman.conf: https://www.archlinux.org/pacman/pacman.conf.5.html#_package_and_database_signature_checking
|
|
.. _ZFS on Linux FAQ - 64bit: http://zfsonlinux.org/faq.html#WhyShouldIUseA64BitSystem
|
|
.. _devtools: https://www.archlinux.org/packages/extra/any/devtools
|
|
.. _Buldinig 32-bit packages on a 64-bit system: https://wiki.archlinux.org/index.php/Building_32-bit_packages_on_a_64-bit_system
|
|
|