วิธีจัดการการมอบหมายฮาร์ดไดรฟ์แบบไม่กำหนด


2

ฉันเพิ่งติดตั้งฮาร์ดไดรฟ์อื่นลงในคอมพิวเตอร์ Arch Linux ของฉัน ครั้งแรกที่ฉัน booted up ทำงานได้ดี ครั้งต่อไปที่ฉันรีสตาร์ทคอมพิวเตอร์ของฉันแม้ว่าฉันจะได้รับการต้อนรับด้วย /dev/sda2 not found ความผิดพลาด

ดูโดยทั่วไปบางครั้งฮาร์ดไดรฟ์สำหรับบูตของฉันคือ sda และบางครั้งก็เป็น sdb. ดูเหมือนว่าจะสุ่มโดยสมบูรณ์และฉันไม่เห็นตัวเลือกใด ๆ สำหรับการทำให้เป็นแบบไม่สุ่มใน BIOS ฉันจะแก้ไขได้อย่างไร

คำตอบ:


2

หากฮาร์ดดิสก์สองตัวของคุณอยู่ในส่วนต่อประสานที่แตกต่างกันและควบคุมโดยไดรเวอร์อื่น ๆ Linux จะตั้งชื่อตามลำดับการเริ่มต้นไดรเวอร์ หากการกำหนดค่าเริ่มต้นเป็นแบบขนานสิ่งนี้อาจทำให้การกำหนดชื่ออุปกรณ์แตกต่างกันไป

ชื่ออุปกรณ์ถูกกำหนดโดย udev . ปัญหาของคุณถูกกล่าวถึงใน Arch wiki แต่ดูเหมือนจะไม่มีทางแก้ไข

ฉันไม่คุ้นเคยกับ Arch ดังนั้นฉันจะอธิบายวิธีแก้ปัญหานี้ใน Ubuntu คุณลักษณะพื้นฐานที่ให้บริการโดยเคอร์เนล Linux ซึ่งเหมือนกัน แต่อาจมีการตั้งค่าการกำหนดค่าที่ทำให้คุณสมบัติเหล่านี้ทำงานแตกต่างกันบน Arch

แทนที่จะใช้ /dev/sda2 เป็นอุปกรณ์รูท ( root= ) การตั้งค่าใน bootloader คุณสามารถใช้ UUID หรือฉลากด้วยไวยากรณ์ต่อไปนี้:

… /boot/vmlinuz root=UUID=01234567-89ab-cdef-0123-456789abcdef ro …
… /boot/vmlinuz root=LABEL=mylabel ro …

UUID ระบุระบบไฟล์ที่ไม่ซ้ำกันดังนั้นคุณจึงต้องการ UUID ของระบบไฟล์ที่เปิดอยู่ /dev/sda2. บน Ubuntu /dev/disk/by-uuid/01234567-89ab-cdef-0123-456789abcdef เป็นลิงก์สัญลักษณ์ไปยัง /dev/sda2. หากระบบไฟล์ของคุณมีป้ายกำกับ (ตั้งค่าด้วยตนเองมันขึ้นอยู่กับคุณที่จะบังคับใช้เอกลักษณ์) มีลิงก์สัญลักษณ์ภายใต้ /dev/disk/by-label. ป้ายกำกับและลิงก์ UUID สร้างขึ้นโดยกฎ udev ต่อไปนี้:

ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"

1

ลองดูที่ การตั้งชื่ออุปกรณ์บล็อกแบบต่อเนื่อง .

โดยส่วนตัวแล้วฉันคิดว่าป้ายกำกับนั้นดีที่สุดเนื่องจากฉลากเหล่านั้นให้ UUID ที่เป็นเอกลักษณ์ของคุณ แต่สามารถอ่านได้โดยมนุษย์

คุณจะได้ fstab แบบนี้:

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