在純ZFS安裝Gentoo Linux-遠(yuǎn)景-Windows7,Windows8,旗艦版,系統(tǒng)下載,主題
關(guān)于ZFS文件系統(tǒng),不多做介紹,在這里有詳細(xì)信息:
http://zh.wikipedia.org/wiki/ZFS 雖然ZFS本身開源,但是由于ZFS的CDDL許可證和Linux的GPL許可證并不兼容,因此ZFS無法進(jìn)入Linux內(nèi)核。盡管如此,并不代表我們就不能在純ZFS的/安裝Linux。本人最近就一直在研究ZFS on Linux,今天才順利安裝啟動,特把教程分享如下。
注意:目前能安裝到ZFS的發(fā)行版不多,只有Ubuntu,Gentoo和Arch等有限的幾種。經(jīng)過我的測試,個(gè)人認(rèn)為Gentoo是最方便安裝到ZFS的,Ubuntu需要進(jìn)行debootstrap,而且由于教程步驟有錯(cuò),導(dǎo)致無法卸載/mnt/dev,步驟無法進(jìn)行下去。本文僅以amd64為例,i386未測試。
本文主體內(nèi)容來自:
https://github.com/ryao/zfs-overlay ,感謝ryao的貢獻(xiàn)。本人主要負(fù)責(zé)資料整理和步驟完善。
安裝介質(zhì)準(zhǔn)備:
推薦使用Gentoo LiveDVD 2012.1,可以寫入U(xiǎn)盤啟動,因?yàn)檫@個(gè)ISO包含了ZFS模塊。
硬盤分區(qū)要求:
GPT分區(qū)表,分出32MB的BIOS boot partition,另外的部分隨便分一個(gè)分區(qū),文件系統(tǒng)隨意,之后給ZFS用。
以我的為例,我的BIOS boot partition在/dev/sdb3,ZFS在/dev/sdb2。
安裝步驟:
啟動Gentoo LiveDVD 2012.1
創(chuàng)建zpool
- zpool create -f -o ashift=12 -o cachefile= -O normalization=formD -m none -R /mnt/gentoo rpool /dev/sdb2
復(fù)制代碼創(chuàng)建rootfs
- zfs create -o mountpoint=none rpool/ROOTzfs create -o mountpoint=/ rpool/ROOT/gentoo
復(fù)制代碼創(chuàng)建home目錄
- zfs create -o mountpoint=/home rpool/HOME
- zfs create -o mountpoint=/root rpool/HOME/root
復(fù)制代碼創(chuàng)建portage目錄
- zfs create -o mountpoint=none rpool/GENTOO
- zfs create -o mountpoint=/usr/portage rpool/GENTOO/portage
- zfs create -o mountpoint=/usr/portage/distfiles rpool/GENTOO/distfiles
復(fù)制代碼建立packages目錄(可選)
- zfs create -o mountpoint=/usr/portage/packages rpool/GENTOO/packages
復(fù)制代碼建立ccache目錄(可選)
- zfs create -o mountpoint=/var/tmp/ccache -o compression=gzip-9 rpool/GENTOO/ccache
復(fù)制代碼下載stage3
- wget ftp://gentoo.osuosl.org/pub/gentoo/releases/amd64/current-stage3/stage3-amd64-*.tar.bz2
復(fù)制代碼解壓stage3
- tar -xf stage3-amd64-*.tar.bz2 -C /mnt/gentoo
復(fù)制代碼把zpool.cache復(fù)制到目標(biāo)ZFS分區(qū)
- mkdir -p /mnt/gentoo/etc/zfs
- cp /etc/zfs/zpool.cache /mnt/gentoo/etc/zfs/zpool.cache
復(fù)制代碼把resolv.conf復(fù)制到目標(biāo)ZFS分區(qū)
- cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
復(fù)制代碼掛載文件系統(tǒng)
- mount -t proc none /mnt/gentoo/proc
- mount --rbind /dev /mnt/gentoo/devmount --rbind /sys /mnt/gentoo/sys
復(fù)制代碼chroot
- chroot /mnt/gentoo /bin/bashenv-update; source /etc/profile; export PS1="(chroot) $PS1"; cd
復(fù)制代碼同步portage
由于Gentoo的stage3相當(dāng)老舊,最好先emerge -avuDN world,把所有包升級一遍,有幾個(gè)軟件沖突也要處理一下。
安裝genkernel(最好在/etc/make.conf設(shè)置ACCEPT_KEYWORDS="~amd64")
- emerge sys-kernel/genkernel
復(fù)制代碼安裝內(nèi)核源代碼
- emerge sys-kernel/gentoo-sources
復(fù)制代碼安裝完內(nèi)核源代碼之后,請到/usr/src/linux按照自己的硬件配置內(nèi)核,推薦把驅(qū)動編入內(nèi)核,而不是編為模塊
初步安裝內(nèi)核(sys-kernel/spl和sys-fs/zfs會檢查內(nèi)核文件)
- genkernel kernel --no-clean --no-mountboot
復(fù)制代碼安裝layman
- emerge app-portage/layman
復(fù)制代碼添加ryao的overlay
- layman -o https://raw.github.com/ryao/zfs-overlay/master/overlay.xml -f -a zfs
復(fù)制代碼安裝ZFS
把ZFS添加到boot運(yùn)行級
把zfs-shutdown添加到shutdown運(yùn)行級
- rc-update add zfs-shutdown shutdown
復(fù)制代碼安裝grub2
- echo "sys-boot/grub libzfs" >> /etc/portage/package.use
- env FEATURES='-sandbox -usersandbox' emerge sys-boot/grub:2
- touch /etc/mtab
- grub2-install /dev/sdbgrub2-mkconfig -o /boot/grub2/grub.cfg
復(fù)制代碼安裝module-rebuild
編譯內(nèi)核和initramfs
- genkernel all --no-clean --no-mountboot --zfs --bootloader=grub2 --callback="module-rebuild rebuild"
復(fù)制代碼之后把/etc/fstab里面的BOOT,ROOT和SWAP行都注釋掉
然后按照Gentoo手冊的8-12章節(jié)做最后的系統(tǒng)配置:
http://www.gentoo.org/doc/en/handbook/ 啟動進(jìn)入新系統(tǒng)之后,可以先做個(gè)快照
- zfs snapshot rpool/ROOT/gentoo@install
復(fù)制代碼由于在ZFS卷組內(nèi)創(chuàng)建swap尚未有良好支持,會帶來一定風(fēng)險(xiǎn),如果對swap有要求,可以創(chuàng)建一個(gè)獨(dú)立的swap分區(qū),在/etc/fstab進(jìn)行配置。
基本系統(tǒng)到此安裝完畢,后續(xù)的軟件和設(shè)置可以自行參照Gentoo的wiki和文檔。
附上安裝完成的靚照: