LFS: Virtual Kernel File Systems
✏️Note: JALANKAN SEMUA PERINTAH DI SINI DENGAN ROOT
Kita akan masuk ke sistem LFS yang kita buat melewati chroot, seolah-olah kita sudah bisa boot ke LFS padahal masih di sistem hots. Tapi agar semua tools dan program di dalam LFS bisa berjalan normal, mereka perlu komunikasi dengan kernel Linux yang sedang berjalan. Masalahnya sistem LFS kita masih belum bisa berkomunikasi langsung dengan kernel. Di sini lah Virtual File Systems masuk
dimulai dengan membuat direktori dimana Virtual File Systems akan di-mount:
mkdir -pv $LFS/{dev,proc,sys,run}
Pada sistem Linux, direktori /dev berisi device nodes yang digunakan untuk berinteraksi dengan perangkat keras,
seperti hard disk atau terminal. Biasanya, kernel Linux secara otomatis membuat dan mengelola device nodes ini
dengan menggunakan sistem file virtual bernama devtmpfs. Ketika kernel mendeteksi perangkat baru, devtmpfs akan
membuat device node yang sesuai di /dev. Namun, pada sistem Linux From Scratch (LFS), karena kita belum memiliki
kernel atau udev (daemon untuk mengelola device nodes di ruang pengguna), kita tidak bisa langsung mengandalkan
devtmpfs untuk mengelola /dev. Jika kernel host tidak mendukung devtmpfs, solusi yang digunakan adalah dengan
melakukan bind mount terhadap direktori /dev dari sistem host ke $LFS/dev. Bind mount ini membuat isi dari /dev
pada sistem host terlihat di dalam direktori $LFS/dev, sehingga aplikasi yang berjalan di dalam chroot environment
pada LFS dapat mengakses device nodes yang diperlukan, meskipun sistem LFS belum sepenuhnya berjalan.
Ini adalah langkah sementara hingga kernel LFS dan udev siap berfungsi secara mandiri.
mount -v --bind /dev $LFS/dev
sekarang mount sisanya
mount -vt devpts devpts -o gid=5,mode=0620 $LFS/dev/pts
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
mount -vt tmpfs tmpfs $LFS/run
Pada beberapa sistem host, /dev/shm adalah sebuah symbolic link yang mengarah ke direktori lain, biasanya /run/shm.
Pada kasus seperti ini, direktori /dev/shm hanya perlu dibuat di dalam lingkungan chroot dengan izin yang tepat,
karena sistem sudah memiliki tmpfs yang terpasang di /run/shm.
Namun, pada sistem host lain, /dev/shm adalah titik mount untuk sistem file tmpfs.
Dalam hal ini, ketika kita melakukan mount /dev di dalam lingkungan chroot, hanya direktori /dev/shm yang akan dibuat,
tetapi tidak akan ada mount tmpfs secara otomatis di direktori tersebut.
Untuk itu, kita perlu secara eksplisit melakukan mount sistem file tmpfs pada /dev/shm dalam lingkungan chroot
agar dapat menggunakan shared memory untuk aplikasi yang membutuhkannya, seperti aplikasi yang
melakukan operasi dengan memori sementara atau shared memory pada sistem Linux.
if [ -h $LFS/dev/shm ]; then
install -v -d -m 1777 $LFS$(realpath /dev/shm)
else
mount -vt tmpfs -o nosuid,nodev tmpfs $LFS/dev/shm
fi