在对这些文件执行任何操作之前,应确保备份已安装的Ubuntu系统中的所有重要文档以及任何其他重要文件(例如音乐,电子书,视频),因为尝试此技术很可能会适得其反并使您的Ubuntu系统完全无法使用。
当然,一旦安装它们,它们将不会真正运行,因为它们的可执行文件是64位,而您的32位Ubuntu系统正在运行32位内核(仅运行32位可执行文件)。实际上,它们可能甚至没有完成安装,因为它们可能具有调用其不可运行的64位可执行文件的安装后脚本。
这是执行此操作的具体说明...但是请不要以此为代表的意思是可以的。我没有尝试过。(我已经从实时CD切换到已安装的Ubuntu系统,并执行了软件包管理和其他操作,但是我没有尝试这里建议的跨体系结构操作。)
在已安装的Ubuntu系统中,打开一个Terminal窗口(Ctrl+ Alt+ T)并运行mount | grep ' on / '
(将其粘贴到Terminal中,然后按Enter)。您应该会看到类似的内容/dev/sda2 on / type ext4 (rw,errors=remount-ro,commit=0)
。您感兴趣的部分是之前的设备名称on
(在此示例中为/dev/sda2
)。记住这一点,或写下来。
步骤1为您提供了/
分区的设备名称。如果您有单独的/boot
分区,则还需要知道该设备的设备名称。因此,在这种情况下,请运行mount | grep ' on /boot '
。您会看到类似的信息/dev/sda1 on /boot type ext2 (rw)
。记住或写下来。
从Oneiric amd64(即64位)实时CD引导,然后选择“尝试Ubuntu”而不是“安装Ubuntu”。
进入网络浏览器,并确保Internet连接正常运行。如果不是,请进行设置。
打开“终端”窗口并运行sudo mount /dev/sda2 /mnt
(/dev/sda2
如果不同,请替换为在步骤1中获得的设备名称)。
如果您安装的系统具有单独的/boot
分区,请运行sudo mount /dev/sda1 /mnt/boot
(/dev/sda1
如果不同,请替换为在步骤2中获得的设备名称)。
现在,运行以下命令以chroot进入已安装的系统:
sudo mount --bind /dev /mnt/dev
sudo chroot /mnt
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
运行ping -c 4 launchpad.net
以查看chroot内部的Internet连接是否完全正常。您希望这样的事情:
PING launchpad.net (91.189.89.223) 56(84) bytes of data.
64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=1 ttl=41 time=141 ms
64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=2 ttl=41 time=143 ms
64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=3 ttl=41 time=142 ms
64 bytes from launchpad-net.banana.canonical.com (91.189.89.223): icmp_req=4 ttl=41 time=140 ms
--- launchpad.net ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
相反,如果您无法发送或接收数据包,则必须在chroot中设置Internet连接。为此,请运行以下命令(离开chroot,将相关配置文件从实时CD系统复制到chroot,然后重新输入chroot):
sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old
sudo cp /mnt/etc/hosts /mnt/etc/hosts.old
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
sudo cp /etc/hosts /mnt/etc/hosts
通常,如果出现错误,您应该停止该过程,但是不要担心这四个命令中的第一个和/或第二个命令是否失败,但前提是失败的具体方式是告诉您/mnt/etc/resolv.conf
(或/mnt/etc/hosts
)不存在。
chroot重新输入,然后重试:
sudo chroot /mnt
ping -c 4 launchpad.net
运行以下命令以使您的chroot环境完全可以使用:
export HOME=/root
export LC_ALL=C
如果您尚未安装.deb
文件的64位版本dpkg
和apt
,所以做了。如果您确实安装了它们但存在配置错误,请运行dpkg --configure -a
以对其进行修复。(希望这能奏效……最好等到您进入实时CD环境后再尝试安装它们,以防dpkg
引导进入已安装系统时安装64位系统dpkg
处于无法使用的状态。)
使用dpkg
和apt
安装了64位版本的之后,假设它们将自动安装64位程序包,您现在可以删除所有32位内核并安装64位内核。要删除32位内核,请运行dpkg -l | grep linux-
。这列出了以开头的已安装软件包linux-
。你在开始喜欢包更特别感兴趣linux-generic
,linux-image
,linux-server
,和/或linux-headers
。删除这些文件,apt-get purge ...
其中...
用要删除的软件包的空格分隔的列表代替。
现在重新安装您删除的软件包。(实际上,对于在软件包名称中包含版本号的软件包,例如linux-image-3.0.0-13-generic
,您只需要安装最新版本的软件包名称。)通过运行apt-get install ...
where ...
被替换为要安装的软件包的空格分隔的列表来执行此操作。。
更新引导加载程序配置,卸载某些设备,然后离开chroot:
update-grub
umount /proc || umount -lf /proc
umount /sys
umount /dev/pts
exit
sudo umount mnt/dev
如果您运行sudo cp /mnt/etc/resolv.conf /mnt/etc/resolv.conf.old
并且它没有失败,那么现在运行sudo cp /mnt/etc/resolv.conf.old /mnt/etc/resolv.conf
。
如果您运行sudo cp /mnt/etc/hosts /mnt/etc/hosts.old
并且它没有失败,那么现在运行sudo cp /mnt/etc/hosts.old /mnt/etc/hosts
。
如果您安装的系统具有单独的/boot
分区,请卸载该分区:sudo umount /mnt/boot
卸载已安装系统的/
分区:sudo umount /mnt
离开“终端”窗口(运行exit
),然后重新引导(或关闭)实时CD系统并引导进入已安装的系统。
查看系统是否可用并运行64位内核(uname -m
应该说体系结构是x86_64
)。