AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 26886
Accepted
intuited
intuited
Asked: 2011-02-18 12:33:33 +0800 CST2011-02-18 12:33:33 +0800 CST 2011-02-18 12:33:33 +0800 CST

从 Desktop LiveCD 修复 LVM 根目录上无法启动的安装

  • 772

我刚刚从 10.10 Desktop LiveCD 进行了安装,使根卷成为 LVM LV。

显然这是不支持的;在启动 GUI 安装程序应用程序之前,我通过以下步骤来管理它:

  • lvm2在正在运行的系统上安装软件包
  • 在系统硬盘上创建一个 LVM 类型的分区
  • 使用 LVM 工具创建物理卷、卷组和根 LV。/var我还为;创建了第二个 LV 。我认为这无关紧要。
  • 在两个 LV 中的每一个上创建一个文件系统(ext4)。

完成这些步骤后,GUI 安装程序提供了两个 LV 作为安装目标;我欣然接受,同时将/boot主分区与 LVM 分区分开。

安装似乎很顺利,并且我已经验证了 root 和 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
}

请注意, $VARS 在实际中被替换grub.cfg为其相应的值。

我重新启动到 livecd 并将 initrd 映像解压缩到临时目录中。看起来 initrd 映像缺少 LVM 功能。例如,如果我正在正确读取/usr/share/initramfs-tools/hooks/lvm2(安装lvm2在 livecd 引导的系统上,而不存在于已安装的系统上),则可lvm执行文件应位于/sbin; 事实并非如此。

补救这种情况的最佳方法是什么?我意识到只使用备用安装 CD 会更容易,它显然支持 LVM,但我不想等待它下载然后重新安装。

installation
  • 3 3 个回答
  • 49730 Views

3 个回答

  • Voted
  1. Best Answer
    Kees Cook
    2011-02-18T22:28:53+08:002011-02-18T22:28:53+08:00

    您直接遇到了问题:initramfs 不支持 LVM。以下是解决方法:

    1. 再次启动 LiveCD
    2. lvm2在 Live 环境中再次安装
    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 -u在 chroot 中运行。

    • 10
  2. psusi
    2011-02-18T12:49:17+08:002011-02-18T12:49:17+08:00

    将系统安装到硬盘后,您需要将 lvm2 安装到该系统中才能启动。如果你在 livecd 上安装了 lvm2,那么这些包仍然会在 /var/cache/apt/archives 中。切换到该目录,挂载硬盘,然后使用 dpkg --root=/mnt *.deb 将软件包安装到硬盘上。在您的情况下,您需要将根 fs 挂载到 /mnt,并将 var fs 挂载到 /mnt/var。

    此外,您不需要单独的 /boot 分区,单独的 /var 分区是有问题的。

    • 1
  3. intuited
    2011-02-19T08:14:58+08:002011-02-19T08:14:58+08:00

    在本演练的最后一部分的帮助下,我最终完成了 Kees Cook 精心布置的大部分工作。然而:

    • 我没有绑定安装/dev。看起来这稍后会导致一些错误消息;见下文。
    • 除了. /var_/boot
    • 我没有将 debs 复制到/tmp新根目录中。相反,我在ing# apt-get install aptitude; aptitude install lvm2之后跑了。chroot

      • 我这样做是为了在 apt 数据库中注册这些操作:例如,aptitude可能还会apt-get跟踪哪些包是显式安装的,哪些是作为依赖项自动安装的。
      • 因为我实际上是通过本地 apt 代理(正在运行apt-cacher-ng)获取我的包,所以我什至不必等待它们再次下载。在运行之前,我确实必须在 contains 处创建一个/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.
    
    • 1

相关问题

  • 如何安装 Ubuntu Light?

  • 从 Ubuntu 10.04 干净安装到 LUbuntu 10.10 而不丢失数据?

  • PostgreSQL 缺少 /etc/postgresql 文件夹?

  • 如何在 burg 安装期间标记安装选项(非图形安装)

  • 无线安装后无法使用

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    我需要什么命令来解压缩/提取 .tar.gz 文件?

    • 8 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Martin Hope
    EmmyS 我需要什么命令来解压缩/提取 .tar.gz 文件? 2011-02-09 14:50:41 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve