免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3972 | 回复: 0
打印 上一主题 下一主题

[NetBSD] 在 xen VPS (linode) 中安装 NetBSD 5.0.1 并实现自动引导之笔记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-22 22:37 |只看该作者 |倒序浏览
..  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 而
       了解到。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP