把ArchLinux从32位升级到64位
发表于 : 2009-10-17 20:57
警告:此文不适合普通用户使用,可能造成系统无法启动等严重后果,虽造成数据丢失的可能性很小,但仍请做好备份,谨慎操作!造成的任何损失需自行承担。
背景:
应lerosua和Shan的邀请,写一下这篇文。
之前因为不小心写错源,升级到64位,然后因为一些需要又降到32位的系统。
为啥有这样的需求?
先决条件:
1. 几乎所有开源软件都可以运行在64位系统上,64位系统现在已经足够日常使用;
2. ArchLinux同时支持这两个架构。
好处:
1. 对大内存支持好;
2. 用64位系统能真正发挥出64位CPU的性能;
3. 没有2038问题;
4. 比起重装,需要的设置工作少许多;
5. 好玩。
坏处:
1. 有风险;
2. 需要学习些东西。
正式开始:
一. 基本需求
0. CPU须支持64位,如果不满足这一条,那么请勿进行本文描述的操作。
1. 备份,如果你真的需要,其实这个过程是安全的,除非误操作,不会造成数据的丢失,如果系统里的二进制文件不算的话;
2. 空间需求:视安装的程序多少,需要5G或更多空间来存储pkg,如果从系统安装起没有进行过 pacman -Scc 这样的操作,可以用 du -sh /var/cache/pacman/pkg,查看需要的空间,因为要下载64位的包,所以需要大约同等大小的空间;
3. 时间准备,除去网络下载的时间,约需要一小时。
二. 准备工作
0. 下载i686的软件包,如果你从未运行过 pacman -Scc 或者手工删除包缓存,可跳过此步。
下列包是至少需要的,其实我们升级过程中需要的仅是pacman,源里写的依赖只有bash和libfetch、libarchive,实际现在的pacman依赖许多包,bash除了readline还依赖ncurses:
为了安全起见,可以使用如下命令下载系统中已安的所有软件包:
1. 下载x86_64的软件包
注意:此过程中使用的全部都是-Sw,即仅下载,并不安装,千万不要漏了S后面的w,这会导致系统崩溃!
将 /etc/pacman.d/mirrorlist 中正在使用Server中的 i686 改成 x86_64,运行:
下载 lib32-glibc,这个包是升级唯一必须的32位兼容性包,因为现在的pacman没有了静态编译版本:
2. 牛刀小试:安装64位内核
内核虽然是命根子,但是Arch中的64位内核是支持32位程序的,先安装个内核玩玩。
注意重启计算机,这次重启是必须的。
重启后一般不会有任何异样,可以通过 uname 来检查一下我们现在运行的内核:
为了进一步确认,可以安些的静态程序,比如dash或busybox,用file命令可以很直观的看出来它们是个64位程序。
安装busybox还有个好处便是系统坏处许多命令无法使用的时候它能提供许多很有帮助的命令,比如cp、tar 、gzip等。
到目前为止,我们的所有操作都是安全的。经过上面的预热,我们先放松一下,准备更大的挑战。
--待续--
背景:
应lerosua和Shan的邀请,写一下这篇文。
之前因为不小心写错源,升级到64位,然后因为一些需要又降到32位的系统。
为啥有这样的需求?
先决条件:
1. 几乎所有开源软件都可以运行在64位系统上,64位系统现在已经足够日常使用;
2. ArchLinux同时支持这两个架构。
好处:
1. 对大内存支持好;
2. 用64位系统能真正发挥出64位CPU的性能;
3. 没有2038问题;
4. 比起重装,需要的设置工作少许多;
5. 好玩。
坏处:
1. 有风险;
2. 需要学习些东西。
正式开始:
一. 基本需求
0. CPU须支持64位,如果不满足这一条,那么请勿进行本文描述的操作。
1. 备份,如果你真的需要,其实这个过程是安全的,除非误操作,不会造成数据的丢失,如果系统里的二进制文件不算的话;
2. 空间需求:视安装的程序多少,需要5G或更多空间来存储pkg,如果从系统安装起没有进行过 pacman -Scc 这样的操作,可以用 du -sh /var/cache/pacman/pkg,查看需要的空间,因为要下载64位的包,所以需要大约同等大小的空间;
3. 时间准备,除去网络下载的时间,约需要一小时。
二. 准备工作
0. 下载i686的软件包,如果你从未运行过 pacman -Scc 或者手工删除包缓存,可跳过此步。
下列包是至少需要的,其实我们升级过程中需要的仅是pacman,源里写的依赖只有bash和libfetch、libarchive,实际现在的pacman依赖许多包,bash除了readline还依赖ncurses:
代码: 全选
pacman glibc libfetch libarchive openssl acl attr xz-utils bzip2 zlib readline bash ncurses
代码: 全选
pacman -Sw $(pacman -Q |awk '{print $1}')
注意:此过程中使用的全部都是-Sw,即仅下载,并不安装,千万不要漏了S后面的w,这会导致系统崩溃!
将 /etc/pacman.d/mirrorlist 中正在使用Server中的 i686 改成 x86_64,运行:
代码: 全选
rm -rf /var/lib/pacman/sync/*
pacman -Sy
pacman -Sw $(pacman -Q |awk '{print $1}')
代码: 全选
pacman -Sw lib32-glibc
内核虽然是命根子,但是Arch中的64位内核是支持32位程序的,先安装个内核玩玩。
代码: 全选
pacman -S kernel26
重启后一般不会有任何异样,可以通过 uname 来检查一下我们现在运行的内核:
代码: 全选
[kangkang@kangkang ~]$ uname -m
x86_64
代码: 全选
[kangkang@kangkang ~]$ file /bin/dash
/bin/dash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
到目前为止,我们的所有操作都是安全的。经过上面的预热,我们先放松一下,准备更大的挑战。
--待续--