UbuntuJapaneseWiki

概要

一言でいうと、「別のマシンにインストールしたUbuntuをtarで固め、それを専用サーバーにアップロードして解凍・展開する」です。

debootstrap(とchroot)を用いる方法では、エレガントに、次のパターンが可能でした。

このtarを用いる方法は、エレガントではない(=とてもプリミティブ/原始的な)方法ですが、非常に汎用的で、次のパターンが可能です。

特にdebootstrap編ではできなかった「32ビット版と64ビット版の入れ替え」が可能なのが本tar編の最大の特長といえるでしょう。

本Tipsの対象

本Tipsの対象外

これも技術的には十分可能ですが、本Wikiや本Tipsの趣旨外のため、ここでは対象外とします。

必要なもの

設定ファイル

tarを専用サーバーにアップロード&解凍(展開)後に、最低限必要となる設定ファイルは次の通りです。

ここまでを正しく設定すればとりあえず新Ubuntuが起動します。

ただし、udevなLinuxやUbuntu間での移行の場合は、このままではeth0がうまく認識されず、sshでアクセすることができない場合があります。

eth0が正しく認識され、sshでアクセス可能にするには、次の設定ファイルの編集(調整)が必要となります。

その他

Ubuntu to Ubuntu(U2U)の場合のメリット

UbuntuからUbuntuへ移行(Ubuntu to Ubuntu: U2U)する場合、「コピー」となっているファイルは、元Ubuntuの設定ファイルをそのまま新UbuntuにコピーするだけでOkです。

よって、U2Uの場合、実際に編集が必要となる設定ファイルは「要編集」となっている2つのファイル(/etc/fstabと/boot/grub/grub/cfg)だけです。

apparmor

このtarでの移行方法でも、apparmorが原因でうまくいかない場合があったりします。

ですので、念のため元OS側でも新OS側でも、apparmorとその関連パッケージをアンインストール(Ubuntuの場合は、apt-get removeとdpkg --purge)しておくことを推奨します。

実際の手順

今回は、次の目標で進めます。

使用する機器

専用サーバー(役のPC)への旧OSのインストール

まず、専用サーバー役のPCに32ビット版Ubuntuをインストールします。ここでは 8.04 LTS(Hardy Heron)サーバー版の32ビット(i386)のCDインストーラーを用いました。

専用サーバーは固定IPアドレスである必要がありますので、ここでは、ネットワーク設定を自動設定(DHCP)ではなくマニュアルを選びましょう。ここでは、ご家庭やオフィス等のLAN上でよく用いられるプライベートアドレス空間を用い、IPアドレス10.0.1.100、サブネットマスク255.255.255.0、デフォルトゲートウェイ10.0.1.1、ネームサーバー8.8.8.8で設定しました。

パーティション構成は、/dev/sda1に100MB・ext2で/boot、/dev/sda2に62GB・ext3で/(ルート)、/dev/sda3に2GBでswapとします。

インストーラーの終盤でのソフトウェアパッケージの選択では、openssh-serverを選択します。

専用サーバー(役のPC)での準備

専用サーバーにssh等でログインします。

専用サーバーに共通の初期設定

これは必須な作業ではありませんが、専用サーバーのログイン直後に最低限しておくべき設定・作業をしてしまいましょう。

apparmor関連パッケージの削除

次に、apparmor関連パッケージを削除してしまいましょう。

▼次のコマンドでapparmorという文字列を含むパッケージを検索します。

dpkg -l |grep apparmor

▼検索されたapparmor関連パッケージをapt-get removeで削除します。

sudo apt-get remove apparmor apparmor-utils

▼念のためdpkg --purgeで完全に削除します。

sudo dpkg --purge apparmor apparmor-utils

9.10へのアップグレード

次に、今回は新OSの/(ルート)パーティションをLVMとext4化しますので、ブートローダーがLVMとext4に対応した9.10 Karmic Koala(あるいはそれ移行のバージョン)にアップグレードします。

▼念のため、現状のsources.listのバックアップコピーをとっておきましょう。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.0

▼/etc/apt/sources.listを編集します。

sudo vi /etc/apt/sources.list

▼編集完了後、/etc/apt/sources.listをcat確認します。

cat /etc/apt/sources.list

▼次のように表示されるように編集して下さい。

