แก้ไขการติดตั้งที่ไม่สามารถบูตได้บนรูท LVM จาก Desktop LiveCD


9

ฉันเพิ่งทำการติดตั้งจาก 10.10 Desktop LiveCD ทำให้ไดรฟ์ข้อมูลรูทเป็น LVM LV

เห็นได้ชัดว่าไม่รองรับ ฉันจัดการโดยทำตามขั้นตอนเหล่านี้ก่อนเริ่มแอพติดตั้ง GUI:

  • ติดตั้งlvm2แพ็กเกจบนระบบที่กำลังรัน
  • การสร้างพาร์ติชันประเภท LVM บนฮาร์ดไดรฟ์ระบบ
  • การสร้างฟิสิคัลวอลุ่มกลุ่มวอลุ่มและรูท LV โดยใช้เครื่องมือ LVM ฉันยังสร้าง LV อันที่สองสำหรับ/var; สิ่งนี้ฉันไม่คิดว่ามีความเกี่ยวข้อง
  • การสร้างระบบไฟล์ (ext4) ใน LV ทั้งสองตัว

หลังจากทำตามขั้นตอนเหล่านี้แล้วตัวติดตั้ง GUI จะเสนอ LVs สองตัวเป็นเป้าหมายการติดตั้ง ฉันยินดีที่ได้รับการยอมรับวาง/bootพาร์ทิชันหลักแยกจากพาร์ติชัน LVM

การติดตั้งดูเหมือนจะเป็นไปอย่างราบรื่นและฉันได้ตรวจสอบแล้วว่าทั้งไดรฟ์ root และ var มีโครงสร้างไดเรกทอรีที่ดูดี

อย่างไรก็ตามการบูทล้มเหลว ถ้าฉันเข้าใจอย่างถูกต้องว่าเกิดอะไรขึ้นฉันก็ถูกส่งไปที่ busybox ที่ทำงานในระบบไฟล์ initrd

แม้ว่าฉันยังไม่ได้ทำงานกับเอกสาร grub2 ทั้งหมด แต่ดูเหมือนว่ารายการที่พยายามบูตระบบใหม่ของฉันนั้นถูกต้อง:

menuentry 'Ubuntu, with Linux 2.6.35-22-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos3)'
    search --no-floppy --fs-uuid --set $UUID_OF_BOOT_FILESYSTEM
    linux   /vmlinuz-2.6.35-22-generic root=/dev/mapper/$LVM_VOLUME_GROUP-root ro   quiet splash
    initrd  /initrd.img-2.6.35-22-generic
}

โปรดทราบว่า $ VARS จะถูกแทนที่ในความเป็นจริงgrub.cfgด้วยค่าที่สอดคล้องกัน

ฉันทำการบูทกลับเข้าไปใน livecd และแกะอิมเมจ initrd ลงในไดเรคทอรีชั่วคราว ดูเหมือนว่าภาพเริ่มต้นจะไม่มีฟังก์ชั่น LVM ตัวอย่างเช่นถ้าฉันกำลังอ่าน/usr/share/initramfs-tools/hooks/lvm2(ติดตั้งด้วยlvm2บนระบบบูตแบบ livecd ไม่ปรากฏบนเครื่องที่ติดตั้ง) อย่างถูกต้องlvmปฏิบัติการที่ควรจะอยู่ใน/sbin; นั่นไม่ใช่กรณี

วิธีที่ดีที่สุดในการแก้ไขสถานการณ์นี้คืออะไร ฉันรู้ว่ามันจะง่ายกว่าถ้าจะใช้ซีดีติดตั้งสำรองซึ่งเห็นได้ชัดว่าสนับสนุน LVM แต่ฉันไม่ต้องการรอให้ดาวน์โหลดแล้วต้องติดตั้งใหม่

คำตอบ:


9

