ວິທີແກ້ໄຂຂໍ້ຜິດພາດຂອງ Dracut
ຄຳນຳ
ຫາກທ່ານພົບບັນຫາກ່ຽວກັບການເລີ່ມຕົ້ນລະບົບເນື່ອງຈາກ Dracut, ກະລຸນາເບິ່ງເອກະສານ ບັນຫາທົ່ວໄປ (common bugs) ກ່ອນທີ່ຈະແຈ້ງບັກ (bug). ການປັບແຕ່ງການຕັ້ງຄ່າບາງຢ່າງທີ່ງ່າຍດາຍອາດຈະຊ່ວຍແກ້ໄຂບັນຫາໄດ້ຫຼາຍຢ່າງ. ຫາກບັນຫາທີ່ທ່ານພົບບໍ່ມີຢູ່ໃນລາຍຊື່ນັ້ນ ຫຼື ວິທີການແກ້ໄຂເບື້ອງຕົ້ນບໍ່ຊ່ວຍໄດ້, ກະລຸນາພິຈາລະນາແຈ້ງບັກເພື່ອຊ່ວຍໃຫ້ພວກເຮົາເຮັດໃຫ້ Fedora ເຮັດວຽກໄດ້ດີຂຶ້ນໃນຮາດແວຂອງທ່ານ.
ກະລຸນາກຽມຂໍ້ມູນ (ບັນທຶກ/logs) ກ່ຽວກັບລະບົບຂອງທ່ານນຳ. ຂໍ້ມູນເຫຼົ່ານີ້ຄວນຈະສົມບູນ (ບໍ່ຄວນຕັດມາພຽງບາງສ່ວນ), ບໍ່ຄວນຢູ່ໃນຮູບແບບໄຟລ໌ບີບອັດ, ແລະ ຕັ້ງຄ່າ MIME type ເປັນ text/plain.
ການລະບຸພື້ນທີ່ຂອງບັນຫາ
-
ລຶບ
rhgbແລະquietອອກຈາກແຖວຄຳສັ່ງເຄີເນິລ (kernel command line) -
ເພີ່ມ
rd.shellເຂົ້າໃນແຖວຄຳສັ່ງເຄີເນິລ. ນີ້ຈະສະແດງເຊລ (shell) ໃນກໍລະນີທີ່ dracut ບໍ່ສາມາດຊອກຫາອຸປະກອນຮາກ (root device) ຂອງທ່ານພົບ -
ເພີ່ມ
rd.shell rd.debug log_buf_len=1Mເຂົ້າໃນແຖວຄຳສັ່ງເຄີເນິລ ເພື່ອ ໃຫ້ຄຳສັ່ງເຊລຂອງ dracut ສະແດງຜົນອອກມາວ່າຍັງເຮັດວຽກຫຍັງແດ່ໃນຂະນະທີ່ມັນຖືກປະຕິບັດ -
ກວດສອບບັນທຶກ (logs) ຂອງລະບົບ:
$ sudo less /run/initramfs/rdsosreport.txt $ sudo journalctl -a $ sudo dmesg $ sudo less /run/initramfs/init.log
ຂໍ້ມູນທີ່ຄວນລະບຸໃນລາຍງານຂອງທ່ານ
ລາຍງານບັກທັງໝົດ
ໃນທຸກກໍລະນີ, ຄວນລະບຸ ແລະ ແນບຂໍ້ມູນຕໍ່ໄປນີ້ໄປກັບລາຍງານບັກຂອງທ່ານ:
-
ແຖວຄຳສັ່ງເຄີເນິລ (kernel command-line) ທີ່ໃຊ້. ໂດຍປົກກະຕິແມ່ນມາຈາກໄຟລ໌ຕັ້ງຄ່າ bootloader (ເຊັ່ນ:
/etc/grub.conf) ຫຼື ຈາກ/proc/cmdline -
ສຳເນົາຂໍ້ມູນພາກສ່ວນດິສກ໌ (disk partition) ຈາກ
/etc/fstab -
ລາຍຊື່ອຸປະກອນຈາກ device-mapper. ສາມາດເອົາໄດ້ໂດຍການໃຊ້ຄຳສັ່ງ
dmsetup ls — tree -
ລາຍຊື່ຄຸນລັກສະນະຂອງບລັອກອຸປະກອນ (block device) ລວມທັງໂໝດທີ່ເຂົ້າກັນໄດ້ກັບ vol_id. ສາມາດເອົາໄດ້ໂດຍການໃຊ້ຄຳສັ່ງ
blkidແລະblkid -o udev -
ເປີດການໃຊ້ງານ dracut debugging (ເບິ່ງ ພາກສ່ວນ 'debugging dracut'), ແລະ ແນບຂໍ້ມູນທີ່ກ່ຽວຂ້ອງທັງໝົດຈາກ boot log. ສາມາດເອົາໄດ້ໂດຍການໃຊ້ຄຳສັ່ງ
dmesg|grep dracut -
ຫາກທ່ານໃຊ້ໄຟລ໌ຕັ້ງຄ່າ dracut, ກະລຸນາແນບ
/etc/dracut.confມານຳ
ບັນຫາທີ່ກ່ຽວຂ້ອງກັບ Logical Volume Management
ນອກຈາກຂໍ້ມູນໃນ ພາກສ່ວນ 'ລາຍງານບັກທັງໝົດ' ແລ້ວ, ໃຫ້ລະບຸຂໍ້ມູນຕໍ່ໄປນີ້ມານຳ:
-
ລະບຸຂໍ້ມູນ physical volume ໂດຍການໃຊ້ຄຳສັ່ງ:
lvm pvdisplay -
ລະບຸຂໍ້ມູນ volume group ໂດຍການໃຊ້ຄຳສັ່ງ:
lvm vgdisplay -
ລະບຸຂໍ້ມູນ logical volume ໂດຍການໃຊ້ຄຳສັ່ງ:
lvm lvdisplay
ບັນຫາທີ່ກ່ຽວຂ້ອງກັບ Software RAID
ນອກຈາກຂໍ້ມູນໃນ ພາກສ່ວນ 'ລາຍງານບັກທັງໝົດ' ແລ້ວ, ໃຫ້ລະບຸຂໍ້ມູນຕໍ່ໄປນີ້ມານຳ:
-
ຫາກໃຊ້ພາກສ່ວນດິສກ໌ແບບ software RAID, ກະລຸນາແນບຜົນທີ່ໄດ້ຈາກ
/proc/mdstatມານຳ
ບັນຫາທີ່ກ່ຽວຂ້ອງກັບອຸປະກອນຮາກຜ່ານເຄືອຂ່າຍ (Network root device)
ພາກສ່ວນນີ້ອະທິບາຍລາຍລະອຽດຂໍ້ມູນທີ່ຄວນລະບຸເມື່ອພົບບັນຫາໃນລະບົບທີ່ອຸປະກອນຮາກ (root device) ຕັ້ງຢູ່ເທິງເຄືອຂ່າຍ (ເຊັ່ນ: iSCSI, NFS ຫຼື NBD). ນອກຈາກຂໍ້ມູນໃນ ພາກສ່ວນ 'ລາຍງານບັກທັງໝົດ' ແລ້ວ, ໃຫ້ລະບຸຂໍ້ມູນຕໍ່ໄປນີ້ມານຳ:
-
ກະລຸນາແນບຜົນທີ່ໄດ້ຈາກ
ການດີບັກ (Debugging) dracut
ການຕັ້ງຄ່າ serial console
ການດີບັກ dracut ໃຫ້ປະສົບຜົນສຳເລັດນັ້ນຈຳເປັນຕ້ອງມີການບັນທຶກຄອນໂຊລ (console logging) ໃນລະຫວ່າງການບູດລະບົບ. ພາກສ່ວນນີ້ຈະແນະນຳການຕັ້ງຄ່າການເຊື່ອມຕໍ່ serial console ເພື່ອບັນທຶກຂໍ້ຄວາມການບູດ. ເພື່ອເປີດໃຊ້ການສະແດງຜົນ serial console ສຳລັບທັງເຄີເນິລ ແລະ bootloader, ໃຫ້ປະຕິບັດຕາມຂັ້ນຕອນລຸ່ມນີ້.
-
ເປີດໄຟລ໌
/etc/grub.confເພື່ອແກ້ໄຂ. ຢູ່ລຸ່ມແຖວ timeout=5, ໃຫ້ເພີ່ມຂໍ້ຄວາມຕໍ່ໄປນີ້:serial --unit=0 --speed=9600 terminal --timeout=5 serial console -
ນອກຈາກນັ້ນໃນ
/etc/grub.conf, ໃຫ້ເພີ່ມ boot arguments ຕໍ່ໄປນີ້ເຂົ້າໃນແຖວ kernel:console=tty0 console=ttyS0,9600 -
ເມື່ອສຳເລັດແລ້ວ,
/etc/grub.confຄວນຈະມີລັກສະນະຄ້າຍຄືກັບຕົວຢ່າງລຸ່ມນີ້: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
ສາມາດເບິ່ງຂໍ້ມູນລະອຽດເພີ່ມເຕີມກ່ຽວກັບວິທີຕັ້ງຄ່າເຄີເນິລສຳລັບການສະແດງຜົນທາງຄອນໂຊລໄດ້ທີ່ 1.
ການໃຊ້ dracut shell
Dracut ມີເຊລ (shell) ສຳລັບການດີບັກແບບໂຕ້ຕອບໃນກໍລະນີທີ່ dracut ບໍ່ສາມາດຊອກຫາລະບົບໄຟລ໌ຮາກ (root filesystem) ຂອງທ່ານພົບ. ເພື່ອເປີດໃຊ້ເຊລ:
-
ເພີ່ມພາມາມິເຕີການບູດ
rd.shellເຂົ້າໃນໄຟລ໌ຕັ້ງຄ່າ bootloader ຂອງທ່ານ (ເຊັ່ນ:/etc/grub/conf) -
ລຶບ boot arguments
rhgbແລະquietອອກ
ຕົວຢ່າງໄຟລ໌ຕັ້ງຄ່າ bootloader /etc/grub.conf ແມ່ນຢູ່ລຸ່ມນີ້:
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
ຫາກການບູດລະບົບຫຼົ້ມເຫຼວ, ທ່ານຈະຖືກພາເຂົ້າສູ່ເຊລ (shell) ດັ່ງທີ່ເຫັນໃນຕົວຢ່າງລຸ່ມນີ້:
No root device found
Dropping to debug shell.
sh: can't access tty; job control turned off
#
ໃຊ້ເຊລນີ້ເພື່ອຮວບຮວມຂໍ້ມູນທີ່ຕ້ອງການຕາມທີ່ໄດ້ລະບຸໄວ້ຂ້າງເທິງ (ເບິ່ງ ພາກສ່ວນ 'ລາຍງານບັກທັງໝົດ').
ການເຂົ້າເຖິງ root volume ຈາກ dracut shell
ຈາກ dracut debug shell, ທ່ານສາມາດຄົ້ນຫາ ແລະ ກຽມ root volume ສຳລັບການບູດດ້ວຍຕົນເອງໄດ້. ຂັ້ນຕອນທີ່ຈຳເປັນຈະຂຶ້ນຢູ່ກັບວ່າ root volume ຂອງທ່ານຖືກຕັ້ງຄ່າໄວ້ແນວໃດ. ສະຖານະການທົ່ວໄປປະກອບມີ:
-
ບລັອກອຸປະກອນ (block device) (ເຊັ່ນ:
/dev/sda7) -
LVM logical volume (ເຊັ່ນ:
/dev/VolGroup00/LogVol00) -
ອຸປະກອນທີ່ຖືກເຂົ້າລະຫັດ (ເຊັ່ນ:
/dev/mapper/luks-4d5972ea-901c-4584-bd75-1da802417d83) -
ອຸປະກອນທີ່ເຊື່ອມຕໍ່ຜ່ານເຄືອຂ່າຍ (ເຊັ່ນ:
netroot=iscsi:@192.168.0.4::3260::iqn.2009-02.org.fedoraproject:for.all)
ວິທີການທີ່ແນ່ນອນໃນການຄົ້ນຫາ ແລະ ກຽມການຈະແຕກຕ່າງກັນໄປ. ຢ່າງໃດກໍຕາມ, ເພື່ອໃຫ້ສາມາດບູດຕໍ່ໄດ້ສຳເລັດ, ເປົ້າໝາຍແມ່ນເພື່ອຄົ້ນຫາ root volume ຂອງທ່ານ ແລະ ສ້າງລິ້ງສັນຍະລັກ (symlink) /dev/root ທີ່ຊີ້ໄປຫາລະບົບໄຟລ໌ນັ້ນ. ຕົວຢ່າງຕໍ່ໄປນີ້ຈະສະແດງການເຂົ້າເຖິງ ແລະ ບູດ root volume ທີ່ເປັນ LVM Logical volume ທີ່ຖືກເຂົ້າລະຫັດ.
-
ກວດສອບພາກສ່ວນດິສກ໌ (partitions) ຂອງທ່ານດ້ວຍ
parted:$ sudo 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 -
ທ່ານຈື່ໄດ້ວ່າ root volume ຂອງທ່ານແມ່ນ LVM logical volume. ໃຫ້ສະແກນ ແລະ ເປີດໃຊ້ງານ logical volumes ຕ່າງໆ:
$ sudo lvm vgscan $ sudo lvm vgchange -ay -
ຕອນນີ້ທ່ານຄວນຈະເຫັນ logical volumes ຕ່າງໆ ໂດຍການໃຊ້ຄຳສັ່ງ
blkid:$ sudo 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" -
ຈາກຜົນທີ່ສະແດງຂ້າງເທິງ, ທ່ານຈື່ໄດ້ວ່າ root volume ຂອງທ່ານຢູ່ເທິງບລັອກອຸປະກອນທີ່ຖືກເຂົ້າລະຫັດ. ໃຫ້ປົດລັອກ root volume ທີ່ຖືກເຂົ້າລະຫັດຂອງທ່ານ.
$ UUID=$(sudo cryptsetup luksUUID /dev/mapper/linux-root) $ sudo cryptsetup luksOpen /dev/mapper/linux-root luks-$UUID Enter passphrase for /dev/mapper/linux-root: Key slot 0 unlocked. -
ຕໍ່ໄປ, ໃຫ້ສ້າງລິ້ງສັນຍະລັກ (symbolic link) ໄປຫາ root volume ທີ່ປົດລັອກແລ້ວ
$ sudo ln -s /dev/mapper/luks-$UUID /dev/root -
ເມື່ອມີ root volume ພ້ອມແລ້ວ, ທ່ານສາມາດບູດລະບົບຕໍ່ໄດ້ໂດຍການອອກຈາກ dracut shell
exit
ສະຫຼຸບຕົວເລືອກແຖວຄຳສັ່ງເຄີເນິລ (kernel command line) ຂອງ dracut
ຕົວເລືອກຂອງ dracut ທີ່ກ່ຽວຂ້ອງກັບການດີບັກທີ່ພົບເລື້ອຍທີ່ສຸດ:
rd.shell-
ເຂົ້າສູ່ເຊລ (shell) ຫາກ initramfs ຫຼົ້ມເຫຼວ.
rd.debug-
ຕັ້ງຄ່າ -x ສຳລັບ dracut shell.
rd.break=[cmdline|pre-udev|pre-trigger|initqueue|pre-mount|mount|pre-pivot|cleanup]-
ຢຸດເຂົ້າສູ່ເຊລຕາມຈຸດຢຸດ (breakpoint) ທີ່ກຳນົດໄວ້ (ໃຊ້
egrep 'rd.?break' /usr/lib/dracut/modules.d/99base/init.shເພື່ອຊອກຫາຈຸດຢຸດທີ່ຮອງຮັບໂດຍເວີຊັນ dracut ຂອງທ່ານ) rd.udev.info-
ຕັ້ງຄ່າ udev ໃຫ້ມີລະດັບການບັນທຶກ (loglevel) ເປັນ info (ນີ້ແມ່ນລະດັບເລີ່ມຕົ້ນ)
rd.udev.debug-
ຕັ້ງຄ່າ udev ໃຫ້ມີລະດັບການບັນທຶກ (loglevel) ເປັນ debug
ເບິ່ງ dracut.cmdline(7) ໜ້າຄູ່ມື (man page) ສຳລັບການອ້າງອີງທີ່ສົມບູນ.
Want to help? Learn how to contribute to Fedora Docs ›