Bagaimana / etc / fstab diakses sebelum root di-mount?


21

Saya membuat beberapa perubahan /etc/fstabketika pertanyaan ayam dan telur ini muncul - jika /etc/fstabberisi instruksi untuk memasang sistem file, termasuk partisi root, lalu bagaimana cara OS membaca file itu?

Jawaban:


18

Ketika boot loader memanggil kernel, ia melewatinya dengan parameter yang disebut root. Jadi begitu kernel selesai menginisialisasi, ia akan melanjutkan dengan memasang partisi root yang diberikan ke /dan kemudian memanggil /sbin/init(kecuali ini telah ditimpa oleh parameter lain).

Kemudian initproses memulai sisa sistem dengan memuat semua layanan yang didefinisikan untuk dimulai di runlevel default Anda.

Bergantung pada konfigurasi Anda dan sistem init yang Anda gunakan, mungkin ada beberapa langkah lain di antara yang saya sebutkan. Saat ini sistem init yang paling populer di Linux adalah SysVInit (yang tradisional), Upstart dan Systemd. Anda dapat menemukan rincian lebih lanjut tentang proses boot di artikel wikipedia ini .

Ini adalah contoh sederhana dari konfigurasi Grub saya. Bagian penting untuk menjawab pertanyaan Anda adalah pada baris kedua hingga terakhir, ada root=/dev/sda3:

menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-40864544-2d0f-471a-ab67-edd7e4754dae' {
    set root='hd0,msdos1'
    echo    'Loading Linux 3.12.6-gentoo-c2 ...'
    linux   /kernel-3.12.6-gentoo-c2 root=/dev/sda3 ro  
}

Dalam banyak konfigurasi kernel mount /dalam mode read-only dan semua opsi lainnya diatur ke default. Di /etc/fstabAnda dapat menentukan parameter sistem file yang kemudian akan diterapkan setelah init remount.


2
Partisi root awalnya dipasang hanya-baca oleh kernel. Suatu initproses kemudian /etc/fstabme-mount hal-hal sesuai dengan parameter di sana, yang biasanya berarti memasang kembali partisi root read-write.
goldilocks

1
Kernel juga dapat dikompilasi dengan rutin hardcoded yang mencari beberapa file khusus pada partisi aktif yang belum di-mount. FreeBSD loader berfungsi seperti itu.
Kondybas

@Kondybas LILO di Linux juga hardcoded untuk memuat kernel di beberapa nomor blok tetap
phuclv

3

fstabDiperlukan sebuah entri , jika Anda ingin menentukan beberapa opsi pemasangan yang tidak standar. Namun, saat ini dengan systemd, perangkat kernel dan fstype fstabyang benar tidak perlu. Anda dapat mengganti entri root dengan sesuatu seperti:

#UUID=8f74237d-b689-4beb-9d1f-f60b426c9969 /            ext4        rw,relatime,data=ordered    0 1
dummy /             auto        rw,relatime,data=ordered,debug  0 1

dan opsi mount masih dihormati oleh systemd.

Anda dapat menggunakan nama perangkat yang salah, misalnya /dev/sdz1, kecuali untuk UUID yang buruk. Dengan UUID yang buruk, pesan akan dicetak saat boot:, Failed to start Remount Root and Kernel File Systemstetapi sistem tetap melakukan booting.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.