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 ( atauMBR
) . 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 satu INT13H
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.