Jump to content

LFS: Final Preparation

From Haidhi Wiki

Membuat Direktori untuk sistem LFS

Pada bagian ini, kita mulai mengisi filesystem LFS (Linux From Scratch) dengan komponen-komponen yang akan membentuk sistem Linux final. Pertama-tama kita akan membuat direktori sehingga program-program yang telah di-compile bisa dipasang dilokasi akhirnya. Tujuan lain adalah agar program-program ini tidak tertima dengan versi finalnya.

Membuat Struktur Direktori

 
mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin}
  • mkdir -pv: Perintah ini digunakan untuk membuat direktori, dengan opsi -p untuk membuat direktori beserta subdirektorinya jika belum ada, dan -v untuk menampilkan pesan yang menunjukkan apa yang sedang dibuat.
  • $LFS/{etc,var}: Membuat direktori etc dan var di dalam direktori yang ditentukan oleh variabel $LFS
  • $LFS/usr/{bin,lib,sbin}: Membuat direktori bin, lib, dan sbin di dalam direktori usr, di bawah $LFS

Membuat Symlink

for i in bin lib sbin; do
  ln -sv usr/$i $LFS/$i
done
  • for i in bin lib sbin; do ... done: Ini adalah loop for yang akan mengulang perintah untuk masing-masing item (bin, lib, sbin)
  • ln -sv usr/$i $LFS/$i: Untuk setiap direktori (bin, lib, sbin), perintah ini membuat symlink (link simbolik) dari $LFS/usr/$i ke $LFS/$i. Ini berarti direktori bin, lib, sbin yang ada di dalam direktori usr akan disimbolkan ke direktori yang lebih umum di $LFS. Tujuannya adalah untuk mempermudah pengelolaan file sistem dan memisahkan direktori berdasarkan fungsi mereka.

Membuat Direktori lib64 untuk Arsitektur x86_64

case $(uname -m) in
  x86_64) mkdir -pv $LFS/lib64 ;;
esac
  • uname -m: Perintah ini digunakan untuk mendapatkan arsitektur mesin saat ini. Jika arsitektur sistem adalah x86_64 (yaitu, 64-bit), maka perintah berikut akan dijalankan.
  • mkdir -pv $LFS/lib64: Jika sistem menggunakan arsitektur x86_64, maka direktori lib64 akan dibuat di dalam direktori $LFS. Direktori lib64 digunakan pada sistem 64-bit untuk menyimpan pustaka (library) 64-bit, yang terpisah dari pustaka 32-bit yang disimpan di lib.


Lalu kita akan membuat folder lagi untuk menyimpan program yang dicompile menggunakan cross-compiler

 
mkdir -pv $LFS/tools

Membuat User LFS

Pada sistem Linux, pengguna dengan hak akses root memiliki kemampuan untuk melakukan hampir semua tindakan, termasuk yang dapat merusak atau menghancurkan sistem jika dilakukan dengan keliru. Oleh karena itu, untuk meningkatkan keamanan dan mencegah potensi kesalahan yang tidak sengaja, paket-paket dalam proses instalasi LFS (Linux From Scratch) dibangun oleh pengguna yang tidak memiliki hak akses root, yaitu pengguna dengan hak akses terbatas.

Untuk mempermudah pengaturan lingkungan kerja yang bersih, pada proses instalasi LFS, dibuat pengguna baru yang tidak memiliki hak akses root, yaitu pengguna lfs. Pengguna lfs ini akan menjadi anggota grup yang juga bernama lfs, dan selama proses instalasi, perintah-perintah akan dijalankan sebagai pengguna ini. Hal ini memastikan bahwa jika terjadi kesalahan, dampaknya hanya terbatas pada lingkungan kerja pengguna tersebut, bukan pada sistem secara keseluruhan.

 
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs

# Jika mau menambahkan password
passwd lfs

# Agar user lfs bisa akses $LFS
chown -v lfs $LFS/{usr{,/*},var,etc,tools}
case $(uname -m) in
  x86_64) chown -v lfs $LFS/lib64 ;;
esac

Setup Environtment

Kita ingin menyiapkan working environment yang bersih dan terkontrol untuk user lfs, agar proses build LFS (Linux From Scratch) nantinya tidak terganggu oleh environment variable atau konfigurasi yang ada di sistem host (OS utama).

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
  1. cat > ~/.bash_profile << "EOF"
    • Ini artinya kita membuat atau overwrite file ~/.bash_profile dengan isi yang diketik sampai ketemu baris EOF
    • File .bash_profile ini akan dijalankan otomatis saat login shell aktif (misalnya saat su - lfs)
  2. exec env -i ... /bin/bash
    • exec: Mengganti shell yang sedang berjalan dengan perintah baru. Jadi shell awal akan diganti langsung dengan shell yang kita definisikan setelahnya (tidak menumpuk di atas shell lama).
    • env -i: Menjalankan perintah dengan lingkungan kosong (-i = ignore environment). Ini menghapus semua environment variable yang aktif. Tapi kita tambahkan tiga variable penting secara eksplisit:
      • HOME: supaya direktori home user tetap dikenali.
      • TERM: supaya terminal tetap tahu jenisnya (penting buat tampilan dan kemampuan seperti warna, scroll, dll).
      • PS1: prompt shell yang muncul (misalnya lfs:/home/lfs$), biar tetap enak dilihat.
  3. /bin/bash: shell yang kita jalankan: Bash.

Hasil Akhir

Saat user lfs login (atau su - lfs), file .bash_profile akan jalan dan:

  • Menghapus seluruh environment dari sistem host.
  • Menyiapkan shell Bash baru hanya dengan 3 variabel: HOME, TERM, dan PS1.
  • Shell jadi bersih, gak ada variabel aneh-aneh dari OS host.
  • Work environment jadi konsisten dan aman, terutama saat kompilasi LFS.

Why?

Karena kita sedang membangun sistem Linux dari awal (LFS), kita tidak ingin satupun konfigurasi atau environment dari OS host merusak atau mempengaruhi hasil build kita. Ini seperti memasak di dapur steril — biar hasilnya murni dan bisa diprediksi. Kalau ada environment dari host yang ikut masuk, bisa saja bikin tools build error, hasil kompilasi aneh, atau bahkan sistem tidak bisa boot nanti.