- 论坛徽章:
- 0
|
.. vim:set filetype=rst:
vim:set textwidth=78:
vim:set autoindent:
.. VST 不能使用中文文件名
===============================
在 linode 中安装 NetBSD 5.0.1
===============================
:作者: Indra
:联系: dazeding(at)21cn.com
:地址: KM.YN.CN
:组织: 9N
:日期: $Date: 2009.10.18 13:33:30 +0800 $
:状态: Done
:版本: 0.0.1
:修订: 4
:摘要: 在 linode 中安装 NetBSD 5.0.1 的笔记
:版权: The GNU General Public License(GPL)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.. contents::
前言
=======
`www.linode.com`_ 是一家 Xen VPS 服务提供商,各方面也都还不错,但预置的全是
Linux [1]_,这也正常,直接提供 BSD 的 VPS 服务商实在太少了。
我用它建了个 Archlinux 的机器,用来跑 nginx 和 mysql,倒也快速、稳定,但心
中一直惦记 BSD,为此还去搞了一个直接支持 BSD 的 VPS,但服务、方便性等问题一
直不爽,某一日突发奇想 -- 能不能自己在 linode 中手工安装别的操作系统呢?
于是动手试验,首选当然是先来自己最喜欢的 NetBSD,安装过程记录如下。
安装步骤
==========
1. 登录 www.linode.com_ ,首先使用“Create a new Disk Image”创建两个新虚拟磁盘:
a. NetBSD's Boot Disk Image (ext2 32MB);
#. NetBSD's Disk Image (raw 2000MB)[2]_。
*这样做的原因参看\ 相关事项_\ 。*
2. 然后使用“Create a new Configuration Profile”建立一个 xen DomU 配置文件:
NetBSD's Profile
第一次配置:
--------------------
1. kernel: 选用 Recovery - Finnix(kernel);
2. Drive Setup:
a. 随便用一个 Drive 绑定到 Recovery - Finnix(iso),真的是随便,因为
Recovery - Finnix(kernel) 会顺序找这个 iso,直到找到为止;
#. 接着再用一个磁盘设备指向刚刚建立的 NetBSD's Boot Disk Image,记住这个设
备名,如:/dev/xvda,(这时这不是必须的,但为了后面少点麻烦,最好还是这
样设吧!);
#. 最后在 Uncompressed initrd image 中选 Recovery - Finnix(initrd)。
3. root device: 随便选,使用 Recovery 或 pv-grub 核心引导时,root 的位置并不是
由 xen 传给客户操作系统的,所以当下这个没什么关系。
别的设置保持原样就行了,完成后保存。
第一次启动(进入的是 Linux):
----------------------------------------------
这时系统还没有装好,也就是说你还没有自己的 ssh 可用,linode 提供了一个特别的
控制台,叫 Lish,具体用法可参看
\ `这里 <http://www.linode.com/wiki/index.php/LISH>`_\ 。
Lish 其实也是一个 ssh shell,它使用了 screen,可看到系统启动时的所有屏幕输出,
非常的爽,但最好知道一些 screen 的基本操作。平时为了安全的原因,还是少用它的
好,装好系统后开自己的 sshd 吧。
用 Lish 连接进远程机器,启动这个虚拟机,这时是使用的 Linux,在其中分区虚拟磁盘
NetBSD's Boot Disk Image 并初始化 ext2 文件系统(不做这些也行,在建立虚拟磁盘
时这些也都做好了) ::
# fdisk /dev/xvda
# mkfs.ext2 /dev/xvda1
注意这样做与默认的区别,默认的是整个磁盘,也就是文件系统不是在 /dev/xvda1 上,
而是 /dev/xvda。
mount 上新文件系统,在其中建立 boot 目录 ::
# mount /dev/xvda /mnt #这里我用了默认的,区别上面说过。
# mkdir -p /mnt/boot
# cd /mnt/boot
现在下载 NetBSD 的两个 xen 内核 ::
# wget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-5.0.1/amd64/binary/kernel/netbsd-INSTALL_XEN3_DOMU.gz
# wget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-5.0.1/amd64/binary/kernel/netbsd-XEN3_DOMU.gz
# cd /
不用解压,grub 支持 gzip 压缩文件。
接着建立一个 pv-grub 的 menu.lst 文件 ::
# mkdir -p /mnt/boot/grub
# cat >/mnt/boot/grub/menu.lst <<EOF
>timeout 5
>default 0
>
>title NetBSD run
> root (hd0)
> kernel /boot/netbsd-XEN3_DOMU.gz bootdev=xbd1a ro
>
>title NetBSD install
> root (hd0)
> kernel /boot/netbsd-INSTALL_XEN3_DOMU.gz
>EOF
*因为在 linode 中你不能直接修改到 xen DomU 的配置文件,所以这里必须使用 hd0,
否则安装完成后,pv-grub 将不能自动启动,当然,NetBSD‘s Boot Disk Image 也必须
绑定到 /dev/xvda 上,参看\ 相关事项_\ 。*
::
# umount /mnt
# shutdown -h now
第二次配置:
---------------------
回到 www.linode.com_ 修改 NetBSD's Profile:
1. Kernel: pv-grub-x86_64
2. Drive Setup:
a. /dev/xvda: NetBSD's Boot Disk Image
#. /dev/xvde: NetBSD's Disk Image
#. Uncompressed initrd image: -- No initrd --
**再次注意: NetBSD‘s Boot Disk Image 必须绑定到 /dev/xvda 上,理由前面说过。**
3. root devic: Custom /dev/xvde 这里还是没关系。
保存。
第二次启动(进入 NetBSD 安装界面):
-------------------------------------------------------
启动虚拟机,在 grub 菜单中选择 NetBSD install,在用 Lish 时手脚要快点,要不 5
秒后就会启动默认的 NetBSD run 了,当然,你也可以编辑那个 menu.lst 文件,把时
间改长一点,如果前面你使用了不同的 Drive Setup 顺序,pv-grub 也许不能找到
menu.lst,会停在命令交互环境,这时可手工运行(把 hd0 换成你真正的位置) ::
root (hd0)
kernel /boot/netbsd-INSTALL_XEN3_DOMU.gz
boot
进入 NetBSD 安装界面,正常安装过程[3]_,注意 disklabel 时应使用 xbd1,NetBSD
本来就精简小巧,加上 linode 和 NetBSD FTP 服务器都在同一国家,带宽又猛,安装
只是一瞬间的事。
第三次启动(进入新 NetBSD 系统):
-----------------------------------------------------
安装完成后重启,如果 pv-grub 还是停住,手工运行命令(把 hd0 和 xbd1a 换成你真
正的位置)::
root (hd0)
kernel /boot/netbsd-XEN3_DOMU.gz bootdev=xbd1a ro
boot
进入到 NetBSD 环境,完成安装。
设置 NetBSD
============
建立一个普通用户
--------------------------
::
# useradd -m -G wheel yourname
# passwd yourname
设置必要的 daemons,编辑 /etc/rc.conf
--------------------------------------------------------
::
dhclient=YES
dhclient_flags="xennet0"
wscons=YES
powerd=YES
sshd=YES
*加入 powerd daemon 是为了当关机命令是由 xen 发出时,系统能更正确的响应并安全
地 shutdown。*
修正一些小错误
----------------------
系统启动时可能会显示一些 wscons 和 terminals 的警告信息,没关系,我们来修正它,
编辑 /etc/wscons.conf,找到没被注释的那几行 ::
screen 1 - vt100
screen 2 - vt100
screen 3 - vt100
screen 4 - -
把它们全部注释掉。
编辑 /etc/ttys,把这几行 ::
ttyE0 "/usr/libexec/getty Pc" vt220 on secure
ttyE1 "/usr/libexec/getty Pc" vt220 on secure
ttyE2 "/usr/libexec/getty Pc" vt220 on secure
改为 ::
ttyE0 "/usr/libexec/getty Pc" vt220 off secure
ttyE1 "/usr/libexec/getty Pc" vt220 off secure
ttyE2 "/usr/libexec/getty Pc" vt220 off secure
重启,享受超爽的 NetBSD 5.0.1 吧!
相关事项
==========
整体思路总结
-------------------
1. 准备阶段
a. 创建 xen 虚拟机,生成配置文件;
#. 准备两个磁盘或分区,小的 ext2 分区用于存放 NetBSD xen DomU 核心及 grub
的 menu.lst 文件,大的存放 NetBSD 自身;
#. 随便用一个 linux 挂载上 ext2 分区(最简单就是用 Finnix),建立需要的目
录与文件。
#. 安装阶段
在 xen 虚拟机中绑定前面准备好的两个磁盘分区,因为不能直接修改 xen 虚拟机配置
文件,所以需要 pv-grub 的帮助引导至 NetBSD 的安装界面。
#. 正式启动阶段
在 pv-grub 的帮助下引导 NetBSD,要注意挂载的两个磁盘分区的位置、顺序以及它们
在 xen、pv-grub、NetBSD 中不同的代表名称和意义。
系统引导时的完整顺序及注意事项(linode 环境中)
----------------------------------------------------------------------
::
xen DomU boot --> pv-grub boot --> NetBSD boot --> NetBSD run
由于在 linode 环境下不能随心所欲的修改 xen 的配置文件,所以虚拟机中磁盘的位置
很关键,虽说如此,但出错了也只会导致启动过程暂停,你还是可以手工修正并继续(在
pv-grub boot 与 NetBSD boot 阶段),前提是你很清楚在启动的不同阶段磁盘分区的名
字和位置。
.. note::
磁盘分区名字对应关系样例:
xvda(xen or linux) == hd0(pv-grub) == xbd0(NetBSD)
pv-grub boot 阶段说明:
在 linode 下,pv-grub 被指定去读取 (hd0)/boot/grub/menu.lst 文件[4]_,找不
到就暂停并出现交互环境提示。
NetBSD boot 阶段说明:
默认的引导设备是 xbd0 (grub: hd0),但这可以传递 bootdev 参数来改变,而且,出
错时 NetBSD boot 会暂停并询问一些位置,你手工给它指明一下就能继续了,在这里
还可以执行一些基本命令,敲回车就看到了,COOL!
最后要注意的是 /etc/fstab 中也要设置正确的磁盘分区位置。
.. admonition::
在这个案例中,因为不能更改 pv-grub 的启动参数,要想 pv-grub 能找到正确的
menu.lst 来实现自动启动,第一块磁盘只能是那个 ext2 的小磁盘分区,NetBSD
的磁盘分区也就只能放到后面,但这样的话,默认情况下 NetBSD 又不能确定自己的
引导设备位置了,还好我们可以加上参数改变 NetBSD 的引导设备,全自动引导得以
实现。
引导过程中出错也不要紧,pv-grub 与 NetBSD 都会暂停在交互环境,你可以手工操
作,成功启动后,再把正确的参数重新写到 pv-grub 的 menu.lst 和 NetBSD 的
/etc/fstab 中。
为何不只使用一个虚拟磁盘,而把 ext2 boot 分区与 NetBSD 分区都放在它下面?
-----------------------------------------------------------------------------------------------------------
\ **本来我也想这么做**\ ,但在 linode 中试验后放弃了:
1. 我在安装 NetBSD 的过程中发现,disklabel 不会认出 ext2 的分区,导致它建立自
己的分区时擦掉了 ext2 分区,虽然装好后的 NetBSD 也能用,但自动启动就没了,
还有以后修改、重装就麻烦了。
2. 就算 disklabel 认出了 ext2 分区,并跟它和平共处了,只怕全自动启动还是搞不
定,xen 在启动 pv-grub 时写死了 menu.lst 的位置(xen 启动过程的输出中有
cmd_line: (hd0)/boot/grub/menu.lst 字样),而这时真正的位置可能是:
(hd0,0)/boot/grub/menu.lst。
后记
===========
P.S. 在我完成这篇笔记后,才发现已经有人写过一篇内容相似的
\ `文章 <http://www.linode.com/wiki/index.php/BSD_Howto>`_ \ ,就在 linode
的 wiki 上,原来早就有人想在 linode 上玩 NetBSD 了(囧),文章写得很详细,但
有点太老了,说的是 NetBSD 4,要自己编译、上传,而且只能通过在 pv-grub 交互环
境中手工启动虚拟机,不知是不是由于 NetBSD 4 缺少某些特性而造成的?NetBSD 4
就没怎么用(那时事太多,呵呵),相比之下,linode 中 NetBSD 5 的安装实在太简单
了。无论如何,这篇文章还是很值得一看的,\ `这里参观`__\ 。
^^^^^^^^^^^^^^^^^^^^^^^
.. 参考引用
.. _www.linode.com: http://www.linode.com
.. _BSD_Howto: http://www.linode.com/wiki/index.php/BSD_Howto
__BSD_Howto_
.. [1] 这是它叫 linode 的原因
.. [2] 选 raw 格式也就是不初始化文件系统
.. [3] NetBSD 的安装实在太简单,就不细说了,值得一提的是
netbsd-INSTALL_XEN3_DOMU.gz 启动的安装过程与平时的 PC 安装过程相比,好
像少了 fdisk 步骤。
.. [4] 这些可以在 Lish 中连接上虚拟机控制台后,向前翻看 screen 的输出 cache 而
了解到。 |
|