2
23
2012
8

迁移到64位 Arch Linux

本文来自依云's Blog,转载请注明。

曾经因为不了解,所以一开始选择了32位系统;后来内存大了,ArchLinux 的内核没有编译PAE支持,只能用 3GiB 多的内存,不爽。朋友又给了这篇教程,于是略作准备就开始动手了。

可是,但我真正动手时,那篇文章已经被另一篇英文教程取代了。当时忘记了 MediaWiki 会记录所有的编辑历史,所以只好将就着看了。结果,重启时 udev 没跑起来,说找不到 librt.so。我当然不会就此罢休,花费了一些时间,不仅拯救了系统,成功迁移到了 64 位,而且确定了 ArchWiki 上那篇教程的错误。

先说这个错误吧。现在已经修正了。方法 2: 从正在运行的系统一节,在安装 busybox 的时候,现在是一个红色的警告框,暗示着这里曾经发生的悲剧——

警告: 不要现在安装 lib32-glibc 软件包。在执行命令 ldconfig 后,当你安装 linux(内核)时,生成的镜像文件中,librt.so 等库文件会在 /usr/lib32 目录下,启动的时候二进制文件不会在此搜索库文件,导致启动失败。

当悲剧发生后,我有些紧张地拿出移动硬盘,先是进入移动硬盘上的 Arch,胡乱安装了几个 64 位软件包并重新生成 initramfs,结果连 init 也执行不了了。无奈我又启动64位内核的 PartedMagic chroot 进去查看。但是,chroot 失败了:

sh: cannot open shared object file

后来我才知道,因为我安装lib32-glibc/lib/ld-linux.so.2发生冲突,我覆盖了;后来卸载 32 位的 glibc 时,它被删除了。于是,动态链接的 32 位程序没有动态库加载器了。但其实还是有办法的,因为被误删的只是个软链接。

/usr/lib32/ld-linux.so.2 /bin/ls

老猫的提示下,手动指定ld-linux.so.2运行成功。我尝试把它链接过去,这个 32 位与 64 位库混合的系统开始有些可用了。接下来按 Wiki 里的指示操作就可以了。不过,我没有重装全部的库,而是只装了标明 i686 架构的库。这就是我之前那个用 Haskell 写的脚本的目的。不过还是出了点小问题——虽然我为防止程序运行不了而在开始之前把软件包列表生成了一份保存起来,但我忘了我的 HOME 是加密过的。PartedMagic 里没有 eCryptfs 工具,而 Arch 里的那个又因为库的原因运行不了,囧死了。。。幸运的是,我在迁移之前把 Dropbox 弄好同步了一遍,这个软件包列表也同步了。通过 Dropbox 网页界面下回来就好了。

弄好重启之后,整个事情还没完——我从 AUR 里编译安装的那些包还没重装呢。边重装边研究新的 64 位系统,发现 gcc 还是可以编译出 32 位程序的,只是要装gcc-multilib而已。现在可好了,既可以运行 64 位的程序,又可以运行 32 位的。库依赖少的 C 程序编译个 32 位的出来也没问题。

对了,最后说一句,vnstat 这厮的数据库格式竟然是平台相关的!换成 64 位后它就不断报错,直到我删除了以前的数据库。

Category: Linux | Tags: arch linux | Read Count: 15630
Mike 说:
Feb 24, 2012 11:05:48 AM

真是曲折的历程啊。。。

zhjx 说:
Feb 24, 2012 08:30:10 PM

虽然chroot不能,但是其实你可以考虑pacman的-r选项,我的系统就是这样被救回来的
-r, --root <path>
Specify an alternative installation root (default is /). This should not be used as a way
to install software into /usr/local instead of /usr. This option is used if you want to
install a package on a temporary mounted partition that is "owned" by another system.
NOTE: if database path or logfile are not specified on either the command line or in
pacman.conf(5), their default location will be inside this root path.

Avatar_small
依云 说:
Feb 25, 2012 01:11:44 AM

不行的,因为 pacman 也需要 chroot,不然那些安装脚本执行不了,虽然这个造成的问题会比较小。

maplebeats 说:
Feb 25, 2012 12:36:38 PM

当我遇见这种问题的时候第一件事想的是重装,而不是解决它~.~惭愧了

kfaren 说:
May 25, 2012 02:04:20 AM

多大内存啊。。?不搞图形,视频,科学运算,数据库什么的,64位优势没多少哇。

Avatar_small
依云 说:
May 25, 2012 02:26:55 AM

6G 啊,哪能浪费呢。我搞虚拟机啊,整天拿 vbox 挂 QQ……

mugbya 说:
Aug 14, 2014 05:37:11 PM

- 原来仙子的聊天 (tag)是用的vbox来挂的qq的啊

之前聊天用lwqq,但是多次密码出现问题,现在也用vbox挂qq ,慢慢真快成了你徒弟了
^_^

Avatar_small
依云 说:
Aug 14, 2014 10:07:20 PM

很早以前了。现在用的是 Wine TM,见 http://lilydjwg.is-programmer.com/2013/3/24/run-tencent-messenger-with-wine.38382.html


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

| Theme: Aeros 2.0 by TheBuckmaker.com