UbuntuやFedoraがbtrfsへのインストールをサポートしてるようですが、敢えてDebian/GNU Linuxを載せてみました。
最近ZFSに感化されているのでsubvolumeを作ってそこにインストールします。
先に結論を書くと、subvolumeをrootにするのはちょっと早すぎたみたいです。
動作はしますが、メンテに手作業 or スクリプト作成が必要。
(2011/02/19追記)
debian-installer 6.0のリリース版ではbtrfsのパーティション作成が可能です。
インストール中、Partmgrが起動した後、下記を実施することで踏み台環境の構築は不要になります。
(以下はdebian-installer 6.0 beta1での話)
debian-installerがbtrfsをサポートしていないので、まず最小構成でUSBメモリなどにインストールします。
起動したら、次の2つをインストールします。
apt-get install btrfs-tools debootstrap
これで準備が出来ました。
Ubuntu 10.10のDesktopCDにdebootstrapが入っているような気がするので、踏み台を作らなくてもUbuntuからDebian環境を作る、という?な手もあります。
fdisk か parted でパーティションを作ります。
/dev/sda1 255MB 83(ext2) /boot *BootFlag ON /dev/sda2 4GB 82(swap) * RAMの2倍くらい /dev/sda3 * 83(btrfs)
パーティションを作ったらフォーマットします。
mkfs.ext2 /dev/sda1 mkswap /dev/sda2 mkfs.btrfs /dev/sda3
btrfsをマウントして、サブボリュームを準備します。
ひとまず、systemとhomeを作成しておきます。
mount /dev/sda3 /mnt btrfs subvolume create /mnt/system btrfs subvolume create /mnt/home
ここで注意点が。ZFSと同じ感覚でサブボリュームを入れ子にすることが一見して出来るのですが、現時点ではやってはいけません。
下記を実行してみるとわかりますが、残念ながらエラーになります。細かくボリュームを分ける場合は面倒ですが入れ子しないように。
mkdir /test btrfs subvolume create /mnt/system/usr mount -t btrfs -o subvolume=system/usr /dev/sda3 /test << Error...
debootstrapを使ってインストールします。debian-installerも同じツールを使っています。
下記を始める前に先のマウントをいったん解除してください。
# インストールするフォルダ環境を作る mkdir /dist mount -t btrfs -o subvol=system /dev/sda3 /dist mkdir /dist/boot mkdir /dist/home mount /dev/sda1 /dist/boot mount -t btrfs -o subvol=home /dev/sda3 /dist/home chmod 755 /dist/home # debootstrapでベース環境を展開する (4つ目の引数でミラーサーバの設定が可能) debootstrap squeeze /dist # procとdevをbindする (chroot作業用) mount -o bind /proc /dist/proc mount -o bind /dev /dist/dev # chrootして作業する chroot /dist /bin/bash # 起動に必要なソフトをインストール apt-get update apt-get install btrfs-tools apt-get install linux-image-2.6-amd64 apt-get install console-setup tzdata # grub2にすると依存関係にあるgrub-pcの設定が失敗する # (grub-probeで/が自動認識できない) apt-get install grub-legacy grub-install /dev/sda update-initramfs update-grub # grub-probeが動いてくれないので手作業でboot用の設定をする cp /usr/share/doc/grub-legacy/example/menu.lst /boot/grub/menu.lst
/boot/grub/menu.lstに下記のようにブート設定する。rootflagsの部分が重要。
root (hd0,0) linux /vmlinuz-2.6.32-5-amd64 root=/dev/sda3 rootflags=subvol=system quiet initrd /initrd.img-2.6.32-5-amd64
/etc/fstab を設定する。 最近は /dev/sda* のようなデバイスの直接指定は好まれないので UUID=XXX にしたい場合は blkid などでUUIDを調べてください。
proc /proc proc defaults 0 0 /dev/sda3 / btrfs defaults,subvol=system 0 1 /dev/sda3 /home btrfs defaults,subvol=home 0 2 /dev/sda1 /boot ext2 noatime 0 3 /dev/sda2 none swap sw 0 0
chrootを抜けて /etc/network/interfaces を設定する。
# chrootを抜けてる exit # 面倒くさいのでホストの設定をコピー cp /etc/network/interfaces /dist/etc/network/interfaces
あとは再起動すれば、立ち上がるはずです。