怎么样通过chroot方式安装Arch Linux?

怎么样通过chroot方式安装Arch Linux?

通过chroot方式安装Arch Linux

 
Arch是一个优秀的发行版,小巧,快速,定制性好。被称为十分钟的Gentoo linux
今天安装上,真是不错,和我自己编译的lfs差不多。真是有前途的发行版埃
对于newbie,它不是那么容易使用,所以想要很好的使用它,需要对linux有一定的了解
通常安装linux有两种方式:一:loadin引导安装。二:grub引导安装
而象lfs,gentoo则通过在宿主系统上使用chroot方式安装。
优点是你可以一边安装它,一边做其他的事情。而且可以自己决定如何安装。
总之是不错的啦。 ^_^

什么是Arch?(distrowatch.com的介绍)

Arch Linux是一份为i686优化的轻量级Linux发行,它包含了各种软件的最新稳定版本。软件以.tar.gz格式打包并由包管理器进行跟踪维护,这样 的设计使得软件升级非常容易。与其他发行相比,Arch的技术相当之先进。一些相对不大使用(至少对我而言)的东西没有保留下来(例如,info页面)。 一次缺省的Arch安装带给你的是一套牢固的系统基础,你可以在此基础上增加软件包从而创建你所需要的定制安装。Arch的包系统允许你方便地创建你自己 的软件包,这使得按你自己特定的配置重新编译一份新的软件包变得非常容易。Arch的另一个目标是让用户尽可能地使用到Linux的新特性,例如 ReiserFS、ext3以及devfs。

自从使用lfs后,就喜欢上了可以chroot安装的系统,真方便埃:) 所以就想使用chroot方式安装Arch
我现在只有一个20G的ReiserFS分区,已经装了10G的东东。单独分区装Arch不可能了,只能想办法装在这20G的分区上。
先用Qemu装了遍,发现Arch的安装程序很简单,定制性很强,正好适合chroot安装。

开始我的Arch之旅: ^_^

http://mirror.pacific.net.au/ibiblio/distributions/archlinux/0.7/iso/i686/
这里可以下载到Arch-0.7的base版和完整版,当初下载时不了解,下载了完整版,结果装的时候只装了base的东东,剩下的都直接从网上下载安装的最新版本 :(

先从ISO中提取出chroot安装需要的东东(initrd.img):
[root@Arch ~]#mount /root/arch-0.7.iso /root/Arch
[root@Arch ~]#cp /root/Arch/isolinux/initrd.img /root
解压缩initrd.img:
[root@Arch ~]#cat initrd.img |gzip -d >initrd
挂载在/root/tmp下:
[root@Arch ~]#mount -o loop initrd tmp/

将initrd.img中的东东全部复制到目标分区上(我挂载在/mnt/distro):
[root@Arch ~]#mkdir /mnt/distro/Arch
[root@Arch ~]#cp -aR /root/tmp/* /mnt/distro/Arch
因为安装程序需要在/dev/vc/5记录安装信息,所以在/dev下创建它:
[root@Arch ~]#cd /mnt/distro/Arch/dev
[root@Arch dev]#mkdir vc
[root@Arch dev]#mknod vc/5 c 4 5
arch-0.7.iso挂载在src目录下,以备安装软件包:
[root@Arch dev]#mount /root/arch-0.7.iso /mnt/distro/Arch/src -o loop

chroot安装Arch:

因为initrd.img里面没有bash,chroot会出错,cp过去一个:
[root@Arch dev]#cp /bin/bash /mnt/distro/Arch/bin
[root@Arch dev]#chroot /mnt/distro/Arch
[I have no name!@Arch /]#
设置TERM为linux,这样运行setup才不会出错:
[I have no name!@Arch /]#TERM=linux

运行setup开始安装,这个程序在图形下的终端比较难看,我是ctrl+alt+F2在字符下运行的

[I have no name!@Arch /]#arch/setup
首选选择安装介质,选cdrom就可以了。

"Prepare Hard Device"? 略去。我可不想分区 :)
"Select Packages"???? 选择src,选择base,调整安装的软件包,默认即可。
"install Packages"??? 开始安装,所有软件包安装在/mnt。
"install kernel "???? 我选择了v2.6IDE的,先装上再考虑自己编译内核 :)
"Configure System"???? 选择喜欢的编辑器编辑吧,可以再图形界面下做。
"Install Bootloader"?? 略去。我有/boot分区,使用它管理所有的系统启动。
?
配置系统:

我是按照linuxfans:sutie大侠的文章配置的:
http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=106299