คุณพบปัญหาบนหัว: initramfs ไม่มีการสนับสนุน LVM นี่คือวิธีการแก้ไข:

  1. บูต LiveCD อีกครั้ง
  2. ติดตั้งlvm2อีกครั้งในสภาพแวดล้อมแบบสด
  3. เรียกกลุ่มวอลุ่มขึ้นมา (หาก - ไม่ทำงานลอง -a ใช่)

    vgchange -a y
    
  4. รับค่ารูท LV / boot และ / dev ที่เมาท์ใต้ต้นไม้แยก

    mkdir /newroot
    mount /dev/yourVG/rootLV /newroot
    mount /dev/yourbootpartition /newroot/boot
    mount -o bind /dev /newroot/dev
    
  5. คัดลอกแพ็กเกจที่จำเป็นลงในแผนผัง / newroot

    cp /var/cache/apt/archives/*deb /newroot/tmp/
    
  6. Chroot ลงในแผนผังใหม่และติดตั้งแพ็คเกจ

    chroot /newroot
    cd /tmp
    dpkg -i *.deb
    

ณ จุดนี้สิ่งต่าง ๆ ควรกลับสู่ปกติ (เนื่องจาก initramfs จะถูกสร้างใหม่เมื่อติดตั้ง lvm2) ถ้าไม่คุณสามารถเล่นได้ด้วยการวิ่งupdate-initramfs -uภายใน chroot


เหตุผลในการผูกติดตั้ง / dev คืออะไร
intuited

ฉันเพิ่ม / dev ในกรณีที่ด้วงถูกเรียกใช้ซ้ำและต้องการทราบว่าไดรฟ์บูตอยู่ที่ไหน ฉันใช้ dpkg ในกรณีที่ระบบเครือข่ายไม่ทำงานหรือไม่เช่นนั้นจะแปลกใน chroot หากการเชื่อมต่อเครือข่ายใช้งานได้ฉันขอแนะนำ "apt-get" over "aptitude" เนื่องจากจะช่วยแก้ไขปัญหาได้ดีกว่าในปัจจุบัน
Kees Cook

ขอบคุณสำหรับเคล็ดลับapt-getมันยากที่จะติดตามว่ามีอะไรเกิดขึ้น คุณมีลิงค์ไปยังข้อมูลเพิ่มเติมหรือไม่?
intuited

1

หลังจากติดตั้งระบบลงในฮาร์ดดิสก์แล้วคุณจะต้องติดตั้ง lvm2 ในระบบนั้นก่อนที่จะสามารถบูตได้ หากคุณติดตั้ง lvm2 บน livecd ดังนั้นแพ็คเกจจะยังคงอยู่ใน / var / cache / apt / archives เปลี่ยนเป็นไดเร็กทอรีนั้นติดตั้งฮาร์ดดิสก์และติดตั้งแพ็กเกจลงในฮาร์ดดิสก์โดยใช้ dpkg --root = / mnt * .deb ในกรณีของคุณคุณต้องเมานต์รูต fs เป็น / mnt และยัง var fs เป็น / mnt / var

นอกจากนี้คุณไม่จำเป็นต้องใช้พาร์ทิชันแยกต่างหาก / boot และพาร์ทิชันแยกต่างหาก / var เป็นที่น่าสงสัย


ดี .. มันง่ายกว่าที่chrootคิด ฉันเดาว่านี่จะไม่ลงทะเบียนในaptitudedb ของแพ็คเกจที่ติดตั้งไว้อย่างชัดเจนดังนั้นฉันควรจะติดตั้งlvm2และอ้างอิงมันด้วยวิธีนี้ มีข้อเสียอะไรที่จะใช้แยกต่างหาก/var? นอกเหนือจากปัญหาของการต้องจัดสรรพื้นที่ 'หย่อน' พิเศษหรือไม่ ฉันต้องการที่จะจับภาพมันดังนั้นฉันไม่ต้องการผสมกับไฟล์ตัวแปรขนาดใหญ่อื่น ๆ ฉันวางแผนที่จะเชื่อมโยงหรือผูกโฮมไดเร็กตอรี่ของฉันไปยังไดเรกทอรีใน/dataไดรฟ์ข้อมูลแยกต่างหากที่ฉันจะสร้างขึ้นหลังจากที่ระบบของ & ทำงาน, เพื่อเก็บเพลงและเช่น.
สัญชาตญาณ

นอกจากนี้: ฉันจะต้องติดตั้ง boot fs ด้วย/mnt/bootใช่ไหม ฉันรวบรวมที่lvm2สร้าง initrd ใหม่ในการติดตั้ง
intuited

@intuited ไม่มันจะถูกบันทึกเป็นการติดตั้งด้วยตนเองเช่นเคย ใช่คุณต้องติดตั้ง / บู๊ตหากคุณมีอุปกรณ์แยกต่างหาก การมี / var แบบแยกไม่ช่วยในการสร้างสแน็ปช็อต
psusi

/varพาร์ติชันที่แยกต่างหากจะไม่ช่วยสแน็ปช็อตไม่ใช่ แต่จะช่วยป้องกันไม่ให้ fs รูตเต็มไปโดยไม่คาดหมาย คุณกำลังบอกว่ามันจะแนะนำปัญหาเกี่ยวกับการถ่ายภาพ? โอ้รอนั่นคือคุณในหัวข้อความคิดเห็นคำถามอื่น ไม่เป็นไร ..
สังหรณ์

1

ฉันลงเอยด้วยการทำสิ่งที่ Kees Cook วางไว้เป็นอย่างดีด้วยความช่วยเหลือจากส่วนสุดท้ายของคำแนะนำแบบนี้ อย่างไรก็ตาม:

  • /devผมไม่ได้ผูกติด ดูเหมือนว่านี่ทำให้เกิดข้อความแสดงข้อผิดพลาดในภายหลัง ดูด้านล่าง
  • ผมติดของฉันปริมาณรากใหม่นอกเหนือไปจาก/var/boot
  • ฉันไม่ได้คัดลอก debs ลงใน/tmpรากใหม่ แต่ฉันวิ่ง# apt-get install aptitude; aptitude install lvm2หลังจากchrootไอเอ็นจี

    • ฉันทำสิ่งนี้เพื่อลงทะเบียนการกระทำเหล่านี้ในฐานข้อมูล apt: ตัวอย่างเช่นaptitudeและอาจapt-getจะติดตามว่าแพ็กเกจใดที่ติดตั้งไว้อย่างชัดเจนและติดตั้งโดยอัตโนมัติเป็นการพึ่งพา
    • เนื่องจากฉันได้รับแพคเกจของฉันผ่านทาง apt proxy ท้องถิ่น (ใช้งานapt-cacher-ng) ฉันไม่ต้องรอให้ดาวน์โหลดอีกครั้ง ผมไม่ได้มีการทำไฟล์ที่/etc/apt/apt.conf.d/02proxyมีก่อนที่จะใช้Acquire::http::Proxy "http://local-apt-proxy-server:3142"; apt-getฉันได้ทำสิ่งเดียวกันก่อนที่จะเริ่มการติดตั้งแพคเกจในขณะที่วิ่ง LiveCD ก่อนทำการติดตั้ง
    • ฉันได้รับข้อความแสดงข้อผิดพลาดหรือเตือนสองสามครั้งโดยระบุ

      Can not write log, openpty() failed (/dev/pts not mounted?)
      

** mount -o bind / dev / pts / mnt / YouNameIt / dev / pts

    This did not prevent the appropriate lines from being added to `/var/log/dpkg.log`.

    I suspect that this issue could have been averted by bind-mounting `/dev`, but I don't really understand what it means, i.e. I don't know what log it's referring to, or why it would need to access a pty in order to write to a log.

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