转贴一篇好文章,非常适合linux for alpha初级安装

发表于:2007-05-26来源:作者:点击数: 标签:
ALPHA Linux 亲密接触 胡靓 机房里面有几台“相约九八”那一年购买的Alpha老 服务器 ,跑了几年AlphaNT4.0,分别为办公局域网提供服务。几个机器一直有事无事“罢工”,经常要去控制面板重起服务甚至重起机器,不堪其烦。最可恶的是比尔盖茨竟然宣布不再支持

ALPHA Linux 亲密接触 
胡靓

机房里面有几台“相约九八”那一年购买的  Alpha  老服务器,跑了几年  Alpha NT4.0  ,分别为办公局域网提供服务。几个机器一直有事无事“罢工”,经常要去控制面板重起服务甚至重起机器,不堪其烦。最可恶的是比尔盖茨竟然宣布不再支持这种架构了,升级打补丁都找不到人管了。  Alpha NT  平台下其实什么都不能运行,一般基于  Intel  平台编译的软件不能正常运行,连“  Winzip  ”都没有;更有甚者,想增加一块  3Com  网卡,奈何没有  Alpha  平台的驱动,总不能一直买  Dec  片子的卡吧,于是决定换操作系统。  COMPAQ  的  TRU-64  给了一个天文数字的报价,想来想去还是 Linux 吧,经过多方检索索,发现  Alpha Redhat 6.2  算是一个比较经典的版本,参考资料也比较多,于是决定用之。   拼死拼活下载了  Alpha Redhat 6.2  的  ISO  文件,刻成光盘。仔细阅读  readme  文件,同时搜刮 redhat  和  compaq  的网站下载秘籍,为了方便阅读,打印之。 

先折腾  AS800  的机器,这样的机器我们有三台,两个  AS800  ,还有一个是  DS3300  ,据介绍  DS3300  是  AS800  的“白壳”版本,除了机壳是白色的而  AS800  是兰灰色,其他都一样。后来又折腾了一个  AS1200  的机器,大同小异,这里一并介绍。   
 

Alpha  的  BIOS  分为  SRM  模式和  AlphaBios  两种状态,  SRM  是命令行的,类似  Unix  的界面,  AlphaBios  是图形界面,主要用于启动  Windows NT  。  Linux  在两种状态都可以启动,  SRM  模式用  aboot  ,  AlphaBios  下用  milo.exe  ,由于  Milo  需要针对具体机型预先编译好的内核,正好我这种机器找不到,于是就决定用  SRM  状态了。按下面板上的  HALT  按钮,启动机器,系统就自动进入  SRM  模式而不启动  Alphabios  。  SRM  模式的提示符是“  >>>  ”。   
 

据秘籍介绍, Alpha 下的 Linux 是有 SRM 调用 aboot 来启动的,比 PC 机上的 lilo 要古怪许多,而且九八年的老版本的 SRM 是不支持调用  Aboot  的,于是第一个难关就是升级  SRM  的  Firmware  ,  AS800  的最新  Firmware  是  5.8  的,  AS1200  的最新版本是  6.0  的,在  compaq  网站能下载,一并下载。  AS800  的原  Firmware  不支持软盘升级,只好祭起 bootp+tftp  的法宝,将我的笔记本(预装有  Linux  )启动到  Linux  系统,配置  dhcpd.conf  主要在  su.net  区域中加上:   
allow  bootp;  
allow booting;  
filename  "/tftproot/as5.exe";  
然后在根目录建立一个叫  tftproot  的子目录,将  AS800  的刷新文件拷贝到此目录并且改名教  as5.exe  ,在将  /etc/inetd.conf  中  tftp  这一行前面的  #  去掉,启动  dhcpd  和重起  inetd  。将笔记本网卡和  AS800  用交叉线连接起来,启动启动  AS800  将自动进入刷新程序。  AS1200  支持软盘更新,在  SRM  命令行下输入  lfu  ,系统提示选择升级程序来源,选择软盘  DVA0  ,然后就进入升级界面,用  update  命令就可以完成升级。需要注意的是我的  AS1200  的  Firmware  版本是  5.1  的,系统不支持从  5.1  直接升级到  6.0  ,要先升级到  5.3  ,好在升级到  5.3  只需要一张软盘,然后再用两张软盘升级到  6.0  ,  COMPAQ  的说明文件上讲  6.0  是三张软盘,其实第三张用不着。和  Intel  机器刷新  BIOS  一样,升级的过程中不能关机或重起,一定要等到升级结束。   
 

然后是准备硬盘,在  AS800  下有  exer  命令,可以对硬盘进行低级格式化,  AS1200  中没有(或者叫别的什么名字而我没有找到),所以这一步干脆省略。然后是把硬盘写保护打开,先  show dev  查看一下硬盘和光盘的设备编号,比如我的  AS1200  机器上光盘是  DKA400  ,硬盘有三个  DKB0  、  DKB100  和  DKB200  ,用  chmod +w dkb*  打开写保护。由于这些机器原来装有  NT  所以要让  SRM  下次启动不再进入  AlphaBios  ,用  set  auto_action halt  就可以确保下一次启动还在  SRM  下面。   
 

终于可以开始安装  Linux  了,将光盘放入光驱,使用命令:   
    boot dka400 -file kernels/generic.gz -flags "root=/dev/scd0"  
