Memulai server adalah urutan tindakan yang panjang dan kompleks, tergantung pada komponen perangkat keras, pengaturan, dan perangkat lunak yang digunakan. Banyak, bahkan administrator sistem yang berpengalaman dan berkualifikasi, memiliki gagasan yang buruk tentang apa yang sebenarnya terjadi ketika server mulai, jadi kami memutuskan untuk menganalisis proses ini secara terperinci.
Agar tidak membongkar semua kemungkinan kasus, kami akan mempertimbangkan memuat dalam kondisi berikut:
- Prosesor Intel 64-bit;
- Mode boot lama
- MBR mempartisi disk;
- boot loader GRUB2.
Bangun dan bernyanyi
Aktivasi server dimulai dengan berbagai cara, di antaranya menekan tombol
Power On adalah yang paling umum, tetapi bukan satu-satunya. Pilihan lain adalah melalui perintah melalui jaringan (
Wake-on-LAN ) atau melalui perintah dari perangkat eksternal (
Wake-on-PCIe ,
Wake-on-Keyboard ,
Wake-on-Mouse ). Perintah dijalankan hanya jika parameter yang sesuai diaktifkan di
BIOS Setup Utility , yang akan kita bicarakan nanti.
Perangkat terpisah adalah modul BMC, yang menyediakan kemampuan manajemen server tingkat lanjut. Baca lebih lanjut tentang teknologi ini
di blog kami .
Metode sebelumnya cerdas dan membutuhkan pengiriman perintah yang dibentuk khusus pada bus data. Cara yang lebih sederhana: nyalakan ketika listrik disuplai ke power supply. Dalam pengaturan BIOS, parameter ini disebut
AC Power Loss dan mengambil salah satu dari tiga status:
- Matikan - server akan tetap mati.
- Power On - server akan menyala.
- Status Terakhir - server hanya akan hidup jika dihidupkan pada saat listrik mati.
Dengan menggunakan metode ini, Anda dapat mengirim sinyal
Reset ke prosesor dan memulai prosedur start.
Unduh program pertama
Langkah pertama dalam memulai server adalah menyalakan catu daya dan mengatur sinyal
Reset untuk prosesor. Jika ada sinyal
Reset , generator frekuensi prosesor tidak berfungsi, dan register prosesor diatur ulang ke nilai yang ditetapkan oleh pabrik prosesor.
Ketika mulai dalam catu daya, transien terjadi, karena tegangan output mungkin di luar batas yang diizinkan, yang akan berdampak negatif pada prosesor yang bekerja. Oleh karena itu, sinyal
Atur Ulang tidak dihapus sampai daya masuk sepenuhnya stabil.
Setelah menstabilkan tegangan, catu daya menetapkan sinyal
Power Good . Sinyal ini berarti bahwa motherboard dapat memulai semua komponen server. Selanjutnya, chipset memetakan ke ruang alamat semua perangkat yang terhubung, termasuk ROM (memori hanya baca) dengan kode
Basic Input / Output System (BIOS). Selanjutnya, sinyal
Reset dihapus dan generator frekuensi prosesor dimulai.
BIOS - sistem yang menyediakan API untuk bekerja dengan peralatan dan perangkat yang terhubung. Salah satu tujuan penting dari BIOS adalah menginisialisasi dan menguji perangkat keras saat startup.
Terlepas dari jumlah prosesor dalam sistem, ketika server dimulai, hanya satu inti dari satu prosesor yang bangun, dan inti yang tersisa tetap dalam mode tidur. Inti terbangun dilambangkan oleh
Bootstrap Processor (BSP, selanjutnya disebut sebagai prosesor). Setelah sinyal
Reset menghilang, register prosesor diisi sedemikian rupa sehingga prosesor beroperasi dalam mode 32-bit khusus yang disebut
Mode Proses Awal .
Mode Prosesor Awal - mode operasi yang digunakan prosesor 64-bit hanya setelah reset. Dalam mode ini, prosesor mampu menjalankan instruksi 32-bit, dan ruang alamat 4 GiB.
Setelah sinyal
Reset menghilang, penghitung perintah prosesor menunjuk ke alamat
0xFFFFFFF0 , yang disebut
Reset Vector . Di alamat ini terletak perintah pertama yang diterjemahkan dan dieksekusi prosesor.
Menempatkan instruksi pertama di akhir ruang alamat memiliki justifikasi historis. Saat mengembangkan prosesor Intel 8086, pada awal ruang alamat adalah vektor interupsi, diikuti oleh RAM, yang jumlahnya bisa berapa saja. Untuk menghindari persimpangan dengan RAM, alamat perintah pertama diambil di akhir ruang alamat.
Kemudian, dengan munculnya Intel 80286, vektor interupsi dapat dipindahkan ke mana saja. Namun, bahkan prosesor modern berjalan dalam mode kompatibilitas dengan 8086 dan vektor interupsi pada 0x0.
Saat mengakses alamat
0xFFFFFFF0, prosesor menerima perintah pertama dari ROM. Dalam mode Legacy, perintah ini adalah
lompat jauh atau
Jauh ke segmen memori dengan kode BIOS. Setelah menyelesaikan lompatan panjang pertama, prosesor memasuki
Mode Real 16-bit dan mulai menjalankan kode BIOS.
Real Mode - mode kompatibilitas dengan prosesor 16-bit yang ketinggalan jaman. Dalam mode ini, hanya 16-bit perintah yang tersedia, dan ruang alamat, yang disebut "memori lebih rendah", hanya berisi 1 MiB.
Seperti disebutkan sebelumnya, kode yang dapat dijalankan BIOS disimpan pada perangkat eksternal, yang operasinya tidak terlalu cepat, sehingga hal pertama yang dilakukan BIOS adalah menginisialisasi RAM dan menyalin kode sendiri dari ROM ke dalamnya. BIOS mempertahankan kompatibilitas dengan prosesor yang sudah usang, karena itu, ia melakukan semua tindakan dalam mode 16-bit.
Power On Self-Test
Power On Self-Test (POST) adalah langkah kunci dalam BIOS. POST disingkat dan lengkap. POST lengkap memeriksa semua pengontrol yang tersedia dan menguji semua RAM yang tersedia, yang dapat memakan waktu.
POST yang disingkat mempercepat proses boot dan mencakup serangkaian tindakan minimum yang diperlukan:
- memeriksa integritas program BIOS dalam ROM menggunakan mekanisme verifikasi checksum;
- deteksi dan inisialisasi pengendali utama, bus sistem dan perangkat yang terhubung;
- menentukan ukuran RAM dan menguji segmen pertama (64 kilobyte);
- transfer kendali ke bootloader.
Ketika melewati POST, server menggunakan beberapa cara untuk mencerminkan informasi tentang jalannya tes. Cara paling umum:
- menampilkan pengidentifikasi tes, kode POST di layar, atau menggunakan indikator tujuh segmen pada motherboard;
- indikasi suara;
- alarm ringan dengan kombinasi LED.
Cara paling informatif untuk mendapatkan informasi tentang kemungkinan kerusakan adalah dengan menampilkan kode POST saat ini. Setelah berhasil menyelesaikan tes, kode dengan cepat saling menggantikan, tetapi jika terjadi kegagalan fungsi, POST berhenti dan Anda dapat melihat pengidentifikasi dari tes yang gagal. Pabrikan Motherboard selalu melampirkan decoding, yang berarti kode tertentu.
Pada motherboard modern ada indikasi LED yang memungkinkan Anda mengidentifikasi komponen yang salah. Jika server mulai berhasil, Anda dapat mendengar bunyi bip yang menunjukkan bahwa POST berhasil. Dengan durasi dan jumlah sinyal suara, juga dimungkinkan untuk menentukan komponen yang gagal.
Dalam beberapa kasus, ketika akurasi maksimum diperlukan untuk diagnostik, Anda dapat menggunakan perangkat eksternal yang disebut kartu POST. Motherboard mengirim informasi tentang tes POST pada bus data, dan kartu POST memproses informasi ini dan menampilkannya menggunakan indikator yang tersedia.
Utilitas Pengaturan BIOS
BIOS memiliki menu pengaturan khusus yang disebut
BIOS Setup Utility . Anda dapat memasukkannya dengan menekan tombol khusus saat melewati POST. Paling sering, tombol untuk memasuki BIOS adalah
Del dan
F2 , namun saat memuat, selalu ditunjukkan kunci mana yang akan membuka pengaturan BIOS.
BIOS Setup Utility menyediakan antarmuka untuk konfigurasi, yang hanya membutuhkan keyboard untuk berkomunikasi. BIOS Setup Utility memberikan informasi tentang perangkat keras yang diinstal dan memungkinkan Anda untuk mengubah parameter pengoperasian motherboard dan peralatan yang terhubung.
Kemungkinan nama dan opsi parameter ini atau itu bergantung pada banyak faktor, di antaranya:
- Versi BIOS
- model motherboard;
- model peralatan yang dipasang di motherboard.
Di antara parameter kami tertarik pada
Prioritas Boot . Prioritas boot menentukan urutan di mana perangkat polling BIOS menemukan area bootnya. Segera setelah BIOS menemukan area boot, kontrol ditransfer ke bootloader dan langkah selanjutnya dimulai.
Pemuat OS
Setelah melewati POST, BIOS mencari area booting, menyurvei perangkat dalam urutan yang ditentukan. Dalam mode
Legacy , area boot pada disk disebut
Master Boot Record (MBR). MBR adalah struktur khusus yang terletak di 512 byte pertama disk. 512 byte ini berisi data berikut:
- kode tahap pertama bootloader - dari 0 hingga 445 byte;
- tabel partisi - dari 446 hingga 509 byte;
- Angka ajaib adalah 0xAA55 - dari 510 hingga 511 byte.
Jika tidak ada angka ajaib
0xAA55 , maka dianggap bahwa catatan MBR pada disk ini tidak ditemukan dan BIOS memproses polling disk berikutnya.
Ketika BIOS menemukan catatan MBR, ia menyalinnya dari disk ke RAM di alamat
0x7C00 dan
melompat ke alamat ini. Setelah lompatan, tahap pertama (
Tahap 1 ) dari bootloader dimulai. Karena ukuran terbatas, tujuan tahap pertama adalah memuat kode tahap kedua (
Tahap 2 ) ke dalam memori dan mentransfer kontrol ke sana.
Kode
Tahap 2 disimpan segera setelah struktur MBR dan sampai awal partisi disk pertama. Secara historis, celah ini mengandung 31 KB memori, dan dalam sistem modern ini mencapai 1 MB. Namun, untuk menjaga kompatibilitas, ukuran tahap kedua tidak melebihi 31 KB.
Tahap kedua mempersiapkan lingkungan untuk meluncurkan tahap ketiga:
- Memuat driver sistem file yang diperlukan
- menemukan kode tahap ketiga pada sistem file;
- memuat kode ke dalam RAM dan mentransfer kontrol ke sana.
Tugas
tahap 3 bermuara pada pengaturan minimal lingkungan dan bootloader:
- mentransfer prosesor ke Mode Terlindungi ;
- Unduh ekstensi GRUB2 yang diinstal
- temukan Tahap 4 pada sistem file dan berikan kontrol.
Mode Terlindungi - mode kompatibilitas dengan prosesor x86. Dalam mode ini, prosesor mampu menjalankan instruksi 32-bit, dan ruang alamat diperluas hingga 4 GiB. Inovasi signifikan telah muncul dalam Mode Terlindungi, misalnya:
Tahap keempat (
Tahap 4 ) sudah bekerja dalam mode 32-bit, jika perlu, itu dimuat dari disk ekspansi GUI, "parsing" file
grub.cfg dan menampilkan menu pilihan OS yang sudah dikenal.
Kernel OS
GRUB2 mengikuti
spesifikasi Multiboot untuk memuat kernel yang dapat dieksekusi. Bootloader memeriksa angka ajaib
0x1BADB002 di awal kernel dan memeriksa checksum untuk memastikan kernel tersebut kompatibel dengan spesifikasi. Setelah verifikasi berhasil, kernel dapat dimuat ke dalam RAM dan ditransfer ke sana.
Menurut spesifikasi yang sama, bootloader memberikan informasi sistem kepada kernel, seperti:
- mode prosesor saat ini;
- jumlah RAM yang terdeteksi;
- jenis output video (teks atau piksel);
- resolusi layar.
Terlepas dari kenyataan bahwa bootloader menggunakan driver sistem file dan, mungkin, ekstensi untuk antarmuka grafis, kernel bootable tidak akan menerima semua hal-hal indah ini. Pertama-tama, setelah mendapatkan kontrol, kernel "mengungkapkan" potensi penuh server dan menempatkan prosesor dalam
Mode Panjang .
Long Mode - mode utama prosesor 64-bit. Dalam mode ini, prosesor dapat menjalankan instruksi 64-bit dan menggunakan register tujuan umum 64-bit. Ruang alamat menampung 16 EIB. Long Mode menghapus organisasi memori tersegmentasi yang melekat dalam arsitektur 32-bit.
Meskipun ruang alamat sangat besar untuk mengatasi memori fisik, hanya 48 bit dari kemungkinan 64 yang digunakan, yang mengurangi jumlah maksimum RAM menjadi 256 TiB, yang 65.536 kali lebih sedikit daripada ruang alamat. Di masa mendatang,
direncanakan untuk memperluas pengalamatan fisik menjadi 57 bit.
Setelah beralih ke Long Mode, kernel melakukan serangkaian tindakan minimum yang diperlukan untuk operasi:
- Mengkonfigurasi memori paging
- memuat driver dan menginisialisasi peralatan yang digunakan;
- Mengkonfigurasi penjadwal memori dan proses
- menemukan dan mulai init.
Adalah penting bahwa sebelum mengkonfigurasi penjadwal proses, server bekerja pada satu inti, yang disebut BSP. Mengkonfigurasi scheduler membangunkan sisa kernel yang disebut
Application Processor (AP). Kernel tidak memiliki koneksi langsung antara satu sama lain, dan komunikasinya dilakukan melalui interrupt handler
lokal yang disebut
Local Advanced Programmable Interrupt Controller (LAPIC).
Kernel sistem operasi diluncurkan pada BSP, yang selama inisialisasi menerima informasi tentang prosesor yang tersedia dalam sistem menggunakan tabel ACPI. BSP, menggunakan LAPIC-nya sendiri, mengirimkan serangkaian interupsi “
Init -
StartUp -
StartUp ” untuk membangunkan semua AP. Setelah memulai, prosesor aplikasi juga perlu diinisialisasi dan ditransfer ke Long Mode, tetapi sekarang proses ini lebih cepat, karena pekerjaan ini telah dilakukan oleh prosesor utama.
Setelah semua AP diinisialisasi, penjadwal proses memulai proses layanan yang disebut "
tidak bertindak " atau
Idle . Seperti namanya, proses ini tidak melakukan apa-apa dan mengambil prosesor ketika tidak ada proses lain.
Ketika semuanya sudah dikonfigurasi dan siap untuk bekerja, kernel dari sistem operasi memulai proses pertama di ruang pengguna -
Init . Itu, pada gilirannya, memulai sisa proses di ruang pengguna. Setelah proses init dimulai, kernel masuk ke mode siaga dan tidak aktif sampai tugas muncul di ruang kernel.
Setelah memulai semua proses, server menjadi tersedia melalui jaringan, dan pada konsol Anda dapat melihat prompt Masuk di layar.
Kesimpulan
Sekilas, startup server yang sederhana dan cepat dan memuat sistem operasi sebenarnya adalah proses yang rumit dan membingungkan dengan banyak nuansa. Bagian dari proses ini adalah evolusi kecil yang mengembangkan kekuatan pemrosesan prosesor dari prosesor 16-bit lama ke "monster" 64-bit modern.
Dan bagaimana menurut Anda, ketika prosesor 128-bit muncul, apakah akan ada mode kompatibilitas dengan yang 16-bit di dalamnya?