“ ไม่สามารถค้นหาอุปกรณ์รูทได้” ในการติดตั้ง ArchLinux ใหม่


36

ฉันได้ติดตั้ง ArchLinux รุ่นล่าสุด (2014.06.01) บน MacBook Pro 8,1 (15 "หากเรื่องที่เกี่ยวข้องกับฮาร์ดแวร์) การบูตแบบคู่ด้วย OSX ทำตามคำแนะนำในคู่มือการติดตั้งอย่างเป็นทางการอย่างไรก็ตามเมื่อลองและรีบูต ลงในระบบที่เพิ่งติดตั้งใหม่มันจะหยดฉันลงในเชลล์กู้คืน:

ERROR: device 'UUID=<snip>' not found. Skipping fsck.
ERROR: Unable to find root device 'UUID=<snip>'.
You are being dropped to a recovery shell
    Type 'exit' to try and continue booting
sh: can't access tty: job control turned off
[rootfs /]# 

(ฉันลบ UUID เพราะฉันไม่ต้องการพิมพ์ออกมา แต่มันเหมือนกับที่ฉันมอบให้โดยblkid(จากดิสก์การติดตั้ง) สำหรับพาร์ติชันที่ติดตั้ง ArchLinux ไว้)

อื่น ๆ ออนไลน์ แหล่งที่มาแนะนำนี้เกิดจากการที่ล้าสมัยpacman, udev, filesystemหรือlinuxแพคเกจ อย่างไรก็ตามพวกเขาอธิบายถึงปัญหานี้หลังจากการอัพเดตเคอร์เนลจากระบบการทำงานไม่ใช่การติดตั้งใหม่ ฉันบังคับให้ติดตั้งแพ็กเกจเหล่านี้ใหม่จากarch-chrootสภาพแวดล้อมขณะบู๊ตลงดิสก์การติดตั้ง แต่นั่นไม่ได้เปลี่ยนสถานการณ์

แทนการทดลองเล็กน้อยกับการgrub.cfgแสดงของฉันว่าสิ่งที่บ่นคือrootพารามิเตอร์linuxคำสั่งเลือกvmlinuzไฟล์ที่จะใช้ อันที่จริงการเปลี่ยนroot=UUID=<snip>เป็น( root=LABEL=ArchLinuxหรือroot=/dev/sda8ทั้งสองอธิบายว่าติดตั้ง ArchLinux ไว้ที่ไหนและฉันใช้เวอร์ชั่นที่สองสำเร็จมาก่อนด้วยการแจกจ่ายอื่น) ให้Unable to find root device 'LABEL=ArchLinux'และUnable to find root device '/dev/sda8'ตามลำดับ นอกจากนี้ GRUB ดูเหมือนจะสามารถหาพาร์ติชันโดย UUID เพียงเคอร์เนล linux บ่นเกี่ยวกับมันไม่พบเป็น ramdisk เริ่มต้นถูกโหลดอย่างถูกต้อง (เช่นนี้ไม่ได้เป็นข้อผิดพลาด GRUB ตามที่อธิบายไว้ที่นี่แต่ค่อนข้างผิดพลาด linux) .

ตามหมายเหตุด้านข้าง: เชลล์กู้คืนมีข้อ จำกัด อย่างรุนแรงและเอาต์พุตมาตรฐานไม่ทำงานอย่างถูกต้อง อย่างไรก็ตามlsผลงานและรายชื่อไฟล์การแสดงขั้นพื้นฐาน (ชั่วคราว) ระบบแฟ้ม /devแต่อุปกรณ์ดิสก์ทั้งหมดดูเหมือนจะหายไปจาก อย่างไรก็ตามฉันไม่รู้ว่านี่เป็นส่วนหนึ่งของข้อผิดพลาดหรือไม่

สิ่งนี้คล้ายกัน แต่ไม่เหมือนกันกับLinux ไม่พบระบบไฟล์รูทเมื่อทำการบู๊ตเนื่องจากพาร์ติชั่นเป็นext4ตั้งแต่ต้น ยังไม่เหมือนกันทุกประการแต่อาจเกี่ยวข้องกันคือไม่สามารถบู๊ต ArchLinux บน Macbook Pro 7.1 - ลดลงไปที่เชลล์กู้คืนอย่างไรก็ตามที่นั่นหยดลงในramfsเชลล์แทนrootfsเชลล์และข้อความแสดงข้อผิดพลาดแตกต่างกัน

คำตอบ:


34

แทนที่จะบูตด้วยอิมเมจปกติฉันใช้เวอร์ชันสำรองและจัดการเพื่อบู๊ตเข้าสู่ระบบ ตามที่ปรากฎออกมา Linux ไม่สามารถตรวจจับไดรฟ์ใด ๆ เนื่องจากblock mkinitcpiohook (รับผิดชอบอุปกรณ์บล็อก) หายไปจากอิมเมจเริ่มต้น นี่คือสาเหตุที่มันถูกวางไว้หลังจากที่ในautodetect /etc/mkinitcpio.confในการแก้ไขปัญหานี้HOOKS=...จะต้องมีการเปลี่ยนแปลงบรรทัดในไฟล์นั้นblockก่อนautodetect

ก่อนการแก้ไข:

HOOKS="base udev autodetect block modconf filesystems keyboard fsck"

หลังจากการแก้ไข:

HOOKS="base udev block autodetect modconf filesystems keyboard fsck"

วิ่งmkinitcpio -p linuxเพื่อสร้างใหม่initramfsแล้วแก้ไขปัญหาอย่างถาวร


มันมีประโยชน์มาก :)
ajukraine

