|
|
第 1 帖 | |
|
|
标题: 通过chroot方式安装Arch [最新更新:05-05-17] ================================================
最新的chroot安装方式,请参考下面diony的帖子,可以节省不少时间。有任何问题请提出 ================================================ 什么是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.../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就可以了。 代码:
我是按照linuxfans:sutie大侠的文章配置的: http://www.linuxfans.org/nuke/module...topic&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吧 ! ![]()
__________________
http://mengxin.blogchina.com/ 我的blog linux notes,tips,faq.....不断更新中 您好,请多多关照 :thank 此帖于 05-05-17 03:27 被 diony 编辑. |
|
|
|
|
|
|
|
第 2 帖 | |
|
|
真正的高手哇!
代码:
此帖于 05-02-28 20:04 被 ygw_ycf 编辑. |
|
|
|
|
|
|
|
第 3 帖 | |
|
|
关于声音模块,只需填上snd_intel8x0就可以了,起他的在modprobe时会自动加载上的。
完全可以取消hotplug的,我的MODULES=(8139too uhci_hcd snd-via82xx nvidia)。取消hotplug,可以缩短大约10秒钟启动时间。 要知道自己需要加载哪些模块,最方便的方法是使用hwd -e来查看。
__________________
埋葬在青藏铁路周围的牺牲者们,在全国人民都在为青藏铁路的开通庆功和欢喜的时候,我为你们虔诚的祈祷。 确实,战争胜利了。 |
|
|
|
|
|
|
|
第 4 帖 | |
|
|
恩,我记得应该是只加载一个,其他的就会自动加载的。
hwd不错的东东,不知道能不能应用到liveCD中 ![]() |
|
|
|
|
|
|
|
第 5 帖 | |
|
|
Should be on the wiki。
|
|
|
|
|
|
|
|
第 6 帖 | ||
|
|
引用:
|
||
|
|
|
||
|
|
第 7 帖 | |
|
|
hotplug这个是起什么作用的??
__________________
我是一个孩子 一个被幻想妈妈 宠坏的孩子 我任性!--顾城 |
|
|
|
|
|
|
|
第 8 帖 | |
|
|
hotplug可以让你临时插入的PCI设备或者USB设备可以立即被使用。
据我理解就是通过后台服务,自动加载相应模块来驱动新设备。 如果你知道你的所有设备使用的是什么模块,就不必使用hotplug了。 |
|
|
|
|
|
|
|
第 9 帖 | |
|
|
我在用chroot命令的时候出现的错误:
chenpp:/mnt/disk/arch/bin # chroot /mnt/disk/arch /bin/bash: error while loading shared libraries: libreadline.so.5: cannot open shared object file: No such file or directory chenpp:/mnt/disk/arch/dev # whereis libreadline.so.5 libreadline.so: /lib/libreadline.so.5 /usr/lib/libreadline.so 请问楼主,我该怎么做? /mnt/disk做为安装的目标分区 /mnt/disk/arch是initrd镜像的文件复制目录? 我现在用的系统是suse9.2
__________________
人生就这么一次,我爱上linux了!!!!!!!!!!!!!!! 17寸CRT显示器 Intel(R) Core(TM)2 CPU 6300 biostar 965pt mb adata DDR2 667 1G mem WD250YS hd x2 raid0 SiI 3132 pci-e raid card 7600GS a2zs soundcard 此帖于 05-03-11 18:31 被 chen1960 编辑. |
|
|
|
|
|
|
|
第 10 帖 | |
|
|
将/lib/libreadline.so.5 cp到initrd解压的lib下。
cp /lib/libreadline.so.5 /mnt/disk/arch/lib 在主系统中用ldd /bin/bash可以查看bash都需要什么库文件。 缺什么cp过去什么就可以了。 才发现每个发行版的bash需要的库文件是不同的 ![]() |
|
|
|
|
|
|
|
第 11 帖 | |
|
|
感谢楼主,成功了。又学到东西了,太谢谢了。
|
|
|
|
|
|
|
|
第 12 帖 | |
|
|
标题: 补充:bootstrap now easy 对于chroot方式安装arch的改进和补充
最近系统出现了一些莫名其妙的问题,所以决定把60G盘上的gentoo删除掉制作另一个arch系统。因为不想影响到正常的使用,所以也选择了chroot安装方式。但做了些投机取巧的工作 写在这里,方便大家。
具体操作过程: 1、准备分区: 这一步不必详述。每个人都不相同。我把hda分成了4个区,分别是根目录、home、boot、data。然后将根目录挂载到/mnt/hda上。创建/mnt/hda/home、/mnt/hda/boot等文件夹,再将home、boot、data 一一挂载。 2、创建基本系统: 这一步投机取巧,省了很多功夫。使用了calavera编写的archbootstrap脚本。但该脚本年代久远,有些东西需要修改。我已经改好上传,兄弟们请查看附件。 得到了archbootstrap.tar.bz2后,tar jxfv archbootstrap.tar.bz2解压之。切换到root用户。执行: # ./archbootstrap /mnt/hda /mnt/hda是我准备用来安装arch的分区。这条命令后面还可以跟服务器地址作为参数,但用默认的即可。 等一小段时间,执行完毕后,一个arch基本系统就已经创建好了 是不是很方便?小提示:在执行前,你也可以手动创建/mnt/hda/var/cache/pacman/pkg/目录,然后将自己的pkg拷贝进去(不推荐连接,因为下一步chroot进去连接就无效了)。 3、进行安装、配置: 首先要将本地的resolv.conf拷贝一份过去,否则chroot进去后将无法连网: # cp /etc/resolv.conf /mnt/hda/etc/ # chroot /mnt/hda /bin/bash 至此,你已经身处新的arch基本系统中。可以随意pacman -S安装任何东西了(别忘记先pacman -Sy)。 其余的设置,我就不详述了,会采用chroot方式安装arch的兄弟,相信也明白自己需要做什么。 只提醒一点:不要忘记pacman -S kernel26。或者干脆使用现有系统的kernel拷贝过去使用也一样。但不要忘记源码目录和模块儿目录。 -------------------------- 我是一边改一边装的,改好的这个似乎仍然有问题,观察了一下,将第26、27行的os/i686/删掉应该就没有问题了。
__________________
Desktop: | Core2Duo E6550 | ECS P35T-A | 2G DDR800 X 2 DualChannel | HD4870| 640G SATA X 1 500G SATA X 2 320G SATA X 1 Laptop: ASUS A8SC Z99S ------------- 别把别人当成猪,但愿自己不是狗。 ------------- 此帖于 05-05-22 14:02 被 diony 编辑. |
|
|
|
|
|
|
|
第 13 帖 | |
|
|
不需要拷贝bash。arch的initrd的bin下有sh,是符号连接到那个万金油busybox上去的,所以指定用它就行了:
#chroot /tmp /bin/sh
__________________
-Grandpa,were you a hero in the war? -No,but I served in a company of heros. |
|
|
|
|
|
|
|
第 14 帖 | |
|
|
按照楼主的方法作了,chroot后,运行/arch/setup就出现Illegal instruction
请问如何解决?
__________________
鸟*换*了~ AMD-K8-Sempron-2500+ MSI-K8M800 DDR333-256M |
|
|
|
|
|
|
|
第 15 帖 | |
|
|
长见识拉。谢谢!!
|
|
|
|
|
|