対象とするUbuntuのバージョン
- 9.10 Karmic Koala
本Tipsの対象ユーザー
- Ubuntu以外のLinuxディストリビューションがデフォルトでセットアップされている専用サーバーをUbuntu化したい方
本Tipsの目的
専用サーバーには一般的にRed Hat Enterprise Linux(RHEL)やそのフリー版であるCentOS等がデフォルトでインストールされており、Ubuntuがデフォルトでインストールされていることが少ないのが現状でしょう。
こうした場合に、ネットワーク越しにSSH(や、Telnet)等を使って、Ubuntuをインストールする手順を具体的にステップバイステップで解説します。
また、こうしたTipsやHowToは、なるべく一般的に記述するのが普通ですが、リモートインストールは非常に面倒で複雑で失敗が許されない作業ですので、より具体的・実践的に、つまり具体的な専用サーバーのプロバイダ名まで特定して、実体験を記述するという実践的なスタイルをあえて取りたいと思います。
対象とする専用サーバー
今回は、さくらインターネットの専用サーバについて取り上げます。具体的には次のプラン名・モデル名です。
- 専用サーバのプロバイダ名「サービス名」プラン名「モデル名」
- さくらインターネット「専用サーバ」RAIDプラン「Xeonモデル」
デフォルトのOSとして次の選択肢があります。
- CentOS 4/5
- CentOS 4 x86_64/5 x86_64
- Ubuntu 8.04
- FreeBSD 6.4
- Red Hat Enterprise Linux 5 Server
- Red Hat Enterprise Linux 5 Server x86_64
- Red Hat Enterprise Linux ES 4
- Red Hat Enterprise Linux ES 4 x86_64
- Microsoft Windows Server 2003/2008
このうち、FreeBSD 6.4とMicrosoft Windows Server 2003/2008は本文書の対象外とします。
ですので、次のOSが対象となります。
- CentOS 4/5
- CentOS 4 x86_64/5 x86_64
- Ubuntu 8.04
- Red Hat Enterprise Linux 5 Server
- Red Hat Enterprise Linux 5 Server x86_64
- Red Hat Enterprise Linux ES 4
- Red Hat Enterprise Linux ES 4 x86_64
上記のいずれを選んでも、Ubuntu化することが可能です。
ただし、元OSが32bit版の場合は、64bit版にすることはできません。
ですので、64bit版のUbuntuにしたい場合は、次の64bit版のいずれかを選択する必要があります。
- CentOS 4 x86_64
- CentOS 5 x86_64
- Red Hat Enterprise Linux 5 Server x86_64
- Red Hat Enterprise Linux ES 4 x86_64
なお、さくらインターネットさんのサポートに確認したところ(2009年12月末現在)、Ubuntu 8.04は32bit版のみの提供で、64bit版は選択できません。
(今回本文書を作成するきっかけは、さくらインターネットさんの専用サーバで、どうしてもUbuntuの64bit版が使用したかったからです。2010年4月にリリースされる次期LTSのUbuntu 10.4で64bit版Ubuntuが提供されることを期待します。)
今回は、デフォルトOSとしてCentOS 5 x86_64を選択し、2009年12月末時点でのUbuntu最新版 9.10の64bit版をSSH経由でリモートインストールする手順を解説します。
また、こうした作業のコツですが、おてもとに同じような環境を構築して(実PC環境がベストですが、VMware、VirtualBox、Virtual-PC、Parallels等の仮想環境でもかなり参考にはなります)、参考にしたり、試しながらやるとよろしいかと思います。
本文書の原作者もローカルな環境を構築し、それを参考にしたり、試しながら、実際の専用サーバで作業を進めました。
実はこの作業は慣れると意外と簡単で、海外のプロバイダさんではスクリプトで自動化しているところもあるほどです。
また、CentOSやRHELだけでなく、SuSEを含め、Linuxであれば全てのディストリビューションで同様に行うことが可能です。
興味のある方は、本文書などを参考に試してみると良いでしょう。
今回作業での目標
- デフォルトOS(CentOS 5 x86_64)から64bit版Ubuntuへ(2010年1月現在の最新版Ubuntu 9.10 Karmic Koala)
実際の手順
オンラインでの新規OSのインストールではスワップ領域を新OSの領域にするのが定石です。
まずはスワップ領域がどうなっているかを知るためにも、ファイルシステムやパーティションの現在の状況を確認しましょう。次の3つを用います。
- dfコマンド
- /etc/fstabファイル
- fdiskコマンド
▼dfコマンド
[admin@localhost ~]$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 470886936 1877276 444704120 1% / /dev/sda1 101086 17674 78193 19% /boot tmpfs 1029004 0 1029004 0% /dev/shm
▼/etc/fstab
[admin@localhost ~]$ cat /etc/fstab /dev/sda2 / ext3 defaults 1 1 /dev/sda1 /boot ext3 defaults 1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/sda3 swap swap defaults 0 0
▼fdiskコマンド
[admin@localhost ~]$ sudo fdisk /dev/sda The number of cylinders for this disk is set to 60786. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help):
▼pコマンドで現在の状況を確認します。
Command (m for help): p Disk /dev/sda: 499.9 GB, 499989348352 bytes 255 heads, 63 sectors/track, 60786 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 60531 486110835 83 Linux /dev/sda3 60532 60786 2048287+ 82 Linux swap / Solaris
これらの結果から、この専用サーバーには/dev/sdaというディスクがあり、/dev/sda1は/bootパーティション、/dev/sda2は/(ルート)パーティション、/dev/sda3はスワップとなっているのがわかります。
今回の場合では、/dev/sda3のスワップ領域を、新OSの領域に用います。
まずは、念のためスワップを停止させましょう。
▼freeコマンドでスワップがオン(稼働中)であることを確認します。
[admin@localhost ~]$ free total used free shared buffers cached Mem: 2058012 202096 1855916 0 12676 131504 -/+ buffers/cache: 57916 2000096 Swap: 2048276 0 2048276
▲「Swap」行の「total」や「free」の欄が0(ゼロ)でない数字になっていて、スワップが動作していることがわかります。
▼swapoffコマンドでスワップをオフにします。
[admin@localhost ~]$ sudo swapoff /dev/sda3
▼freeコマンドで、スワップがオフになったことを確認します。
[admin@localhost ~]$ free total used free shared buffers cached Mem: 2058012 200984 1857028 0 12648 131504 -/+ buffers/cache: 56832 2001180 Swap: 0 0 0
▲「Swap」行の「total」や「free」の欄が0(ゼロ)となっていて、スワップが停止していることがわかります。
念のため、/etc/fstabでスワップをはずしておきましょう。
▼現在の/etc/fstabを確認します。
[admin@localhost ~]$ cat /etc/fstab /dev/sda2 / ext3 defaults 1 1 /dev/sda1 /boot ext3 defaults 1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/sda3 swap swap defaults 0 0
▼念のため、オリジナルを別名で保存しておく。今回は/etc/fstab.0としてコピーしておきます。
[admin@localhost ~]$ sudo cp /etc/fstab /etc/fstab.0
▼コピーされたことを確認します。
[admin@localhost ~]$ ls -al /etc/fstab* -rw-r--r-- 1 admin admin 532 Dec 22 20:48 /etc/fstab -rw-r--r-- 1 admin admin 532 Dec 29 01:10 /etc/fstab.0
▼/etc/fstabをviで編集します。
[admin@localhost ~]$ sudo vi /etc/fstab
▼変更後の/etc/fstabを確認します。
[admin@localhost ~]$ cat /etc/fstab
/dev/sda2 / ext3 defaults 1 1 /dev/sda1 /boot ext3 defaults 1 2 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 #/dev/sda3 swap swap defaults 0 0
▼念のため、変更箇所を確認します。
[admin@localhost ~]$ diff /etc/fstab /etc/fstab.0
7c7 < #/dev/sda3 swap swap defaults 0 0 --- > /dev/sda3 swap swap defaults 0 0
▲「#」がなくなっただけです。
次に、fdiskコマンドで実際にパーティションをいじりましょう。
▼fdiskコマンドを実行する。
[admin@localhost ~]$ sudo fdisk /dev/sda
The number of cylinders for this disk is set to 60786. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help):
▼pコマンドで現在の状況を確認します。
Command (m for help): p
Disk /dev/sda: 499.9 GB, 499989348352 bytes 255 heads, 63 sectors/track, 60786 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 60531 486110835 83 Linux /dev/sda3 60532 60786 2048287+ 82 Linux swap / Solaris
▼dコマンド(パーティションの削除)でスワップ領域であるパーティション番号3を削除します。
Command (m for help): d Partition number (1-4): 3
▼pコマンドで、削除されたことを確認します。
Command (m for help): p Disk /dev/sda: 499.9 GB, 499989348352 bytes 255 heads, 63 sectors/track, 60786 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 60531 486110835 83 Linux
新しいパーティションを作成しますが、ここでは2GBあった旧環境のスワップ領域を、新環境の/(ルート)とスワップに1GBずつに使用します。
スワップは後からいくらでも作成できますので、2GB全部を/(ルート)にしてもかまいません。
▼nコマンド(パーティションの新規作成)で、新しいパーティションを作成します。
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (60532-60786, default 60532): Using default value 60532 Last cylinder or +size or +sizeM or +sizeK (60532-60786, default 60786): +1000M
Command (m for help): n Command action e extended p primary partition (1-4) p Selected partition 4 First cylinder (60655-60786, default 60655): Using default value 60655 Last cylinder or +size or +sizeM or +sizeK (60655-60786, default 60786): Using default value 60786
▼pコマンドで現在の状況を確認します。
Command (m for help): p Disk /dev/sda: 499.9 GB, 499989348352 bytes 255 heads, 63 sectors/track, 60786 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 60531 486110835 83 Linux /dev/sda3 60532 60654 987997+ 83 Linux /dev/sda4 60655 60786 1060290 83 Linux
▼aコマンドで、/(ルート)にする予定の/dev/sda3を起動可能にします。
Command (m for help): a Partition number (1-4): 3
▲参考情報
▼pコマンドで確認します。/dev/sda3のBootに*が表示されていることを確認しましょう。
Command (m for help): p Disk /dev/sda: 499.9 GB, 499989348352 bytes 255 heads, 63 sectors/track, 60786 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 60531 486110835 83 Linux /dev/sda3 * 60532 60654 987997+ 83 Linux /dev/sda4 60655 60786 1060290 83 Linux
▼tコマンドで、スワップ領域のパーティションタイプをスワップに設定します。
Command (m for help): t Partition number (1-4): 4 Hex code (type L to list codes): 82 Changed system type of partition 4 to 82 (Linux swap / Solaris)
▼pコマンドで変更されたことを確認します。
Command (m for help): p Disk /dev/sda: 499.9 GB, 499989348352 bytes 255 heads, 63 sectors/track, 60786 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 60531 486110835 83 Linux /dev/sda3 * 60532 60654 987997+ 83 Linux /dev/sda4 60655 60786 1060290 82 Linux swap / Solaris
▼最後に、wコマンドで変更内容を確定します。
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks.
▼念のため、syncコマンドを数回実行しておきましょう。
[admin@localhost ~]$ sudo sync [admin@localhost ~]$ sudo sync [admin@localhost ~]$ sudo sync
▼システムを再起動します。
[admin@localhost ~]$ sudo shutdown -r now
または、
[admin@localhost ~]$ sudo reboot
▼sshでログインします。
Shige-no-MacBook:~ shige$ ssh -l admin 1xx.xx.2xx.5x [email protected]'s password: Last login: Tue Dec 29 00:58:37 2009 from 1x4.x3.x4.1x5 SAKURA Internet [DEDICATED SERVER SERVICE]
▼swapを作成します。
[admin@localhost ~]$ sudo mkswap /dev/sda4 Setting up swapspace version 1, size = 1085730 kB
▼swaponコマンドで、swapを有効にします。
[admin@localhost ~]$ sudo swapon /dev/sda4
▼swapが有効になったことをfreeコマンドで確認します。
[admin@localhost ~]$ free total used free shared buffers cached Mem: 2058012 201088 1856924 0 12752 131160 -/+ buffers/cache: 57176 2000836 Swap: 1060280 0 1060280
▼/etc/fstabでスワップをマウントするように設定します。
[admin@localhost ~]$ vi /etc/fstab
▼差異をdiffコマンドで確認します。
[admin@localhost ~]$ diff /etc/fstab /etc/fstab.0 7,9c7 < #/dev/sda3 swap swap defaults 0 0 < /dev/sda4 swap swap defaults 0 0 < --- > /dev/sda3 swap swap defaults 0 0
▼システムを再起動します。
[admin@localhost ~]$ sudo shutdown -r now
または、
[admin@localhost ~]$ sudo reboot
▼sshでログインします。
Shige-no-MacBook:~ shige$ ssh -l admin 1xx.xx.2xx.5x [email protected]'s password: Last login: Tue Dec 29 00:58:37 2009 from 1x4.x3.x4.1x5 SAKURA Internet [DEDICATED SERVER SERVICE]
▼/dev/sda3に/(ルート)パーティションを作成します。ここでは念のためext3で作成します。
[admin@localhost ~]$ sudo mkfs.ext3 /dev/sda3 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 123648 inodes, 246999 blocks 12349 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=255852544 8 block groups 32768 blocks per group, 32768 fragments per group 15456 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376 Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 39 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
新しい環境をインストールするパーティション/dev/sda3をマウントしていきましょう。
▼/mntの状況を確認します。
[admin@localhost ~]$ ls -al /mnt total 16 drwxr-xr-x 2 root root 4096 Mar 12 2009 . drwxr-xr-x 23 root root 4096 Dec 29 01:35 ..
▼/mnt/ubuntuを作成します。
[admin@localhost ~]$ sudo mkdir /mnt/ubuntu
▼/mnt/ubuntuが作成されたことを確認します。
[admin@localhost ~]$ ls -al /mnt total 20 drwxr-xr-x 3 root root 4096 Dec 29 02:09 . drwxr-xr-x 23 root root 4096 Dec 29 01:35 .. drwxr-xr-x 2 root root 4096 Dec 29 02:09 ubuntu
▼/dev/sda3を/mnt/ubuntuにマウントします。
[admin@localhost ~]$ sudo mount /dev/sda3 /mnt/ubuntu
▼dfコマンドでマウントされたことを確認します。
[admin@localhost ~]$ df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/sda2 ext3 450G 1.8G 425G 1% / /dev/sda1 ext3 99M 18M 77M 19% /boot tmpfs tmpfs 1005M 0 1005M 0% /dev/shm /dev/sda3 ext3 950M 18M 885M 2% /mnt/ubuntu
次に、CentOS 5(64ビット版)で動作するdebootstrapのrpmを探します。
CentOS 5は、Red Hat Enterprise Linux 5.x互換なのでそれを用います。
http://rpm.pbone.net/index.php3/stat/4/idpl/12548943/com/debootstrap-1.0.7-3.el5.noarch.rpm.html
▼rpmをダウンロードします。
[admin@localhost ~]$ wget ftp://mirror.switch.ch/pool/1/mirror/epel/5/x86_64/debootstrap-1.0.7-3.el5.noarch.rpm --2009-12-29 02:30:05-- ftp://mirror.switch.ch/pool/1/mirror/epel/5/x86_64/debootstrap-1.0.7-3.el5.noarch.rpm => `debootstrap-1.0.7-3.el5.noarch.rpm' Resolving mirror.switch.ch... 130.59.10.36, 2001:620:0:8::20 Connecting to mirror.switch.ch|130.59.10.36|:21... connected. Logging in as anonymous ... Logged in! ==> SYST ... done. ==> PWD ... done. ==> TYPE I ... done. ==> CWD /pool/1/mirror/epel/5/x86_64 ... done. ==> SIZE debootstrap-1.0.7-3.el5.noarch.rpm ... 55613 ==> PASV ... done. ==> RETR debootstrap-1.0.7-3.el5.noarch.rpm ... done. Length: 55613 (54K) 100%[========================================================================================>] 55,613 66.4K/s in 0.8s 2009-12-29 02:30:10 (66.4 KB/s) - `debootstrap-1.0.7-3.el5.noarch.rpm' saved [55613]
▼ダウンロードされたrpmを確認します。
[admin@localhost ~]$ ls -al total 124 drwxr-x--- 2 root root 4096 Dec 29 02:30 . drwxr-xr-x 23 root root 4096 Dec 29 01:35 .. -rw------- 1 root root 1249 Dec 29 01:33 .bash_history -rw-r--r-- 1 root root 24 Jan 6 2007 .bash_logout -rw-r--r-- 1 root root 191 Jan 6 2007 .bash_profile -rw-r--r-- 1 root root 176 Jan 6 2007 .bashrc -rw-r--r-- 1 root root 100 Jan 6 2007 .cshrc -rw------- 1 root root 35 Dec 29 00:53 .lesshst -rw-r--r-- 1 root root 129 Jan 6 2007 .tcshrc -rw-r--r-- 1 root root 55613 Dec 29 02:30 debootstrap-1.0.7-3.el5.noarch.rpm
▼debootstrapのrpmをインストールします。
[admin@localhost ~]$ sudo rpm -ivh debootstrap-1.0.7-3.el5.noarch.rpm warning: debootstrap-1.0.7-3.el5.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 217521f6 Preparing... ########################################### [100%] 1:debootstrap ########################################### [100%]
Ubuntu 9.10(karmic)は最新版なので、このdebootstrapにはkarmic対応が欠けています。
debianの最新版debootstrapのチェンジログをチェックして対策を考えます。
http://changelogs.ubuntu.com/changelogs/pool/main/d/debootstrap/debootstrap_1.0.20/changelog
debootstrap (1.0.13) unstable; urgency=low [ Otavio Salvador ] * Apply patch from Luca Favatella <[email protected]> to improve coding style. [ Colin Watson ] * Add (Ubuntu) karmic as a symlink to gutsy. -- Colin Watson <[email protected]> Fri, 24 Apr 2009 20:08:24 +0100
karmicのシムリンクをgutsyにはると良いようです。
▼debootstrapのscriptsのディレクトリに移動します。
[admin@localhost ~]$ cd /usr/share/debootstrap/scripts
▼シムリンクをはる前の状況を確認します。
[admin@localhost scripts]$ ls -al total 136 drwxr-xr-x 2 root root 4096 Dec 29 02:34 . drwxr-xr-x 3 root root 4096 Dec 29 02:34 .. -rw-r--r-- 1 root root 5568 Oct 21 2007 breezy -rw-r--r-- 1 root root 5604 Oct 21 2007 dapper -rw-r--r-- 1 root root 6269 Oct 21 2007 edgy lrwxrwxrwx 1 root root 3 Dec 29 02:34 etch -> sid -rw-r--r-- 1 root root 6389 Oct 21 2007 feisty -rw-r--r-- 1 root root 5806 Oct 21 2007 gutsy lrwxrwxrwx 1 root root 5 Dec 29 02:34 hardy -> gutsy -rw-r--r-- 1 root root 7948 Oct 21 2007 hoary -rw-r--r-- 1 root root 5845 Oct 21 2007 hoary.buildd lrwxrwxrwx 1 root root 3 Dec 29 02:34 lenny -> sid -rw-r--r-- 1 root root 3424 Oct 21 2007 potato -rw-r--r-- 1 root root 8405 Oct 21 2007 sarge -rw-r--r-- 1 root root 5690 Oct 21 2007 sarge.buildd -rw-r--r-- 1 root root 5920 Oct 21 2007 sarge.fakechroot -rw-r--r-- 1 root root 5935 Oct 21 2007 sid -rw-r--r-- 1 root root 7461 Oct 21 2007 warty -rw-r--r-- 1 root root 5727 Oct 21 2007 warty.buildd -rw-r--r-- 1 root root 7740 Oct 21 2007 woody -rw-r--r-- 1 root root 5727 Oct 21 2007 woody.buildd
▼シムリンクをはります。
[admin@localhost scripts]$ sudo ln -s gutsy karmic
▼シムリンクがはられたことを確認します。
[admin@localhost scripts]$ ls -al total 136 drwxr-xr-x 2 root root 4096 Dec 29 04:07 . drwxr-xr-x 3 root root 4096 Dec 29 02:34 .. -rw-r--r-- 1 root root 5568 Oct 21 2007 breezy -rw-r--r-- 1 root root 5604 Oct 21 2007 dapper -rw-r--r-- 1 root root 6269 Oct 21 2007 edgy lrwxrwxrwx 1 root root 3 Dec 29 02:34 etch -> sid -rw-r--r-- 1 root root 6389 Oct 21 2007 feisty -rw-r--r-- 1 root root 5806 Oct 21 2007 gutsy lrwxrwxrwx 1 root root 5 Dec 29 02:34 hardy -> gutsy -rw-r--r-- 1 root root 7948 Oct 21 2007 hoary -rw-r--r-- 1 root root 5845 Oct 21 2007 hoary.buildd lrwxrwxrwx 1 root root 5 Dec 29 04:07 karmic -> gutsy lrwxrwxrwx 1 root root 3 Dec 29 02:34 lenny -> sid -rw-r--r-- 1 root root 3424 Oct 21 2007 potato -rw-r--r-- 1 root root 8405 Oct 21 2007 sarge -rw-r--r-- 1 root root 5690 Oct 21 2007 sarge.buildd -rw-r--r-- 1 root root 5920 Oct 21 2007 sarge.fakechroot -rw-r--r-- 1 root root 5935 Oct 21 2007 sid -rw-r--r-- 1 root root 7461 Oct 21 2007 warty -rw-r--r-- 1 root root 5727 Oct 21 2007 warty.buildd -rw-r--r-- 1 root root 7740 Oct 21 2007 woody -rw-r--r-- 1 root root 5727 Oct 21 2007 woody.buildd
▼debootstrapコマンドを実行して、/mnt/ubuntu以下に新しいUbuntuをインストールします。
[admin@localhost ~]$ sudo /usr/sbin/debootstrap --arch amd64 karmic /mnt/ubuntu http://archive.ubuntu.com/ubuntu
▼procをマウントします。
[admin@localhost ~]$ sudo mount -t proc proc /mnt/ubuntu/proc
▼/devをマウントします。
[admin@localhost ~]$ sudo mount -o bind /dev /mnt/ubuntu/dev
▼新しいUbuntu環境にchrootします。
[admin@localhost ~]$ sudo LANG= chroot /mnt/ubuntu /bin/bash
これで新しいUbuntu環境にログインできたと思います。
▼まずは、rootのパスワードを作成しておきます。
root@localhost:/# passwd Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
▼Shadowパスワードを有効にしておきます。
root@localhost:/# dpkg-reconfigure --default-priority passwd
▼ネットワークのテストも兼ねて、apt-get updateしてみます。
root@localhost:/# apt-get update Get:1 http://archive.ubuntu.com karmic Release.gpg [189B] Hit http://archive.ubuntu.com karmic Release Hit http://archive.ubuntu.com karmic/main Packages Fetched 189B in 1s (126B/s) Reading package lists... Done
▼sshサーバーをインストールします。debian/ubuntuではopenssh-serverというパッケージ名です。
root@localhost:/# apt-get install openssh-server
▼sshサーバーがインストールされたことを確認します。
root@localhost:/# dpkg -l |grep ssh ii openssh-client 1:5.1p1-6ubuntu2 secure shell client, an rlogin/rsh/rcp repla ii openssh-server 1:5.1p1-6ubuntu2 secure shell server, an rshd replacement
▼念のため、sshdにrootでログイン可能かどうか確認する。
root@localhost:/# cat /etc/ssh/sshd_config |grep Root PermitRootLogin yes
「PermitRootLogin」が「yes」なので、sshでrootでログイン可能なデフォルト設定です。
セキュリティに厳しい方は、「yes」を「no」に変更し、一般ユーザーを作成して下さい。
▼adduserコマンドで一般ユーザー(なんでも結構ですが、ここではzen)を作成します。
root@localhost:~# adduser zen Adding user `zen' ... Adding new group `zen' (1000) ... Adding new user `zen' (1000) with group `zen' ... Creating home directory `/home/zen' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for zen Enter the new value, or press ENTER for the default Full Name []: Zen Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y
▼一般ユーザーzenが作成されたことを確認します。
root@localhost:~# cat /etc/passwd |grep zen zen:x:1000:1000:Zen,,,:/home/zen:/bin/bash
次に、一般ユーザーzenがsudoでrootな権限を使えるように設定します。 /etc/sudoersファイルにて設定されています。
▼デフォルトの/etc/sudoersファイルを確認します。
root@localhost:~# cat /etc/sudoers # /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. # Defaults env_reset # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL) ALL # Uncomment to allow members of group sudo to not need a password # (Note that later entries override this, so you might need to move # it further down) # %sudo ALL=NOPASSWD: ALL
▼/etc/sudoersは直接編集せず、visudoコマンドを実行して/etc/sudoersファイルを編集します。
root@localhost:~# visudo
▼/etc/sudoersの末尾の「%sudo ALL=NOPASSWD: ALL」の行の先頭の#を削除します。
root@localhost:~# cat /etc/sudoers # /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. # Defaults env_reset # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL) ALL # Uncomment to allow members of group sudo to not need a password # (Note that later entries override this, so you might need to move # it further down) %sudo ALL=NOPASSWD: ALL
▼一般ユーザーzenをsudoグループに登録します。
root@localhost:~# usermod -G sudo zen
▼一般ユーザーzenがsudoグループに登録されたことを確認します。
root@localhost:~# cat /etc/group |grep sudo sudo:x:27:zen
▼念のため、一般ユーザーzenでroot権限が行使可能かどうかをapt-get updateでチェックします。
zen@localhost:~$ sudo apt-get update Hit http://security.ubuntu.com karmic-security Release.gpg Hit http://archive.ubuntu.com karmic Release.gpg Hit http://security.ubuntu.com karmic-security Release Hit http://archive.ubuntu.com karmic Release Hit http://archive.ubuntu.com karmic/main Packages Hit http://security.ubuntu.com karmic-security/main Packages Reading package lists... Done
▼次に、linuxカーネルイメージをインストールします。ここでは、サーバー用でlinux-image-serverを選択しましょう。
root@localhost:~# apt-get install linux-image-server
この際、grubが一緒にインストールされます。
Ubuntu 9.10 (Karmic Koala)ではgrub2(Ubuntuでの実際のパッケージ名はgrub-pc)が標準となっています。
▼grubのバージョンを確認します。
root@localhost:/# grub-install -v grub-install (GNU GRUB 1.97~beta4)
表示されるバージョンが1.97以降であれば新しいgrub2です。
grub2では設定ファイルが/boot/grub/grub.cfgに変更になりました。
この/boot/grub/grub.cfgは自動的に生成され、ユーザーが直接編集してはいけません。
▼/boot/grub/grub.cfgを確認します。
root@localhost:/# cat /boot/grub/grub.cfg
次のように表示されます。
# # DO NOT EDIT THIS FILE # # It is automatically generated by /usr/sbin/grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### if [ -s /boot/grub/grubenv ]; then have_grubenv=true load_env fi set default="0" if [ ${prev_saved_entry} ]; then saved_entry=${prev_saved_entry} save_env saved_entry prev_saved_entry= save_env prev_saved_entry fi insmod ext2 set root=(hd0,3) search --no-floppy --fs-uuid --set a4d9debb-d760-495d-ba50-db29fb188562 if loadfont /usr/share/grub/unicode.pf2 ; then set gfxmode=640x480 insmod gfxterm insmod vbe if terminal_output gfxterm ; then true ; else # For backward compatibility with versions of terminal.mod that don't # understand terminal_output terminal gfxterm fi fi if [ ${recordfail} = 1 ]; then set timeout=-1 else set timeout=10 fi ### END /etc/grub.d/00_header ### ### BEGIN /etc/grub.d/05_debian_theme ### set menu_color_normal=white/black set menu_color_highlight=black/white ### END /etc/grub.d/05_debian_theme ### ### BEGIN /etc/grub.d/10_linux ### menuentry "Ubuntu, Linux 2.6.31-16-server" { recordfail=1 if [ -n ${have_grubenv} ]; then save_env recordfail; fi set quiet=1 insmod ext2 set root=(hd0,3) search --no-floppy --fs-uuid --set a4d9debb-d760-495d-ba50-db29fb188562 linux /boot/vmlinuz-2.6.31-16-server root=UUID=a4d9debb-d760-495d-ba50-db29fb188562 ro quiet splash initrd /boot/initrd.img-2.6.31-16-server } menuentry "Ubuntu, Linux 2.6.31-16-server (recovery mode)" { recordfail=1 if [ -n ${have_grubenv} ]; then save_env recordfail; fi insmod ext2 set root=(hd0,3) search --no-floppy --fs-uuid --set a4d9debb-d760-495d-ba50-db29fb188562 linux /boot/vmlinuz-2.6.31-16-server root=UUID=a4d9debb-d760-495d-ba50-db29fb188562 ro single initrd /boot/initrd.img-2.6.31-16-server } ### END /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/30_os-prober ### if [ ${timeout} != -1 ]; then if keystatus; then if keystatus --shift; then set timeout=-1 else set timeout=0 fi else if sleep --interruptible 3 ; then set timeout=0 fi fi fi ### END /etc/grub.d/30_os-prober ### ### BEGIN /etc/grub.d/40_custom ### # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. ### END /etc/grub.d/40_custom ###
grub2ではシステムに存在する起動可能なOS(LinuxだけでなくWindows等も)を自動的に検知して設定しますので、まず間違っていることはないでしょうが、念のため、確認すべきポイントを説明します。
### BEGIN /etc/grub.d/10_linux ###
から
### END /etc/grub.d/10_linux ###
までの行に注目します。
まず、「set root=」に正しくディスクとパーティションが設定されているかどうかを確認しましょう。
set root=(hd0,3)
このうち「hd0」は1つめのディスクという意味です。サーバーには/dev/sdaしかないので、1つ目のディスクで間違いありません。
次に「3」は、このディスクの3つめのパーティションという意味です。
grub1(以前のgrub=grub legacy)ではパーティション数は「0」から始まるため「2」でしたが、grub2ではパーティション数は「1」から始まることに変更されましたので、今回の場合/dev/sda3は「3」でOkです。
次に、「linux」と「initrd」の行に注目しましょう。
linux /boot/vmlinuz-2.6.31-16-server root=UUID=a4d9debb-d760-495d-ba50-db29fb188562 ro quiet splash initrd /boot/initrd.img-2.6.31-16-server
ここに記載されているLinuxカーネルやinitrdイメージが/boot以下とマッチしていることを確認しましょう。
root@localhost:/# ls -al /boot total 13692 drwxr-xr-x 3 root root 4096 Jan 4 01:13 . drwxr-xr-x 21 root root 4096 Jan 4 16:36 .. -rw-r--r-- 1 root root 2129912 Dec 8 15:41 System.map-2.6.31-16-server -rw-r--r-- 1 root root 623709 Dec 8 15:41 abi-2.6.31-16-server -rw-r--r-- 1 root root 105771 Dec 8 15:41 config-2.6.31-16-server drwxr-xr-x 2 root root 4096 Dec 29 14:39 grub -rw-r--r-- 1 root root 7172274 Jan 4 01:13 initrd.img-2.6.31-16-server -rw-r--r-- 1 root root 1335 Dec 8 15:46 vmcoreinfo-2.6.31-16-server -rw-r--r-- 1 root root 3935680 Dec 8 15:41 vmlinuz-2.6.31-16-server
次に、/etc/fstabを設定します。
今までは、
- /dev/sda1が/boot /dev/sda2が/(ルート) /dev/sda3がスワップ
でしたが、
現在は、
- /dev/sda3が/(ルート) /dev/sda4がスワップ
になっています。
ですので、/etc/fstabには次のように記述します。
proc /proc proc defaults 0 0 /dev/sda3 / ext3 defaults 1 1 /dev/sda4 swap swap defaults 0 0
最後にネットワークの設定を行います。
DebianやUbuntuのネットワーク設定は次のようなファイルで行います。
- /etc/network/interfaces
- /etc/hostname
- /etc/hosts
- /etc/resolv.conf
/etc/network/interfacesはデフォルトではこのような内容です。
root@localhost:/# cat /etc/network/interfaces # Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or # /usr/share/doc/ifupdown/examples for more information. auto lo iface lo inet loopback
最終的にこのような/etc/network/interfacesファイルを作成します。
root@localhost:/# cat /etc/network/interfaces # Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or # /usr/share/doc/ifupdown/examples for more information. auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 1aa.7b.2cc.dd network 1aa.7b.2cc.0 broadcast 1aa.7b.2cc.127 gateway 1aa.7b.2cc.1 netmask 255.255.255.128
このうち「address」は専用サーバーのプロバイダ(今回の場合、さくらインターネットさん)から通知があるので調べなくてもわかると思いますが、念のため確認の仕方を説明します。
▼exitコマンドで、chrootを抜けて、CentOS環境に戻ります。
root@localhost:/# [admin@localhost ~]$
CentOS/RHELのネットワーク設定ファイルを表示します。
▼/etc/sysconfig/network-scripts/ifcfg-eth0
[admin@localhost ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
このファイルでほとんどの情報が記載されていますが、念のためそれ以外の設定や状況も確認してみましょう。
▼/etc/sysconfig/network
[admin@localhost ~]$ cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=localhost.localdomain GATEWAY=1aa.7b.2cc.1
▼route実行結果
[admin@localhost ~]$ sudo route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 1aa.7b.2cc.0 * 255.255.255.128 U 0 0 0 eth0 169.254.0.0 * 255.255.0.0 U 0 0 0 eth0 default 1aa.7b.2cc.1 0.0.0.0 UG 0 0 0 eth0
▼ifconfig実行結果
[admin@localhost ~]$ sudo ifconfig eth0 Link encap:Ethernet HWaddr 00:30:48:BD:03:42 inet addr:1aa.7b.2cc.dd Bcast:1aa.7b.2cc.127 Mask:255.255.255.128 inet6 addr: fe80::230:48ff:febd:342/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:726516 errors:0 dropped:0 overruns:0 frame:0 TX packets:17322 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:10 RX bytes:44419540 (42.3 MiB) TX bytes:1428128 (1.3 MiB) Memory:da200000-da220000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:72 errors:0 dropped:0 overruns:0 frame:0 TX packets:72 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:13898 (13.5 KiB) TX bytes:13898 (13.5 KiB)
▼/etc/HOSTNAME
Red HatやCentOSで、古いソフトウェアの互換性のために残されている設定ファイルです。
Debian/Ubuntuでは/etc/hostnameです。
▼/etc/hosts
[admin@localhost ~]$ cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6
デフォルトは上記のような感じです。
debootstrap後のUbuntuのデフォルトも同様な内容なので変更の必要はないでしょう。必要に応じ確認しましょう。
[admin@localhost ~]$ cat /mnt/ubuntu/etc/hosts
▼/etc/resolv.conf
[admin@localhost ~]$ cat /etc/resolv.conf nameserver 210.224.163.4 nameserver 210.224.163.3
CentOSとUbuntuで全く同じ内容でOkです。そのままコピーしてしまいましょう。
[admin@localhost ~]$ sudo cp /etc/resolv.conf /mnt/ubuntu/etc/resolv.conf
以上で、ネットワーク設定は終了です。
ただし、一つ気になることがあったと思います。route実行結果に、169.254.0.0という設定した覚えの無いルーティング設定がありました。
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
これはRed Hat系(FedoraやCentOSを含む)でデフォルトで設定されてしまうルーティングなのだそうです。
▼参考情報 http://greenbeens.blog85.fc2.com/blog-entry-13.html
本文書作者はDebian/Ubuntuユーザーなので、最初は「すわ、もう既にクラックされて勝手なルーティングを設定されてしまったか?」とか「さくらインターネットさんがユーザーに内緒で設定している隠れルーティング設定?」とか色々悩みました。。
どうせ使わなくなってしまうCentOSですので、放置しておいてもいいのですが、気になるので本文書作者は解消しました。解消の方法は、上記の参考情報URLをご参照下さい。
モジュールの設定
念のためモジュールを設定しましょう。
というのも、わざわざプロバイダさんがモジュールの設定をしているということは、なんらかの意味があると考えて、同様に設定しておくのが無難だからです。
(実際の例として、現在はそうではないようですが、以前のさくらインターネットさんの専用サーバーのデフォルトのNICは10MbpsなNICで、そのモジュールでしか通信できないような設定となっていて、旧環境と新環境のNICモジュールを同じように設定しなければネットワークがつながらないケースがありました。)
モジュールはCentOS等のRed Hat系Linuxでは/etc/modprobe.confに設定されています。
▼CentOSの/etc/modprobe.confを表示します。
[admin@localhost ~]$ cat /etc/modprobe.conf alias eth0 e1000e alias eth1 e1000e alias scsi_hostadapter 3w-9xxx alias scsi_hostadapter1 ahci
Debian/Ubuntuでは/etc/modulesで設定します。
全く同じ内容をコピーしましょう。
# /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. alias eth0 e1000e alias eth1 e1000e alias scsi_hostadapter 3w-9xxx alias scsi_hostadapter1 ahci
では、いよいよ、再起動を行います。無事にUbuntu環境でsshログインできることを祈りましょう。
▼諸々のマウントを解除します。
[admin@localhost ~]$ sudo umount /mnt/ubuntu/proc [admin@localhost ~]$ sudo umount /mnt/ubuntu/dev [admin@localhost ~]$ sudo umount /mnt/ubuntu
再起動する前に十分確認をしましょう。
また、本文書通りに行ったとしても、本当に無事Ubuntuで起動するかどうかの保証は一切ありません。あくまでも自己責任で行って下さい。
ちなみに、さくらインターネットさんに、コンソールでの作業を依頼したり、OSの再インストールを依頼するのは有償です。
また、こうしたOSの入替はプロバイダさんからは一般的に歓迎されない可能性が高いと思われます。
▼システムを再起動します。
[admin@localhost ~]$ sudo shutdown -r now
または、
[admin@localhost ~]$ sudo reboot
システムの再起動には1〜2分ほどかかります。
システムが復活したらすぐに知りたい場合はpingを打ちましょう。
Shige-no-MacBook:~ shige$ ping 1aa.7b.2cc.dd PING 1aa.7b.2cc.dd (1aa.7b.2cc.dd): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 Request timeout for icmp_seq 3 ・・・・・ Request timeout for icmp_seq 24 Request timeout for icmp_seq 25 64 bytes from 1aa.7b.2cc.dd: icmp_seq=26 ttl=50 time=459.199 ms 64 bytes from 1aa.7b.2cc.dd: icmp_seq=27 ttl=50 time=56.268 ms
無事pingに反応しましたら、sshログインしてみましょう。
▼sshログインしてみる。
Shige-no-MacBook:~ shige$ ssh -l zen 1aa.7b.2cc.dd @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is df:60:5b:8e:fb:5e:b5:c3:49:21:15:10:16:85:96:c4. Please contact your system administrator. Add correct host key in /Users/shige/.ssh/known_hosts to get rid of this message. Offending key in /Users/shige/.ssh/known_hosts:1 RSA host key for 1aa.7b.2cc.dd has changed and you have requested strict checking. Host key verification failed.
上記のようなエラーメッセージが表示され、ログインできない場合があります。
sshのknown_hostsのエラーですので、known_hostsを削除(または別名化)してみましょう。
本文書作者のクライアント環境はMac OS Xですので、次のような操作を行いました。
▼.sshディレクトリに移動します。
Shige-no-MacBook:~ shige$ cd .ssh
▼known_hostsファイルがあることを確認します。
Shige-no-MacBook:.ssh shige$ ls -al total 8 drwx------ 3 shige staff 102 12 24 11:53 . drwxr-xr-x+ 24 shige staff 816 12 26 13:00 .. -rw-r--r-- 1 shige staff 395 12 24 11:53 known_hosts
▼念のため、known_hostsファイルの中身を見てみましょう。
Shige-no-MacBook:.ssh shige$ cat known_hosts 1aa.7b.2cc.dd ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAo2etAzeknBAdUglGfwEJ03vSYyidrMjf+B2pk0eChGVCE9uH6cgYB5dg0Q/bQf0ffX3oA+Fzz0XOJbcAYkwzwdSj1eWNDRVmK2GKyxxxuQ==
▼known_hostsファイルを削除するか別名化します。ここでは別名化しました。
Shige-no-MacBook:.ssh shige$ mv known_hosts known_hosts.0
▼そして、再度sshログインをトライしてみましょう。
Shige-no-MacBook:.ssh shige$ ssh -l zen 1aa.7b.2cc.dd The authenticity of host '1aa.7b.2cc.dd (1aa.7b.2cc.dd)' can't be established. RSA key fingerprint is df:60:5b:8e:fb:5e:b5:c3:49:21:15:10:16:85:96:c4. Are you sure you want to continue connecting (yes/no)?
▼「yes」と入力しましょう。
Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '1aa.7b.2cc.dd' (RSA) to the list of known hosts. [email protected]'s password:
▼パスワードを入力しましょう。
[email protected]'s password: Linux localhost.localdomain 2.6.31-16-server #53-Ubuntu SMP Tue Dec 8 05:08:02 UTC 2009 x86_64 To access official Ubuntu documentation, please visit: http://help.ubuntu.com/ The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
無事ログインできました!
以降は、Ubuntuがインストールされた専用サーバーとして普通に利用することが可能です。
ちなみに、本文書の作者は、このあと、
- LVMでのパーティショニングとファイルシステムのext4化
KVM、JeOS、Eucalyptus、OpenNebula、等々の導入・利用
- Landscapeの導入・利用
等々をトライする予定です。
最後にお願いです。本文書は完全なものではありません。お試しになってみて気づいた箇所は自由に編集して頂いて結構ですし、それ以外でも誤りや不明な箇所があれば遠慮なく下記のコメント欄にご質問・指摘内容をお書き下さい。宜しくお願いします。
コメント欄
参考文献
更新履歴
- 2010.01/21 OverSSHをdebootstrapとtarに分離し、debootstrap向けとしてOverSSHbyDebootstrapを新設
- 2010.01/17 Bootableにセットすべきパーティションの訂正(誤/→正/boot)
2010.01/09 新Tipsカテゴリ「専用サーバー(WikiName:DedicatedServer)」の開設に伴ない、インストール(WikiName: Install)より移動
- 2010.01/08 32bit→64bit化がchrootの制限によりできないことを踏まえ本文を修正
- 2010.01/07 新環境の/etc/fstabの設定を追加
- 2010.01/06 第0.1版完成(by 原作者Shige)