Saya membaca teks yang relatif lama tentang partisi Linux dan sistem file ( LPIC 1 Certification Bible ). Ia mengatakan:
Beberapa versi bootloader Linux tidak dapat mengakses kernel yang berada di luar 1024 silinder pertama pada disk. Dengan meletakkan partisi / boot di awal drive Anda dapat dipastikan tidak memiliki masalah saat mengakses kernel saat boot. Masalah ini menunjukkan dirinya paling sering dalam kasus dual boot Linux bersama dengan sistem operasi lain yang ada di partisi pertama.
Mengapa boot loader tidak memiliki " akses ke kernel di luar 1024 silinder pertama pada disk "?
Juga, apa artinya " menempatkan partisi / boot di awal drive "?
partition
boot-loader
fhs
SRYZDN
sumber
sumber
/boot
partisi secara eksplisit diberlakukan berada di daerah itu untuk memastikan bahwa kernel akan loadable.Jawaban:
Ini adalah batasan yang diberlakukan karena memiliki BIOS dan bootloader yang sangat lama daripada Linux itu sendiri. BIOS hanya dapat mengakses 1024 silinder pertama dari disk (lihat di sini untuk informasi lebih lanjut tentang apa itu silinder / kepala / sektor). Batasan ini akan meluas ke bootloader yang, karena sifatnya yang sederhana, tidak akan memiliki driver disk sendiri dan akan menggunakan layanan BIOS untuk mengakses disk.
Ini berarti bahwa bootloader dan kernel (karena itu adalah tugas bootloader untuk memuatnya) harus berada dalam 1024 silinder pertama pada sistem dengan batasan ini. Cara sederhana untuk melakukan ini adalah membuat
/boot
partisi terpisah yang berisi kernel dan meletakkannya di awal drive (biasanya hanya dengan menjadikannya partisi pertama). Ini berarti bahwa secara fisik akan berada dalam 1024 silinder pertama, asalkan tentu saja partisi itu tidak terlalu besar.Batasan ini tidak lagi menjadi masalah karena hanya berlaku untuk BIOS lama. Selain itu, banyak bootloader modern (mis. GRUB) memiliki driver disk sendiri sehingga tidak perlu bergantung pada layanan BIOS. Bootloader modern dapat digunakan
/boot
untuk tujuan lain, tetapi tidak lagi diperlukan untuk berada di partisi terpisah dan dalam 1024 silinder pertama (walaupun ada banyak kasus di mana perlu ada/boot
di partisi terpisah).sumber
/boot
. Itu sangat sering tidak benar - terutama karena LVM dan sistem file modern yang mewah dengan fungsionalitas block-layer yang dibangun di root./boot
dalam pengertian konvensional./boot
secara tradisional didedikasikan untuk bootloader - tetapi sebagian besar komputer yang diproduksi dalam beberapa tahun terakhir datang dengan bootloader yang dibangun untuk firmware - meskipun, untuk alasan apa pun, praktik umum masih menginstal bootloader anakronik sepertigrub
dan teman-teman ke dan memotong fungsinya dalam mendukung komplikasi, kurasa. Bootloader firmware memang membutuhkan partisi khusus - tetapi biasanya tidak ada hubungannya/boot
./boot
adalah murni konfigurasi khusus.Sejarah
/boot
berisi file yang tidak digunakan oleh sistem operasi, tetapi oleh bootloader -nya . Anda akan menemukan kedua file dari bootloader itu sendiri (seperti/boot/grub/*
untuk Grub) dan kernel Linux (/boot/vmlinuz*
) dan seringkali initrd atau initramfs yang terkait .Pada PC dengan BIOS lama (berbeda dengan UEFI yang lebih baru yang ditemukan pada kebanyakan komputer terkini), perangkat lunak dalam ROM memuat 512 byte pertama disk boot ke dalam memori ( sektor boot ). Dengan hanya 512 byte (tidak semuanya bahkan berisi kode: beberapa darinya berisi data seperti tabel partisi), kode tidak dapat berbuat banyak - tidak mungkin ada pengandar disk nyata di sana. Semua yang dapat dilakukan dalam ruang terbatas tersebut adalah dengan menggunakan antarmuka BIOS untuk memuat lebih banyak kode. Antarmuka ini menyediakan perintah untuk memuat sektor ke-N pada disk - dan ukuran N terbatas, sehingga hanya awal disk yang dapat dijangkau dengan cara itu.
Antarmuka BIOS telah berevolusi sedikit dalam tiga dekade atau lebih sehingga sudah ada, tetapi batasan ukurannya telah berjuang untuk mengikuti ukuran disk, menyebabkan BIOS dan bootloader yang lebih tua bekerja pada 32MB, 512MB, 2GB, 8GB (dan mungkin ambang batas lain yang saya tidak ingat). Bootloader harus dapat menggunakan antarmuka BIOS untuk memuat semua bagian yang diperlukan untuk mengakses disk drive secara langsung. Bootloader umumnya tidak mengandung driver untuk semua pengontrol disk, jadi semuanya untuk memuat kernel Linux (dan initrd / initramfs) harus menggunakan antarmuka BIOS dan dengan demikian harus sesuai pada awal disk.
Perhatikan bahwa ini adalah batasan BIOS atau bootloader, bukan Linux itu sendiri atau distribusi.
Pisahkan
/boot
hari iniPada sistem dengan BIOS baru-baru ini dan bootloader baru-baru ini, atau dengan UEFI, batasan ukuran tidak lagi relevan: ukuran disk sekarang memiliki waktu yang lama untuk mengejar ketinggalan. Namun, ada kasus penggunaan lain yang membuat
/boot
partisi terpisah bermanfaat. Itu memungkinkan sistem utama berada pada perangkat RAID yang tidak didukung oleh bootloader, atau pada tipe sistem file yang tidak didukung bootloader. Hal ini memungkinkan sistem utama berada pada perangkat yang dienkripsi, yang dapat didekripsi Linux tetapi tidak pada bootloader.Jika tidak ada pembatasan dan penggunaan kasus ini berlaku untuk Anda, menjaga
/boot
sebagai partisi terpisah tidak berguna. Tetapi mereka mempengaruhi cukup banyak orang sehingga sebagian besar distribusi mendukungnya.sumber
Alasan lain di samping masalah BIOS yang disebutkan adalah bahwa
/boot
partisi yang terpisah memungkinkan penggunaan sistem file untuk/
volume yang tidak dimengerti boot loader (tanpa dibatasi untuk memblokir pemuatan daftar seperti denganlilo
).sumber
PEMESANAN ADALAH KERAS
Booting ... yah ... itu benar-benar bagian tersulit. Setiap kali komputer melakukan booting, komputer itu pada dasarnya akan bertemu dengan dirinya sendiri. Ia mengenal dirinya sendiri dengan berbagai bagiannya, dan untuk setiap bagian itu memenuhi kemampuannya. Tapi itu harus menarik dirinya dengan bootstraps sendiri, sehingga untuk berbicara, dari kotak satu setiap kali.
Saat mendesain proses boot, triknya adalah membawa mesin secara bertahap. Boot Anda harus cepat dan dapat diandalkan, dan itu harus merupakan dua hal di lingkungan yang sama sekali tidak dikenal setiap saat . Saya bahkan tidak akan berani dalam percakapan mode Nyata / Terlindungi (yang tidak berarti bahwa saya bahkan bisa) , tetapi ada banyak hal yang terjadi saat boot. Ketika komputer mengasimilasi berbagai komponennya setiap kali ia melakukannya dalam langkah-langkah bertahap. Mungkin yang paling penting dari ini adalah perpindahan dari mengeksekusi kode on-board ke mengeksekusi kode on-disk, atau, dengan kata lain - kernel exec. Ini terjadi ketika firmware (seolah-olah) menyerah pada sistem operasi.
Bertahun-tahun yang lalu, ini bukan masalahnya. Dulu BIOS benar-benar Basic In / Out - program reguler akan membuat panggilan ke firmware untuk hal-hal seperti menggambar layar dan mengakses disk. Ini disebut interupsi - topi lama mungkin mengingatnya paling baik untuk kesenangan yang sering mereka temukan dalam menetapkan IRQ untuk dot-matrix atau USR baru.
INT13H
Ini adalah rangkaian fungsi 13H interupsi ( atau
INT
dalam bahasa perakitan ) yang ditawarkan BIOS sebagai layanan untuk akses disk. Ini bahkan masih digunakan hari ini untuk sistem BIOS dalam proses boot untuk melakukan lompatan dari firmware ke disk.Sistem BIOS akan memeriksa beberapa byte pertama dari setiap disk yang ditemukan dan mencari pola yang dikenali sebagai Master Boot Record ( atau
MBR
) . Ini adalah standar de-facto yang sudah berusia puluhan tahun dan menyertakan sedikit biner yang dapat dieksekusi yang ditulis ke kepala disk. MBR menandai disk BIOS sebagai bootable. Ini akan berhenti memeriksa ketika menemukan satu, dan praktis satu yang Anda dapatkan tanpa tipuan pintar. Ketika menemukan satu itu memetakannya ke memori dan menjalankannya (dalam mode Real, tapi aku masih tidak pergi ke sana) .MBR yang dieksekusi hampir pasti bukan kernel sistem Anda - 512 byte (memberi atau menerima) akan sangat tidak berguna di departemen itu. Ini mungkin bootloader - program yang dirancang khusus untuk mengatasi salah satu dari banyak batasan pengalamatan BIOS - khususnya yang tidak memahami sistem file apa pun.
Ketika bootloader membaca di kernel yang sebenarnya dan mengeksekusi itu dalam memori (seperti yang kita semua berdoa itu akan setiap kali) , mungkin akan melakukannya dengan meminta BIOS melalui
INT13H
panggilan interupsi. Dan jika tidak - banyak bootloader yang lebih bagus akan me-mount sistem file dalam arti konvensional dan mengeksekusi kode dengan cara lain - maka sangat kecil kemungkinan bootloader menjadi begitu mewah tanpa satuINT13H
atau dua. Seringkali bootloader harus mem-chainload sendiri - atau berbagai tahap dari dirinya sendiri - karena 512 byte yang dialokasikan pertama kali tidak sesuai dengan kebutuhan mereka.AYAM DAN TELUR
Semua ini adalah cara bundaran membahas disk, saya tahu, tetapi pada titik ini seharusnya sudah sangat jelas bahwa masalah utama - orang mungkin menyebutnya jenis ayam dan telur - mengakses disk yang berisi instruksi program tentang cara mengakses disk . Kunci untuk masalah ini adalah firmware - dan terus berada dalam cara yang sangat berbeda bahkan pada sistem EFI - dan, terlemah atau tidak, firmware adalah tautan terpenting dalam rantai boot.
Anda tahu, begitu kernel dijalankan, dan semua rutinitasnya yang banyak untuk mengakses dan mengendalikan perangkat keras dimulai, semua masalah ini agak hilang (atau, paling tidak, berubah sedikit) , karena OS modern mengambil kendali penuh dari suatu sistem, tetapi sampai mereka melakukan batas sistem hanya memperpanjang sejauh firmware akan memungkinkan. Ini dikatakan banyak - BIOS tidak banyak berubah sejak 8086.
INT13H
Panggilannya adalah asli 8086. Ya, sudah ada (banyak sekali) ekstensi, dan retasan tentu saja, tetapi inovasi ...?LEBIH BAIK DAN LEBIH BAIK LAGI
Sebagian besar perubahan pada BIOS hanyalah perban belaka. Dulu hard disk harus dipetakan secara fisik - berbagai aspek spesifik dan geometrinya dirujuk ketika data disimpan atau diambil darinya. Akhirnya hard disk konvensional tumbuh menjadi ukuran yang melarang ini. Bahkan hanya peta abstrak yang terlalu banyak informasi untuk ditangani oleh BIOS. Karena hanya dapat beroperasi dalam Mode Nyata, BIOS dibatasi hingga 1 MB per register memori. Membengkak peta silinder lebih besar dari itu, atau membuat salah satu propertinya lebih besar dari yang dapat diatasi dalam banyak bit, dan BIOS benar-benar hilang - keluar batas.
Penghalang ini telah bertemu dan rusak berkali- kali. Setiap kali peta diabstraksikan dan disandikan dengan cara yang lebih baru, pintar, dan kurang akurat. Dan akhir-akhir ini sangat tidak mungkin bagi BIOS untuk memetakan drive secara akurat. Mengatasi Blok Logis adalah standar de-facto sekarang, meskipun beberapa terjemahan Cylinder / Kepala / Sektor (atau CHS) masih diperlukan. Apa yang hilang dari firmware mainboard dalam keakuratan / tanggung jawab, ekstensi tersebut telah diabstraksikan dan ditambahkan ke tanggung jawab firmware disk untuk mengisi kesenjangan.
Ini adalah permainan kucing dan tikus yang dirujuk dalam pertanyaan Anda. Ketika BIOS gagal memahami disk di luar titik tertentu karena ukurannya yang tipis, maka data apa pun yang Anda inginkan untuk diambil saat boot - seperti bootloader atau kernel - mungkin lebih baik tidak ditemukan di luar titik itu. Dari sinilah
/boot
asal.MUNGKIN LEBIH BAIK SEBENARNYA
Akhir-akhir ini hal-hal seperti itu, untungnya, tidak relevan dengan kematian BIOS. Sudah 30 tahun mendatang, tetapi sebagian besar telah diganti dalam beberapa tahun terakhir dengan standar UEFI (atau EFI 2.0) . UEFI menyediakan mount sejak menit pertama, menginisialisasi dalam Mode Terlindungi, menggabungkan bootloadernya sendiri, menyediakan penyimpanan variabel memori-flash yang persisten, khusus untuk menangani beberapa zetabytes atau apa pun per disk ... dan banyak lagi lain. Ini jauh dari sempurna, tetapi merupakan peningkatan besar dari pendahulunya.
Bahkan argumen untuk bootloader khusus yang melibatkan disk-enkripsi atau sistem file berlapis gagal ketika Anda menganggap bahwa semua ini harus ditangani oleh kernel OS, dan jika Anda diberikan mount pada saat boot, Anda selalu mendapatkan kejelasan- ditembak untuk mengeksekusinya (terutama mengingat bahwa kernel Linux, dalam konfigurasi default, adalah EFI-executable sendiri) .
Jadi,
/boot
partisi yang terpisah mungkin tidak terlalu mengkhawatirkan Anda, dan jika Anda menggunakan sistem EFI, berarti Anda mungkin sudah memiliki analog di partisi sistem EFI, karena itu adalah persyaratan untuk mem-boot mode EFI.sumber
Bahwa ada
/boot
direktori ditentukan secara historis dan dari sana "diperbaiki" dalam Filesystem Hierarchy Standard . Memiliki standar seperti itu memungkinkan program (dan sysadmin) untuk mengharapkan file tertentu di lokasi tertentu. Dalam hal ini file terkait dengan proses booting.Memiliki
/boot
partisi di awal disk masuk akal untuk BIOS yang lebih lama yang tidak dapat mengindeks blok / sektor dalam jangkauan penuh dari drive yang tersedia. Karena itu, informasi yang harus dimuat harus berada di sektor yang dapat diindeks, karenanya partisi terpisah (dengan angka sektor rendah)/boot
yang darinya BIOS dapat memuat data / program tambahan (yang pada gilirannya mampu menangani keseluruhan rentang disk tanpa menggunakan BIOS).sumber
Dapat juga sangat tertib untuk memiliki partisi / boot terpisah. Di komputer saya, saya memiliki banyak distro dan cadangan, masing-masing di partisi mereka sendiri, tetapi mereka semua berbagi partisi / boot yang sama, yang merupakan tempat semua kernel untuk semua OS berada. Juga, semua distro menunjuk ke satu-satunya salinan lilo.conf yang juga ada di / boot, jadi saya tidak perlu menebak apa yang terjadi ketika saya menambahkan kernel, menambahkan distro, apa pun. Ini snip dari lilo.conf saya:
... itu hanya cadangan Debian saya di dua disk. Lihat betapa mudahnya melacak kernel? (sekarang, semua cadangan menggunakan kernel yang sama).
sumber
Meskipun pada sistem modern, sektor file dapat diakses di mana saja pada disk, masih masuk akal untuk membatasi bahan boot ke partisi boot mereka sendiri, hanya dari prinsip "jangan menaruh semua telur dalam satu keranjang".
Misalkan sistem file utama rusak sedemikian rupa sehingga beberapa bootloader tingkat rendah tidak dapat membaca tahap selanjutnya dengan benar. Jika bahan bootloader ada di partisi mereka sendiri, maka kernel dapat muncul dan menangani dengan benar partisi root yang rusak melalui fsck. Itu sendiri bisa di partisi sendiri.
Partisi boot dapat memberi Anda opsi untuk "penyelamatan", seperti memasang partisi root alternatif. Juga, bagaimana jika Anda melakukan multi-boot sistem operasi yang berbeda di partisi yang berbeda? Maka bahan-bahan boot bukan milik salah satu dari sistem itu. Masuk akal untuk memiliki partisi sendiri. Anda dapat mengganti partisi OS dengan OS yang berbeda, namun dapat mem-boot OS yang tersisa.
Juga, bagaimana jika Anda ingin menggunakan sistem file untuk partisi utama Anda yang tidak dimengerti oleh bootloader sama sekali? Atau, katakanlah, untuk mana dukungan sisi boot-loader hanya bersifat eksperimental? Dalam situasi seperti itu, file boot-time masih dapat digunakan jika ada peta sektor (dan boot loader mendukung hal seperti itu: boot loader Linux tua yang baik LILO menggunakan peta sektor, dan karenanya tidak harus memahami sistem file struktur sama sekali). Namun peta sektor secara inheren terkelupas. Jika sistem file direorganisasi, sektor bergerak, dan sektor peta menjadi salah dan harus dibuat ulang, atau sistem tidak dapat reboot.
Terakhir, ada prinsip organisasi bahwa bahkan jika Anda tidak memiliki partisi yang sebenarnya, itu masih merupakan ide bagus bahwa semua barang boot setidaknya di bawah
/boot
, dan tidak tersebar di tempat lain.sumber
Ini bukan batasan distribusi Linux, tetapi itu adalah batasan dari BIOS yang lebih lama. Kembali pada masa itu, untuk memastikan Linux bisa boot, semua file yang terkait dengan boot ditempatkan di partisi mereka sendiri yang menjadikan partisi pertama pada hard drive untuk memastikan boot loader masuk dalam 1024 silinder pertama. Buat partisi yang lebih kecil dari ukuran apa pun yang ditemukan di 1024 silinder (bervariasi dari hard drive ke hard drive). Tetapi jika Anda membuat partisi pertama yang lebih besar dari batas ini, ada kemungkinan file boot loader akan berlokasi di luar 1024 silinder, dan BIOS tidak akan dapat memuatnya.
Anda juga dapat mencapai efek yang sama dengan membuat dua partisi kecil, yang keduanya berada di dalam 1024 silinder pertama, dan meletakkan semua file boot loader pada yang kedua.
sumber
Alasan lain untuk bootpartition hari ini adalah:
sumber