デスクトップLiveCDからのLVMルートでの起動できないインストールの修正


9

10.10デスクトップLiveCDからインストールを実行し、ルートボリュームをLVM LVにしました。

どうやらこれはサポートされていません。GUIインストーラーアプリを起動する前に、次の手順を実行して管理しました。

  • lvm2実行中のシステムにパッケージをインストールする
  • システムのハードドライブにLVMタイプのパーティションを作成する
  • LVMツールを使用して、物理ボリューム、ボリュームグループ、およびルートLVを作成します。の2つ目のLVも作成しました/var。これは私には関係ないと思います。
  • 2つのLVのそれぞれにファイルシステム(ext4)を作成します。

これらの手順を実行した後、GUIインストーラーは2つのLVをインストールターゲットとして提供しました。私は喜んで受け入れ、/bootプライマリパーティションをLVMパーティションとは別に配置しました。

インストールは順調に進んでいるようで、ルートボリュームと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/lvm2lvm2livecdでブートされたシステムにインストールされ、インストールされているシステムには存在しない)、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をバインドマウントする理由は何ですか?
2010

grubが再実行され、ブートドライブがどこにあるのかを把握するために、/ devを追加しました。ネットワークが稼働していないか、chroot内で奇妙な場合に、dpkgを使用しました。ネットワーキングが機能する場合は、「aptitude」よりも「apt-get」をお勧めします。これは、最近の解像度の方が優れているためです。
キースクック

に関するヒントをありがとうapt-get、何が何であるかを追跡するのは難しいです。その詳細情報へのリンクはありますか?
2011

1

システムをハードディスクにインストールした後、システムを起動する前にlvm2をそのシステムにインストールする必要があります。livecdにlvm2をインストールした場合、パッケージは引き続き/ var / cache / apt / archivesにあります。そのディレクトリに移動し、ハードディスクをマウントし、dpkg --root = / mnt * .debを使用してパッケージをハードディスクにインストールします。あなたの場合、ルートfsを/ mntにマウントし、さらに変数fsを/ mnt / varにマウントする必要があります。

また、別の/ bootパーティションは必要ありません。別の/ varパーティションには問題があります。


いいですね。それはchroot-ing よりも簡単です。これはaptitude、明示的にインストールされたパッケージのdbには登録されないので、おそらくlvm2、この方法で依存関係をインストールする必要があります。別のものを使用することの欠点/var?追加の「スラック」スペースを割り当てる必要があるという問題以外に、スナップショットを作成したいので、他の大きな変数ファイルと混ぜたくありません。ホームディレクトリを別の/dataボリュームのディレクトリにシンボリックリンクまたはバインドマウントして、システムの稼働後に作成して音楽などを保持することを計画しています。
2011

また、私はまた、ブートfsをにマウントする必要があります/mnt/bootか?lvm2インストール時に新しいinitrd を構築することを収集します。
2011

@intuitedいいえ、いつものように手動でインストールされたものとして記録されます。はい、それらの別の1つがある場合は、/ bootもマウントする必要があります。別の/ varを用意しても、スナップショットの作成には役立ちません。
psusi

個別の/varパーティションはスナップショットには役立ちませんが、たとえば、ルートファイルが予期せずいっぱいになるのを防ぐのに役立ちます。スナップショットの作成で問題が発生すると言っていますか?ああ、待ってください、それは他の質問コメントスレッドにいるあなたです。Nevermind ..
2011

1

最終的には、このウォークスルーの最後のセクションの助けを借りて、キーズクックがうまくレイアウトしていることをほとんど行いました。しかしながら:

  • バインドマウントしませんでした/dev。これにより、後でいくつかのエラーメッセージが表示されたようです。下記参照。
  • /varボリュームをに加えて新しいルートにマウントしました/boot
  • /tmp新しいルートのにdebsをコピーしませんでした。代わりに、私はingの# apt-get install aptitude; aptitude install lvm2後に走りましたchroot

    • これらのアクションをaptデータベースに登録するために、これを行いました。たとえば、、aptitudeおよびおそらくはapt-get、明示的にインストールされたパッケージと、依存関係として自動的にインストールされたパッケージを追跡します。
    • ローカルのaptプロキシ(を実行中apt-cacher-ng)を介して実際にパッケージを取得しているので、パッケージが再度ダウンロードされるのを待つ必要さえありませんでした。実行する前に、/etc/apt/apt.conf.d/02proxycontainingでファイルを作成する必要がありました。インストールを行う前に、LiveCDを実行している間にパッケージのインストールを開始する前に、同じことを行いました。Acquire::http::Proxy "http://local-apt-proxy-server:3142";apt-get
    • エラーメッセージまたは警告が数回表示され、

      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.

自分の答えはうまくいったので受け入れます。状況によってはより信頼できる可能性のある同様のソリューションについては、キーズの回答を参照してください。
2010
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.