Gentoo - ZFS в ядре (SPL и ZFS патчи)Подписка на Комментарии к "Gentoo - ZFS в ядре (SPL и ZFS патчи)"

Аватар zenon

Что это такое и как - в другой раз. FAQ по ZFS on Linux можно почитать тут.
Можно использовать готовые, уже пропатченные sources, например geek-sources, тут только заметка о наложении сабжевого патча на gentoo-sources.

# mkdir /etc/portage/profile/
# echo 'sys-fs/zfs -kernel-builtin' >> /etc/portage/profile/package.use.mask
# echo 'sys-fs/zfs kernel-builtin' >> /etc/portage/package.use
# echo 'sys-kernel/geek-sources zfs' >> /etc/portage/package.use

Устанавливаем (юзы лучше прописать в /etc/portage/package.use):

# USE="zfs spl" emerge --ask --verbose zfs spl
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] sys-fs/zfs-0.6.0_rc14-r1  USE="kernel-builtin rootfs -custom-cflags -static-libs -test-suite" 0 kB
[ebuild  N     ] sys-kernel/spl-0.6.0_rc14-r1  USE="-custom-cflags -debug -debug-log" 0 kB
[ebuild  N     ] sys-fs/zfs-kmod-0.6.0_rc14-r1  USE="rootfs -custom-cflags -debug" 0 kB

Total: 3 packages (3 new), Size of downloads: 0 kB

Would you like to merge these packages? [Yes/No]

Теперь с ядром, сначала make -C /usr/src/linux modules_prepare (если ядро пере-собираем то этот пункт пропускаем):

# make -C /usr/src/linux modules_prepare

Внимание: на момент написания build spl - spl-0.6.0_rc14-r1.ebuild, zfs - так что исправляйте, в соответствии с версией которую ставиту. И конечно, не забываем чтобы симлинк /usr/src/linux соответствовал ядру (eselect kernel list && eselect kernel set).

SPL:

# env EXTRA_ECONF='--enable-linux-builtin' ebuild /usr/portage/sys-kernel/spl/spl-0.6.0_rc14-r1.ebuild clean configure
# cd /var/tmp/portage/sys-kernel/spl-0.6.0_rc14-r1/work/spl-spl-0.6.0-rc14
# ./copy-builtin /usr/src/linux

ZFS:

# env EXTRA_ECONF='--with-spl=/usr/src/linux --enable-linux-builtin' ebuild /usr/portage/sys-fs/zfs/zfs-0.6.0_rc14-r1.ebuild clean configure
# cd /var/tmp/portage/sys-fs/zfs-0.6.0_rc14-r1/work/zfs-zfs-0.6.0-rc14/
# ./copy-builtin /usr/src/linux

Вот собственно и всё, теперь сборка ядра.

В menuconfig проверяем:

When you get up to the kernel, make sure that you disable the CFQ scheduler, and turn on No-op (It's the default one once you disable all schedulers). The reason for this is because ZFS has its own scheduler and the CFQ one conflicts with it. Go to your kernel config, and make sure you have the following: (there should be a /usr/src/linux symlink as well)

ZLIB_INFLATE/DEFLATE must be compiled into the kernel (not as a module).
> ZLIB_INFLATE [=y], ZLIB_DEFLATE [=y]

General setup --->
> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
> () Initramfs source file(s)

[*] Enable loadable module support --->
[*] Module unloading

Device Drivers --->
> Generic Driver Options --->
>> [*] Maintain a devtmpfs filesystem to mount at /dev

Cryptographic API --->
<*> Deflate compression algorithm
<*> Zlib compression algorithm

На счёт выключения CFQ - только если полностью переходим на ZFS, думаю в остальных случаях не имеет смысла.

И последнее в menuconfig SPL и ZFS включаем не модулями:

File systems  --->
   <*> ZFS filesystem support
<*> Solaris Porting Layer (SPL)
Похожие материалы:

Добавить комментарий