# Одной командой создаем пул называем как угодно,в моем случае arch и монтируем его в /mnt
- Код: выделить все
zpool create -f -o ashift=12 -o cachefile=/tmp/zpool.cache -O normalization=formD -m none -R /mnt/gentoo arch /dev/sda
#Примонтировать пул со всеми файловыми системами после перезагрузки вслучае неудачи.
- Код: выделить все
zpool import -o altroot=/mnt/gentoo -o cachefile=/etc/zfs/zpool.cache -f arch
# Создаем коренную директорию с файловой системой
- Код: выделить все
zfs create -o mountpoint=none arch/ROOT
zfs create -o mountpoint=/ arch/ROOT/gentoo
# Хомяк содаем и монтируем
- Код: выделить все
zfs create -o mountpoint=/home arch/HOME
#Все для portage
- Код: выделить все
zfs create -o mountpoint=none -o setuid=off arch/GENTOO
zfs create -o mountpoint=/usr/portage -o atime=off arch/GENTOO/portage
zfs create -o mountpoint=/usr/portage/distfiles arch/GENTOO/distfiles
#С компрессеей на сборке-зачем раздувать размер
- Код: выделить все
zfs create -o mountpoint=/var/tmp/portage -o compression=lz4 -o sync=disabled arch/GENTOO/build-dir
# Тоже надо
- Код: выделить все
zfs create -o mountpoint=/usr/portage/packages arch/GENTOO/packages
#Нет clang и больших сборок,не обязательно
- Код: выделить все
zfs create -o mountpoint=/var/tmp/ccache -o compression=lz4 arch/GENTOO/ccache
# Корень zfs-bootfs
- Код: выделить все
zpool set bootfs=arch/ROOT/gentoo arch
# Грузим stage3
- Код: выделить все
wget 'ftp://gentoo.osuosl.org/pub/gentoo/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-[0-9]*.tar.bz2'
# Разархивируем в место сборки stage3
- Код: выделить все
tar -xvjpf stage3-amd64-*.tar.bz2 -C /mnt/gentoo
#Создаем кэш и копируем
- Код: выделить все
mkdir -p /mnt/gentoo/etc/zfs
cp /tmp/zpool.cache /mnt/gentoo/etc/zfs/zpool.cache
# Копируем resolv.conf до chroot
- Код: выделить все
cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
# Монтируем систему особым видом
- Код: выделить все
mount -t proc none /mnt/gentoo/proc
mount --rbind /dev /mnt/gentoo/dev
mount --rbind /sys /mnt/gentoo/sys
# Чрутимся
- Код: выделить все
chroot /mnt/gentoo /bin/bash
env-update; source /etc/profile; export PS1="(chroot) $PS1"; cd
# Синхронизируемся
- Код: выделить все
env GENTOO_MIRRORS="http://gentoo.osuosl.org" emerge-webrsync
# Устанавливаем genkernel, я бы взял 9999
- Код: выделить все
emerge sys-kernel/genkernel
# Ядро подойдет любое на сегодняшний день до 3.19.3
- Код: выделить все
emerge sys-kernel/gentoo-sources
# Нужна предварительная сборка ядра для установки модуля zfs
- Код: выделить все
genkernel kernel --no-clean --no-mountboot
# Устанавливаем модуль ZFS(опять же лучше 9999)
- Код: выделить все
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
# Добавляем демон zfs в загрузку(openrc)
- Код: выделить все
rc-update add zfs boot
# Загрузочной записи груба нужен раздел(если сразу не создали)
- Код: выделить все
emerge sys-apps/gptfdisk
sgdisk --new=2:48:2047 --typecode=2:EF02 --change-name=2:"BIOS boot partition" /dev/sda
echo 1 > /proc/sys/vm/drop_caches
# GRUB2
- Код: выделить все
echo "sys-boot/grub:2 libzfs" >> /etc/portage/package.use/grub:2
echo "sys-boot/grub:2 ~amd64" >> /etc/portage/package.accept_keywords
emerge sys-boot/grub:2
touch /etc/mtab
grub2-install /dev/sda
# Genkernel попросит это-сразу дадим
- Код: выделить все
touch /boot/grub/grub.cfg
# Собираем автоматом корень и initramfs(потом переделает каждый индивидуально себе если надо)
- Код: выделить все
genkernel all --no-clean --no-mountboot --zfs --bootloader=grub2 --callback="emerge @module-rebuild"
# Пишем если хотим в /etc/fstab(не обязательно здесь)
- Код: выделить все
sed -i -e "s/\(.*\)\/\(BOOT\|ROOT\|SWAP\)\(.*\)/\#\1\/\2\3/g" /etc/fstab
#Снимок для восстановления после загрузки и установки
- Код: выделить все
zfs snapshot arch/ROOT/gentoo@install
# Позаботимся об ARC cache-ограничим размер использования оперативной памяти,если у вас больше 8 гигов -увеличиваем.
- Код: выделить все
echo options zfs zfs_arc_max=536870912 >> /etc/modprobe.d/zfs.conf
# Для portage настройки
echo PORTAGE_NICENESS=19 >> /etc/make.conf
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 > "${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
# На данном этапе необязательно,всегда можно создать и выкинуть(я не делаю:zram-init)
- Код: выделить все
zfs create -o sync=always -o primarycache=metadata -o secondarycache=none -b 4K -V 8G arch/swap
mkswap -f /dev/zvol/arch/swap
#По желанию
- Код: выделить все
zfs snapshot arch/swap@install
Образ берем здесь http://ftp.osuosl.org/pub/funtoo/distfiles/sysresccd/
Оверлей тут layman -o https://raw.github.com/ryao/zfs-overlay ... verlay.xml -f -a zfs#не особо надо.
------------------------------------------------------------------------------------------
Если есть сильно любопытные мой мэйк:
----/etc/portage/make.conf------
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
- Код: выделить все
# Experimental: Allow testing
ACCEPT_KEYWORDS="amd64"
# Experimental: Parallel GHC
I_DEMAND_MY_CORES_LOADED=yes
# Clang
CC=clang
CXX=clang++
#CFLAGS="-march=core-avx-i -O3"
# GCC
#CFLAGS="-march=native -O2 -pipe"
CFLAGS="-march=k8 -O2 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j3"
# Lots of dependency conflicts
#PYTHON_TARGETS="python2_7 python3_4" # pypy2_0
LDFLAGS="${LDFLAGS} -Wl,-z,now"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="x86_64-pc-linux-gnu"
# Include english language support where possible
LINGUAS="en ru"
USE=" 3dnow 3dnowext
-alsa abi_x86_32
aac amr a52 apng awesome
-aqua aqualung app-foo/bar app-bar/baz
binary bindist
-bluetooth
clang cleartype cmake c++0x cairo
-cups consolekit crypt
dbus -dolphin development
-dso -doc -default-term
-development -dhclient
dhcpcd deluge
-emacs egl
firmware flac ffmpeg
-fbcondecor flaggie
git g3dvl gstreamer -gnome-keyring
gtk gtk3 -gnome -gnome-online-accounts gtkstyle
grilo geany -graphite gudev
-ghcbootstrap -gcrypt -geoloc
highlight hscolour heather
-handbook -hoogle -hpn
icu icq irc
i18n -introspection
jpeg jpeg2k
kmod
-kerberos -kde
lodgeit-default llvm ladspa -libav
-ldap lua libsamplerate librsync-bundled
minizip mmx mp3 mpeg mms -modemmanager
mhash multilib minimal nls
-networkmanager -nautilus
openssl openvg oss opengl
osmesa openrc optimization ogg
perl -pulseaudio pypy2_0 png playlist pcre16
-plasma pcre pango python
ristretto
qt5 qemu
-qt3 -qt4
strong-optimization spell scrobbler
symlink sse sse2 sse3 ssse3 sse4_1
steamruntime spamassassin sdl ssl
-spice -systemd
-subversion -startup-notification
tools threads
truetype traker thunar
udev udisks unicode
-virt-network
-vala vorbis
wavpack wallpapers
-webkit
xft xvmc xa xorg xvid x264 xkb
xinerama X
-yahoo
zfs zlib
zsh-completion"
# Hardware devices
INPUT_DEVICES="keyboard mouse evdev"
#VIDEO_CARDS="nvidia"
#VIDEO_CARDS="radeon radeonsi"
VIDEO_CARDS="nouveau"
OSS_CARDS="cmi878x hdaudio ich imux midiloop midimix userdev"
# Please don't ruin my language settings
CONFIG_PROTECT="${CONFIG_PROTECT} /usr/share/i18n/locales /usr/lib/oss/soundon.user"
# Make emerge sane!
#EMERGE_DEFAULT_OPTS="--ask --ask-enter-invalid --with-bdeps=y --keep-going=y --quiet-unmerge-warn --quiet-build=y --jobs=3 --ignore-built-slot-operator-deps=y"
# Fix niceness
PORTAGE_NICENESS=15
# Store distfiles on faster drive
PORTDIR="/usr/portage"
DISTDIR="/var/cache/distfiles"
# Store elogs for future parsing
PORTAGE_ELOG_SYSTEM="save"
PORTAGE_ELOG_CLASSES="warn error info log qa"
# Source the gentoo overlays
source /var/lib/layman/make.conf
# Add a backup mirror for hackage
# GENTOO_MIRRORS="${GENTOO_MIRRORS} http://hdiff.luite.com/packages/archive"
# Add my local overlay
PORTDIR_OVERLAY="${PORTDIR_OVERLAY} /usr/local/portage/"
# Set PORTDIR for backward compatibility with various tools:
# gentoo-bashcomp - bug #478444
# euse - bug #474574
# euses and ufed - bug #478318
PORTDIR="/usr/portage"
# Incompatible with pypy
FEATURES="-userpriv -userfetch splitdebug compressdebug"
# Enable testing to make sure clang stuff doesn't break horribly
#FEATURES="${FEATURES} test"
# Binary packages
PKGDIR="/usr/portage/packages"
export I_PROMISE_TO_SUPPLY_PATCHES_WITH_BUGS=1
-----------------------------------------------------------------------------------------------------------------------------------------
Если имеется желание выиграть в скорости работы на этой файловой системе хочешь не хочешь прийдётся изучать описание работы и настройки на сайте солярис,
благо русский там имеется,отключать компрессию и если совсем не жалко лишние диски SSD делать L2ARC cache.
Дополнительные файловые системы в в общем никак не помешают работе:
Если посмотреть на /usr/share-размер раздут довольно сожмем его:
zfs create -p arch/GENTOO/share -создаем ф.с
zfs set compession=on arch/GENTOO/share -включаем компреcию
zfs set compession=gzip-9 arch/GENTOO/share -сожмем по полной (по ману 1-9 степень сжатия)
zfs set mountpoint=/mnt arch/GENTOO/share -примонтируем ф.с в /mnt например
ср /usr/share /mnt -скопируем
Проверить что все получилось zfs list и df -h.
Удаляем все из /usr/share.
zfs set mountpoint=/usr/share arch/GENTOO/share -монтируем на место
reboot
Что-нибудь подобное можно сделать и с домашним каталогом не забывая про права -это просто примеры.
/etc/modprobe.d/zfs.conf
- Код: выделить все
options zfs zfs_arc_max=536870912
options zfs zfs_prefetch_disable=1
options zfs zfs_vdev_cache_size=1310720
options zfs zfs_vdev_cache_max=131072
options zfs zfs_vdev_cache_bshift=30
options zfs zfs_read_chunk_size=1310720
options zfs zfs_vdev_async_read_max_active=12
options zfs zfs_vdev_async_read_min_active=12
options zfs zfs_vdev_async_write_max_active=12
options zfs zfs_vdev_async_write_min_active=12
options zfs zfs_vdev_sync_read_max_active=12
options zfs zfs_vdev_sync_read_min_active=12
options zfs zfs_vdev_sync_write_max_active=12
options zfs zfs_vdev_sync_write_min_active=12
#options zfs zfs_vdev_cache_size=53687091
#options zfs zfs_vdev_cache_max=5368709
#options zfs zfs_vdev_cache_bshift=17
#options zfs zfs_read_chunk_size=2380720