Исправление не загружаемой установки в корневом каталоге LVM с рабочего стола LiveCD

Я только что сделал установку с 10.10 Desktop LiveCD, сделав корневой том LVM LV.

По-видимому, это не поддерживается; Мне удалось это сделать, выполнив следующие действия перед запуском приложения установщика с графическим интерфейсом:

  • установив пакет lvm2 в работающую систему
  • , создав раздел LVM-типа на системном жестком диске
  • создание физического тома, группы томов и корневого LV с использованием инструментов LVM. Я также создал второй LV для /var; это я не считаю уместным.
  • создание файловой системы (ext4) на каждом из двух LV.

После этих шагов установщик с графическим интерфейсом предложил два LV в качестве целей установки; Я с радостью согласился, также поместив /boot в основной раздел, отдельный от раздела LVM.

Казалось, что установка прошла гладко, и я убедился, что как корневые, так и переменные тома содержат приемлемо выглядящие структуры каталогов.

Однако загрузка не удалась; если я правильно понял, что произошло, меня поместили в занятый ящик, работающий в файловой системе 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 во временный каталог. Похоже, что образу initrd не хватает функциональности LVM. Например, если я правильно читаю /usr/share/initramfs-tools/hooks/lvm2 (установлен с lvm2 в системе с livecd-загрузкой, а не в установленной), исполняемый файл lvm должен находиться в /sbin; это не тот случай.

Как лучше всего исправить эту ситуацию? Я понимаю, что было бы проще использовать альтернативный установочный компакт-диск, который, очевидно, поддерживает LVM, но я не хочу ждать, пока он загрузится, а затем придется переустанавливать.

9
задан 17 February 2011 в 23:33

3 ответа

Вы ударяете проблему прямо по голове: initramfs не имеет поддержки LVM. Вот то, как зафиксировать его:

  1. Загрузите LiveCD снова
  2. Установка lvm2 снова в Продуктивной среде
  3. Поднимите Volume Group (если-a y не работает попытка-a да),

    vgchange -a y
    
  4. Получите корневой LV, / начальная загрузка и/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.

9
ответ дан 17 February 2011 в 23:33

После установки системы на жесткий диск, вам необходимо установить lvm2 в эту систему, прежде чем она сможет загрузиться. Если вы установили lvm2 на livecd, пакеты будут по-прежнему находиться в / var / cache / apt / archives. Перейдите в этот каталог, смонтируйте жесткий диск и установите пакеты на жесткий диск, используя dpkg --root = / mnt * .deb. В вашем случае вам нужно смонтировать root fs в / mnt, а также var fs в /mnt/var.

Также вам не нужен отдельный раздел / boot, а отдельный раздел / var сомнителен.

0
ответ дан 17 February 2011 в 23:33

Я закончил тем, что делал в основном то, что хорошо выложил Киз Кук, с некоторой помощью из последнего раздела этого прохождения . Тем не менее:

  • Я не привязывался /dev. Похоже, это вызвало некоторые сообщения об ошибках позже; см. ниже.
  • Я подключил свой том /var к новому корню в дополнение к /boot.
  • Я не копировал дабы в /tmp нового корня. Вместо этого я бежал # apt-get install aptitude; aptitude install lvm2 после chroot инг.

    • Я сделал это для того, чтобы зарегистрировать эти действия в базе данных apt: например, aptitude и, возможно, также apt-get, будут отслеживать, какие пакеты были установлены явно, а какие были установлены автоматически как зависимости. [ 1127]
    • Так как я на самом деле получаю свои пакеты через локальный apt-прокси (работает 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.
0
ответ дан 17 February 2011 в 23:33

Другие вопросы по тегам:

Похожие вопросы: