声明
笔者最近意外的发现 笔者的个人网站 http://tiankonguse.com/ 的很多文章被其它网站转载,但是转载时未声明文章来源或参考自 http://tiankonguse.com/ 网站,因此,笔者添加此条声明。
郑重声明:这篇记录《ubuntu系统之难》转载自 http://tiankonguse.com/ 的这条记录:http://tiankonguse.com/record/record.php?id=677
前言
心中再次想起那句话,既然自己选择了这样做,就要准备好承受做这件事的一切代价。
一次错误的记忆和操作,使得整个boot分区被删除。
一次无意的撤销操作,使得系统依赖错误。
正文
背景
先说说背景吧。
我的电脑安装了三个系统: ubuntu12.04, ubuntu14.04 和 centOS。
其中 ubuntu12.04 是我一直使用的系统,上次装完这个系统使用时长至少一年了吧。
ubuntu14.04 这个系统我把windows删除的时候,使用这个系统覆盖的。
centOS安装也有半年了。
现在我的ubuntu12.04这个系统的磁盘不足了,于是我想删除其它两个系统。
于是我做了一个U盘版的GParted软件。
查看分区情况
sda1 是主分区(以前是windows7,现实在 ubuntu14.04了)。 sda3是我的D盘,ntfs格式。 sda4是一个ext4格式分区(boot分区)。 sda5是一个swap分区。 sda6是一个ext4格式的分区(ubuntu 12.04 分区) sda7是一个ext4格式的分区(Home分区)。 sda8是一个swap分区。 sda9是一个ext4格式的分区(centOS系统)。 sda10是一个swap分区
第一次误操作
看到这些分区,我想起一件事,当时安装 ubuntu14.04的时候,为了系统的安全,我把boot,home和根分开了,分了三个分区。
于是我就果断的把sda8和sda4删了,后来想交换分区也没算什么用,于是把三个交换分区也删了。对于home分区,我想再看看到底是不是,毕竟里面可能有重要的文件。
于是关机重启,然后出现了久违的 grub rescue 错误。
新的grub错误
第一行有个错误
/grub/i386pc/normal.mod not found.
还好,以前我遇到这个错误好多次,于是找到曾经的记录http://tiankonguse.com/record/record.php?id=194。
但是执行到 insmod /boot/grub/normal.mod 时竟然提示找不到 normal.mod。
还好,我尝试使用 insmod normal 试试,竟然成功了,原来现在的系统,改成 /boot/grub/i386-pc/normal.mod 了。
然后我兴高采烈的执行 normal 命令。
但是执行后,提示
error symbol 'grub_term_highlight_color' not found。
怎么会这样呢?
于是使用360搜索一下。
找到这个论坛(http://forum.ubuntu.org.cn/viewtopic.php?t=458570).
说是系统的一个 bug, 需要使用 live 系统重装 grub2 .
我做了一个ubuntu 系统的U盘。
然后把U盘里的boot复制到我的那个 ubuntu 12.04 系统。
开机后还是 grub rescue, 然后使用上面的方法后竟然进去到U盘系统了。
原来grub还没有更新。
然后更新的时候提示下面错误:
ubuntu@ubuntu:~$ sudo update-grub /usr/sbin/grub-probe: error: failed to get canonical path of /cow. ubuntu@ubuntu:~$ sudo grub-install /dev/sda Path `/boot/grub' is not readable by GRUB on boot. Installation is impossible. Aborting.
然后我在ubuntu的一个论坛上找到一个方法(http://askubuntu.com/questions/197833/recovering-from-grub-rescue-crash)
核心命令时
sudo mount /dev/sdXY /mnt sudo grub-install --root-directory=/mnt /dev/sdX Where /dev/sdX is the disk where Ubuntu is installed, and /dev/sdXY is the partition on the disk where Ubuntu is installed. In other words, /dev/sdXY contains /boot and so on. Use fdisk -l to verify the Ubuntu installation location.
但是我执行的时候,提示
ubuntu@ubuntu:~$ sudo mount /dev/sda /mnt mount: /dev/sda already mounted or /mnt busy
在bug论坛看到各种解决方法,大家可以去看看(https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1289977)。
sudo fdisk -l And find your Ubuntu partition (should be /dev/sda1 if it is the first partition) sudo mount /dev/sda1 /mnt sudo mount --bind /sys /mnt/sys sudo mount --bind /proc /mnt/proc sudo mount --bind /dev /mnt/dev sudo chroot /mnt Now reinstall Grub2 sudo apt-get install --reinstall grub2
blkid 查看各个分区的UUID
此时我突然意识到一个问题,我这是U盘,不是 live 系统,里面的文件自然不全了。
于是我尝试先修复另一个系统,结果可以了。
然后进入那个系统,把boot目录全部拷贝过去。
重启选择这个系统,竟然进入的是新的系统。
手动设置分区
此时我意识到一个问题,我的这个旧的系统有三个分区:根分区, boot 分区, home 分区。
那一定有一个地方来储存这三个分区在那里储存,还真找到了。
执行这个命令
tiankonguse@tiankonguse:~$ sudo vi /etc/fstab
可以看到分区的挂载点
下面的是我修复完的内容
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda1 during installation UUID=65a7fc16-a481-4f77-97b6-59731143f930 / ext4 errors=remount-ro 0 1 # swap was on /dev/sda12 during installation #UUID=7b08a45e-34f2-4ea2-900e-579c5a3bddca none swap sw 0 0 # swap was on /dev/sda6 during installation #UUID=99d228d4-f996-4970-ba48-f6950e3a0b69 none swap sw 0 0 # /home was on /dev/sda7 during installation UUID=aef790b3-32e8-4060-8542-bafeedcbac98 /home ext4 defaults 0 2
关于 UUID 可以使用上面提到的blkid来查询
tiankonguse@tiankonguse:~$ sudo blkid /dev/sda1: UUID="65a7fc16-a481-4f77-97b6-59731143f930" TYPE="ext4" /dev/sda5: LABEL="E" UUID="3816A47016A43134" TYPE="ntfs" /dev/sda6: UUID="aef790b3-32e8-4060-8542-bafeedcbac98" TYPE="ext4"
配置为自己需要的,旧的系统的home目录就挂到新的系统上去了。
按照这个方法,我把旧的系统挂载的/mnt上后,修改 /mnt/etc/fstab的内容,修改对应的项。
然后执行
sudo update-grub2
然后重启竟然好了。
好吧,最起码现在我可以进去 ubuntu12.10 系统了。
新系统的问题
等等,不是ubuntu12.04 系统吗?怎么变成 ubuntu12.10 了。
好吧,背景介绍不完整。
起初是 ubuntu12.04 系统,删除分区之前的那段时间,我使用命令行升级了一下,本以为会升级到 ubuntu14.04 的,谁知只是升级到 ubuntu12.10 了。
那个 grub 新问题也是这个新系统导致的。
进入新系统,第一感觉是好不爽。
分辨率竟然比较大,电脑竟然很卡。
好吧,我再次升级,应该会升级为 ubuntu13.04 吧。
于是我再次执行升级命令。
取消系统升级的问题
网速还是很给力的,需要的文件包很快就下载完了,但是安装的时候好慢好慢,记得我从 ubuntu12.04 升到 ubuntu12.10 用了好几个小时的,现在又中午了,于是我残忍的把那个窗口关闭了。
然后我关闭电脑睡午觉。
一觉醒来,电脑不能进入桌面了,登陆后屏幕一片黑,只有一个鼠标。
然后我使用 ctrl + alt + F1 进入终端,还好可以登陆。悲剧的是我执行了几条清理命令。
sudo apt-get autoremove sudo apt-get autoclean
再然后就出现了大量依赖的问题,幸好我之前有三篇关于依赖的记录。
源的问题:下列的软件包有不能满足的依赖关系
各种解决方法:软件包没有被完全安装或卸载问题
按照那个方法依次尝试,都是失败。
然后我就尝试手动安装没有的依赖包。
于是先把错误信息导向文件
tiankonguse@tiankonguse:~$ sudo apt-get -f install > error 2>&1
然后找一台电脑,在 packages.ubuntu.com 上搜对应的包,然后存在U盘上。
然后用下面命令安装
sudo dpkg -i *.deb
对于依赖版本不对的,我就在 /var/lib/dpkg/status 把它们的版本修改为合适的值。
最后竟然提示没错了。
然后我升级一下安装了几个文件,终于可以进去桌面了。
回头是岸
实际上这个时候已经是第二天了。
我突然问自己,为什么执着与这个旧的系统,我有一个新的 ubuntu14.04 系统, 而且可以把 home 目录挂过来,我还想要什么呢?
我心里默默的说因为我安装了很多软件。
好吧,于是执行
dpkg --get-selections > installed-software.log
然后进入新的系统,果断的把旧的系统卸载了。
然后恢复备份
sudo dpkg --set-selections < ~/installed-software.log && apt-get dselect-upgrade
然后更新源,发现提示 NO_PUBKEY 。
然后找到对应的方法
简单的说只需要三步,假设key是C2518248EEA14886。
sudo gpg --keyserver keyserver.ubuntu.com --recv C2518248EEA14886 sudo gpg --export --armor C2518248EEA14886 | sudo apt-key add - sudo apt-get update
然后我倒入包的时候,竟然要卸载一些文件,我赶紧看看 installed-software.log ,发现有些是 deinstall , 于是我使用vi的替换替换了
:%s/deinstall/install/
导入的时候还提示
dpkg: warning: package not in database at line 1086: lynx
sudo apt-get install dselect $ sudo dselect -> Update -> Install
相关推荐
Canonical公司作为Ubuntu系统的商业支持者,与全球热情的开发者社区合作,共同开发和推广Ubuntu系统。 Ubuntu手机平台的设计目标是打造一个良好的手机生态系统。与传统智能手机不同,Ubuntu手机强调内容和服务的...
ubuntu操作系统,找个Ubuntu操作系统太难了,下载速度太慢,一个20个文件,需要的必须都下载下来
ubuntu操作系统,找个Ubuntu操作系统太难了,下载速度太慢,一个20个文件,需要的必须都下载下来
ubuntu操作系统,找个Ubuntu操作系统太难了,下载速度太慢,一个20个文件,需要的必须都下载下来
ubuntu操作系统,找个Ubuntu操作系统太难了,下载速度太慢,一个20个文件,需要的必须都下载下来
ubuntu操作系统,找个Ubuntu操作系统太难了,下载速度太慢,一个20个文件,需要的必须都下载下来
ubuntu操作系统,找个Ubuntu操作系统太难了,下载速度太慢,一个20个文件,需要的必须都下载下来
这里,你需要指向之前准备好的空闲硬盘空间,创建新分区用于Ubuntu系统(主分区或逻辑分区),并为交换分区(用于虚拟内存)分配空间。 4. 安装过程:按照提示设置用户名、密码等信息,然后让安装程序自动完成其余...
ubuntu操作系统,找个Ubuntu操作系统太难了,下载速度太慢,一个20个文件,需要的必须都下载下来
ubuntu操作系统,找个Ubuntu操作系统太难了,下载速度太慢,一个20个文件,需要的必须都下载下来
ubuntu操作系统,找个Ubuntu操作系统太难了,下载速度太慢,一个20个文件,需要的必须都下载下来
标题中的“一个Ubuntu下的C线程池”指的是在Ubuntu操作系统上使用C语言实现的一个线程池库。线程池是一种程序设计模式,它管理一组预先创建的线程,以便高效地处理并发任务。在Linux环境下,C语言是系统编程的常用...
【Ubuntu入门知识详解】 Ubuntu是基于Linux操作系统的发行版,深受全球用户的喜爱,尤其适合初学者探索开源世界。...不要害怕挑战,Ubuntu入门其实并不难,只需给予一点时间和耐心,你将会发现一个全新的计算体验。
Ubuntu的apt命令是Ubuntu操作系统中最常用的软件包管理命令,用于安装、卸载、更新和管理软件包。下面是apt命令的详细解释: 安装软件包 apt-get install packagename:安装一个新软件包,这是最经常用到的命令。 ...
《Ubuntu Linux操作系统》课程教学大纲旨在为高职高专类计算机专业的学生提供Linux操作系统的基础知识和实践技能。课程主要围绕Ubuntu Linux这一流行的Linux发行版展开,旨在让学生熟悉操作系统的基本操作,并掌握其...
虚拟机中安装Ubuntu是IT专业人员和爱好者常见的实践,它允许用户在隔离的环境中尝试操作系统而不会影响主机系统。本知识点将详细介绍在虚拟机中安装Ubuntu的整个过程,以及相关的技术和概念。 ### 虚拟机软件 首先...
ubuntu操作系统,找个Ubuntu操作系统太难了,下载速度太慢,一个20个文件,需要的必须都下载下来
ubuntu操作系统,找个Ubuntu操作系统太难了,下载速度太慢,一个20个文件,需要的必须都下载下来
ubuntu操作系统,找个Ubuntu操作系统太难了,下载速度太慢,一个20个文件,需要的必须都下载下来
ubuntu操作系统,找个Ubuntu操作系统太难了,下载速度太慢,一个20个文件,需要的必须都下载下来