deb http://jp.archive.ubuntu.com/ubuntu/ karmic main restricted
deb http://jp.archive.ubuntu.com/ubuntu/ karmic-updates main restricted
deb http://jp.archive.ubuntu.com/ubuntu/ karmic universe
deb http://jp.archive.ubuntu.com/ubuntu/ karmic-updates universe
deb http://jp.archive.ubuntu.com/ubuntu/ karmic multiverse
deb http://jp.archive.ubuntu.com/ubuntu/ karmic-updates multiverse
deb http://security.ubuntu.com/ubuntu karmic-security main restricted
deb http://security.ubuntu.com/ubuntu karmic-security universe
deb http://security.ubuntu.com/ubuntu karmic-security multiverse

▼アップグレードします。

sudo apt-get update && sudo apt-get dist-upgrade

必要なパッケージのインストール

▼別途必要なパッケージをインストールします。ここではgrub2(パッケージ名grub-pc)と、lvm2をインストールします。

sudo apt-get install grub-pc

sudo apt-get install lvm2

パーティション構成の変更

次にパーティション構成を変更していきます。ここでは、現swap領域を、新Ubuntuの/(ルート)パーティションにします。

スワップ領域の削除

▼まずfreeコマンドでswapを確認します。

free

▼次にswapoff -aでスワップを停止します。

sudo swapoff -a

▼freeコマンドでswapが停止したことを確認します。

free

次回起動時にswapが動作しないように/etc/fstabを編集しておきましょう。

▼まずは、現在の/etc/fstabのバックアップコピーをとっておきましょう。

sudo cp /etc/fstab /etc/fstab.0

▼/etc/fstabを編集します。

sudo vi /etc/fstab

swapの行の先頭に#を入力します。

▼編集が完了したら、念のため、cat確認します。

cat /etc/fstab

fdiskでのパーティション構成の編集

次にfdiskでパーティション構成を編集します。

▼現状をdf確認します。

df

▼fdiskコマンドでHDD(/dev/sda)を編集します。

sudo fdisk /dev/sda

▼現在の状況は次の通りとなります。

/dev/sda1 100MB, ext2
/dev/sda2 63GB, ext3
/dev/sda3 2GB, LVM

▼パーティション構成を変更しましたので、念のため、ここでいったん再起動しておきましょう。

sudo reboot

LVMの設定

起動後、再度ログインし、LVMを設定していきます。

▼まず、LVM物理ボリュームを作成します。

sudo pvcreate /dev/sda3

▼LVM物理ボリュームを確認します。

sudo pvdisplay

▼次に、LVMボリュームグループを作成します。ここでは「lvm」という名前のボリュームグループとします。下記のコマンドで「lvm」という名前のボリュームグループを、/dev/sda3というLVM物理ボリューム上に作成します。

sudo vgcreate lvm /dev/sda3

▼LVMボリュームグループを確認します。

sudo vgdisplay

▼次に、LVM論理グループを作成します。ここでは「root」という名前のLVM論理ボリュームを作成します。「-L」オプションで容量を指定し、「-n」オプションで論理ボリュームの名前を指定して、LVMボリュームグループ名「lvm」上に作成します。

sudo lvcreate -L 10g -n root lvm

▼LVM論理ボリュームを確認します。

sudo lvdisplay

▼LVMの編集が完了したら、念のため、システムをリブートしておきましょう。

新OS用のパーティションのext4フォーマット

再起動後、ログインしたら、作成したLVM論理ボリュームをフォーマットします。

LVM論理ボリューム「root」は/dev/lvm/rootまたは/dev/mapper/lvm-rootという名前になります。

▼ext4でフォーマットします。

sudo mkfs.ext4 /dev/lvm/root

▼フォーマットが完了したら、そのマウントポイントを作成します。ここでは/mnt以下にamd64rootというディレクトリを作成します。

sudo mkdir /mnt/amd64root

▼LVM領域をフォーマットしたので、念のため再起動しておきますが、その前にきちんとフォーマットされマウントされるかどうかを確認することを兼ねて、/etc/fstabを編集して、次回起動時に/dev/lvm/rootが/mnt/amd64rootにマウントされるようにしましょう。

sudo vi /etc/fstab

▼システムを再起動します。

sudo reboot

▼再起動後、ログインしたら、dfコマンドで、LVM領域(/dev/lvm/rootまたは/dev/mapper/lvm-root)が/mnt/amd64rootにきちんとマウントされていることを確認しましょう。

df

ls -al /mnt/amd64

マウントができたら専用サーバー側の準備はできましたので、おてもとPC上での作業を行っていきます。

ローカルPC(おてもとPC)上での操作

新OSの準備

おてもとPCには、64ビット版Ubuntu(amd64)をインストールします。

これがそのまま専用サーバー上で動作することになりますので、インストール完了後にシステムが再起動したら、ログインして、次の操作をしましょう。

次は必須ではありませんが、是非やっておいた方が良い操作です。

