Cara melakukan debug masalah Dracut
Pendahuluan
Jika Anda mengalami masalah saat inisialisasi sistem karena Dracut, silakan lihat dokumen common bugs sebelum melaporkan bug. Beberapa penyesuaian konfigurasi sederhana yang dapat memperbaiki berbagai masalah mungkin tercantum di sana. Jika masalah yang Anda alami tidak ada di daftar tersebut atau tidak ada solusi sementara yang membantu, pertimbangkan untuk melaporkan bug agar Fedora dapat berfungsi lebih baik di perangkat keras Anda.
Siapkan juga informasi (log) tentang sistem Anda. Informasi ini harus lengkap (jangan hanya potongan singkat), tidak dalam bentuk arsip, tidak dikompresi, dan dengan jenis MIME diset ke text/plain.
Mengidentifikasi area masalah Anda
-
Hapus
rhgbdanquietdari baris perintah kernel -
Tambahkan
rd.shellke baris perintah kernel. Ini akan menampilkan shell jika dracut tidak dapat menemukan perangkat root Anda -
Tambahkan
rd.shell rd.debug log_buf_len=1Mke baris perintah kernel agar perintah shell dracut ditampilkan saat dieksekusi -
Periksa log sistem:
# less /run/initramfs/rdsosreport.txt # journalctl -a # dmesg # less /run/initramfs/init.log
Informasi yang perlu disertakan dalam laporan Anda
Semua laporan bug
Dalam semua kasus, hal-hal berikut harus disebutkan dan dilampirkan pada laporan bug Anda:
-
Baris perintah kernel yang digunakan secara tepat. Biasanya diambil dari berkas konfigurasi bootloader (misalnya
/etc/grub.conf) atau dari/proc/cmdline -
Salinan informasi partisi disk Anda dari
/etc/fstab -
Daftar perangkat dari device-mapper. Ini dapat diperoleh dengan menjalankan perintah
dmsetup ls — tree -
Daftar atribut perangkat blok termasuk mode kompatibilitas vol_id. Ini dapat diperoleh dengan menjalankan perintah
blkiddanblkid -o udev -
Aktifkan debugging dracut (lihat bagian ‘debugging dracut’) dan lampirkan semua informasi relevan dari log boot. Informasi ini dapat diperoleh dengan perintah
dmesg|grep dracut -
Jika Anda menggunakan berkas konfigurasi dracut, sertakan
/etc/dracut.conf
Masalah terkait Logical Volume Management (LVM)
Selain informasi dari bagian ‘semua laporan bug’, sertakan informasi berikut:
-
Sertakan informasi physical volume dengan menjalankan perintah:
lvm pvdisplay -
Sertakan informasi volume group dengan menjalankan perintah:
lvm vgdisplay -
Sertakan informasi logical volume dengan menjalankan perintah:
lvm lvdisplay
Masalah terkait Software RAID
Selain informasi dari bagian ‘semua laporan bug’, sertakan informasi berikut:
-
Jika menggunakan partisi disk dengan Software RAID, sertakan output dari
/proc/mdstat
Masalah terkait perangkat root jaringan
Bagian ini menjelaskan informasi yang harus disertakan ketika masalah terjadi pada sistem dengan perangkat root yang terhubung melalui jaringan (misalnya iSCSI, NFS, atau NBD). Selain informasi dari bagian ‘semua laporan bug’, sertakan informasi berikut:
-
Sertakan output dari perintah berikut
Melakukan debug Dracut
Mengonfigurasi console serial
Untuk berhasil melakukan debug Dracut, diperlukan metode pencatatan log console selama booting sistem. Bagian ini menjelaskan cara mengonfigurasi koneksi console serial untuk merekam pesan boot. Untuk mengaktifkan output console serial pada kernel dan bootloader, ikuti langkah-langkah berikut.
-
Buka berkas
/etc/grub.confuntuk diedit. Di bawah baris timeout=5, tambahkan baris berikut:serial --unit=0 --speed=9600 terminal --timeout=5 serial console
-
Tambahkan juga argumen boot berikut pada baris kernel di
/etc/grub.conf:console=tty0 console=ttyS0,9600
-
Setelah selesai,
/etc/grub.confakan terlihat mirip dengan contoh berikut:
default=0 timeout=5 serial --unit=0 --speed=9600 terminal --timeout=5 serial console title Fedora (2.6.29.5-191.fc11.x86_64) root (hd0,0) kernel /vmlinuz-2.6.29.5-191.fc11.x86_64 ro root=/dev/mapper/vg_uc1-lv_root console=tty0 console=ttyS0,9600 initrd /dracut-2.6.29.5-191.fc11.x86_64.img
Informasi lebih rinci tentang cara mengonfigurasi kernel untuk output console dapat ditemukan di tautan ini.
Menggunakan shell dracut
Dracut menyediakan shell untuk debugging interaktif jika gagal menemukan sistem berkas root Anda. Untuk mengaktifkan shell ini:
-
Tambahkan parameter boot
rd.shellke konfigurasi bootloader Anda misalnya pada berkas/etc/grub/conf -
Hapus argumen boot
rhgbdanquiet
Contoh berkas konfigurasi bootloader /etc/grub.conf ditunjukkan di bawah ini:
default=0
timeout=5
serial --unit=0 --speed=9600
terminal --timeout=5 serial console
title Fedora (2.6.29.5-191.fc11.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.29.5-191.fc11.x86_64 ro root=/dev/mapper/vg_uc1-lv_root console=tty0 rd.shell
initrd /dracut-2.6.29.5-191.fc11.x86_64.img
Jika boot sistem gagal, Anda akan diarahkan ke shell seperti pada contoh berikut:
Tidak ditemukan perangkat root Beralih ke shell debug. sh: can't access tty; job control turned off #
Gunakan prompt shell ini untuk mengumpulkan informasi yang diminta di atas (lihat bagian ‘semua laporan bug’).
Mengakses volume root dari shell dracut
Dari shell debug dracut, Anda dapat secara manual melakukan tugas untuk menemukan dan menyiapkan volume root agar sistem dapat melakukan boot. Langkah yang diperlukan akan bergantung pada bagaimana volume root Anda dikonfigurasi. Skenario umum meliputi:
-
Perangkat blok (misalnya
/dev/sda7) -
Volume logis LVM (misalnya
/dev/VolGroup00/LogVol00) -
Perangkat terenkripsi (misalnya
/dev/mapper/luks-4d5972ea-901c-4584-bd75-1da802417d83) -
Perangkat yang terhubung melalui jaringan (misalnya
netroot=iscsi:@192.168.0.4::3260::iqn.2009-02.org.fedoraproject:for.all)
Metode spesifik untuk menemukan dan menyiapkan perangkat akan bervariasi. Namun, untuk melanjutkan proses boot yang berhasil, tujuannya adalah menemukan volume root dan membuat symlink /dev/root yang mengarah ke sistem berkas. Contoh berikut menunjukkan cara mengakses dan melakukan boot dari volume root yang berupa volume logis LVM terenkripsi.
-
Periksa partisi Anda menggunakan
parted:# parted /dev/sda -s p Model: ATA HTS541060G9AT00 (scsi) Disk /dev/sda: 60.0GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 32.3kB 10.8GB 107MB primary ext4 boot 2 10.8GB 55.6GB 44.7GB logical lvm
-
Anda mengingat bahwa volume root Anda adalah volume logis LVM. Lakukan pemindaian dan aktifkan semua volume logis:
# lvm vgscan # lvm vgchange -ay
-
Sekarang Anda seharusnya dapat melihat semua volume logis dengan perintah
blkid:# blkid /dev/sda1: UUID="3de247f3-5de4-4a44-afc5-1fe179750cf7" TYPE="ext4" /dev/sda2: UUID="Ek4dQw-cOtq-5MJu-OGRF-xz5k-O2l8-wdDj0I" TYPE="LVM2_member" /dev/mapper/linux-root: UUID="def0269e-424b-4752-acf3-1077bf96ad2c" TYPE="crypto_LUKS" /dev/mapper/linux-home: UUID="c69127c1-f153-4ea2-b58e-4cbfa9257c5e" TYPE="ext3" /dev/mapper/linux-swap: UUID="47b4d329-975c-4c08-b218-f9c9bf3635f1" TYPE="swap"
-
Dari output di atas, Anda mengetahui bahwa volume root berada pada perangkat blok terenkripsi. Buka kunci volume root terenkripsi Anda.
UUID=$(cryptsetup luksUUID /dev/mapper/linux-root) cryptsetup luksOpen /dev/mapper/linux-root luks-$UUID Enter passphrase for /dev/mapper/linux-root: Key slot 0 unlocked.
-
Selanjutnya, buat tautan simbolik ke volume root yang telah dibuka kuncinya
ln -s /dev/mapper/luks-$UUID /dev/root
-
Setelah volume root tersedia, Anda dapat melanjutkan proses boot dengan keluar dari shell dracut
exit
Ringkasan opsi baris perintah kernel dracut
Berikut adalah beberapa opsi dracut yang paling umum digunakan untuk debugging:
rd.shell-
Masuk ke shell jika initramfs gagal.
rd.debug-
Aktifkan mode -x pada shell dracut.
rd.break=[cmdline|pre-udev|pre-trigger|initqueue|pre-mount|mount|pre-pivot|cleanup]-
Masuk ke shell pada breakpoint tertentu (gunakan
egrep 'rd.?break' /usr/lib/dracut/modules.d/99base/init.shuntuk menemukan breakpoint yang didukung oleh versi dracut Anda) rd.udev.info-
Atur udev ke loglevel info (ini adalah tingkat default)
rd.udev.debug-
Atur udev ke loglevel debug
Lihat halaman manual dracut.cmdline(7) man page untuk referensi lengkapnya.
Want to help? Learn how to contribute to Fedora Docs ›