Gambaran Keseluruhan dan Penyelesaian Masalah Proses Boot CentOS 7 dan RHEL 7

Artikel ini menerangkan proses boot untuk sistem CentOS / RHEL 7.x. Walaupun mungkin tetap serupa dengan rilis sebelumnya, dengan RHEL 7, systemd diperkenalkan. Sebagai tambahan kepada proses boot, saya akan memberikan petua dan trik penyelesaian masalah sepanjang perjalanan.

Anda perlu memahami proses boot sebelum anda dapat menyelesaikan masalah semasa boot secara aktif. Kaji langkah-langkah di bawah sehingga anda mengetahui prosesnya.

Gambaran keseluruhan tahap tinggi

  • Kuasa + jawatan.
  • Pencarian peranti perisian.
  • Firmware membaca bootloader.
  • Boot loader memuat konfigurasi (grub2).
  • Boot loader memuatkan kernel dan initramfs.
  • Pemuat but meneruskan kawalan ke kernel.
  • Kernel menginisialisasi perkakasan + dilaksanakan /sbin/initsebagai pid 1.
  • Systemd melaksanakan semua sasaran initrd (me-mount sistem fail /sysroot).
  • Kernel root FS beralih dari initramfs root ( /sysroot) ke rootfs sistem ( /) dan systemd dilaksanakan semula sebagai versi sistem.
  • Systemd mencari sasaran lalai dan memulakan / menghentikan unit seperti yang dikonfigurasikan sambil menyelesaikan pergantungan secara automatik dan halaman log masuk muncul.

Untuk maklumat lebih lanjut mengenai proses boot, rujuk dokumentasi OS rasmi untuk sistem anda.

Sasaran sistemd

Sasaran pada dasarnya adalah pemeriksaan kebergantungan. Mereka memiliki konfigurasi "sebelum" dan "sesudah" untuk perkhidmatan apa yang diperlukan untuk memenuhi sasaran tersebut. Sebagai contoh: arp.ethernet.service, firewalld.service, dan sebagainya perlu dimulakan dan boleh digunakan sebelum network.targetboleh dicapai. Jika ia tidak dicapai, perkhidmatan seperti httpd, nfsdan ldaptidak boleh dimulakan. Terdapat 4 sasaran yang boleh ditetapkan dalam RHEL / CentOS 7.

  • graphicical.target (antara muka GUI)
  • multi-user.target (mod pengguna pelbagai, log masuk berasaskan teks)
  • save.target (sulogin prompt, permulaan sistem asas)
  • darurat.target (sulogin prompt, initramfs pivot lengkap dan root system dipasang pada / hanya baca)

Untuk melihat sasaran boot lalai semasa, gunakan yang berikut:

systemctl get-default

Perlu diingat, anda boleh mengubahnya pada waktu berjalan dengan mengasingkan sasaran. Ini akan memulakan / menghentikan semua perkhidmatan yang berkaitan dengan sasaran baru, jadi berhati-hati (lihat systemctl isolate new.target).

Mod pengguna tunggal

Ada kalanya anda perlu melakukan boot ke mod pengguna tunggal untuk menyelesaikan masalah dengan sistem operasi. Untuk contoh ini, saya akan menunjukkan kepada anda bagaimana menggunakan rescue.targetyang "mod pengguna tunggal" pada RHEL / CentOS 7.

  1. Selang menu grub2 dengan menekan "e" untuk mengedit ketika diminta dengan menu grub.
  2. Cari garis yang menentukan versi kernel ( vmlinuz ) dan tambahkan yang berikut:systemd.unit=rescue.target
  3. Tekan "Ctrl + x" untuk memulakan.
  4. Anda kemudian akan diminta dengan kata laluan root untuk meneruskan, setelah anda keluar dari shell penyelamat, proses boot akan terus memuatkan target lalai anda.

Memulihkan kata laluan root