系统启动以后基本安装界面与基本与 PC 版本相同,需要留意的是对启动硬盘进行分区的时候一定要为  aboot  留下相应的空间,而且  SRM  不支持启动普通格式的  Partition Table  ,所以用来启动的那块硬盘上应该是用  BSD  风格的  Disk Label  分区格式。所以在选择安装模式的时候一定要选择“  Custom  ”,然后在对硬盘进行分区之前点下“ Use Fdisk ”的按钮,由 fdisk 程序进行分区(不知道为什么其 DiskDruid 和自动分区为什么分的不对)。对启动盘(比如  dkb0  在  Linux  下叫  sda  )进行分区的时候需要注意:在  Fdisk  下使用  b  命令先进入  BSD  格式分区,用  d  删除现有的所有分区,然后用  n  建立至少  3  个分区,注意磁道  0-15  要空出来给  aboot  使用,也就是说第一个分区从  16  道开始,建立一个约  50M  的  ext2  格式分区编号为“  a  ”,然后建立一个  256M  的  swap  分区“  b  ”,最后剩下的作一个主分区“  c  ”。将  50M  的分区挂在  /boot  目录,大分区作为“  /  ”,剩下其他的硬盘就可以按照普通的方式全部进行分区了。注意在  Diskdruid  中显示  sda  应该是没有占满  100%  。如下是我的系统启动盘的分区表:   
# /sbin/fdisk /dev/sda  
Device contains neither a valid DOS partition table, nor Sun or SGI disklabel  
Building a new DOS disklabel. Changes will remain in memory only,  
until you decide to write them. After that, of course, the previous  
content won't be recoverable.  
Command (m for help): b  
Warning: starting partitions at cylinder 1 will be bad for the health of your  
partition table -- start at cylinder 2 instead!  
BSD disklabel command (m for help): p  
3 partitions:  
#        size   offset    fstype   [fsize bsize   cpg]  
  a:    80325   240975      ext2                        # (Cyl.   16 - 20)  
  b:   530145   321300      swap                        # (Cyl.   21 - 53)  
  c:  7518420   851445      ext2                        # (Cyl.   54 - 521)  
这一步一定要留意,我就是开始没有注意这样的分区方式总是安装以后无法启动,造成一次次的白装。   
安装完毕以后系统会回到  SRM  状态,使用   
boot  dkb0 -fl 0  
就可以启动系统了,然后在  Linux  中用  setup  设置好  X-window  环境和关闭一些不用的启动选项,比如我要自行编译新的  Apache  ,所以系统原配的  httpd  就关了,还有一个叫  Kuduz  的是检测新硬件的,服务器不用经常改硬件,所以也关闭了。   
 

系统原配内核是  2.2.14  的,建议升级,当然要是升级到  2.4  的话同时需要更新很多系统库,所以还是升级到  2.2  的较新版本为好,经过测试  2.2.20  不能在  Alpha  平台编译,好像是  PCI  驱动那一块出了什么问题,所以我用的是  2.2.19  。和  Intel  版核心不同,编译  Alpha  版本的核心用这样的命令:   
#make  mrproper  
#make  menuconfig  
#make dep  
#make boot  
#make  modules  
#make modules_install  
在  make menuconfig  的时候可以根据现有  /proc/cpuinfo  中的系统类型来选择合适的  CPU  类型,这样可以减少核心的冗余从而提高系统运行效率,比如我的  AS800  的  CPU  类型是  Noritake  ,  AS1200  的类型是  Rawhide  。将需要的硬件驱动都编译进去,  SCSI  卡和网卡可以参看  /var/log/dmesg  文件,比如我的  AS1200  的  SCSI  卡是需要  NCR53c8xx  和  Qlogic ISP  的驱动,而  Alpha  的  Server  一般都是用的  DEC  的芯片网卡,所以使用  Tulip  的网卡驱动。还要注意的就是在分区格式选项中要加上  BSD  风格分区的支持,否则新核心启动时会  Kernel Panic  。   
编译完毕以后到  arch/alpha/boot  目录下会看见新的核心  vmlinux.gz  ,将其拷贝到  /boot  目录,同时改为一个比较简单的名字,比如  mykernel  。再把核心源程序目录下的  System.map  拷贝到  /boot  目录。然后编辑  /etc/aboot.conf  增加一句:   
   1:1 /mykernel    root=/dev/sda3  
用  #halt  命令关闭  Linux  ,重新回到  SRM  模式,作如下设置:   
>>>set os_type UNIX  
>>>set boot_osflages  1  
>>>set auto_action boot  
>>>boot  
这样就可以启动新版本的核心了。   
 

以后如果要安装什么新软件,要是二进制文件则需要寻找专门为  Alpha  编译的,其实最简单的是直接找源码在此平台重新编译就可以了,我在一个  AS800  上运行了  Bind9  作为  DNS  服务器,一个运行  DHCP2  作为动态地址分配服务器,还有一个用  ipchains  作  IP  伪装防火墙,还有一个  AS1200  运行  Apache 1.3.24+PHP4.2.0+Mysql3.23.48  作为  Webserber  。  Alpha  系统相当稳定高效。  As1200  是新装的,其他  AS800  到现在已经连续运行半年非常稳定。

原文转自:http://www.ltesting.net