2013年10月30日水曜日

【備忘録】GPT(GUID Partition Table)で Ubuntu 12.04 64bit システムディスクをパーティショニングする。

完全なる備忘録。

GPT でのパーティショニングが、よくわからないので、適当にやってみた。


インストーラーでパーティショニング

最初は、Ubuntu 12.04 Desktop 64bit インストーラー(ubuntu-12.04.3-desktop-amd64.iso)を使用したパーティショニングを行ってみた。
マザーボードは、GIGABYTE GA-990FXA-UD5 で、BIOSは AMI EFI である。
したがって、UEFI BIOS 向けのパーティショニングとなる。
GPT でのパーティショニングとは関係ないが、諸所の事情で、光学ドライブが付いていないマシンにインストールするために、USB メモリにインストーラーを入れた。
手順は、先人の知恵である「USBメモリを使ってUbuntuをインストール No.2」をありがたく参考に、http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/ から Universal USB Installer をダウンロードして利用した。ありがたや。

インストーラーを起動。
「Install Ubuntu」を選択
「日本語」を選択
「インストール中にアップデートをダウンロードする」および「サードパーティのソフトウェアをインストールする」にチェックを入れ、続ける(この2つは、入れても入れなくてもいいと思う)

「インストールの種類」の選択画面になったら、「それ以外」(説明は、”Ubuntu 向けに、自分でパーティションの作成やサイズ変更を行ったり、複数のパーティションを選択することもできます。”と書いてある)を選択して続ける

パーティション作成画面では、以下の手順でパーティション分けをする。
パーティションは、「EFI システムパーティション」、「ルートパーティション」および、「スワップパーティション」の3つが必須となる。

「/dev/sda」を選択
「新しいパーティションテーブル」ボタンを押下し、「続ける」ボタンを押下

「dev/sda」の「空き領域」を選択して、「追加」ボタンを押下
「新しいパーティションのサイズをメガバイト(1000000 バイト)単位で指定する」に 100(MB)と入力(35MB 以上必要らしい)
「新しいパーティションの場所」:先頭
「利用方法」:EFI システムパーティション
「OK」ボタンを押下


同じ要領で、以下の必須パーティションも作成する。

ルートパーティションを作成
「新しいパーティションのサイズをメガバイト(1000000 バイト)単位で指定する」に 10000(MB)
利用方法:ext4 ジャーナリングファイルシステム
マウントポイント:/

スワップパーティションを作成
利用方法:スワップ領域


必要なパーティションの作成が完了したら、「ブートローダをインストールするデバイス」に「/dev/sda」を選択して、「インストール」ボタンを押下


ここでは、以下のようにパーティションを作った。 sda は、500GB のHDD。ちなみに、空き領域は、勝手にできるようだ。
デバイス          タイプ        マウントポイント    フォーマット    サイズ      使用済み
/dev/sda
  空き領域                                                                    1MB
  /dev/sda1      efi                                                         98MB         不明
  /dev/sda2      ext4          /                       する              10000MB    不明
  /dev/sda3      ext4          /mnt/temp         する              488006MB   不明
  /dev/sda4      swap                                                     1999MB      0MB
  空き領域                                                                    1MB

あとは、最後までインストールして完了。

手動でパーティショニング

KVM 仮想環境上に MBR でインストールした Ubuntu 12.04 Alternate 64bit をそっくり移して、きちんと起動できるか確認した。
手動でパーティショニングする場合は、レガシー BIOS 向けなので、EFI BIOS 向けとパーティションの定義方法が異なるので注意。

ゲストイメージのストレージプールは、LVM 上に作成してある。

$ sudo lvs
  LV         VG   Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  yebisu.img vg0  -wi-a-  10.00g

ロジカルボリュームをリネーム

$ sudo lvrename vg0 yebisu.img yebisu.img.bak
  Renamed "yebisu.img" to "yebisu.img.bak" in volume group "vg0"

新規ロジカルボリュームを作成

$ sudo lvcreate -L 10g -n yebisu.img vg0
  Logical volume "yebisu.img" created

ゲストボリュームに対するレスキューをするためのツールを起動(libguestfs-tools パッケージ)

$ sudo virt-rescue /dev/vg0/yebisu.img

新規ボリュームをパーティション分け
GPT の場合は、専用のパーティション(vda1)を作成して(本当に必要かどうか、いまいちわからない)、bios_grub フラグを立てる必要がある。