Proses ini sedikit berbeza dengan apa yang telah kita gunakan dalam siaran masa lalu, tetapi ini adalah tugas yang mudah dan memerlukan sedikit langkah untuk melakukannya. Sekiranya anda perlu mendapatkan semula bukti kelayakan, anda boleh menggunakan kaedah ini untuk mendapatkan akses ke VM. Anda masih boleh boot dari live CD, me-mount sistem fail root, dan mengedit kata laluan, tetapi kaedah itu bertanggal dan memerlukan lebih banyak usaha.

  1. Reboot sistem.
  2. Selang menu grub2 dengan menekan "e" untuk mengedit ketika diminta dengan menu grub.
  3. Gerakkan kursor ke hujung baris yang menentukan kernel ( vmlinuz ). Anda mungkin mahu membuang semua konsol lain selain TTY0, namun langkah ini mungkin tidak diperlukan di persekitaran anda.
  4. Lampirkan rd.break( tanpa tanda petik ) yang akan mematahkan proses boot sebelum kawalan diserahkan dari initramfs ke sistem sebenar.
  5. Ctrl + x untuk boot.

Pada titik ini, shell root disajikan dengan sistem fail root yang dipasang dalam mod baca sahaja di /sysroot. Kita perlu mengembalikannya dengan hak menulis.

Imbuhan semula /sysroot.

# mount -oremount,rw /sysroot

Beralih ke penjara chroot.

# chroot /sysroot

Tukar kata laluan untuk pengguna di mana kami mempunyai kelayakan yang ketinggalan zaman.

# passwd <username>

Sekiranya anda menggunakan SElinux, anda harus mempertimbangkan untuk melabelkan semula semua fail sebelum meneruskan proses boot. Bahagian ini boleh dilangkau jika anda tidak menggunakan SElinux.

# touch /.autorelabel

Keluar dua kali dan sistem akan boot dengan bersih dari titik yang kita mengganggu.

Menyemak log dari but sebelumnya

Ia berguna untuk melihat log percubaan boot yang gagal sebelumnya. Sekiranya log jurnal dibuat berterusan (biasanya disimpan dalam memori dan dilepaskan semasa boot) ini dapat dilakukan dengan journalctlalat. Ikuti langkah-langkah ini jika anda perlu menyiapkan pembalakan boot berterusan.

Sebagai root, buat fail log untuk maklumat ini disimpan.

# mkdir -p 2775 /var/log/journal && chown :systemd-journal /var/log/journal
# systemctl restart systemd-journald

Untuk memeriksa log but sebelumnya, gunakan -bpilihan dengan journalctl. Tanpa argumen, -bakan menapis output hanya untuk mesej yang berkaitan dengan but terakhir. Nombor negatif untuk argumen ini akan disaring pada but sebelumnya. Sebagai contoh:

# journalctl -b-1 -p err

Ini akan menunjukkan log ralat dari but yang berlaku sebelum yang paling baru. Anda harus menukar nilai berangka untuk mencerminkan but yang perlu anda lihat.

Membaiki kesalahan cakera dan sistem fail

Salah satu kesalahan masa boot yang paling biasa adalah /etc/fstabfail yang salah konfigurasi . Anda TIDAK BOLEH menggunakan rescue.targetuntuk memperbaiki /etc/fstabralat. Sebilangan besar masalah ini memerlukan kita menggunakan emergency.targetkerana "penyelamatan" memerlukan sistem yang lebih berfungsi.

Berikut adalah contoh masalah yang memerlukan emergency.target:

  1. Sistem fail rosak.
  2. UUID tidak wujud di /etc/fstab.
  3. Titik pemasangan tidak wujud di /etc/fstab.
  4. Pilihan pemasangan yang salah di /etc/fstab.

Penting : Setelah mengedit /etc/fstabfail dalam mod kecemasan, anda mesti menjalankan langkah-langkah berikut untuk langkah keselamatan:

# systemctl daemon-reload

