More Related Content Similar to Introduction to Initramfs - Initramfs-tools and Dracut (20) More from Taisuke Yamada (20) Introduction to Initramfs - Initramfs-tools and Dracut9. 活用1:/etc/initramfs-tools/hook/
$ cat cttyhack
①#!/bin/sh
case "$1" in
prereqs) echo ""; exit 0;; ②
esac
. /usr/share/initramfs-tools/hook-functions
copy_exec /usr/local/bin/cttyhack /usr/bin
copy_exec /usr/bin/setsid /usr/bin
exit 0
③ ④
→initramfs環境でjob control有効化
12. rootaufs(1)
#!/bin/sh
case "$1" in
prereqs) exit 0;;
esac
. /scripts/functions
for p in `cat /proc/cmdline`; do
case "$p" in
*=*) eval $p;;
*) eval $p=1;;
esac 2> /dev/null
done
test -n "$aufs" || exit 0
maybe_break aufs
13. rootaufs(2)
modprobe -q aufs || panic "[AUFS] Failed to..."
mkdir -p /ro /rw /aufs
rw_type=$(IFS=:; set -- $aufs; echo "$1")
rw_opts=$(IFS=:; set -- $aufs; echo "$2")
rw_path=$(IFS=:; set -- $aufs; shift 2; echo "$*")
case "$rw_type" in
nfs)
nfsmount -o ${rw_opts:=rw}
${rw_path:=none} /rw || panic "[AUFS] Failed..."
;;
*)
mount -t $rw_type -o ${rw_opts:=rw}
${rw_path:=none} /rw || panic "[AUFS] Failed ..."
;;
esac
14. rootaufs(3)
## allocate space for xino
mkdir -p /rw/.aufs
mount -t tmpfs xino /rw/.aufs
## unionize /aufs = /ro + /rw
mount --move $rootmnt /ro
mount -t aufs -o dirs=/rw:/ro=ro,
xino=/rw/.aufs/.xino none /aufs || panic "..."
## switch to root-as-aufs
mkdir -p /aufs/ro /aufs/rw
mount --move /ro /aufs/ro
mount --move /rw /aufs/rw
mount --move /aufs $rootmnt
...
19. initramfs-tools vs dracut(2)
=比較=
モジュール度の高さ:dracut > i-t
・i-tはhooks/*とscripts/<stage>/*と分散し
セットで管理しにくい
・dracutはmodules.d/<mod>/*に集中配置で、
関係ファイルの把握が楽
処理の読みやすさ:dracut>i-t
・i-tはupdate-grub連携などDebian的機能も
埋め込まれてるので、見通しが落ちる
・i-tの方が便利だが、単独の独自initramfs
開発ツールとしてはdracut?