I have no name!@(none):/# parted /dev/vda
(parted) mktable gpt
(parted) mkpart non-fs 0cyl 2cyl
(parted) mkpart root 2cyl 8g
(parted) mkpart swap 8g -1
(parted) set 1 bios_grub on
(parted) print free
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name    Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  16.8MB  15.7MB                  non-fs  bios_grub
 2      16.8MB  8000MB  7983MB  ext4            root
 3      8000MB  10.7GB  2737MB  linux-swap(v1)  swap
        10.7GB  10.7GB  1032kB  Free Space

(parted) quit

パーティションをフォーマット

I have no name!@(none):/# mkfs.ext4 /dev/vda2
I have no name!@(none):/# mkswap /dev/vda3
I have no name!@(none):/# exit

ゲストボリュームににアクセスできるツールを起動(guestfish パッケージ)
ゲストのファイルシステムに対して、色々できる。
レスキューツールと似ていて、こちらでもパティショニングできるが、いまいち使いづらい。専用コマンドのマニュアルと睨めっこすれば、パティショニングから、フォーマットまでできる。

$ sudo guestfish -a /dev/vg0/yebisu.img.bak
> run
> list-filesystems
/dev/vda1: ext4
/dev/vda2: unknown
/dev/vda5: swap
> mount /dev/vda1 /

コピー元ファイルを tar ファイルに出力

> tar-out / bak.tar
> quit

カレントディレクトリに、bak.tar ファイルができているはず。

コピー先に tar ファイルを展開

$ sudo guestfish -a /dev/vg0/yebisu.img
> run
> list-filesystems
/dev/vda1: unknown
/dev/vda2: ext4
/dev/vda3: swap
> mount /dev/vda2 /
> tar-in bak.tar /
> quit

再びレスキューツールを起動

$ sudo virt-rescue /dev/vg0/yebisu.img

ゲストストレージに chroot

I have no name!@(none):/# mount /dev/vda2 /sysroot/
I have no name!@(none):/# mount -o bind /dev /sysroot/dev
I have no name!@(none):/# mount -o bind /proc /sysroot/proc
I have no name!@(none):/# mount -o bind /sys /sysroot/sys
I have no name!@(none):/# chroot /sysroot bash

UUID を調べる

root@(none):/# blkid /dev/vda2
/dev/vda2: UUID="8919796d-066a-4f12-adce-d2726c4c6ca1" TYPE="ext4"
root@(none):/# blkid /dev/vda3
/dev/vda3: UUID="1438a432-7db7-43af-a492-1c12f3677ed9" TYPE="swap"

上記で調べたルートおよびスワップドライブの UUID を書き換え

root@(none):/# vi /etc/fstab

上記で調べたスワップドライブの UUID を書き換え

root@(none):/# vi /etc/initramfs-tools/conf.d/resume

GRUB をインストール

root@(none):/# grub-install /dev/vda
Installation finished. No error reported.

GRUB 設定を更新

root@(none):/# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.5.0-42-generic
Found initrd image: /boot/initrd.img-3.5.0-42-generic
Found memtest86+ image: /boot/memtest86+.bin
[27740.000422] SGI XFS with ACLs, security attributes, realtime, large block/inode numbers, no debug enabled
[27740.015882] JFS: nTxBlock = 3834, nTxLock = 30672
[27740.056074] NTFS driver 2.1.30 [Flags: R/O MODULE].
[27740.079828] QNX4 filesystem 0.2.3 registered.
[27740.167927] Btrfs loaded
done

initramfs を更新

root@(none):/# update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-3.5.0-42-generic

終了

root@(none):/# exit
exit
I have no name!@(none):/# exit
exit

ゲストを起動

$ virsh start --console yebisu
ドメイン yebisu が起動されました
ドメイン yebisu に接続しました
エスケープ文字は ^] です
error: no video mode activated.

Ubuntu 12.04.3 LTS yebisu ttyS0

ログイン

yebisu login: user1
Password: ********
Last login: Tue Oct 29 14:35:36 JST 2013 on ttyS0
Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.5.0-42-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Wed Oct 30 07:32:37 JST 2013

  System load:  0.34              Processes:           131
  Usage of /:   38.1% of 7.32GB   Users logged in:     0
  Memory usage: 6%                IP address for eth0: 192.168.1.105
  Swap usage:   0%

  Graph this data and manage this system at https://landscape.canonical.com/

user1@yebisu:~$ 

無事に起動した。
めでたしめでたし。