不同的是,我是固定IP上网,说一下固定IP怎么配置吧:
#
# Interfaces to start at boot-up (in this order)
# Declare each interface then list in INTERFACES
# (prefix an interface in INTERFACES with a ! to disable it)
#
# Note: to use DHCP, set your interface to be "dhcp" (eth0="dhcp")
#?
lo="lo 127.0.0.1"
eth0="eth0 10.70.54.30 netmask 255.255.255.0 broadcast 10.70.54.255"
#IP:10.70.54.30 netmask:255.255.255.0 broadcast 10.70.54.255
#填上自己的IP,NETMASK.....
# Routes to start at boot-up (in this order)
# Declare each route then list in ROUTES
#?? (prefix a route in ROUTES with a ! to disable it)
#
gateway="default gw 10.70.54.254" ------>网关:10.70.54.254
ROUTES=(gateway) ---->注意这里要去掉"!"

配置/etc/fstab:

Arch的fstab和其他发行版表示分区所有不同,表示hda1:/dev/discs/disc0/part1

/etc/fstab:
那些tmpfs,devpts,usbfs...不用修改,添加上需要挂载的分区即可。
.......略
/dev/discs/disc0/part5 /???????? reiserfs? defaults 0 1
/dev/discs/disc0/part11 swap???? swap????? defaults 0 0

安装好后我使用lfs中的内核引导Arch,发现无法识别/dev/discs/disc0
只好换回原来表示分区的格式(/dev/hda5),不知道是哪里的问题 :(
我现在fstab的样子:
/dev/hda5????????? /???? reiserfs?? defaults,noatime,notail? 0?????? 1
/dev/hda11? swap?????????? swap???? defaults???????????????? 0?????? 0

配置grub/menu.lst:

title Arch Linux
kernel (hd0,7)/vmlinuz26 root=/dev/discs/disc0/part5 ro
这是使用Arch安装程序安装的2.6.10的内核。我b把它复制到/boot分区(hda8),统一管理 :)
title Arch Linux
kernel (hd0,7)/lfs-2.6.10-lvm root=/dev/hda5 vga=791
这是使用lfs内核的配置文件。 无法识别/dev/discs/disc0,只好用/dev/hda5 :(

Arch中使用已有的内核也很简单:

grub中使用旧内核引导,如上所示,将原内核的/lib/modules/`uname -r`目录复制到Arch /lib/modules中,在/etc/rc.conf中加载需要启动的模块就可以了,当然也可以使用hotplug自动加载,只是hotplug服务启动慢一点 :)

我的/etc/rc.conf加载模块配置:
#
# Module to load at boot-up (in this order)
#?? (prefix a module with a ! to disable it)
#
MODULES=(!via_rhine !ide-scsi snd_intel8x0 soundcore snd snd_seq_oss snd_pcm_oss snd_mixer_oss rtc nls_cp936 intel_agp agpgart kqemu)
snd_intel8x0是我的声卡,似乎这里不用加载这么多关于声音的,没实验了,都写上了 :)
关于这些模块名可以从/lib/modules/`uname -r`/modules.alias 得到。

一切做好后,将Arch系统移动到目标分区根目录下:
[root@Arch Arch]#mv /mnt/distro/Arch/mnt/* /mnt/distro
OK,现在就可以reboot,体验Arch的风采啦。 ^_^

base安装好的只是基本系统,没有X,没有KDE....下一步从网上下载回最新版本X,KDE安装上。
也在chroot环境进行吧,不用对着黑呼呼的进度条。还可以听听歌,上上网的 :)
[root@Arch ~]chroot /mnt/distro?
[root@Arch Arch]
先同步更新软件数据库:
[root@Arch Arch]pacman -Sy
安装xorg:
[root@Arch Arch]pacman -S xorg
速度很慢的话,可以使用下载工具从镜像站点下载回来xorg的pkg包使用pacman -A 包名安装。

OK,快去pacman吧 ! ^_^

Arch相关资源:
Server = http://mirror.pacific.net.au/ibiblio/distributions/archlinux/current/os/i686/
Server = http://archlinux.antesis.org/current/os/i686
速度不错的镜像,我的所有软件包都是用proz从第二个下载的,很快 :)
http://bbs.linuxsir.org/forumdisplay.php?f=94
linuxsir Arch版区,好地方 :)
http://cle.linux.org.tw/index.php?LinuxChineseHowto%2FArchLinux
Arch中文安装手册。(就是ISO里arch目录下的安装文档)