ubuntu确实是个挺人性化的发行版,就像他宣传的口号一样,linux for human beings;呃,不过对比较geek的人来说,他们同时也可能有着“不折腾会死”的属性。 很不幸,某就有这种属性,于是这几天琢磨着从带领我进入linux世界的ubuntu,转而进入archlinux的世界。archlinux相对于ubuntu的优点在于rolling release,即脱离了版本这个概念,采用实时发布新的包来更新的方式,这样用户可以在第一时间(事实上也不是第一,只是很快)用上新的package。相对于gentoo来说,arch的门槛还是低了许多,至少咱们不用为了安装系统而把手册翻烂XD 此外,arch还有个一个强大的包管理器——pacman,archlinux提供的是bin包的镜像,同时在AUR(Arch User Respority)里有用户提供的源代码包,pacman可以来track这些文件;这些好处只有用过后才能体会到强大之处。
第一个问题显然就是安装了,原本在玩ubuntu的年代(从9.04开始),某一直是下载镜像刻录成光盘的,不环保也不方便,携带也成问题。于是这次在arch上,某想尝试自己做一个liveUSB作为介质进行安装。
根据archlinux的wiki页面上说,从201005这个版本的iso开始都支持直接往usb中写入镜像。当然wiki上用dd的方式确实能用,不过却浪费了多余的空间,某的8G闪盘总不能死在一个liveUSB上吧?现在又上哪去找1G、2G的闪盘呢? 第一想到的有fedora project中的liveusb creator,这东西用过还可以,不过不知道对arch的镜像支持如何,用fedora或者ubuntu的同学可以用那个(当然他们都有自带,前提是要有个系统) 可以看到wiki还有一位叫brain0的同学的方法,在闪盘上建立分区。按照他的说法net install的镜像需要340M空间,而我自己做的core image虽然是一张CD660M,但在空间实际使用情况来看,需要分配850M左右比较保险。
作业前请各自备份好闪盘中的数据,以下是我做liveUSB的过程;开始几步和brain0给的一样。 1、准备好archlinux的iso文件,版本为201005,架构均为dual,net install需要340M空间(某没做这个,所以数字不能保证,推荐多给点),core image需要850M空间。另外安装一下syslinux,这是我们在闪盘上需要的bootloader
<code class="bash">
pacman -S syslinux
apt-get install syslinux
</code>
2、由于windows只能认出闪盘上第一个分区,于是我们为了让闪盘能在windows下正常使用,不得不把liveUSB的分区放到后面去。创建分区的命令可以参考原文,某比较懒,就用gnome自带的disk utility搞定了。 需要注意的是,确保第二个分区有boot flag,否则就boot不起来了。现在假设我们的闪盘第二个镜像在/dev/sdb2 查看命令: fdisk -lc /dev/sdb2 修改它可以 fdisk /dev/sdb2,然后按a表示修改boot flag,选择2;p打印出该磁盘状态,w写入并退出。
3、将磁盘和闪盘都mount上来:
<code class="bash">
mount -o loop,ro archlinux.iso /mnt/archiso
mount /dev/sdb2 /mnt/usbboot
</code>
4、将光盘内容复制到闪盘分区里
<code class="bash">
cp -a /mnt/archiso/* /mnt/usbboot
</code>
5、保险起见,把文件权限改成755方便下次修改(当然如果按照以下步骤不遗漏做下去)
<code class="bash">
chmod -R 755 /mnt/usbboot
</code>
6、删除isolinux的bootloader
<code class="bash">
rm /mnt/usbboot/boot/isolinux/isolinux.bin
</code>
修改配置文件和名字
<code class="bash">
mv /mnt/usbboot/boot/isolinux/isolinux.cfg /mnt/usbboot/boot/isolinux/extlinux.conf
</code>
打开它编辑,把有IPAPPEND的两行给注释掉,有bug汇报称引起报错;注释掉后不会有报错信息,当然也不影响正常使用。 7、此步可选,技术上讲我们已经不用isolinux这个bootloader而准备使用syslinux,所以美观起见,可以把isolinux这个文件夹命名为extlinux;当然不做也可以正常使用。 8、安装syslinux的bootloader
<code class="bash">
extlinux --install /mnt/usbboot/boot/isolinux #假设我们这里没改名字
</code>
9、替换不能用的c32文件 iso里自带的c32文件不适合syslinux使用,需要把他们替换掉(保险期间可以先备份一下,所以上面改成755也有用了)
<code class="bash">
cp /usr/lib/syslinux/chain.c32 /mnt/usbboot/boot/isolinux/ #影响boot exsiting菜单项,使用时还需要编辑boot设备,否则会一直boot自己
cp /usr/lib/syslinux/reboot.c32 /mnt/usbboot/boot/isolinux/ #影响reboot菜单项
cp /usr/lib/syslinux/vesamenu.c32 /mnt/usbboot/boot/isolinux/ #影响liveUSB的boot界面,否则只能是命令行方式
</code>
10、卸载闪盘
<code class="bash">
umount -l /mnt/usbboot
</code>
11、写入MBR记录
<code class="bash">
cat /usr/lib/syslinux/mbr.bin > /dev/sdb #注意不是/dev/sdb2,这里是写入磁盘MBR;次步很关键,确认磁盘号,别写错磁盘哦
</code>
12、恭喜,一个archlinux的dual架构liveUSB做好了,而且还保留了多余的空间可以用。赶紧重启从闪盘boot看看吧!
关于archlinux安装完成后的系统配置简要说明,可以参考某的wiki page。