作者:freedemon freedemon@freedemon.org
版权所有,请完整转载
最近闲下来,终于有空翻出压箱底的老机Alpha 21164出来让它发挥一点余热。说起这台机器就郁闷,本来是准备拿来装个VMS作留念的,谁知道后来手上的OpenVMS 7.1-1似乎有bug,死活都装不上。装Tru64?没劲。FreeBSD?太慢。NetBSD?netBSD for Alpha的boot部分似乎有点问题。最后考虑到还是Linux上应用最多,于是决定拿它来装个Linux跑跑Web算了。
机器硬件配置:
MainBoard: Alpha PC164
CPU: Alpha 21164/500M 64b
RAM: ECC sDIMM DRAM 256M
SCSI: Symbios Logic 53c875
HD: Seagate SCSI 18G 1kRPM
NIC: Intel eepro 100 x2
VGA: MGA G100
0.准备工作
================================================================================
在系统的选择上费了一番功夫,Tru64这样的系统实在是没什么意思,当前的VMS版本又装不上,freebsd 5 for alpha简直是非常之慢...只好选一个合适的Linux。 支持Alpha的Linux有Redhat 7.2 ,Debian 3.0r1/2,Mandrake 7.2,Gentoo,还有据说再过*个月会出Alpha版的Fedora core 2。排除古老的Mandrake和Redhat,比较合适的版本有Debian 3.0和Gentoo。新的发布可以维护比较少的升级包,装起来也简单些,即使打造自己的Distribution也得选一个合适的基础吧。简单测试了一下之后发现Debian之中的软件和内核还是太老,过于“稳定”了吧。再加上我天生不喜欢debian,最后选定Gentoo安装。
在Gentoo 发布站上有几个版本可以选,但是由于Alpha版的使用和维护人员太少,所以Alpha版的进度一直比其他版本之后,所以如果要选择Release版本的话可以看到一个1.4_rc1的目录(http://gentoo.osuosl.org/releases/1.4_rc1/),里面就是Alpha版的了。比较一下时间竟然还是2003年的,于是最后只好选择了experimenta版发布。
http://gentoo.osuosl.org/experimental/alpha/
Gentoo Linux的安装过程分为两部分,第一部分你需要使用某个Live Linux,至少能够提供你所需的基本系统环境的(分区和磁盘工具,网络环境,以及tar等基本工具)来引导系统,并且提供一个基础的工作环境,然后在这个环境之上开始构建你的目标系统。第二部分当然就是你所要安装的那部分,在Gentoo中称为Stage。stage也需要你手工进行展开,展开之后可以进入它的环境,然后通过网络下载安装系统所选的其他部件,最后自即便以整个系统完成安装,类似FreeBSD中的CVSup & make world 过程。
虽然Live环境在其他平台下有很多优秀的选择,例如可以集成编译环境在光盘上的slax和knoppix,但是Alpha上的选择不多,最为完整的也就是Gentoo的LiveCD了。
Gentoo 的Stage部分也包含集中版本,分别为Stage 1 - 3,stage1包含的已经编译的二进制部分最少,这意味着你所需要做的工作也越多,当然感觉也更原始。Stage3已经包含了系统中的大部分基本组件,包含系统工具和开发环境,基本相当于FreeBSD的mini安装。
如果你在本地有多台机器的话,可以选择先把stage下载下来,存放在某个ftp或web上,这样可以节省我们在安装过程中的等待时间。
准备我们的安装环境是需要下载两部分内容:
Gentoo LiveCD:
http://gentoo.osuosl.org/experimental/alph....0-20040313.iso
Gentoo Stage:
http://gentoo.osuosl.org/experimental/alph...0040730.tar.bz2
下载完之后,开始工作。
1.确认你的硬件和机器环境
================================================================================
在Alpha 平台上,存在两种firmware(类似于PC BIOS),分别是ARC和SRM。ARC是Alpha平台运行Windows NT是的固件环境,而SRM是引导Unix/VMS是的固件环境,SRM能够良好支持Linux/Unix/VMS的加载,而在ARC环境下需要milo 来引导系统,缺点是只能够使用软盘引导...
如果你的机器是ARC环境,那么在软驱或光驱中放入SRM更新软盘或官方的firmware光盘,在系统引导时按下F2进入ARC Bios,选择F6高级,然后在ARC提示符下运行>>> update srm,系统会自动刷新到SRM firmware。
再次引导系统之后,将会进入SRM的命令行环境下。SRM相当于一个mini的嵌入Unix,提供了与unix环境类似的命令环境和结构,ls可以查看设备以及文件,man/help是帮助。
下面是一些有用的命令设置:
>>>set os_type unix 设置系统类型,unix,nt,或vms
>>>set boot_osflags '0,0' 设置引导参数,某些系统内核需要制定特殊参数
>>>show conf 查看系统当前硬件配置
>>>show dev 察看详细硬件信息
>>>init 初始化硬件环境
>>>boot device -f "flags" 引导操作系统
在srm环境中设备名与我们通常遇到的都不大一样,常见的分类如下:
DR: RAID集合设备
DV: 软盘
EW: 以太网卡(TULIP, DEC 21040)
EI: 以太网卡(Intel 82557 or 82559)
PK: SCSI控制器
DK: SCSI硬盘
MK: SCSI磁带机
DQ: (E)IDE 设备 (硬盘或光驱)
常见的设备名例如:
SRM名字 Linux对等名 意义
dka0 /dev/sda1 dk=scsi hd,a=scsi adapter 1,0=device 0
dka600 /dev/scd0 dk-scsi cdrom,a=scsi adapter 1,600=device
dqb0 /dev/hdb0 dq=ide hd/cdrom,b=ide master second ,0=parartion 1
dva0 /dev/fd0 dv=floppy,a0=floppy 1
明白了这些之后,在SRM环境下引导我们的系统,首先就得确认硬件是否正确识别出,使用show conf可以看到当前识别出的硬件,确认已经找到了光驱(dka600或dqa0之类)和硬盘(例如dka0或dqa0),之后就可以开始安装:
>>>show conf
>>>boot dka600
之后系统将从Gentoo光盘上加载和引导内核,直至完成整个LiveCD的引导过程。最后我们可以看到Gentoo的登陆提示符:
2.设定网络
================================================================================
Gentoo Login:
使用 用户名:root,密码:空 登陆进入系统。
开始系统环境的基本配置。
# modprobe eepro100
# ifconfig eth0 192.168.0.100 netmask 255.255.255.0
# route add deault gw 192.168.0.254
# cat "nameserver 202.96.209.6">>/etc/resolv.conf
(或dhcpcd eth0使用dhcp分配地址)
加载网卡驱动,gentoo livecd默认直支持3c59x(3com 590)、eepro100(Intel 8255x)、tulip(dec 2114x)系列芯片的网卡和ppp/pppoe网络连接。
配置网络地址、网关和DNS服务器。
如果使用DSL连接,可以使用如下命令配置:
# adsl-setup
# adsl-start
如果使用代理服务器,可以配置:
(如果是 HTTP 代理服务器)
# export http_proxy="http://proxy.gentoo.org:8080"
(如果是 FTP 代理服务器)
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
(如果是 RSYNC 代理服务器)
# export RSYNC_PROXY="proxy.gentoo.org:8080"
现在,我们已经可以正常使用LiveCD上的网络工具了,例如ftp,wget,ssh/scp,links。当然,我建议现在不要打开sshd服务,而在下面的一步再开放,会方便一些我们以后的工作。
3.分区和安装stage系统
================================================================================
下面就是我们安装过程中最重要的工作,分区和安装系统。在Gentoo中所有的过程都必须你手工来,所以你得要对一些基本命令非常熟悉。
# fdisk /dev/sda
Detected an OSF/1 disklabel on /dev/sda, entering disklabel mode.
BSD disklabel command (m for help): p
8 partitions:
# start end size fstype [fsize bsize cpg]
a: 1 2000 2000 ext2
b: 6442 6991* 549* swap
c: 1 6991* 6990* unused 0 0
d: 2001 6441 4441 ext2
BSD disklabel command (m for help):
我们可以看到如上图的fdisk界面,在Alpha系统中,磁盘的使用是按照BSD disklabel格式来设定的,每个磁盘可以有a-h 7个slice(分区)可以使用。注意,是七个哦,在分区列表中的c:(第三个分片)是代表整个磁盘设备,对它的所有操作都将映射到整个磁盘上,所以在任何情况下都不要擅动这个设备名(或磁盘设备名中的第三个分区,例如sda3)。
如果你不小心删除了disklabel,slace c:,或者使用一个新磁盘,那么还将会见到传统的fdisk界面,我们可以使用fdisk指令"b"来进入disklabel界面。
有用的fdisk/disklabel指令:
m 帮助
p 打印当前disklabel表
r 回到fdisk主菜单(由主菜单b切换到disklabel菜单)
u 改变磁盘空间计算单位(柱面或扇区,默认为柱面)
n 建立一个新的label项(分区)
d 删除一个label项(分区)
t 改变分区文件系统类型(L可以列出可用类型)
w 保存disklabel
q 退出fdisk,默认不自动保存
使用n来建立新的分区吧,注意好分区大小的计算,默认是按柱面计算,后一个分区不能与前一个分区重叠,因为系统不会报错,还有任何情况下不要删除或修改c:项。
举例我的分区表:
8 partitions:
# start end size fstype
a: 1 2000 2000 ext2 /
b: 6442 6991* 549* swap swap
c: 1 6991* 6990* unused "whole disk"
d: 2001 6441 4441 ext2 /home
可以使用t - 分区号 -数字(8=ext2,1=swap)的方式来修改文件系统类型,当然这只是一个disklabel的内部标示,对于Linux并不是完全有意义的, Linux将由文件系统super block信息来判定文件系统--是ext2,xfs还是swap。
分区之后我们将手工建立文件系统:
# mkfs.ext2 /dev/sda1 (建立ext2文件系统)
# tune2fs -j /dev/sda1 (转换为ext3文件系统)
# mkfs.xfs -f /dev/sda4 (建立xfs或其他对应文件系统)
# mkswap /dev/sda2 (建立swap文件系统)
然后试着加载他们:
# modprobe ext3
# modprobe xfs
# mkdir -p /mnt/gentoo/home
# mount -t ext3 /dev/sda1 /mnt/gentoo
# mount -t xfs /dev/sda4 /mnt/gentoo/home
如果没有出错的话,我们就可以顺利开始stage阶段的安装过程了。
先想办法通过你能想到的任何方式(例如ftp,scp,wget或其他)把stage对应文件弄到我们的新分区里,然后展开它。
例如:
# cd /mnt/gentoo
# wget http://gentoo.ccccom.com/experimental/alph...0040730.tar.bz2
# tar xjvpf stage3-alpha-20040730.tar.bz2
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
# mount -t proc none /mnt/gentoo/proc
现在恭喜你,在你的硬盘里已经完完全全的躺着一个Gentoo Linux了。
4.安装完整的系统
================================================================================
不过,对于Gentoo来说,这只是开始,而不是结束。
因为这个系统当前还不能引导,也缺乏太多的系统应用,我们还需要把这个胚胎逐步完善,让它成长起来。
开始吧。
利用chroot切换到我们的新系统--当前还是个虚拟环境中。
# chroot /mnt/gentoo /bin/bash
# env-update
# . /etc/profile
# emerge sync
(gentoo默认使用rsync协议进行文件同步,如果你使用代理服务器无法使用rsync的话,可以使用# emerge-webrsync命令来代替它)
# emerge mirrorselect (安装mirrorselect加快我们的下载连接)
# mirrorselect -a -s4 -o | grep 'GENTOO_MIRRORS=' >> /etc/make.conf
(mirrorselect会自动选择最快的gentoo镜像站点)
编辑USE选项,USE是gentoo的安装软件集设定方法,可以通过在命令行或者/etc/make.conf中修改USE环境变量来设定我们需要下载和安装哪些软件。
在/usr/portage/profiles/use.desc中有可用USE的完全列表。
修改/etc/make.conf文件设定我们整个系统的编译选项和组件集合。
# nano /etc/make.conf
我的make.conf如下:
--------------------------------------------------------------------------
CFLAGS="-mieee -O3 -mcpu=ev56 -pipe"
#系统编译选项,-O3最大优化,-mcpu指定系统体系类型,-pipe加快gcc编译速度
CHOST="alpha-unknown-linux-gnu"
CXXFLAGS="${CFLAGS}"
USE="-gtk -gnome qt kde -dvd alsa -cdr -xmms"
#设定USE选项,指定名字为要添加和安装的选项,-为从默认设置中删除选项
GENTOO_MIRRORS="http://www.zentek-international.com/mirrors/gentoo/ http://ftp.gentoo.or.kr/ http://mirror.gentoo.gr.jp http://gentoo.gg3.net/"
#mirrorselect设定的镜像站点,用于加快源代码下载速度
-------------------------------------------------------------------------
下面开始编译和安装完整的系统,本过程依赖于你已经下载的stage的不同,可能要作或多或少的步骤,当然需要的网络带宽、系统资源、运行时间也会有变化。
stage1
==============
stage1需要最长的编译时间,它将首先下载和编译系统开发环境,gcc等编译组件
# cd /usr/portage
# scripts/bootstrap.sh -f
# scripts/bootstrap.sh (编译基本系统,需要大量时间)
stage2
==============
stage2将编译系统中的基本组件,使系统可以运行起来。
# emerge --pretend system (查看将要安装的组件)
# emerge --fetchonly system (只下载源代码,加快编译速度)
# emerge system (编译整个系统,需要大量时间)
如果没出错,一切都很顺利,那么我们可以进入下一步工作。如果出错了,最大的原因就是网络传输不稳定,导致某些下载的包出错无法校验,这个时候请手工删除出错信息提示的包,然后重新开始emerge过程,放心,emerge会从他跌倒的地方爬起来,决不做无用功。其他一些错误可能是库、版本、兼容性、网络稳定性的问题,请自行诊断并解决。
5.编译新内核和其他组件
================================================================================
编译新内核
我们可以采用Gentoo优化调整过的内核发布或Linux官方版本的内核,Gentoo设定的内核通常会加入一些特别功能补丁并进行测试,如果你喜欢更原味的,可以去Linux官方站点下载:
http://www.kernel.org
在gentoo 的开发树中内设了多个版本的内核发布,例如vanilla-source(常规通用内核)、alpha-sources(alpha版本内核)、 compaq-sources(compaq维护的redhat linux alpha版内核)、gs-sources(gentoo stable......)。如果要安装gentoo的内核可以使用emerge来获取和展开内核源代码:
# emerge vanilla-sources (或另两个名字)
使用Linux官方内核:
# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v2....2.6.8.1.tar.bz2
# tar xjvf linux-2.6.8.1.tar.bz2
配置并编译内核:
# cd linux*
# make menuconfig (具有一个较易用的文本菜单界面,或使用make config问答式交互界面)
# make dep (2.6内核可省略此命令)
# make vmlinuz && make modules && make initrd
# make install && make modules_install
(编译和安装新内核)
在Alpha平台下我们编译内核最重要的是一定要支持我们所选择的文件系统和硬件环境(例如CPU体系、网卡、SCSI卡等等)
至少要选中如下内容:
-------------------------------------------------------------------------
(Alpha体系相关设置)
General setup --->
Alpha system type (Generic) --->
<*> SRM environment through procfs
<*> Configure uac policy via sysctl
(文件系统)
File systems --->
<*> Reiserfs support
<*> Ext3 journalling file system support
<M> JFS filesystem support
<*> Second extended fs support
<*> XFS filesystem support
File systems --->
<*> Kernel automounter version 4 support
Network File Systems --->
<*> NFS
[*] NFSv3 client
<*> NFS server
[*] NFSv3 server
Partition Types --->
[*] Advanced partition selection
[*] Alpha OSF partition support
Native Language Support
<*> NLS ISO 8859-1
<*> CP936 (简体中文文件系统字符表支持)
(2.4.x 内核特别文件系统)
File systems --->
[*] Virtual memory file system support (former shm fs)
[*] /proc file system support
[ ] /dev file system support (EXPERIMENTAL)
[*] Automatically mount at boot
[*] /dev/pts file system for Unix98 PTYs
(2.6.x 内核特别文件系统)
File systems --->
Pseudo Filesystems --->
[*] /proc file system support
[*] /dev file system support (OBSOLETE)
[*] Automatically mount at boot
[*] Virtual memory file system support (former shm fs)
(硬件设备支持)
Plug and Play configuration --->
<*> Plug and Play support
<M> ISA Plug and Play support
SCSI support --->
SCSI low-level drivers --->
<*> SYM53C8XX Version 2 SCSI support (NEW)
<*> Qlogic ISP SCSI support
Network device support --->
Ethernet (10 or 100 Mbit) --->
<*> DECchip Tulip (dc21x4x) PCI support
<M> Generic DECchip & DIGITAL EtherWORKS PCI/EISA
<*> EtherExpressPro/100 support (eepro100)
<M> EtherExpressPro/100 support (e100)
Character devices --->
[*] Support for console on serial port
[*] Direct Rendering Manager
-------------------------------------------------------------------------
提示: 如果你不想那么麻烦,而想使用傻瓜化的内核编译工具,gentoo刚好提供了一个,genkernel工具会自动探测你的硬件设备并配置内核,然后编译和安装。
# emerge genkernel
# genkernel all
# modules-update
(安装genkernel,编译和安装内核)
emerge 是gentoo中的软件管理工具,几乎任何地方你都用得着它,他用一种类似FreeBSD ports的方式维护着一个庞大的软件源码库,任何时候都可以通过网络简单的获取到最新的软件安装。使用emerge [USE名字]的方式就可以使gentoo自动的下载和安装对应软件。
6.设定启动和引导环境
================================================================================
最后,呵呵,祈祷你在之前的过程中都没有断电和关机。
(断电了也无所谓,只不过你仅仅要重复一遍第二步的工作,然后重新开始你的make world计划wink.gif
因为我们还有最重要的一步工作没有作,让这个系统能够自动引导起来。
前面说过,在Alpha平台上要引导Linux有两种方式可以用,milo和aboot。milo需要每次从软盘引导,这显然不适合我们。那我们几乎唯一的选择就是aboot了。
和前面一样,很简单的安装它:
# emerge --usepkg aboot
安装完成之后再安装.........*#($#&(#
# swriteboot -f3 /dev/sda /boot/bootlx (把aboot安装到硬盘主引导区 -f3,记得第三个slice么?)
# abootconf /dev/sda 1 (设置 设备名sda 分区号1)
# echo '0:2/boot/vmlinux.gz root=/dev/sda1' > /etc/aboot.conf
(在aboot列表中配置一个默认引导选项,可以有多项配置,有最前面的标号0、1、2来确定默认查找顺序)
# echo 'dka0' /proc/srm_environment/named_variables/bootdef_dev
# echo -n 0 > /proc/srm_environment/named_variables/boot_osflags
# echo -n '' > /proc/srm_environment/named_variables/boot_file
# echo 'boot' /proc/srm_environment/named_variables/auto_action
(写入一些Alpha平台的特定值,这样我们就不用在SRM中配置对应的选项了)
以上四条命令分别指定了SRM引导时的默认设备、引导参数、内核文件、自动引导。相当于在SRM控制台上执行:
>>>set bootdef_dev dka0
>>>set boot_osflags 0
>>>set boot_file ''
>>>set auto_action boot
这样每次我们开机之后系统就会自动地加载aboot中默认的内核然后开始引导系统。
# exit
# sync;sync;sync
# reboot
没了。
================================================================================
最后,如果在下次引导时出了任何问题,记住我前面已经描塑过整个的过程了,LiveCD有你想要的一切,有ssh和wget就可以获取世界。cdrom boot,mount,chroot,然后细心的分析和纠正任何问题,其他没有任何。
一些连接
gentoo官方站点
http://www.gentoo.org
gentoo软件安装手册,可以连接到其他部分指南(繁体中文版,很好)
http://www.gentoo.org/doc/tw/handbook/hand...l?part=2&chap=2
gentoo预定义内核参考指南
http://www.gentoo.org/doc/tw/gentoo-kernel.xml