研究でファイルシステム aufs を使うので、タイトル通りの環境構築方法をまとめます。
前提
この記事では、Linuxでaufsが入っていないカーネルから、
aufsが入っているカーネルに変えるまでをまとめます。
今回入れるのは、linux kernelのバージョンは5.3、aufs5とします。
linux-kernel-4.xなどのほかのバージョンでもやり方は同じだと思います。
linux-4.19.0もこのやり方で入りました。
本編
aufs は複数のディレクトリを透過的に重ねることができる技術のことで、仮想ファイルシステムを構築する際に利用されます。
かつては docker で利用されていたとか。
aufsに関連するファイルシステムとして、UnionFS があります。
想定環境
- Linux Ubuntu(Server) 18.04 LTS
- Kernel Version 最初はなんでも良い
$ ls /sys/fs | grep "aufs"
などで aufs が入ってないことを確認してください。
入ってたら入れなくてもいいと思うので。
手順
- github でカーネルコードを入手
- カーネルをビルドする
- カーネルを変更する
- aufsを利用する
1. github でカーネルコードを入手
ここから最新のカーネルをゲットします。
でも git clone でコピーすると、 fs の中の aufs が入らない。
なんでなんだろう。分かる人、教えてください。。。頭が弱いのです。
zip 版をダウンロードするとうまくいきました。
2. カーネルをビルドする
ダウンロードした aufs5-linux-aufs5.x-rcN.zip を、/usr/src/ で unzip したとします。
多分解凍後のファイルは aufs5-linux-aufs5.x-rcN でしょう。
ここからは公式のドキュメント準拠です。(多分?)
ユーザー名が admin なら、以下のようにします。
$ cd /usr/src/aufs5-linux-aufs5.x-rcN
$ make /home/admin/build
$ make /home/admin/build/kernel
$ sudo make O=/home/admin/build/kernel menuconfig
File systems --->
Misellaneous filesystems --->
[*] Aufs (Advanced multi layered unification filesystem) support
$ sudo make O=/home/admin/build/kernel
Kernel Configuration で aufs を有効にするのを忘れないでください。
デバッグ機能とかつけたかったら、さらにコンフィグをいじってください。
3. カーネルを変更する
先ほど入れたカーネルと現在のカーネルを交換したいと思います。
以下はカーネルのバージョンを5.3.0に変える手順です。
/boot/grub/grub.cfg の中に、インストールされたカーネルの情報が保管されているので、これを参照します。
$ cat /boot/grub/grub.cfg | grep "menuentry"
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-47aabde8-a5b7-445b-85a2-3166f216acdd' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-47aabde8-a5b7-445b-85a2-3166f216acdd' {
menuentry 'Ubuntu, with Linux 5.3.0-rc2+' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.3.0-rc2+-advanced-47aabde8-a5b7-445b-85a2-3166f216acdd' {
menuentry 'Ubuntu, with Linux 5.3.0-rc2+ (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.3.0-rc2+-recovery-47aabde8-a5b7-445b-85a2-3166f216acdd' {
linuxのバージョンを5.3.0にしたいなら、ここから
gnulinux-5.3.0-rc2+-advanced-47aabde8-a5b7-445b-85a2-3166f216acdd
とかを抜いてきて、これを /etc/default/grub の GRUB_DEFAULT に代入しましょう。
- GRUB_DEFAULT="gnulinux-(Your Linux Kernel Version)"
+ GRUB_DEFAULT="gnulinux-5.3.0-rc2+-advanced-47aabde8-a5b7-445b-85a2-3166f216acdd"
再起動してください。
4. aufsを利用する
$ ls /sys/fs | grep "aufs"
aufs
やったー。あるぞー!
$ ls -l
total 12
drwxrwxr-x 2 oka oka 4096 Aug 14 22:18 aufs
drwxrwxr-x 2 oka oka 4096 Aug 14 22:18 dir01
drwxrwxr-x 2 oka oka 4096 Aug 14 22:18 dir02
$ sudo mount -t aufs -o br:dir01=rw:dir02=rw none aufs
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 7.4G 0 7.4G 0% /dev
tmpfs 1.6G 1.3M 1.6G 1% /run
/dev/sda2 458G 99G 336G 23% /
tmpfs 7.7G 0 7.7G 0% /sys/fs/cgroup
/dev/loop0 89M 89M 0 100% /snap/core/7396
tmpfs 1.6G 0 1.6G 0% /run/user/1000
tmpfs 1.6G 0 1.6G 0% /run/user/1001
none 458G 99G 336G 23% /home/oka/fs/aufs
やったー。使えたー。
まとめ
最新版のカーネルで最新版の aufs を使えるようにしました。
同じ方法で他のバージョンのカーネルや aufs も使えると思います。