Berikut adalah contoh panduan. Kami akan masuk ke mod kecemasan untuk membuang entri palsu di /etc/fstab.

  1. Selang menu grub2 dengan menekan "e" untuk mengedit ketika diminta dengan menu grub.
  2. Cari garis yang menentukan versi kernel ( vmlinuz ) dan tambahkan yang berikut:systemd.unit=emergency.target
  3. Tekan "Ctrl + x" untuk boot.
  4. Anda akan diminta dengan kata laluan root untuk meneruskan.
  5. Tentukan semula /agar kami dapat membuat perubahan pada fstabfail:# mount -oremount,rw /
  6. Kita dapat menggunakan mountperintah untuk melihat entri mana yang menyebabkan kesalahan:# mount -a
  7. Keluarkan entri yang menyinggung perasaan dari fstabfail.
  8. Gunakan mount -asekali lagi untuk memastikan kesalahan telah diselesaikan.
  9. Gunakan systemctl daemon-reloadseperti yang telah saya sebutkan sebelumnya untuk memuatkan semula semua fail unit, dan buat semula keseluruhan pohon pergantungan.

Sebaik sahaja anda keluar dari shell kecemasan, sistem akan selesai boot dari sasaran kecemasan, anda kemudian dapat meneruskan seperti biasa dari saat itu. Contoh ini baru digunakan untuk menunjukkan kepada anda proses menggunakan sasaran kecemasan untuk membuat perubahan berterusan pada fail pada sistem.

Masalah boot loader dengan Grub 2

The /boot/grub2/grub.cfgfail adalah fail konfigurasi utama. JANGAN pernah mengedit fail ini secara manual. Sebagai gantinya, gunakan grub2-mkconfiguntuk menghasilkan konfigurasi grub2 baru menggunakan satu set fail konfigurasi yang berbeza dan senarai kernel yang dipasang. The grub2-mkconfigarahan akan melihat /etc/default/grubuntuk pilihan seperti tamat menu lalai dan baris arahan kernel untuk digunakan, kemudian gunakan satu set skrip dalam /etc/grub.d/menjana fail konfigurasi yang terhasil.

Berikut adalah gambarajah teks hubungan ini.

