[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .

さくらの VPS で NetBSD がうまく起動できない時

さくら VPS の実装にはアタリハズレがある?とかないとかで、 NetBSD のインストールは出来てもブートローダが動かないとか、 ***/Linux のみなさんも grub-install に失敗するとか… いろいろあります。

ハズレをひくと、なにをやっても失敗していくので、 (ここは安直なソリューションで) 一番普通に動きそうな CentOS 6 i386 をカスタムOSインストールから入れ、 Cent OS 6 の grub (legacy) から NetBSD を起動してもらうことにします (x64 の組合せでは試してません)。

BIOS → CentOS → NetBSD (CentOS の grub legacy が /netbsd をロード) 

もっと真面目にゴリゴリ先頭の 1 MB hack とかする方法は、 すでにたくさんのみなさんが試しているので、 先人たちにおまかせします(ぐぐってみてくだだい)。

なお、いちばん簡単なソリューションとして、 さくらの VPS を解約・再契約、これをアタリをひくまで試すのが簡単らしいです:)

***************************

手順をまとめると、次のようになります。順番に説明しましょう。

1. NetBSD をインストール (パーティッション調整は NetBSD installer が素直)
2. CentOS をインストール (NetBSD で Linux native としておいた場所へ)
3. CentOS の /boot/grub/grub.conf を編集

NetBSD のインストールと MBR の調整

MBR を編集する理屈は multiboot の例 と同じなので、そちらを参考にしてください。

では作業です。

まずは、 さくらの VPS 「ISO イメージインストール」で NetBSD のインストールをします。

(a) さくらの VPS のコントロールパネルへ行き
(b) ISO イメージインストールを選択、SFTP アカウントを作成
(c) SFTP  で NetBSD の ISO をアップロード
(d) 「インストールを実行」をクリック

MBR の設定まできたら、次のように MBR を分けることにします。

1 /boot        500MB
2 /         40,000MB
3 NetBSD   160,000MB
4 swap       4,000MB
CentOS が 1 2 4 を使い 3番目を NetBSD で使う想定です。 NetBSD の設定画面では /boot などではなく
1 linux native        500MB
2 linux native     40,000MB
3 NetBSD          160,000MB
4 swap              4,000MB
とだけ設定することになります( 注: NetBSD で見える ld0a ld0b ld0c ld0d は、この MBR 3 番目中の区切りです )。 あとは普通にインストールしてください。

CentOS のインストール

さくらの VPS のコントロールパネルの「カスタム OS インストール」から CentOS 6 i386 を選択してインストールします。

注意点はパーティッションの選択部分だけです。 あとは普通にインストールしてください。

パーティッションは「カスタムレイアウト」を選択し、

1 /boot        500MB
2 /         40,000MB
3 NetBSD   160,000MB
4 swap       4,000MB
となるように MBR 1 2 4 の分を設定してください。

備考: ちなみに CentOS 上で fdisk や df をとると、次のようなかんじになります。 fdisk は次のようになります:

Disk /dev/vda: 214.7 GB, 214748364800 bytes
16 heads, 63 sectors/track, 416101 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0007adc4

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        1020      514048+  83  Linux
Partition 1 does not end on cylinder boundary.
/dev/vda2            1021       82302    40965750   83  Linux
Partition 2 does not end on cylinder boundary.
/dev/vda3           82302      407395   163846935   a9  NetBSD
Partition 3 does not end on cylinder boundary.
/dev/vda4          407395      416102     4388435   82  Linux swap / Solaris
Partition 4 does not end on cylinder boundary.
df をとると
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda2       40190956 1329208  36813464   4% /
tmpfs             969372       0    969372   0% /dev/shm
/dev/vda1         489637   26640    437295   6% /boot

CentOS の /boot/grub/grub.conf を編集

/boot/grub/grub.conf のオリジナルは次のような設定です。

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/vda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/vda
default=0
timeout=5
#splashimage=(hd0,0)/grub/splash.xpm.gz
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 
terminal --timeout=10 serial console
hiddenmenu
title CentOS 6 (2.6.32-504.23.4.el6.i686)
	root (hd0,0)
	kernel /vmlinuz-2.6.32-504.23.4.el6.i686 ro root=UUID=a3484b63-82ac-4a73-851a-bd1549f2ce23 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=jp106 rd_NO_LVM rd_NO_DM rhgb quiet nomodeset clocksource=hpet console=tty0 console=ttyS0,115200n8r
	initrd /initramfs-2.6.32-504.23.4.el6.i686.img

ファイルの最後に次の行を追加し

title NetBSD/i386 (/netbsd)
	root (hd0,2,a)
	kernel /netbsd root=ld0a
title NetBSD/i386 6.1.5 (/netbsd -s)
	root (hd0,2,a)
	kernel /netbsd -s root=ld0a
title NetBSD/i386 bak (/netbsd.bak)
	root (hd0,2,a)
	kernel /netbsd.bak root=ld0a
default=1 に変更してください。 (注: なお、これは grub legacy の例です。grub2 では記述が異なります)

grub から /netbsd をロードするため NetBSD の /boot.cfg は読まれません。 そこで、シングルユーザモード起動や netbsd.bak での起動など、 非常時用の設定もいれてあります。

編集後、grub.conf 全体としては、こうなります。

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/vda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/vda
default=1
timeout=5
#splashimage=(hd0,0)/grub/splash.xpm.gz
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 
terminal --timeout=10 serial console
hiddenmenu
title CentOS 6 (2.6.32-504.23.4.el6.i686)
	root (hd0,0)
	kernel /vmlinuz-2.6.32-504.23.4.el6.i686 ro root=UUID=a3484b63-82ac-4a73-851a-bd1549f2ce23 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=jp106 rd_NO_LVM rd_NO_DM rhgb quiet nomodeset clocksource=hpet console=tty0 console=ttyS0,115200n8r
	initrd /initramfs-2.6.32-504.23.4.el6.i686.img
title NetBSD/i386 (/netbsd)
	root (hd0,2,a)
	kernel /netbsd root=ld0a
title NetBSD/i386 6.1.5 (/netbsd -s)
	root (hd0,2,a)
	kernel /netbsd -s root=ld0a
title NetBSD/i386 bak (/netbsd.bak)
	root (hd0,2,a)
	kernel /netbsd.bak root=ld0a

[HOME] [github] [twitter] [blog] [fml4] [fml8] [北海道] Powered by NetBSD and [nuinui.net] .
Copyright (C) 1993-2022 Ken'ichi Fukamachi mail:< fukachan at fml.org >