成功安装gentoo based on alpha platform,发文一篇。
真是辛劳,尽管gentoo早就出了alpha platform的distribution,但居然它主页上没for alpha的installation guide,两个月前试着装了一次(把以前装的RH7.2删了),结果因为boot loader 搞不定,白装,连起动都成问题。最近比较空,在仔细研究了aboot的文档后花了三天时间终于把基本系统装上,现在正在装X。
不说废话,先说说机器配置,alpha 21164 500mhz,256m mem,EB164兼容主板,2×SCSI 18.2G硬盘,SRM 5.1 boot rom。还算我运气好,SRM的版本够高,不然还要
重新刷bios。(其实光这步就可以卡死很多敢于吃螃蟹的)
先下载gentoo 1.4 RC1 test4的iso(我一直在等它出rc4 for alpha的iso,可sparc,ppc,hppa的版本都更新了,就是for alpha 不更新,气死我了)刻成光盘。打开机器,进入SRM 状态,show dev后发现光驱的设备号为 dka 500。it's easy,
boot dka500 -fl 0,启动光盘。
进入Linux,起先的安装步骤和x86平台无甚两样:
modprobe eepro100(认出网卡)
ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up
/sbin/route add -net default gw 192.168.0.1 netmask 0.0.0.0 metric 1 eth0
更改etc/resolv.conf,设置dns serevr。
date xxxxxxx 设置时间
fdisk /dev/sda 硬盘分区,这里需要仔细说说,由于alpha平台的非凡性,它只认BSD风格的分区形式(就是那种不认partition,只认slice的风格)。同时由于它的boot loader---aboot的特性,所以分区时必须要注重这点,第一个分区的起始扇区必须在2048 block之后(也有建议512的),也就是1m左右的空间以便放aboot引导程序(其实aboot也就80k大)。两个月前我第一次装时没注重,结果把整个distribution build之后才发觉分区错了,那个晕阿!
剩下来的分区就轻易了,按照BSD风格,四个分区分别是a,b,c,d 其实就是
/dev/sda1 /boot 128m, /dev/sda2 swap 768m, /dev/sda3 /var , /dev/sda4 /.
mke2fs -j /dev/sda1
mke2fs -j /dev/sda4(这两个分区必须用ext2或ext3,否则aboot不认)
mkswap /dev/sda2
mkfs.xfs -l size=32m /dev/sda3 我试了试xfs的格式在/var分区下。具体参数见gentoo网站上的简介。
swapon /dev/sda2 打开swap
mkdir /mnt/gentoo
mount /dev/sda4 /mnt/gentoo
mkdir /mnt/gentoo/boot
mount /dev/sda1 /mnt/gentoo/boot
mkdir /mnt/gentoo/var
mount /dev/sda3 /mnt/gentoo/var
cd /mnt/gentoo
lynx http://www.ibiblio.org/pub/Linux/distributions/gentoo/releases/1.4_rc1/alpha/
拿下stage1的安装包
tar -xvjpf /mnt/cdrom/gentoo/stage1-*.tar.bz2 解开安装包
mount -t proc proc /mnt/gentoo/proc
cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
chroot /mnt/gentoo /bin/bash 这步比较重要,进入编译环境,其实就像罩了把伞一样。:-)
env-update (这里有可能会失败,不要紧,emerge sync一把就好了,其实是安装包太老需要更新)
Regenerating /etc/ld.so.cache...
source /etc/profile
emerge sync
nano -w /etc/make.conf 这里要改点东西,最主要的就是把里面缺省的cpu 型号改成你要的,我是21164,所以改成EV56,你要是搞不清,没关系,uname -p一把.
cd /usr/portage
scripts/bootstrap.sh 艰苦的旅程终于开始了,后来我看了一下时间,用了我大约4个多小时,这里它编译了binutils, gcc, gettext, glibc, 然后重编译binutils, gcc,gettext。
现在进入stage2,
emerge -p system
emerge system
这更夸张,一共73个组件居然编了我6个半小时。
进入stage3
ln -sf /usr/share/zoneinfo/path/to/timezonefile /etc/localtime 设置时区
这后面的path/to/timezonefile是zoneinfo下你所在时区的路径,找到Asia,再找到里你最近的城市,做把连接。
开始编译kernel
emerge sys-kernel/alpha-sources 注重,这和x86平台不一样,我一开始拼命想试
emerge sys-kernel/gentoo-sources 可系统总告诉我这些ebuilds被masked了,想破脑袋也想不出为什么,后来进到/usr/portage/sys-kernel下一看才明白,原来如彼!笨死了:-( 我用的是alpha机器啊!emerge ebuilds的严谨性由此可见一斑。
cd /usr/src/linux
make menUConfig 这里有些要注重,要把BSD风格的分区支持编进去,要把VFS,devfs的分区也编进去,否则会引起kenel panic,我就是...唉,不说了,怎么倒霉事尽跑我头上....编一次kernel要花去我整整一个小时啊!开始想念在那台p4 2.4G
的服务器上4分钟编译一次kernel的好光景来了....还有就是注重网卡驱动等等等等
make dep
make boot 这和x86平台不一样,依葫芦画瓢吧!
make modules
make modules_install
cp /usr/src/linux/arch/alpha/boot/mvlinux.gz /boot
emerge app-admin/sysklogd
rc-update add sysklogd default
emerge sys-apps/vcron
rc-update add vcron default 这个就不说了。
emerge sys-apps/xfsprogs 专给xfs用的
更改 /etc/fstab
passwd 改 root passWord
echo mymachine.mydomain.com /etc/hostname 这个也轻易。
更改 /etc/hosts
更改 /etc/modules.autoload
nano -w /etc/conf.d/net
rc-update add net.eth0 default
nano -w /etc/rc.conf 更改时区(一大堆routing jobs)
最后就是aboot的安装了,emerge aboot
装完后运行swriteboot /dev/sda /boot/bootlx 把aboot copy至起始扇区,
然后 abootconf /dev/sda 4 更改aboot 初始配置,因为/ 分区在/dev/sda4
初始状态是 /dev/sda 2,这要是在aboot 0.6版以前是要更改编译参数,重新编译
aboot的(天哪,还要编译),现在0.9版好多了,擦汗ing.....
到/etc下照着aboot.conf.example的样改出一个aboot.conf来。呵呵
etc-update
exit 退出chroot状态
cd /
umount /mnt/gentoo/boot
umount /mnt/gentoo/proc
umount /mnt/gentoo/var
umount /mnt/gentoo
reboot
重起!哈!gentoo for alpha终于装好了,全世界第一篇中文版gentoo based on
alpha platform的installation guide也诞生了。快鼓掌!
不过装完后一想,这套linux是32bit的,不爽。反正我还有一个硬盘,改日装套
netbsd for alpha罢,这可是纯64位的系统.....