さくらVPSにArchLinuxをインストールした
とうとう今日の夕方からさくらVPSが使えるようになったので早速ArchLinuxインストールに挑戦してみた。
主に以下のサイトを参考にさせていただきました。ありがとうございました。
http://d.hatena.ne.jp/sharow/20120626/1340712154
上のサイトの通りにやれば大体できるんだけど、ここではちょっとパーティション周りの事情についてメモしておく。
とりあえずおおまかな流れを次に書くよ。
少し上の記事とは違う方法を最初は取った。CentOSとデュアルブートのようになる形になる。
1 CentOSを再インストール(カスタムで) この時点で多くの注意点がある。 2 CentOSでArchLinuxのisoを適当なパーティションにコピー & grub設定 3 CentOSでGPTをMBR式に変換(gdisk) 4 rebootしてArchLinuxを起動 5 cfdiskでパーティションをいじり 6 /arch/setupでセットアップ 7 rebootする前に記事にあった謎の作業をする 8 rebootする 9 設定する 10 終わり
という感じ。自分は1から4でかなり悩んで(数時間)最後の方は上の記事の通りにやれば完璧にうまく言った。(正直自分がなにしてるかわからないコマンドを打つのはちょっと気分がアレなんだが)
パーティションについて
パーティションはCentOS再インストール時に以下のように設定した。上の記事では最終的にCentOSのすべての容量をArchLinuxに移しているが、面倒なのでCentOSは残しておくことにした。なのでCentOSは再インストール時に10GB程度にまで抑えて残りの190GB近くをArchLinuxに割り振ることにした。
CentOS再インストール時は以下のようになった
* vda1 -> / 10GBくらいにしたけどもう少し少なくてもいいかもしれないが10GBくらいでいいかと。 * vda2 -> /archiso 512MBくらいあれば余裕。ここで/archisoを設定したvdaの番号を覚えておく。ここなら2
archlinuxのisoをコピーするためのパーティションを必ず作る必要がある。grubからisoを直接起動できないため、一旦isoをパーティションにコピーする。
この構成でインストールする。どうせ使わないのでSwapなんかもいらないだろう。
ArchLinuxのisoをパーティションにうつす作業
ArchLinuxのisoをDLしてくる。wgetでもいいし、ftpで適当にjaistなんかにつないで取ってきてもいい。
とりあえずwgetなら
$ wget http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/iso/2011.08.19/archlinux-2011.08.19-netinstall-x86_64.iso
とする。
ちなみにFTPクライアントならncftpがおすすめ。(yumで入れれば入る)
で、これをDLしてきたらマウントする。が、その前にディレクトリを用意する。
管理者権限が必要なので必要に応じてsudoをつける
$ (sudo) mkdir /mnt/iso
マウントする
$ (sudo) mount -t iso9660 -o loop archlinux-2011.08.19-netinstall-x86_64.iso /mnt/iso
当然だけど、"archlinux-2011.08.19-netinstall-x86_64.iso"の部分はDLしてきたisoへのPATHね。同じディレクトリにある場合は上のようにしておk。
一個前のインストールで設定してもらったように/archisoが存在してすでにマウントされてると思うのでここにマウントしたisoの中身をすべてコピー
$ cp -R /mnt/iso/* /archiso
これでおk
GPTをMBR形式に
この作業をしないとArchLinuxのcfdiskはGPTを読み込むことができない。なのでMBRに変換する。
まずgdiskをインストールする。こちらも管理者権限が必要(基本的にyumコマンドでは必要)
$ (sudo) yum install gdisk
成功したら続いて....
$ echo 'r\ng\nw\ny\n' |(sudo) gdisk /dev/vda
としてもいいし、
$ sudo gdisk /dev/vda
として、4回の質問に対して r -> g -> w -> yというふうな順に答える。
正直後者がおすすめ。上の方法で一回間違えたのでな。
で、次のコマンドを忘れてはならない
$ (sudo) grub-install /dev/vda
まだrebootしないでね。
grub2の設定をする
$ (sudo) vim /boot/grub/menu.lst
としてmenu.lstを編集。以下のを参考にしてファイル末尾に書き加える。
ここで再インストール時のパーティション設定のところで/archisoにしたvdaの番号を覚えておくように書いておいた番号を思い出す。例えば以下のはvda2の場合の設定。(忘れたならdfコマンドすればわかる)
title ArchLinux ISO root (hd0,1) #hd0は固定でいいと思う。1は(vdaの番号 - 1) の値 kernel /arch/boot/x86_64/vmlinuz ro s archisodevice=/dev/vda2 #ここはvdaの番号をそのまま。 initrd /arch/boot/x86_64/archiso.img
という具合。
タイポなんかがないことを確認したらrebootする。
rebootからのArchLinux起動
$ (sudo) reboot
とすると再起動できる。うまく行けばgrubの選択肢からArchLinux ISOが起動できる。
途中変な警告が出たときは Ctrl-D して続行しておkのようだ。
cfdiskしてlib-blockdevises-filesystems.shを変更する。
追記:キー操作しにくいかもだからkmコマンドして先にキーマップ変えておいてもいいと思う
最初に/arch/setupする前にcfdiskする必要があるようだ。正直このへんからただ手順に従っただけなので個人的な考察はない。ここからはうまく言った手段を淡々とメモする。(上の記事をここからは参考にしてもいいかもしれない)
cfdiskでパーティションを設定する。自由にやっていいと思う。頭にある謎の1MBはno touchに越したことはない。
$ cfdisk /dev/vda
以下は自分の場合の割り振り。
* 謎の1MB ここはno touch * CentOSの"/" 10GB vda1 * "/archiso" 512MB vda2 * ArchLinuxの"/boot" 1GB vda3 * ArchLinuxの"/"(Logical) 200000MB vda5 * ArchLinuxの"swap" 余りMB vda6
杜撰なパーティション分けでごめんなさいorz
ということでこんな具合に適当にやる。ただ、vda2は消さないほうがいいと思う。で、多分vda1も消さないほうがいいと思う。それ以外はどう分けてもおkだと思われる。
$ reboot
して...
で、続いて"/usr/lib/aif/core/libs/lib-blockdevises-filesystems.sh"を編集する。
$ vi /usr/lib/aif/core/libs/lib-blockdevises-filesystems.sh
としてfinddisks()というのがある行を探す。 viならコマンドモードで"/finddisks"としてエンターすれば検索できる。
finddisks() { echo -ne /dev/vda ""
という具合にすぐ下でいいので
echo -ne /dev/vda ""
を追加する。
これでした準備完了。
/arch/setupを使う
ここからはほぼ正攻法インストール。でもほぼなのであんまり先走ると失敗する可能性がある。うちの記事か上の参考記事を見ながらやったほうがいいと思う。まあ、うちの記事はあんまり信用しないほうがいいかもね。
とりあえず...
最初のサーバーの設定とかネットの接続はちゃっちゃとやる。さくらVPSならDHCPが使えないので手動で設定する。
デフォルトテキストエディタもお好みでおk.もちろんvi
時計とかも適当に。asiaのTokyoとかでいいんじゃないでしょうか。
で、次。ここは気をつけないと行けない。cfdiskですでに分けているので一番上または2番目を実行する必要がない。
上から3番目のメニューを実行する(このへんは写真がある参考記事がいいかもねほんとに)
で、パーティションの設定は普通のインストールのときと同じでいいので割愛。
Select Packages
ここでは、grubかSELinuxか聞かれるけどgrubでおk。あとは好きなパッケージを選んでいいが、"openssh"は入れておいたほうがいいかもしれないので一応入れておくといいと思う。
install packageは見てるだけ。
Configure system
Configure system は注意。
"rc.conf"と"mkinitcpio.conf"の2つを変更する。まずrc.confだが末尾のdeamonにsshdを追加する。
あとHOSTNAMEを適当につける。
で、"mkinitcpio.conf"だが、ここをミスするとヤバイらしいので、タイポに気をつけつつ、開いてすぐある
MODULES=""
を
MODULES="virtio virtio_blk virtio_pci virtio_net"
とする。
あとはroot-passwordを決めて Doneする。
EXIT INSTALL
BOOT LOADERはインストールする必要がないので飛ばして、exit install。
ただしまだrebootしてはいけない.
EXIT INSTALL後
追記:
わかる人はここで一旦rebootしCentOSを起動。そしてCentOSの/boot/grub/menu.lstを変更してArchLinuxを起動出来る設定を書き込むことで以下の作業をしなくてよくなる。
以下は、上の記事をそのままコピーさせていただきました。
上の記事の通りに行うと完璧にうまくいきます。 正直ここで何をしてるのか理解できないですorz
終わってもrebootしないでください。ここからちょっと面倒ですが、下記のコマンドをコンソールに入力します。やってることは、リブートせずにセットアップ済みの環境を作ってchrootしている?だと思います。それとgrub2のインストール、設定。grub2-biosを入れる時に旧grubを殺すけどいいか?と訊いてくるのでYes。 mount -o bind /dev /mnt/dev mount -t proc /proc /mnt/proc/ mount -t sysfs /sys /mnt/sys/ modprobe dm-mod chroot /mnt bash ここでとても残念な作業が必要です。/etc/pacman.confを編集して、SigLevelをNeverに変更します。 viかnanoが使えます。このシグネチャ認証をOFFにする修正は暫定なので、インストール後に元に戻しましょう。 インストーラの環境でエントロピー上げてPGPキーを生成して・・というのは面倒なのでこうしました。 ~~~~ # By default, pacman accepts packages signed by keys that its local keyring # trusts (see pacman-key and its man page), as well as unsigned packages. #SigLevel = Optional TrustedOnly +SigLevel = Never ~~~~ [core] -SigLevel = PackageRequired +#SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist [extra] -SigLevel = PackageRequired +#SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist #[community-testing] #SigLevel = PackageRequired #Include = /etc/pacman.d/mirrorlist [community] -SigLevel = PackageRequired +#SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist さすれば下記もすんなりと pacman-db-upgrade pacman -Syy pacman -S grub2-bios grub-install /dev/vda grub-mkconfig -o /boot/grub/grub.cfg これでrebootしたらGRUB2でメニューがでてArchLinuxが立ち上がるはずです。DAEMONSにsshdも入れておいたのでsshからでも(よくないですが)rootでは入れる筈です。ただし、元のCentOSでssh使ってた場合はknown_hostsでフィンガープリントが合わないと怒られるので、.ssh/known_hostsから該当するIP/ホストの行を削除してからsshしましょう。