นี้ดูเหมือนจะยากที่จะทำซ้ำฉันมีปัญหาเดียวกันและแก้ไขได้ แต่ไดรฟ์เดียวกันทำงานได้อย่างสมบูรณ์แบบบนพีซีเครื่องอื่น พีซีที่ปัญหาเกิดขึ้นเป็นพีซี LGA775 ที่ค่อนข้างเก่าและวิธีแก้ไขปัญหาข้างต้นไม่จำเป็นเมื่อใช้ตารางพาร์ติชัน mbr ดังนั้นปัญหาเกิดขึ้นเมื่อใช้ตารางพาร์ติชัน gpt ในระบบเก่าที่ไม่มี UEFI เท่านั้น ฉันไม่รู้ว่า Mac ใช้ EFI ตลอดเวลาหรือไม่ แต่ฉันสงสัยว่าคุณใช้ตารางพาร์ทิชันใด
MADforFUNandHappy

ไม่นานมานี้แล้ว MacBook ไม่มีอีกแล้ว แต่ฉันค่อนข้างแน่ใจว่าใช้ GPT
hlt

แม้ว่าฉันจะได้รับปัญหาเช่นเดียวกับ OP และคำตอบของคุณดูเหมือนจะนำไปใช้กับฉัน แต่ก็ไม่ได้แก้ปัญหาของฉัน
Nathan Goings

1

ฉันพบปัญหาที่คล้ายกัน แต่มีการตั้งค่าที่แตกต่างกัน ฉันใช้ ArchLinux ในเครื่องเสมือนและ bootloader ของฉันคือ syslinux ฉันใช้เคล็ดลับของคุณในการสลับลำดับเคอร์เนล hooks แต่ฉันยังคงลงเอยด้วย rootfs-shell

สิ่งที่แก้ไขปัญหาสำหรับฉันคือการเปลี่ยนAPPENDสายsyslinux.cfgจากของฉัน

APPEND root=UUID=<snip>

ไปยัง

APPEND root=PARTUUID=<snip>

คุณสามารถผนวกPARTUUIDไปsyslinux.cfgโดยใช้คำสั่งเช่นblkid | grep sda1 | awk '{ print $7 }' >> /boot/syslinux/syslinux.cfgสมมติว่าพาร์ทิชันรากของคุณ/dev/sda1

หลังจากนั้นคุณสามารถใช้โปรแกรมแก้ไขข้อความที่คุณชื่นชอบเพื่อย้ายบรรทัดไปยังพื้นที่ที่เหมาะสม

แก้ไข: ฉันเพิ่งรู้ว่าหมายเลขคอลัมน์ในสคริปต์ awk ขนาดเล็กอาจแตกต่างกันไปดังนั้นควรดูผลลัพธ์ก่อนที่จะไพพ์ลงใน syslinux.cfg

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.