买了个4G内存,32位系统无法识别,决定将Archlinux系统升级到64位.官方wiki提供了两种方法:使用LiveCD 和 从正在运行的系统升级,网友普遍反映第二种方法容易悲剧,因此这里使用第一种方法升级
先下载64位Archlinux的LiveCD,懒得刻盘,用从硬盘引导iso: 先把iso镜像放在某个分区根目录,进grub
1
2
3
4
|
>grub map --heads=0 --sectors-per-track=0 --mem (hd0,0)/archlinux-2012.09.07-dual.iso (0xFF)
>grub map --hook
>grub chainloader (0xff)
>grub boot
|
于是LiveCD就启动了,选择x86_64系统进入,这时会启动失败,进入一个shell,输入
1
2
3
4
5
6
|
mkdir /win
mount -r -t ntfs /dev/sda1 /win
modprobe loop
losetup /dev/loop6 /win/archlinux-2009.08-core-i686.iso
ln -s /dev/loop6 /dev/archiso
exit
|
即可顺利进入LiveCD系统,进入系统之后首先挂载现有Archlinux分区,以/dev/sda2为例:
然后自行修改/etc/pacman.d/mirror准备软件源,选择了速度快的源之后,开始给现有分区升级x86_64架构:
1
2
|
pacman --root /mnt -Sy
pacman --root /mnt --cachedir /mnt/var/cache/pacman/pkg --noconfirm -Sg base base-devel
|
这个命令可能需要反复执行两次,然后把其它的软件包全部重装:
1
|
for PKG in $(pacman --root /mnt -Qq); do pacman --root /mnt --cachedir /mnt/var/cache/pacman/pkg --noconfirm -S $PKG ; done
|
这个命令也需要执行两次以上
然后可能要重新安装grub2,之前先删除已有的grub:
1
2
|
pacman -R grub #删除已有的grub,也有可能是其它名字
pacman -S grub-bios #安装新的grub
|
然后配置新grub:
1
2
|
arch-chroot /mnt
mkinitcpio -p linux
|
重启完工