今天重装Arch时发现最新的2010.05安装镜像只提供了光盘ISO版本,而没有原来的USB镜像版本了,所以只能放弃USB安装的方案。但是为了一次重装系统刻张盘实在浪费,所以就研究了下如何利用这个ISO镜像来实现硬盘安装。
查看了一下ArchWiki,刚好有一篇文章介绍利用ISO镜像安装Arch的方法,主要是利用grub将ISO镜像映射到内存中以供安装使用。不过这篇文章是在2009.08的安装镜像基础上的,在2010.05镜像上有些地方需要做些改动。下面是我的详细的安装过程。
首先要有一个可用的grub。我这里用的grub4dos,需要注意的一点是,我最先用grub4dos 0.4.3没成功,换到0.4.4版本顺利安装。然后将arch的安装镜像放在grub可读的分区内,如(hd1,0)/archlinux-2010.05-core-i686.iso。在启动进入grub时,按“c”进入grub的命令行模式。依次执行以下命令:
grub> map –mem –heads=0 –sectors-per-track=0 (hd0,1)/archlinux-2010.05-core-i686.iso (0xff)
grub> map –hook
grub> chainloader (0xff)
grub> boot
如果以上命令执行过程均没有问题,执行boot后应该就进入ISO镜像的启动流程了,按照正常方式选择arch的live方式,进入安装环境。
安装环境启动过程中,会提示没有找到安装光盘,然后提供了一个shell让用户解决这个问题,其原因在于arch的安装环境是通过光盘的label去找安装光盘的,也就是/dev/disk/by-label/ARCH_201005。所以我们还是需要手动将硬盘上的ISO文件链接到这个位置。当然首先要挂载ISO镜像所在的硬盘分区。这里需要特别注意一点,在Arch安装环境中,不要把任何分区挂载到/mnt目录下,Arch安装环境会将/mnt挂载为安装目标。可以执行下面的命令完成ISO镜像的链接工作:
#mkdir /tmp_mnt
#mount –r –t vfat /dev/sdb1 /tmp_mnt
#modprobe loop
#losetup /dev/loop6 /tmp_mnt/archlinux-2010.05-core-i686.iso
#ln –s /dev/loop6 /dev/disk/by-label/ARCH_201005
#exit
如果没有问题的话,exit后arch会继续安装流程。后面的安装就与正常的光盘安装无异了。
以前用debian的时候,debian的ISO镜像中会提供用于硬盘安装的内核和ramdisk镜像,可以用grub手动加载,安装环境启动后中debian会自动检测ISO镜像位置,挂载ISO镜像继续安装。看了一下arch的ISO镜像内容,感觉arch应该也可以用这种方式进行安装,有兴趣的tx可以尝试一下~
你好,我在进入grub按c后敲入第一行命令为什么出现了 unrecognized device string …. 谢谢
[回复]
zhtlancer 回复:
七月 27th, 2010 at 08:30
@Kay, 这个命令应该根据你的实际硬盘设备和分区设置进行更改,请确定你的iso镜像所在分区,把”(hd0,1)”改成合适的
[回复]
Kay 回复:
七月 27th, 2010 at 09:23
@zhtlancer, 我拷到了C盘,然后用hd(0,0)没错阿
[回复]
zhtlancer 回复:
七月 27th, 2010 at 12:34
@Kay, 哦,grub的版本也没问题吗,另外注意一下断行的问题有时候也会引起这个问题
我也遇到同样的问题,提示unrecognized device string
但我没用grub4dos
我本来机器上装了debian和windows xp,有grub……
[回复]
zhtlancer 回复:
八月 1st, 2010 at 17:37
@PJ.Hades, grub我还没试过,但应该也是类似的方法,也许有些区别,回头我试试看吧
[回复]
gfreezy 回复:
八月 8th, 2010 at 10:22
@PJ.Hades,
grub不行,貌似只能用grub4dos
[回复]
PJ.Hades 回复:
八月 17th, 2010 at 09:00
@gfreezy,
恩,我发现我把vmlinuz和initrd.img两个文件搞错了
得用arch光盘里的两个文件……-_-|||
直接在grub下root、kernel、initrd再boot就行了~
[回复]
zhtlancer 回复:
八月 17th, 2010 at 09:08
@PJ.Hades, 嗯,是必须要用arch安装镜像里面的内核和ramdisk,因为arch的安装环境都在那个ramdisk里面~
grub无法完成那个map操作
grub4dos可以
就是这样
我开始用Debian的Grub就不成,估计是软件版本过低
[回复]
@Kay
grub> map –mem –heads=0 –sectors-per-track=0 (hd0,1)/archlinux-2010.05-core-i686.iso (0xff)
grub> map –hook
注意,mem前应为俩个 ‘-’ ,即 –mem。
heads、sectors、hook前也应为两个‘-’。
[回复]
zhtlancer 回复:
八月 16th, 2010 at 20:13
@Litghtni, 对,都是两个’-',wp自动把这个给转义了,一直没发现……
[回复]
grub4dos是不是只支持32位系统,我64位win7表示压力很大
[回复]
blabapa 回复:
九月 26th, 2010 at 04:14
@blabapa, 请忽视我的压力,我发现我太白痴了。。
[回复]
zhtlancer 回复:
九月 26th, 2010 at 09:44
@blabapa, grub只是个引导器,应该不受64bit win 7的影响的~
[回复]
其实arch 2010.05是可以用U盘装,只需要用 dd 命令写入U盘,然后就可以U盘安装。可惜的
[回复]
zhtlancer 回复:
十一月 7th, 2010 at 02:01
@龙虾, 之前是有专门提供USB安装用的img镜像的,不知道从什么版本开始只提供ISO的了。ISO按理说应该不能直接dd到U盘吧,毕竟光盘启动方式和USB-HDD不太一样,两者格式也不太一样,直接dd上去估计应该是不能正常使用的~
[回复]
龙虾 回复:
十一月 9th, 2010 at 12:57
我是测试安装成功后,才告诉你的,大哥可以自己试试(不行了,多试几台)。
arch官方有给出方法。
[回复]
zhtlancer 回复:
十一月 9th, 2010 at 13:46
@龙虾, 嗯,刚刚去看了一圈,现在arch官方的安装向导给出的确实是这个方法。
但是个人感觉这个方法的兼容性较差,并不是所有的U盘和主板支持USB光盘启动模式,而且还需要清空U盘的全部内容,并不方便。其实我这篇文章的基础也是基于Arch Wiki上的文档,而且兼容性强一些,只要支持USB-HDD方式就可以,而且不用清空U盘内容。具体选择什么方式,还需要结合自己的实际情况来定了呵呵~
可惜的是我的不能启动,呵呵~~!
[回复]
lancer给共享一下你这个评论插件嘛~
[回复]
zhtlancer 回复:
十二月 13th, 2010 at 12:26
@Rabbit_52, WordPress Thread Comment,这个插件很不错的~
[回复]
@zhtlancer, 我那个可能是主题的原因显示不够完美
[回复]