[索引] [第三章 - 开始OpenBSD之旅] [第五章 - 从源代码构建系统]
OpenBSD一直因为在所有平台上都拥有一个简洁和直截了当的安装程序而备受赞誉。
多数平台都使用一个及其简单的安装步骤;不过它们在细节方面存在差异。在任何情况下,您都应该阅读相关平台的INSTALL文档, 它在CD-ROM或FTP站点上的相关平台目录内(例如:i386/INSTALL.I386,mac68k/INSTALL.Mac68k或者sparc/INSTALL.Sparc)
OpenBSD安装过程使用了一个带有多种工具的特殊内核, 并且把嵌入的脚本预加载到内存中建立的一块虚拟磁盘上, 这个内核启动后, 操作系统将把安装介质内的tar(1)压缩的(.tgz)格式文件中释放到硬盘上。启动安装内核有多种方法:
一旦安装内核被加载后, 您可以选择从哪里复制 系统组件, 再次声明一下, 不是每种平台都支持所有的安装方式。
在您开始进行安装之前, 您起码应该考虑到安装过程中可能被问到的问题, 别不提前准备到时候措手不及。这里提醒您至少应该知道一些信息:
i386 平台有六个不同的安装镜像供您选择:
(译者注:别被这里搞晕了,如果你首次装OpenBSD,别犹豫,就用install48.iso就可以了。)
sparc平台有四个不同的安装镜像供您选择:
在现代的平台上, 我们建议您最好使用 CDROM 启动镜像, 在一些 "较大的" 平台上 (例如amd64, sparc64), 软盘镜像里砍掉了很多驱动,这会使安装变得更困难。而对老平台来说 , 例如i386和sparc, 仍旧可以用软盘镜像安装。
你可以用cd48.iso或者install48.iso制作一张CD-ROM。具体的制作细节留给读者,你可以用自己习惯的工具来制作。
在OpenBSD里面, 你可以用 cdio(1) 将ISO镜像文件制作成一张CD:
# cdio tao cd48.iso
多数随Windows和Macintosh系统出售的刻录机搭配了可将ISO镜像写入光碟的软件,如果你的情况并非如此,大量的免费刻录软件可以帮你完成这项工作。
其它的类Unix系统使用的软件可能是 cdrkit.
在Unix里格式化一张软盘软盘使用命令fdformat(1), 它可以格式化软盘并检查损坏的扇区。
# fdformat /dev/rfd0c Format 1440K floppy `/dev/rfd0c'? (y/n): y Processing VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV done.
如果您格式化时终端显示像上面的例子这样, 恭喜您, 您的软盘已经格式化完毕了;如果您看见的不全是"V", 那么这张软盘恐怕已经有坏块了, 您应该更换一张新软盘。
说明:有些Unix-like系统的格式化软盘命令不尽相同, 请参阅您的操作系统的说明文档一确认输入正确的命令。
一旦您格式化好了一张软盘, 就可以把镜像文件写在这张软盘上了, 您可以用dd(1)命令。下面是用dd命令的一个例子:
# dd if=floppy48.fs of=/dev/rfd0c bs=32k
一旦镜像文件被写入软盘, 用cmp(1)命令检查软盘和镜像文件是否一致, 如果相同您会终端上看见其余的显示。
# cmp /dev/rfd0c floppy48.fs
这一小节将教您如果在windows或dos里制作启动软盘, 您可以从下面提到的任何FTP镜像站点的tools目录中找到工具。
在Windows里准备一张软盘, 先用微软自带的格式化工具操作来格式化软盘,并校验确认软盘没有坏块。
将安装镜像文件写入软盘您可以使用ntrw.exe。
ntrw的例子:
C:\> ntrw floppy48.fs a: 3.5", 1.44MB, 512 bytes/sector bufsize is 9216 1474660 bytes written
您可以用cd48.iso或者install48.iso这两个镜像文件中的一个制作可启动的安装CD盘。具体您用何种软件制作光盘, 看您自己了。
OpenBSD 里的一些工具:
You will need the system to be at a monitor ROM prompt, which typically looks like "ok ". If you are using a Sun keyboard, press and hold "STOP" while tapping "A". If using a serial console, a BREAK should return you to the monitor prompt.
Use the following command to boot from the floppy:
ok boot floppy |
Usually, you can boot from the CDROM drive of a Sun system from the boot prompt by typing 'boot cdrom':
ok boot cdrom |
OpenBSD的新安装程序被设计为在默认配置时高可用性、最小的用户干预,实际上多数情况下你仅需敲击<Enter>就可以完成OpenBSD的安装了,你只需在输入root密码时动动你的手指。
安装程序会根据你的磁盘容量自动帮你设置各常用分区的大小,但是这个推荐的分区方案并不适合所有的人,这个方案对你来说可能只不过时一个不错的开端或便于你整体的规划你的磁盘。
(译者注:自动的方案实际上并非很完善,就打补丁一项来说,可能系统需要重新获取源码及编译,所以/usr分区的大小,最好设置的大一些,但是方案内已经单独划分出了/usr/obj分区,对我来说还是蛮方便的,随着对系统的熟悉你最终会知道自己需要的分区大小。刚开始接触的读者可以让安装程序帮你自动分区。)
开始时我们会发现安装很简单,提供了简短的讨论选项,并使用了极棒的超文本链接,允许你阅读更多你感兴趣的事情,并了解你的选项。
各平台的安装注意事项可以在安装CD或FTP服务器上找到,在文件INSTALL.<plat>, 这里的 <plat> 是指你的 平台, 例如, i386
无论怎样您已经了解了启动的含义, 让我们先启动系统吧, 在启动的过程中安装内核和用于安装OpenBSD系统的文件被加载到内存中。在启动中遇到的最常见问题是一个损坏的软盘或驱动器队列错误(drive alignment problem), 软盘里几乎装满了文件--无论哪里有一个坏块就会导致出现问题。
OpenBSD安装过程中, 您可以随时键入"Ctrl+C"中断正在进行的安装, 需要重新安装系统时只需在shell中键入"install"就可以了, 而不必重新启动系统。
如果您启动成功, 您会看到很多的滚屏信息, 很多是蓝底白字格式的文字, 这些信息就是dmesg, 内核告诉您它在哪里发现了哪些设备。您不用着急把这些信息记下来, 因为有一份拷贝存放在/var/run/dmesg.boot。
然后, 您会看到下面的信息:
... root on rd0a swap on rd0b dump on rd0b erase ^?, werase ^W, kill ^U, intr ^C, status ^T Welcome to the OpenBSD/i386 4.8 installation program. (I)nstall, (U)pgrade or (S)hell? i
到这里, 我们的第一个问题来了, 多数情况下会您会看见有这三个选项显示:
这里我们假设你选择了(I)nstall。
现在开始我们要回答安装提问了,将会关系到我们怎样建立系统。你会注意到多数情况下安装程序是先提问然后进行安装,如果你在一台很慢的计算机上或网速很慢的机器上安装OpenBSD,你可以先回答这些问题,然后离开一会儿,当你回来时你需要做的只是重新启动机器完成全部安装过程。
(译者注:下面的内容是告诉你除了在提示你输入password时,在安装过程中任何时候你全可以通过键入'!'返回到shell,默认的选项在[ ]内,如果你要选择默认的选项只需按回车键<Enter>, 而且你可以在任何时候通过<Control-C>退出安装程序,但是这会导致你的系统处于残缺的状态。)
At any prompt except password prompts you can escape to a shell by typing '!'. Default answers are shown in []'s and are selected by pressing RETURN. You can exit this program at any time by pressing Control-C, but this can leave your system in an inconsistent state. Choose your keyboard layout ('?' or 'L' for list) [default] Enter
多数情况下选择默认的终端就可以,但是如果你使用 serial console 安装, 请勿在这里选择默认的终端,使用你自己合适的选项。
System hostname? (short form, e.g. 'foo') 9971
这个选项是关于DNS域名的 (详参下面), 你的输入会保留在文件 /etc/myname中, 他会被用来正常启动时设置系统的hostname。如果你在这里没有为系统设置domain name, 系统将会使用默认的 'my.domain'。
Available network interfaces are: fxp0 vlan0. Which one do you wish to configure? (or 'done') [fxp0] Enter
vlan0 是 VLAN 虚拟接口。 你不用考虑这个接口而应该设置实际的物理网络接口。 如果你有多个物理网络接口, 它们会都列在这里。 这里请注意网络接口以驱动名称标识,而不是用通常的以太网设备名称来标识。In this case, "fxp0" 是指使用 fxp(4) 驱动的第一的网络接口, fxp1 则是第二个设备, 以此类推。 更详尽的设备标识方法参FAQ 6。
当你选择了想设置的接口后, 接下来就是设置了。多数情况下您可能想通过DHCP来进行设置:
IPv4 address for fxp0? (or 'dhcp' or 'none') [dhcp] Enter Issuing hostname-associated DHCP request for fxp0. DHCPDISCOVER on fxp0 to 255.255.255.255 port 67 interval 1 DHCPOFFER from 192.168.1.250 (08:00:20:94:0b:c8) DHCPREQUEST on fxp0 to 255.255.255.255 port 67 DHCPACK from 192.168.1.250 (08:00:20:94:0b:c8) bound to 192.168.1.199 -- renewal in 43200 seconds.
DHCP 会设置 IP address, subnet mask, default gateway, DNS domain name 和 DNS servers. 如果你不使用 DHCP, 你需要手动逐项设置; 请参看 下面 的详细讨论。
如果你还需要设置 IPv6 或者还有其它的接口需要设置(或者你想重新修改你刚才的设置), 你可以现在进行,本例中我们已经设置好了:
IPv6 address for fxp0? (or 'rtsol' or 'none') [none] Enter Available network interfaces are: fxp0 vlan0. Which one do you wish to configure? (or 'done') [done] Enter Using DNS domainname in.nickh.org Using DNS nameservers at 192.168.1.252 Do you want to do any manual network configuration? [no] Enter
如果系统提问 "Do you want to do any manual network configuration?"时你选择了"yes", 你会被系统带到一个shell 提示符下, 在这里你可以根据自己的需要完成其余的设置,然后键入 "exit" 返回安装程序。
Password for root account? (will not echo) PaSsWoRd Password for root account? (again) PaSsWoRd
这里提示您使用一个强壮的密码,记住: 在Internet上, 有人会绞尽脑汁地使用大量常见的密码来尝试进入你的电脑。
尽管后面您还有机会建立一个管理员级别的帐号,并可以禁止root用户远程(通过SSH)登录你的计算机,但这里我们仍建议您给root设置一个足够强壮的密码。
Start sshd(8) by default? [yes] Enter
一般你希望运行sshd(8), 但有时你也许不想这样。 如果你的应用不依赖sshd(8), 至少在理论上不运行它会带来一点点的安全优势。
Start ntpd(8) by default? [no] y NTP server? (hostname or 'default') [default] Enter
这里你可以选择是否运行 OpenNTPD, OpenBSD开发的NTP 。 OpenNTPD通过一种几乎不影响系统的方式精确地同步计算机时钟。 默认的设置是使用 pool.ntp.org , 它使用了遍布世界的大量可自由访问的时间服务器。
一种情况下你也许不想运行ntpd(8),也就是你安装了多个操作系统,而你主要使用的操作系统不使用 GMT 来设置硬件时钟, 因此你不希望 OpenBSD 修改其它操作系统的时间设置。
Do you expect to run the X Window System? [yes] Enter Do you want the X Window System to be started by xdm(1)? [no] y
并非所有的平台全询问你是否想运行 X, 只有那些必须设置sysctl才能运行X的平台才会问你这个问题。 如果你回答 "y" ,文件 /etc/sysctl.conf中会包含一行machdep.allowaperture=1或machdep.allowaperture=2, 看你的具体平台。
如果你不想运行X或者不确定,这里请选择 'N', 因为今后如果你需要运行X,你可以轻松地通过修改 /etc/sysctl.conf 并重新启动就可以了。 如果不启动这个 aperture driver xf86(4) 多少在安全方面有一些潜在的优势, 因为现在的图形引擎可以脱离处理器的控制而修改内存。注意:非图形的应用程序如果需要X的库文件或工具来运行时不必设置sysctl 。
Change the default console to com0? [no] Enter
如果你需要设置一个串口控制台而不是系统默认设定 (通常是键盘和监视器), 你现在可以设置它。 如果你在这里选择了默认"y", 你会被提示设定bit-rate,注意:对控制台来说, 更快并非总是更好的, 我们强烈建议您采用自己平台的默认值。
Setup a user? (enter a lower-case loginname, or 'no') [no] Enter
你现在可以建立另一个用户帐号来进行日常的系统维护,不用老用root。这个用户将隶属于 "wheel" 组,所以他们能运行 su(1) 命令,如果你在这里创建了一个这样的用户,你会被要求输入密码。
注意:如果想创建这样一个用户这里直接输入他的用户名, 而不是用 "y" 或 "yes"来回答。(译者注:这里的解释有点多余,括号里写的很清楚了。)
What timezone are you in? ('?' for list) [Canada/Mountain] US/Naperville
OpenBSD 假设你的real-time clock (RTC) 设置为GMT, 但是你还需要制定你的所在时区(译者注:多少有点自我矛盾)。 这里有很多有效的物理位置答案(译者注:这里是选择题,如果你在中国就只能选亚洲/上海了,:(). 键入"?" 可以帮你找到有效的时区。
一般安装程序会准确地估计出你的位置,你只需在这里键"Enter".
更多关于如何设置时区的方法看 这里.
重要说明: 那些拥有大硬盘的用户 (这里指在您原来计算机的配置基础上安装了更大硬盘的用户) 进行下一步之前请先阅读这一小节。
合理的设置你的分区是OpenBSD安装中最复杂的一个步骤。
在OpenBSD中设置磁盘分区会因计算机平台的不同而略有差异, 对i386, amd64, macppc, zaurus和armish, , 建立磁盘分区分两个阶段, 首先用fdisk命令分出OpenBSD 在硬盘上使用的片(slice), 然后用disklabel 将这个"片"再分成OpenBSD的不同分区。
有些用户可能对这里用的术语很迷惑, 因为我们两次用的分区 "partition" 这个词, 但是含义不同, 这没错, 这是OpenBSD分区中两个不同的层次, 首先第一层分区指的是不同操作系统之间的磁盘使用划分, 划出一块磁盘空间由OpenBSD单独使用(译者注:比如OpenBSD, windows, Linux.......在一块硬盘上), 第二层分区是将第一层分区再用disklabel划分成OpenBSD不同的文件系统。dos或Wndows的用户可以在分区表内看见第一个分区, 第二层分区仅有OpenBSD或那些可以直接读取OpenBSD分区的操作系统才可以看得到。
OpenBSD的新的安装程序试图为“常规”用户设置一个更为简单的分区方案。注意很多用户还是喜欢定制自己的分区方案,或者说用根据自己的习惯进行分区,但是对新用户来说我们建议你采用安装程序自动为你设置的分区方案,除非你发现默认的分区方案不适合你的需求,说明一下,默认的分区方案是根据你的磁盘空间进行分配的。
现在我们在我们的40G磁盘上采用安装程序默认的方案进行分区。
这里注意一下,磁盘上已经存在了一个分区——如果你选择了"whole" 这个已经存在的分区会被删除!Available disks are: wd0. Which one is the root disk? (or 'done') [wd0] Disk: wd0 geometry: 4863/255/63 [78129971 Sectors] Offset: 0 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: 06 0 1 1 - 521 254 63 [ 63: 8385867 ] DOS > 32MB 1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused Use (W)hole disk or (E)dit the MBR? [whole] Enter Setting OpenBSD MBR partition to whole wd0...done.
如果你选择整块磁盘被OpenBSD使用,安装程序会做几件重要的事情:
更多关于使用 fdisk 来分区的说明请参下面。
现在我们在磁盘上的OpenBSD分区上用disklabel(8)细分OpenBSD的分区(读者这里可以理解为OpenBSD的具体目录):
Setting OpenBSD MBR partition to whole wd0...done. The auto-allocated layout for wd0 is: # size offset fstype [fsize bsize cpg] a: 1024.0M 63 4.2BSD 2048 16384 1 # / b: 127.2M 2097215 swap c: 39205.7M 0 unused d: 2729.1M 2357679 4.2BSD 2048 16384 1 # /tmp e: 4223.2M 7946823 4.2BSD 2048 16384 1 # /var f: 1252.3M 16595895 4.2BSD 2048 16384 1 # /usr g: 1024.0M 19160541 4.2BSD 2048 16384 1 # /usr/X11R6 h: 3678.7M 21257693 4.2BSD 2048 16384 1 # /usr/local i: 2002.4M 28791612 4.2BSD 2048 16384 1 # /usr/src j: 2002.4M 32892533 4.2BSD 2048 16384 1 # /usr/obj k: 21142.3M 36993454 4.2BSD 2048 16384 1 # /home Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] Enter
安装程序在这里已经向我们提供了"Auto layout"选项,也就是推荐的OpenBSD分区, 本例中我们接受推荐方案。
如果推荐的分区不合新的心意,你当然可以自行修改推荐值或完全自行分区,关于用disklabel来分区的更详尽的信息在 下面。
对重新安装系统的用户: 如果你选择了"(C)ustom Layout",新的安装程序不会删除你原有的disklabel, 你需要用disklabel(8)的‘m’选项来逐一设置每个挂载点。
安装程序现在建立这些分区和并在它们上用newfs(8)建立文件系统,并挂载这些分区来安装:
/dev/rwd0a: 1024.0MB in 2097152 sectors of 512 bytes 6 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/rwd0k: 21142.3MB in 43299416 sectors of 512 bytes 105 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/rwd0d: 2729.1MB in 5589144 sectors of 512 bytes 14 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/rwd0f: 1252.3MB in 2564644 sectors of 512 bytes 7 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/rwd0g: 1024.0MB in 2097152 sectors of 512 bytes 6 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/rwd0h: 3678.7MB in 7533916 sectors of 512 bytes 19 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/rwd0j: 2002.4MB in 4100920 sectors of 512 bytes 10 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/rwd0i: 2002.4MB in 4100920 sectors of 512 bytes 10 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/rwd0e: 4223.2MB in 8649072 sectors of 512 bytes 21 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/wd0a on /mnt type ffs (rw, asynchronous, local) /dev/wd0k on /mnt/home type ffs (rw, asynchronous, local, nodev, nosuid) /dev/wd0d on /mnt/tmp type ffs (rw, asynchronous, local, nodev, nosuid) /dev/wd0f on /mnt/usr type ffs (rw, asynchronous, local, nodev) /dev/wd0g on /mnt/usr/X11R6 type ffs (rw, asynchronous, local, nodev) /dev/wd0h on /mnt/usr/local type ffs (rw, asynchronous, local, nodev) /dev/wd0j on /mnt/usr/obj type ffs (rw, asynchronous, local, nodev, nosuid) /dev/wd0i on /mnt/usr/src type ffs (rw, asynchronous, local, nodev, nosuid) /dev/wd0e on /mnt/var type ffs (rw, asynchronous, local, nodev, nosuid)
你会发现看起来我们忽略了一个 c 分区, 这个分区是你的整个磁盘,不要企图修改它。
Location of sets? (cd disk ftp http or 'done') [ftp] Enter HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none] Enter Server? (hostname, list#, 'done' or '?') [mirror.example.org] obsd.cec.mtu.edu
如果你不能记住你喜爱(或者任何一个!)的镜像地址, 安装程序通常会帮助你自动选择一台适合你的服务器,或者你也可以键入"?" ,这样会显示出一系列镜像地址,然后自己选择合适的。
公用的 FTP 镜像都支持匿名下载。Server directory? [pub/OpenBSD/4.6/i386] Enter Login? [anonymous] Enter
你现在可以调整系统组件清单。
Select sets by entering a set name, a file name pattern or 'all'. De-select sets by prepending a '-' to the set name, file name pattern or 'all'. Selected sets are labelled '[X]'. [X] bsd [X] etc48.tgz [X] game48.tgz [X] xfont48.tgz [X] bsd.rd [X] misc48.tgz [X] xbase48.tgz [X] xserv48.tgz [ ] bsd.mp [X] comp48.tgz [X] xetc48.tgz [X] base48.tgz [X] man48.tgz [X] xshare48.tgz Set name(s)? (or 'abort' or 'done') [done] Enter
至少你需要安装一个内核(bsd), 和base48.tgz 以及etc48.tgz这两个系统组件。除非你自己清楚,否则选择默认的。 你可以使用"+"和"-" 以及通配符来添加和删除要安装的系统组件。
我们这里还是默认, 这台计算机为单处理器系统,所以不需要安装bsd.mp, 注意,如果这台计算机今后会升级为多处理器系统你应该安装bsd.mp。
现在我们开始安装! 如果你用一台很慢的电脑或你的网速太慢,到这里你可能一会儿就想回去选择其它的安装方式,但是如果你用很快的电脑并且使用本地的ftp来安装仅需要几分钟或更少的时间!
(译者注:如果你想安装的是发行版,还是事先刻录一张CD盘快,除非你安装的快照版,因为在i386/amd64平台上快照版几乎一两天就有新的,你可能没必要或不愿意刻盘才会选择通过ftp的方式来安装。)
bsd 100% |*************************************| 7063 KB 00:04 bsd.rd 100% |*************************************| 5913 KB 00:03 base48.tgz 100% |*************************************| 47315 KB 01:46 etc48.tgz 100% |*************************************| 503 KB 00:01 misc48.tgz 100% |*************************************| 2867 KB 00:06 comp48.tgz 100% |*************************************| 88555 KB 03:08 man48.tgz 100% |*************************************| 8047 KB 00:21 game48.tgz 100% |*************************************| 2558 KB 00:04 xbase48.tgz 100% |*************************************| 10160 KB 00:21 xetc48.tgz 100% |*************************************| 69166 00:00 xshare48.tgz 100% |*************************************| 2861 KB 00:12 xfont48.tgz 100% |*************************************| 34745 KB 00:57 xserv48.tgz 100% |*************************************| 19789 KB 00:39 Location of sets? (cd disk ftp http or 'done') [done] Enter
到这里你也许有想问如果漏安装了一些组件怎么办, 你可以通过 定制组件 来完成。
好了,本例中我们选择了安装默认的组件, 现在系统组件的安装完成了。
Saving configuration files...done. Generating initial host.random file...done. Making all device nodes...done. CONGRATULATIONS! Your OpenBSD install has been successfully completed! To boot the new system, enter 'reboot' at the command prompt. When you login to your new system the first time, please read your mail using the 'mail' command. #
到这一步, 你的系统已经安装完毕并准备重新启动和配置服务了。然后做这些之前,如果你聪明的话应该去检查一下勘误表页面 以确认是否有bugs会影响你。
等你完成初次启动后,系统将生成 SSH keys。在比较新的计算机上这个过程会花费几秒钟, 你可能根本就没有留意到这个过程。在老得计算机上这个过陈光可能会持续几分钟,在老爷机上可能会持续一个小时或更长的时间。
完成安装并重新启动后你应该做的第一件事是阅读afterboot(8).
你可能会发现下面的链接也很有用处:
OpenBSD开发者要求您发送一份dmesg. 所有的最终用户和开发者将会非常感谢您。
有时候您不能选择默认安装。这里有一些复杂安装的部分细节可以帮助您
Which one do you wish to configure? (or 'done') [xl0] Enter IPv4 address for xl0? (or 'dhcp' or 'none') [dhcp] 192.168.1.37 Netmask? [255.255.255.0] 255.255.254.0 IPv6 address for xl0? (or 'rtsol' or 'none') [none] Enter
在选择安装的系统组件后, 在这里你可以配置计算机上的任何网络适配器,如果你有多个网络适配器你可以逐个配置它们。
Available network interfaces are: xl0 vlan0. Which one do you wish to configure? (or 'done') [done]
现在, 你要配置默认网关和DNS servers, 这里的配置影响所有的网络适配器:
Default IPv4 route? (IPv4 address, 'dhcp' or 'none') 192.168.1.1 add net default: gateway 192.168.1.1 DNS domain name? (e.g. 'bar.com') [my.domain] jiarun.org DNS nameservers? (IP address list or 'none') [none] 192.168.1.250 192.168.1.251
如果你有多个DNS服务器,用空格将它们分开。
有时你还要进行更多的配置, 例如你需要设置无线网络的 access key 或者设置网卡的duplex 或速率(不要这样做,除非你必须, 调整你的 switch configuration 更好!). 你现在可以暂时进入shell进行必要的配置。
Do you want to do any manual network configuration? [no] y Type 'exit' to return to install. # ifconfig xl0 media xl0: flags=8843 mtu 1500 lladdr 00:08:74:2c:df:9c groups: egress media: Ethernet autoselect (100baseTX full-duplex) status: active supported media: media 10baseT media 10baseT mediaopt full-duplex media 100baseTX media 100baseTX mediaopt full-duplex media autoselect inet 192.168.1.37 netmask 0xfffffe00 broadcast 192.168.1.255 # ifconfig xl0 media 100baseTX mediaopt full-duplex # ifconfig xl0 xl0: flags=8843 mtu 1500 lladdr 00:08:74:2c:df:9c groups: egress media: Ethernet 100baseTX full-duplex status: active inet6 fe80::208:74ff:fe2c:df9c%xl0 prefixlen 64 scopeid 0x1 inet 192.168.1.37 netmask 0xfffffe00 broadcast 192.168.1.255 # exit ...setup resumes...
在Unix里的设置时间并不把转换Unix时间(1970年1月1日午夜过几秒 GMT) 转换成人们习惯的时间, 也就是将其描述为时区, 夏时制时间daylight savings time (DST), DST 规则变化等。 它们也包含了历史变更。
多个时区的定义文件有时会提供相同的当前时间, 但是它们的历史事件可能不同。例如, EST5EDT 和 US/Michigan 现在有相同的时间,但是回溯到1975年, 时间的定义规则是不一样的, 所以如果你做有关1975年的日期和时间的数学研究,你就会关注这些差异。这里你应该尽量选择一个明确精准的时区,而不是只关心你的当前时间。
如果你自己不能确定OpenBSD的安装程序会为你找一个合适的时区文件。在每个提示符下键入"?" 后安装程序会为你列出相应的选项。如果第一层选项中没有适合你的,请选择一个州或国家,如下所示 :
What timezone are you in? ('?' for list) [right/EST5EDT] ? Africa/ Chile/ GB-Eire Israel NZ-CHAT UCT America/ Cuba GMT Jamaica Navajo US/ Antarctica/ EET GMT+0 Japan PRC UTC Arctic/ EST GMT-0 Kwajalein PST8PDT Universal Asia/ EST5EDT GMT0 Libya Pacific/ W-SU Atlantic/ Egypt Greenwich MET Poland WET Australia/ Eire HST MST Portugal Zulu Brazil/ Etc/ Hongkong MST7MDT ROC posix/ CET Europe/ Iceland Mexico/ ROK posixrules CST6CDT Factory Indian/ Mideast/ Singapore Naperville/ Canada/ GB Iran NZ Turkey What timezone are you in? ('?' for list) [right/EST5EDT] US What sub-timezone of 'US' are you in? ('?' for list) ? Alaska Central Hawaii Mountain Samoa Aleutian East-Indiana Indiana-Starke Pacific Arizona Eastern Michigan Pacific-New What sub-timezone of 'US' are you in? ('?' for list) Naperville
我们在这里将时间设置为"US/Naperville". 这将在/etc 中产生一个符号链接指向/usr/share/zoneinfo下合适的时区文件,有点像这样:
/etc/localtime -> /usr/share/zoneinfo/US/Naperville
注意这个目录 "right/", 它包含了闰秒的调整, 或者重复标准时区的选择,更多信息。
说明: 仅部分 OpenBSD 平台的计算机全在使用fdisk, 通常仅有 i386 和 amd64 的用户忌惮fdisk的操作,而在使用fdisk的其它多数平台上的用户无需担心多启动或者建立/诊断分区。因此这一小节我们来关注一下 i386 和 amd64。
fdisk(8) 被用来在磁盘上划分出OpenBSD使用区域,它可以将OpenBSD使用的区域和其它的OS或system functions的区域分开。
如果你想保留硬盘上的原有的一个分区或者你想预留一些空间作为另一个分区, 那么你就不应该选择 "(W)hole disk", 但这样你就必须用 fdisk(8)手动编辑分区表。 如何手动编辑分区表的更多的信息在这里。如果你的磁盘上有重要的数据,请确认你已经备份了。 分区中的任何可能的误操都全可以轻易地破坏磁盘数据,所以如果你不想丢失您的信息,先备份好它。
如果你在已有一个OS的机器上安装OpenBSD, 你需要先在磁盘上分割出一些空间以便安装OpenBSD。这往往涉及删除或减小已有分区 。我们发现程序gparted 可以用来缩小多个流行的OSs的分区, 以便将为安装OpenBSD挤出空间。
本例我们假设使用一块40G的空白磁盘做多启动系统,并且先在磁盘的前面创建5G给windows系统,剩下的则留给 OpenBSD使用。 这里注意空白的磁盘必须有有效的MBR启动代码才可以启动。
这个过程与硬盘上已经存在一个分区很类似, 这里只是多了创建Windows分区以及考虑如何安装MBR启动代码的步骤。
Available disks are: wd0. Which one is the root disk? (or 'done') [wd0] Enter MBR has invalid signature; not showing it.
如果这块磁盘上存在有效的MBR, 它会显示现有分区表, 这样你就可以很方便地址到是否这块磁盘上已有数据。
Use (W)hole disk or (E)dit the MBR? [whole] e You will now create a single MBR partition to contain your OpenBSD data. This partition must have an id of 'A6'; must *NOT* overlap other partitions; and must be marked as the only active partition. Inside the fdisk command, the 'manual' command describes all the fdisk commands in detail. Disk: wd0 geometry: 4998/255/63 [80293248 Sectors] Offset: 0 Signature: 0x0 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused Enter 'help' for information fdisk: 1
首先注意fdisk的提示符。 数字 "1" 表明这是第一级分区表 -- 如果你正在编辑一个扩展分区,这里应该显示为 "2" (或更大的数字)。 扩展分区被分配后又自己的子分区表, 因为IBM AT有4个分区的设计限制。我们不在这里讨论扩展分区的问题。
首先, 我们需要将分区"0"设置成一个5G Windows 分区 (格式NTFS), 将其余空间设置成分区"1"作为我们OpenBSD的分区。
fdisk: 1> e 0 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused Partition id ('0' to disable) [0 - FF]: [0] (? for help)
因为我们不知道NTFS的分区ID, 我们键入 "?" 会出现一个列表。
Partition id ('0' to disable) [0 - FF]: [0] (? for help) ? Choose from the following Partition id values: 00 unused 20 Willowsoft 66 NetWare 386 A9 NetBSD 01 DOS FAT-12 24 NEC DOS 67 Novell AB MacOS X boot 02 XENIX / 27 Win Recovery 68 Novell AF MacOS X HFS+ 03 XENIX /usr 38 Theos 69 Novell B7 BSDI filesy* 04 DOS FAT-16 39 Plan 9 70 DiskSecure B8 BSDI swap 05 Extended DOS 40 VENIX 286 75 PCIX BF Solaris 06 DOS > 32MB 41 Lin/Minux DR 80 Minix (old) C0 CTOS 07 NTFS 42 LinuxSwap DR 81 Minix (new) C1 DRDOSs FAT12 08 AIX fs 43 Linux DR 82 Linux swap C4 DRDOSs < 32M 09 AIX/Coherent 4D QNX 4.2 Pri 83 Linux files* C6 DRDOSs >=32M 0A OS/2 Bootmgr 4E QNX 4.2 Sec 84 OS/2 hidden C7 HPFS Disbled 0B Win95 FAT-32 4F QNX 4.2 Ter 85 Linux ext. DB CPM/C.DOS/C* 0C Win95 FAT32L 50 DM 86 NT FAT VS DE Dell Maint 0E DOS FAT-16 51 DM 87 NTFS VS E1 SpeedStor 0F Extended LBA 52 CP/M or SysV 8E Linux LVM E3 SpeedStor 10 OPUS 53 DM 93 Amoeba FS E4 SpeedStor 11 OS/2 hidden 54 Ontrack 94 Amoeba BBT EB BeOS/i386 12 Compaq Diag. 55 EZ-Drive 99 Mylex EE EFI GPT 14 OS/2 hidden 56 Golden Bow 9F BSDI EF EFI Sys 16 OS/2 hidden 5C Priam A0 NotebookSave F1 SpeedStor 17 OS/2 hidden 61 SpeedStor A5 FreeBSD F2 DOS 3.3+ Sec 18 AST swap 63 ISC, HURD, * A6 OpenBSD F4 SpeedStor 19 Willowtech 64 NetWare 2.xx A7 NEXTSTEP FF Xenix BBT 1C ThinkPad Rec 65 NetWare 3.xx A8 MacOS X Partition id ('0' to disable) [0 - FF]: [0] (? for help) 07
现在我们定义它的起点和终点:
Do you wish to edit in CHS mode? [n]
CHS 模式允许你用柱面数、头数、扇区数描述磁盘空间。但是你要知道对新的硬盘来说CHS数完全是假的, 只是可以将这三个数转换为磁盘上的一个扇区,从而转换为磁盘的物理几何 (每种磁盘的物理几何可能全不一样)。
如果你这里选择了"y" , 系统会要求你输入起点和终点的柱面数、头数和扇区数r. 如果你这里选择了"no" (我们希望这样), 你会被提示输入起始扇区和大小。如果你的硬盘上已经存在一个分区,那么通过CHS编辑往往更容易一些 , 当你想快速创建分区时提供起始扇区和大小则更加简捷。
offset: [0] 63
fdisk需要将第一个扇区放置在0磁道(硬盘的第一条磁道)外。 这里的说的每条磁道上包含了一定数量的扇区数, 也就是最终的磁盘几何 "geometry:" 数。我们在这里(偏移量offset)一般输入"63" , 因为对现代的IDE和SATA磁盘来说这是惯例, 但是注意并非所有磁盘每条磁道包含的扇区数总是63,一般情况是这样的,但是SCSI和Flash磁盘除外。
size: [0] 5g Rounding to nearest cylinder: 10490382
这里的"Size" 值也可以用扇区数表示 (每个扇区512 字节), 或者你在后面用 "k", "m"或"g"表示它的容量(K、M、G)。当你用偏移量和大小时, fdisk会用将你提供的大小调整为整数的柱面数 (OpenBSD 不关心这些, 而且现在的OS可能全部关心这个调整, 但是某些操作系统有时可能会要求这样)。
现在, 看一下新分区:
注意提示符包含了一个 "*", 这表示你的更改还没有保存。fdisk:*1> p Disk: wd0 geometry: 4998/255/63 [80293248 Sectors] Offset: 0 Signature: 0x0 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: 07 0 1 1 - 652 254 63 [ 63: 10490382 ] NTFS 1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused fdisk:*1>
我们现在已经建立了Windows分区。注意这里只是在磁盘上为Windows系统保留了空间, 但是这块空间还没有被格式化; 上面也没有文件。 你可能会担心以后怎样安装Windows; 实际上在我们预留的空间上以后就可以创建Windows分区。
现在我们建立OpenBSD分区,分区ID是"A6"。
哦! 我的offset怎样填? 简单 -- 前一个分区的偏移量offset加上那个分区的大小, 本例中, 63+10490382 = 10490445.fdisk:*1> e 1 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused Partition id ('0' to disable) [0 - FF]: [0] (? for help) a6 Do you wish to edit in CHS mode? [n] Enter offset: [0]
offset: [0] 10490445 size: [0] * fdisk:*1>
注意这里我们在分区大小处键入了"*" , 这表示用“剩下的磁盘空间”。再说一次,如果我们想预留一些空间给其他分区,我们在这里可以用扇区数、或 "m" 、"g" 表示这个分区的大小。
现在我们看一下我们的分区表:
fdisk:*1> p Disk: wd0 geometry: 4998/255/63 [80293248 Sectors] Offset: 0 Signature: 0x0 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: 07 0 1 1 - 652 254 63 [ 63: 10490382 ] NTFS 1: A6 653 0 1 - 4998 5 63 [ 10490445: 69802803 ] OpenBSD 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused fdisk:*1>
还没有完成呢!
这块磁盘现在还不能启动!
因为这是一块全新的磁盘, 所以磁盘
MBR 是完全空白的。信息
"Signature: 0x0" 并非有效的 signature
(0xAA55), 所以肯定是一个无效的启动代码。当然, 你也许有有效的signature 但没有有效的启动代码,
或虚拟运气不好、抑或现存的驱动代码被破坏了, 但是一个无效signature往往表明你的启动diamante有缺陷, 所以我们在这里用"update"命令安装启动代码:
fdisk:*1> update Machine code updated. fdisk:*1>
我们还要用"flag"命令 将一个分区标记为 "active"(激活) ,这样boot ROM才知道从那个分区启动:
fdisk:*1> f 1 Partition 1 marked active.
我们看一下现在的分区表:
fdisk:*1> p Disk: wd0 geometry: 4998/255/63 [80293248 Sectors] Offset: 0 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- 0: 07 0 1 1 - 652 254 63 [ 63: 10490382 ] NTFS *1: A6 653 0 1 - 4998 5 63 [ 10490445: 69802803 ] OpenBSD 2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused 3: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused fdisk:*1>
这里有一个退出fdisk(8)前的检查事项清单:
在OpenBSD 的fdisk(8)分区内, 我们使用disklabel(8)来建立的OpenBSD的文件系统分区。 OpenBSD用"a"到"p"16个字母label自己的文件系统分区。位于启动磁盘的分区 "a" 被定义为root分区(根分区),在启动磁盘上的 "b"分区定义为默认的swap(交换)分区。在所有磁盘上的"c" 分区代表"整个磁盘"分区, 它是用来给那些必须真正直接访问物理硬盘的程序使用的, 例如fdisk(8) 和disklabel(8)。"c" 分区是系统自动为您产生的, 并且您不应试图删除或更改它。 其余的字母你可以用来定义挂载点。你可以跳过某些字母, 并且你可以不按照字母顺序定义分区,他们可以以乱序的方式ipailiezai磁盘上 (但是一些平台要求"a分区位于固定的区域). 你也可以在磁盘上预留一些空间不分配, 而在以后分配它们, 或用growfs(8)将未分配的空间扩充给某些现有分区。
所有原生的FFS分区全应该包含在OpenBSD的fdisk(8)分区内, 但是 非OpenBSD 分区可以(通常也是)放置在 OpenBSD的fdisk分区外。
关于使用disklabel的更详细的信息参阅这里。
怎样分区最好,何如合理的规划分区请参下面。
新的(指4.6) OpenBSD 安装程序会试图将您的磁盘划分成可用的、"通常目的" 配置的分区,这基于你磁盘的大小。如果你的硬盘足够大, 多余的空间会划分给/home分区,通常这很有用,但并非适合所有用户。
在本例中, 我们假设我们将建立一台静态的web服务器供一些我们的朋友使用。我们有一个适度的Internet连接速度, 使用一块40G的硬盘, 它的大部分空间供OpenBSD使用 (和上例一样这块硬盘上有5G的Windows分区。为什么? 也许这个系统上带有一个RAID控制器,OpenBSD虽然支持这个控制器, 但管理这个控制器只能在Windows操作系统里进行。还有, 也可能因为这个FAQ的编著人员不想维护太多的示例系统)。
OpenBSD的web服务器提供的网页位于/var/www, 还有很少的部分位于 /home里, 很明确这里要对默认设置进行修改。为了便于讨论, 我们也假设不需要在这台计算机上重新构建OS(我们将在其它的计算机上完成这个步骤)。 这个系统不运行X, 但是某些应用程序需要系统已经安装了X组件, 我们将安装X组件。 这台计算机不需要过于强劲, 这台计算机的内存不能超过1G, 我们的应用程序对内存的需求不会那样大。
所以, 经过略加思索, 我们决定采用如下的分区方案:
The auto-allocated layout for wd0 is: # size offset fstype [fsize bsize cpg] a: 1024.0M 10490445 4.2BSD 2048 16384 1 # / b: 252.1M 12587597 swap c: 39205.7M 0 unused d: 2319.3M 13103933 4.2BSD 2048 16384 1 # /tmp e: 3653.9M 17853877 4.2BSD 2048 16384 1 # /var f: 1149.8M 25337016 4.2BSD 2048 16384 1 # /usr g: 1024.0M 27691862 4.2BSD 2048 16384 1 # /usr/X11R6 h: 3422.6M 29789014 4.2BSD 2048 16384 1 # /usr/local i: 5122.3M 63 NTFS j: 1848.7M 36798433 4.2BSD 2048 16384 1 # /usr/src k: 1848.7M 40584654 4.2BSD 2048 16384 1 # /usr/obj l: 17540.2M 44370875 4.2BSD 2048 16384 1 # /home Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] c
如果你只有一些小地方需要修改, 可以选择 "Edit" 来定制分区布局而不是将原有分区大刀阔斧的砍掉, 但是在本例中我们可以放开手脚。
You will now create an OpenBSD disklabel inside the OpenBSD MBR partition. The disklabel defines how OpenBSD splits up the MBR partition into OpenBSD partitions in which filesystems and swap space are created. You must provide each filesystem's mountpoint in this program. The offsets used in the disklabel are ABSOLUTE, i.e. relative to the start of the disk, NOT the start of the OpenBSD MBR partition. Label editor (enter '?' for help at any prompt) > p OpenBSD area: 10490445-80293248; size: 69802803; free: 69802803 # size offset fstype [fsize bsize cpg] c: 80293248 0 unused i: 10490382 63 NTFS >
注意这里有两个现有分区 -- "c" 分区总在那里、是系统为你自动产生的, 而 disklabel(8) 也检测出了已经存在的NTFS 分区,并且分配给它一个分区标签以便让OpenBSD在需要的时候有可能访问它 (注意, 目前对 NTFS 的支持只是实验性的,要访问NTFS分区需要定制系统内核,但是OpenBSD对 FAT/FAT32 格式的分区支持的很好)。
我们将新建分区。 我们从分区 "a" 开始, 也就是root分区:
> a a offset: [10490445] Enter size: [69802803] 100m Rounding to cylinder: 208845 FS type: [4.2BSD] Enter mount point: [none] / >
注意:disklabel 默认会从 OpenBSD分区 的第一个扇区进行分区(译者注:建立OpenBSD文件系统), 我们正希望如此。不过它也会默认提供所有的可用空间给正在分配的分区, 这点并非我们希望的。这里我们自行定义分区的大小, 可以用 sector数, "M"或"G"来指定。
通常你会为一个FFS(Fast File System) 或者 FFS2分区选用"4.2BSD"的默认的FS类型, 但是有时你会发现其它有用的类型包括"swap" 和 "RAID"。
最后是挂载点。 我们的 "a" 分区被定义为root分区。
现在, 我们创建swap, 也就是 'b' 分区 (再强调一遍, 这是必需的 -- 你启动盘上的 'b' 就是swap):
> a b offset: [10699290] Enter size: [69593958] 1g Rounding to cylinder: 2104515 FS type: [swap] Enter >
再次注意, disklabel 准确地减速出起始扇区, 并向我们推荐了一个建议大小——"所有的剩余分区空间", 仍然不是我们希望的大小。 因为这是 'b' 分区, disklabel 假设他被用来做swap, 并且一旦我们对系统文件类型进行了确认,它甚至不询问我们挂载点是什么。
我们现在要建立剩下的分区。
> a d offset: [12803805] Enter size: [67489443] 2g Rounding to cylinder: 4209030 FS type: [4.2BSD] Enter mount point: [none] /usr > a e offset: [17012835] Enter size: [63280413] 100m Rounding to cylinder: 208845 FS type: [4.2BSD] Enter mount point: [none] /tmp > a f offset: [17221680] Enter size: [63071568] 2g Rounding to cylinder: 4209030 FS type: [4.2BSD] Enter mount point: [none] /usr/local > a g offset: [21430710] Enter size: [58862538] 1g Rounding to cylinder: 2104515 FS type: [4.2BSD] Enter mount point: [none] /usr/X11R6 > a h offset: [23535225] Enter size: [56758023] 1g Rounding to cylinder: 2104515 FS type: [4.2BSD] Enter mount point: [none] /home > a j offset: [25639740] Enter size: [54653508] 1g Rounding to cylinder: 2104515 FS type: [4.2BSD] Enter mount point: [none] /var > a k offset: [27744255] Enter size: [52548993] Enter FS type: [4.2BSD] Enter mount point: [none] /var/www >
注意在 /var/www 分区 ("k"), 我们还是接受了默认值,也就是说使用了所有剩余的磁盘空间。对于目前巨型容量的硬盘来说,这通常是一个坏方案。如果你确认你永远不会使用这样多,不要分配这样多空间, 而应该留着它将来兴许有其它用途..
现在我们用 "p" and "p m" 命令看看我们的战果:
> p OpenBSD area: 10490445-80293248; size: 69802803; free: 0 # size offset fstype [fsize bsize cpg] a: 208845 10490445 4.2BSD 2048 16384 1 # / b: 2104515 10699290 swap c: 80293248 0 unused d: 4209030 12803805 4.2BSD 2048 16384 1 # /usr e: 208845 17012835 4.2BSD 2048 16384 1 # /tmp f: 4209030 17221680 4.2BSD 2048 16384 1 # /usr/local g: 2104515 21430710 4.2BSD 2048 16384 1 # /usr/X11R6 h: 2104515 23535225 4.2BSD 2048 16384 1 # /home i: 10490382 63 NTFS j: 2104515 25639740 4.2BSD 2048 16384 1 # /var k: 52548993 27744255 4.2BSD 2048 16384 1 # /var/www > p m OpenBSD area: 10490445-80293248; size: 34083.4M; free: 0.0M # size offset fstype [fsize bsize cpg] a: 102.0M 10490445 4.2BSD 2048 16384 1 # / b: 1027.6M 10699290 swap c: 39205.7M 0 unused d: 2055.2M 12803805 4.2BSD 2048 16384 1 # /usr e: 102.0M 17012835 4.2BSD 2048 16384 1 # /tmp f: 2055.2M 17221680 4.2BSD 2048 16384 1 # /usr/local g: 1027.6M 21430710 4.2BSD 2048 16384 1 # /usr/X11R6 h: 1027.6M 23535225 4.2BSD 2048 16384 1 # /home i: 5122.3M 63 NTFS j: 1027.6M 25639740 4.2BSD 2048 16384 1 # /var k: 25658.7M 27744255 4.2BSD 2048 16384 1 # /var/www >
同fdisk类似, 你不会希望OpenBSD的disklabel分区重叠 (当然除了 'c' 分区, 它与所有的分区全重叠了)。
将变更保存并退出disklabel:
> w > q No label changes. newfs: reduced number of fragments per cylinder group from 13048 to 12992 to enlarge last cylinder group /dev/rwd0a: 102.0MB in 208844 sectors of 512 bytes 5 cylinder groups of 25.38MB, 1624 blocks, 3328 inodes each /dev/rwd0h: 1027.6MB in 2104512 sectors of 512 bytes 6 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each newfs: reduced number of fragments per cylinder group from 13048 to 12992 to enlarge last cylinder group /dev/rwd0e: 102.0MB in 208844 sectors of 512 bytes 5 cylinder groups of 25.38MB, 1624 blocks, 3328 inodes each /dev/rwd0d: 2055.2MB in 4209028 sectors of 512 bytes 11 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/rwd0g: 1027.6MB in 2104512 sectors of 512 bytes 6 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/rwd0f: 2055.2MB in 4209028 sectors of 512 bytes 11 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/rwd0j: 1027.6MB in 2104512 sectors of 512 bytes 6 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/rwd0k: 25658.7MB in 52548992 sectors of 512 bytes 127 cylinder groups of 202.47MB, 12958 blocks, 25984 inodes each /dev/wd0a on /mnt type ffs (rw, asynchronous, local) /dev/wd0h on /mnt/home type ffs (rw, asynchronous, local, nodev, nosuid) /dev/wd0e on /mnt/tmp type ffs (rw, asynchronous, local, nodev, nosuid) /dev/wd0d on /mnt/usr type ffs (rw, asynchronous, local, nodev) /dev/wd0g on /mnt/usr/X11R6 type ffs (rw, asynchronous, local, nodev) /dev/wd0f on /mnt/usr/local type ffs (rw, asynchronous, local, nodev) /dev/wd0j on /mnt/var type ffs (rw, asynchronous, local, nodev, nosuid) /dev/wd0k on /mnt/var/www type ffs (rw, asynchronous, local, nodev, nosuid) Let's install the sets! ...
一次完整的OpenBSD安装可以分解成一系列单独组件的安装, 不是每种应用全需要所有的系统组件。我们建议新用户安装所有的系统组件,这里有一个对每个组件的概述:
etc48.tgz 和xetc48.tg组件升级时不被选用, 只有安装时才用得到, 因为只有这样您的个人设定才不会丢失, 升级时您只能通过手动升级您的/etc, /dev/和/var目录。
即使您没打算运行X, 一些第三方的package里的软件也需要您的系统中已经安装了xbase48.tgz里的图形库文件, 这些软件仅需要安装X相关组件里xbase48.tgz组件就可以了, 其余的X组件不需要安装。 很多人不愿意在自己的系统上安装xbase48.tgz并无有依据的理由:
有些人有时候会浪费大量的时间尝试从xbase48.tgz里提取安装他们的应用程序所需的部件,这不仅没有任何意义,而且在每次升级还要重复上述步骤,并可能导致升级错误,产生真正的安全隐患。
如果你需要xbase48.tgz, 就安装它。它不比你的应用程序更危险 。
可以不装, 但别自我安慰说这样更安全, 如果有人已经足够深入地进入了你的电脑和你是否安装了编译器无关,另外如果他们需要可以自己安装一个编译器。但是, compXX.tgz 文件组比较大、同时里面包含了很多文件, 所以安装和升级它全要花费一定的时间, 在较慢的系统上是个问题。
如果你确实决定不安装编译器, 你也许需要在另外一个系统上维护和构建更新的软件。 实际上更多的系统是因不当的维护而存在安全缺陷,而不是因为安装了编译器。
很显然, 这个问题的答案会因为你系统不同的用途有很大的差异。OpenBSD 可以被安装在一个只有512M的空间上, 但是安装在如此小的地方是高手才能完成的事情。 到你积累了一定的经验前, 一块 4G 到 8G 的硬盘(区域)对新手来说更合适。
不想许多其它的OS, OpenBSD鼓励用户将磁盘分割成不同的分区, 而不是只有1个或2个大分区。这里有几个原因:
有关分区的一些额外思路:
多重启动是指在一台计算机中存在几种操作系统, 而且您可以选择启动哪个。这可不是什么雕虫小技, 如果您误操作会删除磁盘上的大量数据。对OpenBSD新手而言, 我们强烈建议您用一台专用电脑, 并在一块空硬盘上进行操作试验, 等您完全熟悉操作后再应用在您的关键设备上。 FAQ 14 上有更多关于OpenBSD启动过程的信息。
只有四个主MBR分区中的一个可以用来启动OpenBSD(例如, 在扩展分区上不行)。
这里有几个多重启动的选项:
通常这是最容易被忽视的, 但有时它是多重启动最有效的方法. 不管您正在用什么操作系统, 只要把下次要启动的操作系统所在的分区设为活动分区, 那么下次启动时它就能默认启动了. 每个的操作系统全有一个程序可以设定活动分区; OpenBSD用的是fdisk(8), Windows 9x和DOS和其它一些操作系统下也是用名字相似的程序. 如果您的计算机关机或者重启全需要很长时间, 这个方法还是很诱人的--您设定启动分区, 并重启, 然后到旁边喝杯咖啡, 回来的时候您要的系统已经启动了——不用等什么魔法时刻来选择进入哪个OS。
如果您的多平台计算机上OpenBSD系统不常用(或者您不想让其他用户发觉机器的变化), 那就用标准的OpenBSD安装软盘, 在软件盘上添加一个文件/etc/boot.conf (别忘了, 您需要在软盘上先建立一个/etc目录才行), 在/etc/boot.conf里添加如下内容:
boot hd0a:/bsd
这是让系统从驱动器"0"的OpenBSD所在的分区"a"启动, 内核文件是/bsd。说明一下您也可以从系统的其它分区启动, 比如这样:"boot hd2a:/bsd",就可以从第三个驱动器启动了。启动OpenBSD时插入软盘引导就行了;启动其它操作系统时先把软盘退出来, 再重新启动。
本例中, boot(8)程序是从软盘加载的, 并寻找读入/etc/boot.conf, 然后"boot hd0a:/bsd"语句告诉boot程序去哪里加载内核----在这里是BIOS里的第一块硬盘hd0。记住, 只有一个很小的文件/boot是被从软盘里读取出来, 系统还是会从硬盘中加载整个内核的, 所以用软盘启动只比从硬盘上直接启动多花了五秒钟。
如果要多重启动OpenBSD和Windows NT/2000/XP, 您需要使用 NTLDR这个工具, NTLDR是NT的启动加载程序(boot loader). 要让OpenBSD和NT在一起多重启动, 您需要一份 OpenBSD Partition Boot Record (PBR)的拷贝. 运行installboot之后, 您用dd(1)将其复制到一个文件:
# dd if=/dev/rsd0a of=openbsd.pbr bs=512 count=1
说明:现在正好提醒您一下, 在这里照搬照抄地输入您自己不知道的命令那绝对是一个馊主意。如果直接使用, 这一行并不能应用在大多数计算机里。这留给读者自己去更改成适合自己计算机的命令。
(译者注:非scsi硬盘用 dd if=/dev/rwd0a of=openbsd.pbr bs=512 count=1)
现在启动NT并且把OpenBSD.pbr拷贝到c:\, 在c\:boot.ini这个文件的结尾加上这句: c:\openbsd.pbr="OpenBSD" 当您重新启动后, 您应该可以在NT loader菜单里选择从OpenBSD启动。更多关于NTLDR的知识在NTLDR Hacking Guide可以找到。
在Windows XP上您也能用GUI(图形化)编辑器更改启动信息;请查看XP Boot.ini HOWTO。
有很多程序可以替您做这件事, 例如BootPart, 这个程序可以运行在NT/2000/XP, 并且可以获取OpenBSD PBR, 并把它拷贝至NT/2000/XP的分区, 并自动加入c:\boot.ini
说明: Windows NT/2000/XP boot loader只能启动装在主硬盘(master)的操作系统, 您不能用它来启动装在从硬盘(slave)的OpenBSD。
对Vista操作系统来说,Microsoft不再采用NTLDR而采用一个新的启动配置数据存储用来启动系统,BOOT.INI已经不能定制启动过程了,取而代之的是一个命令行工具,bcdedit。
一旦OpenBSD的PBR复制到Vista的 系统分区后,系统重新启动后,你需要在dos命令行里执行下面的三行命令来选择并启动OpenBSD:
C:\Windows\system32> bcdedit /create /d "OpenBSD/i386 4.6" /application bootsector The entry {05a763ce-d81b-11db-b3ec-000000000000} was successfully created. C:\Windows\System32>
执行完第一条命令后 GUID返回了这个数值, 05a763ce-d81b-11db-b3ec-000000000000, 请注意这个数值,因为这个数值在下面的两个命令中要用到,但是你如果仅是简单的复制上面的GUID显示值并不起作用。
你还需要下列这两行命令:
C:\Windows\system32> bcdedit /set {05a763ce-d81b-11db-b3ec-000000000000} device boot The operation completed successfully. C:\Windows\system32> bcdedit /set {05a763ce-d81b-11db-b3ec-000000000000} path \openbsd.pbr The operation completed successfully. C:\Windows\system32>
这里注意一下输入的PBR文件的绝对路径名,请勿再给其添加磁盘驱动器号,因为系统假设它就位于系统分区内。 bcdedit不会对多出来的的磁盘驱动器号报错,但是后面的boot manager将会声明它找不到指定的路径。
启动时,Vista首先列出最后安装的OpenBSD,如果你选择其它的启动管理器将带您进入相应的操作系统。
如果想了解更多bcdedit信息,请输入如下的命令:
C:\Windows\system32> bcdedit /?
或请搜索Microsoft的文档或网站。一个比较好的介绍在TechNet的 Frequently Asked Questions 文章中。
对于畏惧手动配置的用户来说, 你可以选择一个GUI的工具EasyBCD。
自从推出Vista以后,Microsoft加强了启动管理器的功能已允许通过bcdedit启动多个版本的Windows。因为这个更强劲的控制,在多启动环境内启动OpenBSD需要5个命令。
当你将OpenBSD的PBR复制到Windows7的系统分区后,键入以下命令才初始化所需的注册表项:
C:\Windows\system32> bcdedit /create /d "OpenBSD/i386 4.6" /application bootsector The entry {0154a872-3d41-11de-bd67-a7060316bbb1} was successfully created. C:\Windows\system32>
像我们前面告诫的一样,, 这个 {0154a872-3d41-11de-bd67-a7060316bbb1} GUID是依赖于每个系统的。 请记住你的数值,并将其复制到下列的命令中:
C:\Windows\system32> bcdedit /set {0154a872-3d41-11de-bd67-a7060316bbb1} device boot The operation completed successfully. C:\Windows\system32> bcdedit /set {0154a872-3d41-11de-bd67-a7060316bbb1} path \openbsd.pbr The operation completed successfully. C:\Windows\system32> bcdedit /set {0154a872-3d41-11de-bd67-a7060316bbb1} device partition=c: The operation completed successfully. C:\Windows\system32> bcdedit /displayorder {0154a872-3d41-11de-bd67-7060316bbb1} /addlast The operation completed successfully. C:\Windows\system32>
OpenBSD用户还成功的运行了其它的多重启动软件包括:GAG, The Ranish Partition Manager, rEFIt, and GRUB.。
请参阅 INSTALL.linux, 关于怎样让OpenBSD与Linux共存那里写得极其详细了。
OpenBSD设定计算机的时间为UCT(世界标准时间, Universal Coordinated Time), 而其它的一些操作系统允许把计算机主板上的实时时钟设定为当地时间。很显然, 如果一台计算机上有两个这样的系统, 就上会有一些小问题。双方间必须有一方去适应对方, 更多的关于这方面的信息, 请参考FAQ 8 - 为什么我的时钟误差了几个小时?
我们在这里提醒您, 对开发者来说知道哪些平台上运行OpenBSD正常, 或者哪些平台运行得不太理想是十分重要的。
在这里引用一段/usr/src/etc/root/root.mail的内容:
If you wish to ensure that OpenBSD runs better on your machines, please do us a favor (after you have your mail system configured!) and type something like: # dmesg | mail -s "Sony VAIO 505R laptop, apm works OK" dmesg@openbsd.org so that we can see what kinds of configurations people are running. As shown, including a bit of information about your machine in the subject or the body can help us even further. We will use this information to improve device driver support in future releases. (Please do this using the supplied GENERIC kernel, not for a custom compiled kernel, unless you're unable to boot the GENERIC kernel. If you have a multi-processor machine, dmesg results of both GENERIC.MP and GENERIC kernels are appreciated.) The device driver information we get from this helps us fix existing drivers. Thank you!
请确认您发送信息的邮箱地址可以接收邮件, 以便让开发人员可以与您联系, 他们有时会指导您进行测试, 修改以帮助您调整系统。您不必非从使用OpenBSD的那台计算机发送email, 如果那台计算机无法收取email, 您只要:
然后再从您的邮箱里把这封信转发给$ dmesg | mail your-account@yourmail.dom
dmesg@openbsd.org当然, 这里所说的"your-account@yourmail.dom"请使用您自己的邮箱地址。
说明
上面的方法很简单, 但是如果您不打算在OpenBSD上配置电子邮件, 您也应该将您的dmesg发送给开发者, 可以简单的将dmesg输出到一个文本文件:
然后将这个文件用(FTP/scp/floppydisk/carrier-pigeon/...) 等方式发给您可以正常使用电子邮件的计算机. 因为您发来的dmesg是系统自动处理的, 所以无论是用邮件客户端或邮件服务器发送, 请检查下列选项:$ dmesg > ~/dmesg.txt
有时, 直到安装后您才意识到您确实需要comp48.tgz组件 (也许是其它组件), 但当时的确是没想起来, 这里有个好消息告诉您----安装后有两种方法可以添加组件:
# cd / # tar xzvphf comp48.tgz
别忘了在解压缩时使用"p"参数, 以便完整保留原始文件的使用权限!
一个常见的错误是, 想用pkg_add(1)把遗漏的组件安装到系统中, 别那样做, 那可不行。pkg_add(1)是一个第三方软件包管理工具 , 是用来安装第三方软件的, 它只能处理第三方软件包的tar文件, 处理不了安装组件这类的tar文件。
如果您用tar(1)第一次安装完xbsse组件, 在重新启动前, 必须先用ldconfig(8)对共享库缓存文件进行升级, 把所有的X库加到缓存文件中:
# ldconfig -m /usr/X11R6/lib
或者, 您可以重新启动系统, 而这项工作会被rc(8))启动脚本自动完成。
bsd.rd 是一个内存磁盘内核。这个文件非常有用, 很多开发者将它妥善地保存在系统的根目录。称其为"内存磁盘内核"是形容内核挂载的根文件系统在内存磁盘中而不是不在物理磁盘中, 启动bsd.rd后, 必要的系统工具被储存在内核中, 并且在一个基于内存的文件系统中运行。bsd.rd还包含了一系列得心应手的工具以便让您进行系统维护和安装。在有些平台上, bsd.rd是首选的安装方法——您把bsd.rd放到一个已经存在的文件系统内, 启动它, 并且用它进行安装。在大多数平台上, 如果您有一个正在运行的老版本的OpenBSD, 您可以"ftp"一个新版本的bsd.rd, 从bsd.rd启动, 并安装一个新版本的OpenBSD而不需要任何可移动介质(软盘, 光盘)来安装。
这有一个i386上用从bsd.rd启动的例子:
像上面例子中显示的那样, 您会进入安装程序, 但您也可以中断安装, 进入shell去维护您的系统。Using Drive: 0 Partition: 3 reading boot..... probing: pc0 com0 com1 apm mem[639k 255M a20=on] disk: fd0 hd0+ >> OpenBSD/i386 BOOT 3.02 boot> boot hd0a:/bsd.rd . . . normal boot to install . . .
一个从bsd.rd的启动通用法则就是在您的平台上无论用什么方法把启动内核从/bsd, 变成bsd.rd。
有些Compaq系统存在一个的问题, 这些机器的内存无法被 OpenBSD second stage boot loader 正确地识别出全部内存, 刚开始OpenBSD可能只识别和使用了16M, 这个问题可通过建立或修改 /etc/boot.conf文件修正, 或在OpenBSD引导前在"boot>"提示符下输入命令, 假设您的计算机是64M内存, 而OpenBSD仅检测出16M, 那命令应该是:
machine mem +0x3000000@0x1000000意思是48M (0x3000000)加上16M (0x1000000)内存. 与此相同, 如果您的计算机也存在这样的问题, 首先插入软盘/光盘引导, 在出现提示符"boot>"时输入上面的命令, 然后重新启动系统, 并在/etc/boot.conf里添加上这句话, 这样以后启动时您的内存就全部识别了。
也有人反映有些这类计算机升级ROM后就没事了
# fdisk -u wd0
说明从OpenBSD3.8版本开始key文件尺寸增加了, 所以比以前的版本需要花费更多的时间生成key文件。如果您的机器配置很低, 可以在另外一台高性能的机器上生成key, 然后将它们放到site48.tgz文件里, 在安装时和其它系统组件一并安装。
这在安装预发行版时是一个正常的现象, 因为ftp程序会到主ftp服务器上寻找该版本的系统组件, 但实际上这些组件还没有被放到那里, 一般情况时下一个正式版发行时FTP上才会有新版本的安装组件。Display the list of known ftp servers? [no] yes Getting the list from 192.128.5.191 (ftp.openbsd.org)... FAILED Failed to change directory. Server IP address or hostname?
您只需查阅一下FTP镜像列表, 然后出现提示时手工输入您选的FTP的域名或IP地址。
说明:如果您是从CD-ROM上安装发行版OpenBSD不会出现这样的提示。
嗯, 当然这样配置也可以使用, 但是给维护时带来了麻烦, 我们应该修正它, 只能重新进行文件系统的分区了。(如果您确实知道怎么做, 您应该仅重新写一下您的disklable和MBR, 这样您只损失了第一个分区的数据。)
任何时候都不要忘记, 那台计算机上原来就存在着操作系统, 通常的系统设计会考虑在那台计算机上重新安装操作系统。你知道怎么重新安装原来的操作系统就可能知道怎样装OpenBSD。
真正的 -release 文件组件应该都匹配它们的checksums.
有时候, snapshots 可能并未在安装内核里保存正确的checksums。 这可能是编译过程中的各种原因造成的, 不用因此惧怕开发的snapshots。 如果你确实有些担心, 就等下一个snapshot好了。
OpenBSD的安装/升级脚本允许添加一个用户自定义的"siteXX.tgz"组件, 这里的XX表示发行版的版本号(比如:48).这个siteXX.tgz组件和其它系统组件一样, 是一个经过gzip压缩的包含释放路径的tar包, 并且和其它系统组件一样可以使用tar的xzphf参数进行释放。这个用户自定义组件是在其它系统组件安装完成后最后一个安装。
这个用户自定义组件允许用户添加自己的组件或者"矫正"正常的安装组件(译者注:这是为什么要放在最后面安装的原因, 这样才可以覆盖前面安装默认组件时的设置), 这样就可以让用户自定义或升级系统。 您也可以安装一个包含特定主机名的自定义组件, 像这样siteXX-<hostname>.tgz, 例如:"siteXX-9971.tgz", 这是为了每台计算机全可以进行用户自定义的安装, 升级系统及系统灾难恢复。
这里有一些使用siteXX.tgz的例子:
做为安装或升级的最后一个步骤, 脚本会在新系统的root目录下寻找install.site或者upgrade.site这两个文件。根据安装或更新的的进程, 脚本在root目录里运行, 并且被系统chrooted在这个环境里。记住, 升级是在已经安装的系统上进行的, 所以您的目标系统已经被挂载到 /mnt 下。不管怎样, 因为chroot的原因, 您脚本可以像运行在正常的系统的 "/" 下的那样编写。因为这个脚本是在所有组件被安装后运行的, 所以这时它几乎可以运行系统的全部功能(尽管是在单用户模式下)
说明: upgrade.site在升级前放到root目录里或者直接放在siteXX.tgz这个自定义组件里, install.site必须放在siteXX.tgz这个自定义组件里
这个脚本可以同来干很多事情:
提供siteXX.tgz结合install.site和upgrade.site就是为了让您可以"随心所欲"的定制自己的系统, 否则您自己将不得不自制系统自己的系统安装组件。
说明:如果您要通过一个http服务器安装系统, 您必须在http服务器下安装目录的index.txt文件里加上您的site*.tgz, 以便安装系统时可以选择它们。ftp或其它安装方式不需要这样做。
在多数平台, 您的安装介质(软盘, CD, ……。)上包含了系统恢复程序restore(8), 它可以被用来恢复dump(8)产生的一个备份, 因而, 您可以从一个floppy, CD, 或者bsd.rd文件启动, 然后 fdisk, disklabel 和 restore 恢复保存在其它地方的配置, 并在系统上安装引导块 boot blocks. 更多细节请看这里。
如果您可以考虑一下, 您会发现dd命令可以帮您做一些事情, 允许您用扇区到的复制方式把一块硬盘的内容拷贝到另一块上, 这可以完成一些商业软件的功能而您则不必花钱。
# mount -t msdos /dev/fd0a /mnt # dmesg >/mnt/dmesg.txt # umount /mnt
如何建立串口控制台的详细说明在elsewhere in the FAQ; 为捕捉安装日志, 下面的命令通常足够了。
i386
当出现boot引导提示符出现时输入:
boot> set tty com0
这是通知OpenBSD用第一个串口(在pc文档里也经常被称为COM1或者COMA)做为串口控制台,默认波特率是9600。
Sparc/Sparc64
这些机器在启动时没有键盘将自动使用一个串口控制台。即使您安装了键盘和监视器也同样可以在出现"OK"提示符时用以下命令强制系统使用串口控制台。
ok setenv input-device ttya ok setenv output-device ttya ok reset
[索引] [第三章 - 开始OpenBSD之旅] [第五章 - 从源代码构建系统]