/boot/grub2/grub.cfg
               |
               |__________________
               |                  |
         /etc/default/grub         /etc/grub.d/*

Penting: Untuk mengedit fail utama grub.cfg, anda perlu membuat perubahan yang diinginkan ke /etc/default/grubdan ke fail /etc/grub.d/dan kemudian membuat yang baru grub.cfgdengan menjalankan:

# grub2-mkconfig > /boot/grub2/grub.cfg

Mengatasi masalah

Penting untuk memahami sintaks /boot/grub2/grub.cfgfail sebelum menyelesaikan masalah.

  • Pertama, entri bootable dikodkan di dalam blok 'menuentry'. Di blok ini, linux16dan initrd16garis menunjuk ke kernel yang akan dimuat dari disk (bersama dengan baris perintah kernel) dan initramfs yang akan dimuat. Semasa penyuntingan interaktif semasa boot, tab digunakan untuk mencari garis-garis ini.
  • Garis "set root" di dalam blok tersebut tidak menunjuk ke sistem file root untuk sistem RHEL / CentOS 7, tetapi mengarah ke sistem fail dari mana grub2 harus memuatkan file kernel dan initramfs. Sintaks adalah harddrive.partitiondi mana hd0cakera keras pertama dalam sistem dan hd1yang kedua. Partition ditunjukkan sebagai msdos1partition MBR pertama atau gpt1partition GPT pertama.

Contoh dari /boot/grub2/grub.cfg:

### BEGIN /etc/grub.d/10_linux ###
menuentry 'CentOS Linux (3.10.0-514.26.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.el7.x86_64-advanced-a2531d12-46f8-4a0f-8a5c-b48d6ef71275' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint='hd0,msdos1'  123455ae-46f8-4a0f-8a5c-b48d6ef71275
    else
      search --no-floppy --fs-uuid --set=root 123455ae-46f8-4a0f-8a5c-b48d6ef71275
    fi

Sekiranya anda perlu memasang semula bootloader pada peranti, gunakan arahan berikut.

# grub2-install <device>

Memperbaiki pemasangan grub yang rosak

Untuk kes-kes apabila sistem tidak dapat boot setelah sampai ke menu grub2.

  • Anda harus memulakan dengan mengedit menu grub dan mencari kesalahan sintaks. Sekiranya anda menjumpainya, betulkan dan masuk ke sistem untuk membuat perubahan berterusan untuk menyelesaikan masalah.
  • Sekiranya anda tidak dapat menemui kesilapan, rujuk bahagian di atas di mana kami memasuki sasaran kecemasan. Anda perlu memasang semula root ( /) lagi.
  • Lihat konfigurasi grub2 semasa dengan arahan berikut: # grub2-mkconfig
  • Sekiranya anda tidak melihat sebarang kesalahan, kemungkinan seseorang mengedit /boot/grub2/grub.cfgfail tersebut. Jangan ubah suai fail ini. Bina semula konfigurasi dengan arahan berikut:# grub2-mkconfig > /boot/grub2/grub.cfg

Setelah anda membina semula konfigurasi grub, anda seharusnya dapat menghidupkan semula tanpa menghadapi masalah.



Leave a Comment

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

Pandangan tentang 26 Teknik Analisis Data Besar: Bahagian 1

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

6 Perkara Yang Sangat Menggila Tentang Nintendo Switch

Ramai daripada anda tahu Switch akan keluar pada Mac 2017 dan ciri baharunya. Bagi yang tidak tahu, kami telah menyediakan senarai ciri yang menjadikan 'Tukar' sebagai 'gajet yang mesti ada'.

Janji Teknologi Yang Masih Tidak Ditepati

Janji Teknologi Yang Masih Tidak Ditepati

Adakah anda menunggu gergasi teknologi memenuhi janji mereka? semak apa yang masih belum dihantar.

Fungsi Lapisan Seni Bina Rujukan Data Besar

Fungsi Lapisan Seni Bina Rujukan Data Besar

Baca blog untuk mengetahui lapisan berbeza dalam Seni Bina Data Besar dan fungsinya dengan cara yang paling mudah.

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Bagaimana AI Boleh Mengambil Automasi Proses ke Tahap Seterusnya?

Baca ini untuk mengetahui cara Kecerdasan Buatan semakin popular di kalangan syarikat berskala kecil dan cara ia meningkatkan kebarangkalian untuk menjadikan mereka berkembang dan memberikan pesaing mereka kelebihan.

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA: Berapa Lama Ia Boleh Kekal Sebagai Teknik Berdaya maju Untuk Perbezaan Manusia-AI?

CAPTCHA telah menjadi agak sukar untuk diselesaikan oleh pengguna dalam beberapa tahun kebelakangan ini. Adakah ia dapat kekal berkesan dalam pengesanan spam dan bot pada masa hadapan?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Keunikan Teknologi: Masa Depan Tamadun Manusia yang Jauh?

Apabila Sains Berkembang pada kadar yang pantas, mengambil alih banyak usaha kita, risiko untuk menundukkan diri kita kepada Ketunggalan yang tidak dapat dijelaskan juga meningkat. Baca, apakah makna ketunggalan bagi kita.

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Teleperubatan Dan Penjagaan Kesihatan Jauh: Masa Depan Ada Di Sini

Apakah teleperubatan, penjagaan kesihatan jauh dan impaknya kepada generasi akan datang? Adakah ia tempat yang baik atau tidak dalam situasi pandemik? Baca blog untuk mencari paparan!

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Pernahkah Anda Terfikir Bagaimana Penggodam Mendapatkan Wang?

Anda mungkin pernah mendengar bahawa penggodam memperoleh banyak wang, tetapi pernahkah anda terfikir bagaimana mereka memperoleh wang seperti itu? Mari berbincang.

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Kemas Kini Tambahan macOS Catalina 10.15.4 Menyebabkan Lebih Banyak Isu Daripada Penyelesaian

Baru-baru ini Apple mengeluarkan macOS Catalina 10.15.4 kemas kini tambahan untuk menyelesaikan masalah tetapi nampaknya kemas kini itu menyebabkan lebih banyak masalah yang membawa kepada pemusnahan mesin mac. Baca artikel ini untuk mengetahui lebih lanjut