歡迎您光臨本站 註冊首頁

在Alpha老機上應用Linux

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

最近閑下來,終於有空翻出壓箱底的老機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
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
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
Generic DECchip & DIGITAL EtherWORKS PCI/EISA
<*> EtherExpressPro/100 support (eepro100)
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
沒了.


[火星人 ] 在Alpha老機上應用Linux已經有326次圍觀

http://coctec.com/docs/linux/show-post-56275.html