Desktop LiveCD에서 LVM 루트에 부팅 할 수없는 설치 수정


9

방금 10.10 Desktop LiveCD에서 설치를 수행하여 루트 볼륨을 LVM LV로 만들었습니다.

분명히 이것은 지원되지 않습니다. GUI 설치 프로그램을 시작하기 전에 다음 단계를 수행하여 관리했습니다.

  • lvm2실행중인 시스템에 패키지 설치
  • 시스템 하드 드라이브에 LVM 유형 파티션 생성
  • LVM 도구를 사용하여 물리 볼륨, 볼륨 그룹 및 루트 LV 생성 또한 두 번째 LV를 만들었습니다 /var. 나는 이것이 관련이 없다고 생각합니다.
  • 두 LV 각각에 파일 시스템 (ext4)을 작성합니다.

이 단계를 수행 한 후 GUI 설치 프로그램은 두 개의 LV를 설치 대상으로 제공했습니다. /bootLVM 파티션과는 별도로 기본 파티션을 사용하는 것도 기꺼이 받아 들였습니다 .

설치가 순조롭게 진행되는 것처럼 보였으며 루트 볼륨과 var 볼륨 모두에 적합한 디렉토리 구조가 포함되어 있음을 확인했습니다.

그러나 부팅이 실패합니다. 내가 무슨 일이 있었는지 제대로 이해했다면 initrd 파일 시스템에서 실행중인 busybox에 빠졌습니다.

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
}

$ 바르 실제 교체되어 grub.cfg그에 상응하는 값.

나는 livecd로 다시 부팅하고 initrd 이미지를 temp 디렉토리에 압축 해제했다. initrd 이미지에 LVM 기능이없는 것 같습니다. 예를 들어, /usr/share/initramfs-tools/hooks/lvm2( lvm2livecd-booted 시스템에 설치되어 있고 설치된 시스템에는 없음) 올바르게 읽고 있다면 lvm실행 파일은 /sbin; 그렇지 않습니다.

이 상황을 해결하는 가장 좋은 방법은 무엇입니까? LVM을 지원하는 대체 설치 CD를 사용하는 것이 더 쉽다는 것을 알고 있지만 다운로드를 기다렸다가 다시 설치하고 싶지는 않습니다.

답변:


9

initramfs는 LVM을 지원하지 않습니다. 문제를 해결하는 방법은 다음과 같습니다.

  1. LiveCD를 다시 부팅하십시오
  2. lvm2라이브 환경에서 다시 설치
  3. 볼륨 그룹을 불러옵니다 (-ay가 작동하지 않으면 -a yes를 시도하십시오).

    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
    

이 시점에서, lvm2가 설치 될 때 initramfs가 재생성되므로 상황이 정상으로 돌아와야합니다. 그렇지 않은 경우 update-initramfs -uchroot 내에서 실행 하여 재생할 수 있습니다 .


바인드 마운트 / dev의 이유는 무엇입니까?
intuited

grub이 다시 실행되고 부트 드라이브가 어디에 있는지 알아 내고 싶을 경우 / dev를 추가했습니다. 네트워킹이 chroot 내부에서 작동하지 않거나 이상하지 않은 경우 dpkg를 사용했습니다. 네트워킹이 작동하면 요즘에는 해상도가 더 좋기 때문에 "적성"보다 "apt-get"을 권장합니다.
Kees Cook

에 대한 팁을 보내 주셔서 감사합니다 apt-get. 무엇이 무엇인지 추적하기가 어렵습니다. 그것에 대한 더 많은 정보에 대한 링크가 있습니까?
intuited

1

시스템을 하드 디스크에 설치 한 후 부팅하기 전에 lvm2를 해당 시스템에 설치해야합니다. livecd에 lvm2를 설치 한 경우 패키지는 여전히 / var / cache / apt / archives에 있습니다. 해당 디렉토리로 변경하고 하드 디스크를 마운트 한 다음 dpkg --root = / mnt * .deb를 사용하여 패키지를 하드 디스크에 설치하십시오. 귀하의 경우 루트 fs를 / mnt에 마운트하고 var fs를 / mnt / var에 마운트해야합니다.

또한 별도의 / boot 파티션이 필요하지 않으며 별도의 / var 파티션에 문제가 있습니다.


좋아 .. chroot-ing 보다 쉽다 . 나는 이것이 aptitude명시 적으로 설치된 패키지의 db에 등록되지 않을 것이라고 생각합니다 . 따라서 아마도이 lvm2방법으로 종속성과 종속성을 설치해야합니다 . 별도의 사용으로 단점이 /var있습니까? 여분의 '느슨한'공간을 할당해야하는 문제 외에? 스냅 샷을 찍을 수 있기를 원하므로 다른 큰 변수 파일과 혼합하고 싶지 않습니다. /data시스템을 시작하고 실행 한 후 음악 등을 유지하기 위해 생성 할 별도의 볼륨 에있는 디렉토리에 홈 디렉토리를 심볼릭 링크하거나 바인드 마운트 할 계획 입니다.
직관

또한 :에서 부팅 fs를 마운트해야 /mnt/boot합니까? lvm2설치시 새로운 initrd 를 빌드하는 것을 수집 합니다.
직관

@intuited 아니오, 항상 그렇듯이 수동 설치로 기록됩니다. 예, 별도의 부트가있는 경우 / boot 마운트가 필요합니다. 별도의 / var가 있으면 스냅 샷을 만드는 데 도움이되지 않습니다.
psusi

별도의 /var파티션은 스냅 샷에 도움이되지 않지만, 예를 들어 루트 fs가 예기치 않게 채워지는 것을 방지합니다. 스냅 샷을 찍는 데 문제가 발생한다고 말씀하십니까? 오, 잠깐만, 그것은 다른 질문 댓글 스레드에 있습니다. 신경 끄시 고 ..
직관

1

나는 이 연습 의 마지막 부분에서 도움을 받아 Kees Cook이 멋지게 배치 한 작업을 대부분 끝냈습니다 . 하나:

  • 나는 bind-mount하지 않았다 /dev. 나중에 오류 메시지가 발생한 것 같습니다. 아래를 참조하십시오.
  • /var에 추가하여 새 루트에 볼륨을 마운트 했습니다 /boot.
  • 나는 뎁을 /tmp새 루트에 복사하지 않았습니다 . 대신, 나는 노래 # apt-get install aptitude; aptitude install lvm2후 달렸다 chroot.

    • 이러한 작업을 apt 데이터베이스에 등록하기 위해이 작업을 수행했습니다. 예를 들어, aptitude아마도는 apt-get패키지가 명시 적으로 설치되었고 어떤 패키지가 종속성으로 자동 설치되었는지 추적합니다.
    • 실제로 로컬 apt 프록시를 통해 패키지를 가져 오기 때문에 (실행 중 apt-cacher-ng) 패키지를 다시 다운로드 할 때까지 기다릴 필요조차 없었습니다. 실행하기 전에 파일을 /etc/apt/apt.conf.d/02proxy포함 시켜야했습니다 . 설치를 수행하기 전에 LiveCD를 실행하는 동안 패키지 설치를 시작하기 전에 동일한 작업을 수행했습니다.Acquire::http::Proxy "http://local-apt-proxy-server:3142";apt-get
    • 오류 메시지가 나타나거나 몇 번 경고하면서

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

** mount -o 바인드 / 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의 답변을 참조하십시오.
intuited
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.