把ArchLinux从32位升级到64位 archlinux 升级
背景:
应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}')
1. 下载x86_64的软件包
注意:此过程中使用的全部都是-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}')
下载 lib32-glibc,这个包是升级唯一必须的32位兼容性包,因为现在的pacman没有了静态编译版本:
代码:
pacman -Sw lib32-glibc
2. 牛刀小试:安装64位内核
内核虽然是命根子,但是Arch中的64位内核是支持32位程序的,先安装个内核玩玩。
代码:
pacman -S kernel26
注意重启计算机,这次重启是必须的。
重启后一般不会有任何异样,可以通过 uname 来检查一下我们现在运行的内核:
代码:
[kangkang@kangkang ~]$ uname -m
x86_64
为了进一步确认,可以安些的静态程序,比如dash或busybox,用file命令可以很直观的看出来它们是个64位程序。
代码:
[kangkang@kangkang ~]$ file /bin/dash
/bin/dash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
安装busybox还有个好处便是系统坏处许多命令无法使用的时候它能提供许多很有帮助的命令,比如cp、tar 、gzip等。
到目前为止,我们的所有操作都是安全的。经过上面的预热,我们先放松一下,准备更大的挑战。
三. 真正的开始
0. 真正开始前准备
注意:一旦真正开始了从32位到64位的升级,这个过程暂时是无法中止或回退的,如果出现中断,会导致系统无法启动。
需要准备的有:
良好的电源环境/充足的电池,该过程视机器不同,安装的软件包数量,需要10分钟至一小时时间;
打开两个或以上使用root登录的终端或控制台,建议在控制台登录,一般情况下在运行的程序不会因为库被删除而崩溃,但是不排除这种可能性,有些程序比如Fx在升级过程中就可能出现问题;
打开若干喜欢的程序,比如浏览器,IM,音乐播放器等,升级需要时间,这些玩意可以打发这无聊的时间,也能用来缓解一下紧张情绪,还能用来求助;
确认前面的准备工作已完成,用 uname -m 看看是不是运行的 64位内核。
1. 热身运动:安装32位运行库
代码:
pacman -S lib32-glibc
虽然有可能一次成功安装完成所有的包,但我们仍采用循序渐进的方式来做,一可以了解关键步骤,二可以增加挑战性。
这是我们全过程唯一引入的32位运行库。
测试一下:
代码:
/lib/ld-linux-x86-32.so.2 /bin/ls
看着没什么变化,事实上,到现在,我们的系统还是安全的。
2. 安装开始:最重要的包:glibc
除了内核,最最重要的一个包便是它了,几乎所有的程序都依赖它。
注意:再次提醒,这一步开始,系统就随时可能出现问题,请确认操作!
代码:
pacman -S glibc
进行了这个操作之后,你会发现大部分程序都不能运行了,包括 ls、cp等,试试有什么还可以运行的命令。
动手试试,是不是有点紧张了?
3. 来个扇贝:安装最常用最基本的shell:bash
到了现在,我们用的环境已岌岌可危了,要跟系统直接打交道,离不开shell,而且,它也是Arch的包管理pacman的显式依赖关系之一。
现在的C库是64位的,而我们所有的程序都是32位的,这如果是好呢,还好我们准备了32位运行库,用它来运行 pacman :
/lib/ld-linux-x86-32.so.2 /usr/bin/pacman -S readline bash ncurses
好了,现在我们的bash又回来了,小心的敲下:
代码:
bash
将会看到:
代码:
[root@kangkang ~]#
似乎还是没有变化。在上一步运行过bash的同学们,心里应该平静一些了。
4. Arch的基础:吃豆豆
包管理现在仍可以运行,甚至,在上面那个新运行过一次bash的环境中可以像完全没有任何改变的方式运行,直接敲 pacman 也是正常的。然而,我们需要64位的系统!不可以停在这里。
代码:
pacman -S libarchive libfetch pacman openssl acl attr xz-utils bzip2 zlib
故障排除:若不能直接运行,可用 /lib/ld-linux-x86-32.so.2 /usr/bin/pacman 的方式来运行。
注意:这是个危险的操作,不可以少任何一个包,不可以中断,否则你的吃豆豆就玩不下去了~
完成了之后,pacman就可以以原生64位的方式运行了。
用 ldd 看看,是不是后面的地址长了很多?
代码:
[root@kangkang ~]# ldd /usr/bin/pacman
linux-vdso.so.1 => (0x00007fff8c5ff000)
5. 吃豆豆:吃掉所有的豆豆
有了 pacman,所有的包都不是问题啦,下面就开始吧:
代码:
pacman -S $(pacman -Q|busybox awk '{print $1}')
如果安装了aur中的包,或手工安装了一些软件,那么这步会中止,请先删掉这些包,最基本的,很可能是安装了 codecs,而64位源中没有这个包。经过几次递归操作,这个过程应该很快就开始了,它需要一些时间来完成。
这时,我们前面准备的IM,浏览器,播放器,就可以派上用场了,先玩一会儿吧。中途如果某个程序挂掉,突然消失等,请不用紧张。
6. 紧张的时刻:Don't panic
安装过程顺利完成后,最最紧张的时刻来了:重启计算机。
我们能做的,就是默默等待它的启动,而我们盼来的,将不是kernel panic,所以,我们也不用panic。
到这,我们就成功的把32位的ArchLinux升级到64位啦,享受64位系统给您带来的快乐与麻烦吧!
四. 故障排除和清理
本章介绍的内容不仅仅是故障排除和清理,还将有些关于Arch及Linux系统的说明。
如果仅仅是升级,不必看本章内容,除非:
升级过程中,发生了错误;
想要个所谓的“纯净”的系统。
1. 清理工作
有人有洁癖,喜欢一个“纯净”的64位系统,很遗憾的告诉你,用Arch的方式做到这点几乎是不可能的,至少,它的内核是支持32位程序运行的。
能做的只尽量不使用32位的程序。
到了现在,我们的系统已经是完整的64位环境了,可以去掉32位的glibc兼容性支持了:
代码:
pacman -Rcsn lib32-glibc
至此
原文地址http://forum.ubuntu.org.cn/viewtopic.php?t=232877
更多阅读
32位和64位的区别 如何查看系统是32还是64位 xp系统是32位还是64位
【32位和64位的区别】如何查看系统是32还是64位——简介 最近有个朋友问我。32位和64位系统到底有什么区别的区别?WIN7系统32位和64位有什么区别?怎么查看我的系统是不是64位的?不能安装64位系统是怎么回事?怎么看系统多少位的。带着这
怎样查看计算机是32位还是64位操作系统? 精 32位装64位系统
术语“32 位”和“64 位”是指计算机的处理器(也称为“CPU”)处理信息的方式。64 位版本的 Windows 可处理大量的随机存取内存 (RAM),其效率远远高于 32 位的系统。怎样查看计算机是32位还是64位操作系统? 精——操作平台怎样查看计算
windows7电脑系统32位和64位区别 32位和64位系统区别
windows7电脑系统32位和64位区别——简介windows7电脑系统32位和64位区别 windows7电脑系统32位和64位区别——方法/步骤windows7电脑系统32位和64位区别 1、第一点 设计初衷不同:64位操作系统的设计初衷是:满足机械设计和分析、三
电脑操作系统32位和64位的区别 4g内存装32位还是64位
电脑操作系统32位和64位的区别——简介随着windows7系统的普及,越来越多的人发现市场上的系统开始分为32位和64位,连处理器也有32位和64位的区别,那么32位和64位有什么区别,哪个性能好呢?电脑操作系统32位和64位的区别——方法/步骤电脑
windows7SP1MDSN官方中文正式版32位/64位电驴/迅雷下载 win7 32位sp1升级包
windows7 SP1 MDSN官方中文正式版32位/64位(电驴/迅雷下载)64位系统:windows7 SP1 企业版 64位官方原版系统ed2k://|file|cn_windows_7_enterprise_with_sp1_x64_dvd_620654.iso|3264206848|FAEF3BD4D9AF6C529533CA6468E1911E|/SHA1: 3