セカンダリブートパーティションでgrub Ubuntu 12.04ブートを作成し、新しい別々のルートディレクトリを使用する方法

セカンダリブートパーティションでgrub Ubuntu 12.04ブートを作成し、新しい別々のルートディレクトリを使用する方法

リモートUbuntuサーバーからデスクトップからインストールするために一連のアップグレード/変更を実行しました。Ubuntu 10.10はユニークですサーバーへのインストール12.04 LTS 正確

いくつかの問題を除いて、すべてがうまくいっており、これまで物理的なアプローチは不可能でした。次の目標は、LVMをバックエンドストレージとして使用してXENサーバーを作成することです。システムにLVMがありません。 12.04 LTSに達した後にLVMを追加しました。 XENマシンでリモートで作成する方法を知っており、以前も試したことがあります。しかし、新しい設定を開始する際に問題があります。

この箱を設置した人は、パーティショニングに注意を払っていないことがわかりました。システムはサーバーとして使用されましたが、デスクトップとしてインストールされましたが(この問題を解決しました)、次のパーティション化スキームが残りました。

Disk /dev/sda: 500.0 GB, 499999834112 bytes
... 
Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       58558   470361088   83  Linux
/dev/sda2           58558       60789    17916929    5  Extended
/dev/sda5           58558       60789    17916928   82  Linux swap / Solaris

そのため、巨大な17Gスワップパーティションを新しいブートパーティション(現在の/dev/sda2)、小さなスワップパーティション(/dev/sda3)、および新しいルートパーティション(lvs)に再構成しました。ディスク使用量を十分に小さい3GB程度に下げ、LVMの下に作成した新しいルートディレクトリにコピーしました。

現在、

Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   940724223   470361088   83  Linux
/dev/sda2   *   940724224   941748223      512000   83  Linux
/dev/sda3       941748224   943845375     1048576   82  Linux swap / Solaris
/dev/sda4       943845376   976562175    16358400   8e  Linux LVM

/dev/sda1は古いブートパーティションマシンを/dev/sda2から起動したいです。違いは別々の/bootと/パーティションが必要であることです。ルートパーティションはLVMから呼び出されます。

# lvscan
ACTIVE            '/dev/server20/root' [10.00 GiB] inherit

最後の目標は、/dev/sda1をLVM制御下に置きたいが、それを使用しない方法でシステムを起動する必要があることです。その時点からLVMが動作します。

上記のファイルシステム全体の変更に加えて、次の作業も行いました。

生成された論理ボリューム:

pvcreate /dev/sda4 
vgcreate server20 /dev/sda4
lvcreate -L 10G -n root server20
mkfs.ext4 /dev/server20/root

インストールしてください:

mount /dev/server20/root /mnt/root/
mount /dev/sda2 /mnt/root/boot/
(cd / ; find . -xdev -print0 | rsync -xavz . /mnt/root/)
for i in /dev /run /dev/pts /proc /sys; do sudo mount -B $i /mnt/root$i; done

グラップアップデート:

chroot /mnt/root
echo "dm-mod" >> /etc/initramfs-tools/modules
echo "dm-mod" >> /etc/modules
grub-mkconfig (verified config file visually)
update-grub (no errors/warnings)

生成された/boot/grub/grub.cfgを確認しながら、ほとんどの内容が正しいことがわかりました。特に以下の内容がそうです。

insmod lvm
...
set root='(server20-root)'
search --no-floppy --fs-uuid --set=root 0bb92c24-8c02-4fa3-8f75-970076261b2f
...

menuentry 'Ubuntu, with Linux 3.2.0-38-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos2)'
    search --no-floppy --fs-uuid --set=root 891b3eaa-fb43-4a42-9789-a91c2a5ffb13
    linux   /vmlinuz-3.2.0-38-generic root=/dev/mapper/server20-root ro quiet
    initrd  /initrd.img-3.2.0-38-generic
}
...

その後、blkidを確認してください。

/dev/sda2: UUID="891b3eaa-fb43-4a42-9789-a91c2a5ffb13" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda4: UUID="IyDrfU-TOYT-rFXO-JknG-rwEK-Sm2A-mfKcIe" TYPE="LVM2_member"
/dev/mapper/server20-root: UUID="0bb92c24-8c02-4fa3-8f75-970076261b2f" TYPE="ext4"
/dev/sda1: UUID="888c061a-1d51-4516-aced-4bb21042d2f4" TYPE="ext4"
/dev/sda3: UUID="19efc041-eccd-42c9-94aa-5b6c88ffd5bb" TYPE="swap"

だから私がここで学んだのは、私のブートパーティションがmsdos2、つまり/ dev / sda2になるということです。 uuid は検索行でも参照されます。たとえルートと呼ばれていますが、他の設置と比較しました。これは、ルート/ブート分離がブートuuidであることを意味します(正しい仮定?)。

リンクされたディスクレイアウトを使って再起動できると思いましたが、そうではありません。 fdiskを使用して/dev/sda1および/dev/sda2ブート可能フラグを有効にしました。以前と同じように始まり、幸いなことに問題は発生しませんでした。

私のより深い問題は、chroot + update-grubの誤解によって引き起こされる可能性があります。実際、root / boot / dev / sda1で何をすべきかわかりません。 chrootバージョンのgrub.cfgを/ bootサブディレクトリにコピーする必要がありますか?

再起動後に実行した手順

switched off bootable flag on /dev/sda1
remounted everything again and performed all steps again plus an additional
grub-install /dev/sda  (from the chroot)

/dev/sda1を無視しても十分ですか? grubに関するすべての内容を読みましたが、同じディスクに2つのブートパーティションがあるときにブートプロセスがどのように機能するかについての答えを得ることはできません。 (他の場合も多い)grub-install --boot-directory=/mnt/boot。内部的にはどのように処理されますか?

この質問についてより良いタイトルを提案してください。私はこの質問が本当にひどいです。

また、これはMBRです。

dd if=/dev/sda of=mbr.bin bs=512 count=1
root@server20:/# file mbr.bin 
mbr.bin: x86 boot sector; 
partition 1: ID=0x83, starthead 32, startsector 2048, 940722176 sectors; 
partition 2: ID=0x83, active, starthead 95, startsector 940724224, 1024000 sectors; 
partition 3: ID=0x82, starthead 29, startsector 941748224, 2097152 sectors; 
partition 4: ID=0x8e, starthead 167, startsector 943845376, 32716800 sectors, code offset 0x63

答え1

再起動しようとしましたが、最後の手順3で問題が解決したようです。

using fdisk to switch off bootable flag for /dev/sda1
partprobe so the kernel knows about changes
remounted everything again on top of root at /mnt/root and performed:
grub-install /dev/sda  (from the chroot)
update-grub

MBRダンプを見ると、今回は効果があったと信じられます。 LVMルートの使用を開始しました。ブートパーティションをマウントできなかったようですが、システムはマウントに成功しました。小さい/dev/sda1に戻り、同じプロセスを実行する必要がありました。

関連情報