補助OSの準備

新OSのインストールが完了したら、同じおてもとPC上にもう一つUbuntu(補助OS)をインストールしていきます。ここでは新OSと同様にUbuntu 9.10 (Karmic Koala)の64ビット版(amd64)をそのまま用いました。

ポイントは、次の通り。

インストールが完成したら、システムを再起動します。ブートローダーをHDDの先頭(MBR)にインストールしましたので、新しいUbuntu(補助OS)が起動されます。

新しいUbuntu(補助OS)が起動したらログインして、前のUbuntu(新OS)をtarで固めましょう。

▽前のUbuntu(新OS)の領域のためのマウントポイントを作成します。

sudo mkdir /mnt/amd64root

▽作成したマウントポイントに前のUbuntu(新OS)のパーティションをマウントします。

sudo mount -t ext4 /dev/sda1 /mnt/amd64root

▽念のためdfとlsで確認します。

df

ls -al /mnt/amd64root

▽マウントポイントに移動します。

cd /mnt/amd64root

▽tarでかためます。ここでは、amd64root.tarというファイル名でホームディレクトリ(ここでは/home/ubuntu)以下に作成します。

sudo tar cfz /home/ubuntu/amd64root.tar .

▽ホームディレクトリに戻ります。

cd

▽pwdで現在のディレクトリを確認します。ubuntuというユーザー名ですのでホームディレクトリは/home/ubuntuとなるはずです。

pwd
/home/ubuntu

▽作成されたtarファイルを確認します。

ls -al

▽scpコマンドでtarファイルを専用サーバーにアップロードします。

scp /home/ubuntu/amd64root.tar [email protected]:

scpコマンドのすぐ後に「アップロードしたいファイル名」、次に「アップロード先のホストのユーザー名@IPアドレス」を指定します。

▽アップロードにはしばらく時間がかかります。

専用サーバー(役のPC)=元OS側での作業

▼tarファイルのアップロードが完了したら、専用サーバー側でアップロードされたtarファイルを確認します。

ls -al

▼tarファイルを、新OS用のマウントポイント/mnt/amd64rootにコピーします。

sudo cp amd64root.tar /mnt/amd64root

▼/mnt/amd64rootに移動します。

cd /mnt/amd64root

▼tarを解凍(展開)します。

sudo tar xfz amd64root.tar

▼必要なファイルをコピーします。

sudo cp /etc/fstab etc/fstab
sudo cp /etc/hosts etc/hosts
sudo cp /etc/hostname etc/hostname
sudo cp /etc/network/interfaces etc/network/interfaces
sudo cp /etc/udev/rules.d/* etc/udev/rules.d/

▼blkidコマンドでUUIDを調べておきます。

sudo blkid

▼編集が必要なファイルを編集します。

sudo vi etc/fstab

編集のポイントは次の通りです。

▼次に、/mnt/amd64root/boot以下のカーネル関連のファイルを/bootにコピーします。

sudo cp /mnt/amd64root/boot/*2.6* /boot

▼/mnt/amd64root/boot以下のファイルを、念のためtarでバックアップコピーを作成しておきます。

cd /mnt/amd64root/boot
sudo tar ../amd64boot.tar .

▼/mnt/amd64root/boot以下のファイルは削除してしまいます。

sudo rm -rf /mnt/amd64root/boot/*

▼update-grubでブートローダーに先程コピーした64ビットなカーネルを認識させます。

sudo update-grub

▼/boot/grub/grub.cfgのmenuentryの行を検索します。

sudo cat /boot/grub/grub.cfg |grep menuentry

▼/boot/grub/grub.cfgのバックアップコピーをとっておきます。

sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.0

▼/boot/grub/grub.cfgを編集します。

sudo vi /boot/grub/grub.cfg

変更するポイントは次の通りです。

▼念のためcat確認し、変更をdiff比較します。

sudo cat /boot/grub/grub.cfg

sudo diff /boot/grub/grub.cfg /boot/grub/grub.cfg.0

きちんと変更されていることを確認します。

▼以上で、変更は完了です。sudo rebootで再起動をかけます。再起動したら64ビット版Ubuntuで起動されるはずです。

sudo reboot

▼sshで新OSにユーザーubuntuでアクセスします。

ssh -l ubuntu 10.0.1.100

▼/(ルート)をls確認して、lib64ディレクトリが存在すれば64ビット環境となっていることを確認できます。

ls /

以上の通りです。

UbuntuJapaneseWiki: UbuntuTips/DedicatedServer/OverSSHbyTar (最終更新日時 2012-01-10 11:49:09 更新者 匿名)