您的位置:首页 > 其它

转一篇文,我在老笔记本电脑上安装ubuntu的失败经历

2014-06-07 10:45 876 查看
如果说飞蛾喜欢扑火是处于本性,那么工程师喜欢处理棘手问题也是出于本性。

这个棘手的问题就是,在没有光驱,没有u盘启动支持的机子上,通过硬盘安装的方式安装ubuntu?

虽然网上有3种方式可以做到,但事实上我都试过但没有成功,但我可以说,我尝试过很多错误。

作为一种纪念,我决定记录下来这个过程:

下载iso档

10.04版

12.10版

14.20版

8.10版

desktop版

alternative版

initrd

vmlinux

最后可行的方式:

网购一个光驱,用光驱安装到硬盘,然后用克隆方式到SSD固态硬盘,

修改menu.list和fstab,引导到SSD硬盘上

把sdb4作为home目录挂载到系统

menu.list和fstab的关系:

系统是靠grub引导的,grub安装的时候会往mbr写东西,大概就是一段跳转代码,然后就跳转到linux的按照分区里面的grub执行程序。一旦这个mbr被grub该掉,原先window的引导也要依赖grub这套机制来跳转了,事实上grub在安装时,也会扫描当前机器里面的各个硬盘,看看是否存在window系统,如果有,它会在里面提供一条路径,引导到windows自己的引导界面。window的引导程序好像叫ntldr。

还是说说menu.lst,这个在后期的版本改为grub.cfg, 它是给grub看的,也就是原始安装的那个ubuntu里面的grub,而不是克隆之后的grub,因为写在mbr里面的指针是指向原始的那个盘的grub。

关于fstab,它是告诉系统要挂载的硬盘,首先root是必须要挂载的,所以必须指定一个root。

fstab里面是以UUID为主,也就是每一个分区都有一个这样的id,而且是唯一的。但如果克隆的硬盘,则这个id会跟原来的一样,要用tune2fs -U命令去重新产生一个UUID, 当然也可以手工指定一个,我后来就是手工制定的,因为前面的menu.lst和fstab都改好了,重新生成的话就又要修改这2个地方。

而事实上克隆的那个分区上面的fstab跟原始的分区上的fstab应该不一样,也就是说他们挂的root分区不一样。

新学到的命令:

dd if= of= bs= count=

parted

fdisk

blkid

tune2fs -U

新接触到的文件:

/etc/fstab

/boot/grub/menu.list

/etc/apt/sources.list

首先是图片:

1. 这张图片,是当初想用硬盘安装,已经下载好iso文件,据说要用一个grub4dos来引导,具体如何引导也不是很清楚,所以装了个一键ghost,装好之后,果然没有让我失望,有一个boot from iso选项,于是尝试用这种方式引导安装,结果就出现这个错误。



2. 这张是也是把旧硬盘里面的winxp克隆到固态硬盘上面,启动时失败,然后提示这个错误,这个原因并不是真的没有这个文件,而是由于我修改了boot.ini,这个我特别有一篇博文:/article/2464736.html

它主要的原因是:


因以下文件的损坏或者丢失windows无法启动,windows root\system32\hal.dll

然后我就傻傻地重新拷贝hal.dll

结果还是不行,查了网上的说明,不一定是因为文件的问题,而是因为改了boot.ini的原因,导致路径出错。

所以说这个所谓的路径,真的很让人恼火,它永远不会告诉你它自己搞错了路径,它只会告诉你文件损坏和丢失。

知道了原因,可是还是不知道解决办法,难道windows不支持这种2个硬盘的情况下,默认到第二块硬盘是不行的?

于是,在一个偶然的发现下,无意之中有一个猜想,会不会跟后面的排列顺序有关,也就是说你想把默认项设置在disk(0),那么这个默认项也应该要排在前面,而现在我希望把默认项设定在disk(1),也应该要把disk(1)的启动项放到最前面。

修改成这样,结果就ok了:



3. 由于我的电脑太老了,CPU不支持PAE特性,PAE是Physical Address Extension,也就是物理地址扩展,想不到当年最先进的技术,现在已经很过时了,连号称对配置要求最低的ubuntu都不兼容了。ubuntu应该是从12.xx版本开始强制要求兼容PAE,严格来讲,是release版不再兼容没有PAE flag的CPU,但是如果自己编译内核,把PAE去掉估计还是可以装成功的,只是过于折腾。



4. 这个原因是引导程序没有找到安装文件,原来光盘里面的initrd只支持从cdrom读取文件,不支持从硬盘里读取文件,因此找不到,如果要读取硬盘的话,要去下载专门的支持硬盘引导的initrd。而且这个initrd必须要跟被安装的版本配套一致才行。



5.尝试用alternative方式安装,然后已经下载了支持硬盘启动的initrd,然后能找到硬盘上的光盘映像,但是后面还是出问题,就是内核不兼容,如果选择跳过内核的安装,则后面需要自己编译内核。



6. 没有找到内核模块,Alternative安装奇怪的地方,就是,即使没有内核,它也允许你继续安装其他部分的文件,而不会就此结束。





7. 居然也不识别网卡



8. 对home目录加密,即使计算机被偷了,别人也看不到里面的数据,这个安全性考虑得很周到



9. 分区,sdb就是我的固态硬盘



10. 最终的分区方案是这样的,sda是原先的40G硬盘,sdb是固态硬盘,分区1和2已经被windows用了,5可以用作linux,6是交换空间,交换空间是不需要格式化的,linux里面有专门的命令来设置交换空间,它可以是一个分区,也可以是一个文件。




11. 进入安装,尽管没有成功,不过这一次是路程走得最远,最陌生,也就是最接近终点的一次失败。



12. 回到刚才选内核的界面,有下面3种预置的内核,可惜都不能匹配得上。



13.很多时候,它都不直接告诉你为什么不行,它只告诉你,有一个log在那个隐蔽的地方,你自己去找吧。





14. 基础系统也没有成功,为啥?啥也不说,你懂得,你是expert吗?否则别问。



15.也许是这里的原因,这里安装initrd,也就是用来引导linux的那个东东,generic的意思应该是比较庞大但兼容的硬件比较多的,targeted就是兼容性不高但比较小。



16. 又是失败,从第一次接触linux开始就不断被这种error折磨





17. 更早期一点,在导入阶段,谢天谢地,它认出iso来了。那一刻,感觉充满了希望。



18. 不记得是那时候出来的,Debootstrap不懂啥意思,第四虚拟控制台又是啥东西?sha1sum估计是一种校验码。也就是校验码出错的意思吧?这就是程序员,这就是英文老师教的,Keep It Short and Simple,短而且简单,但就是费解,像古文。



19. 这是另外一台机的,大概是某个模块崩溃了,要发个报告给服务器,可是我没有感觉到啊。



20. 安装好的系统是这样的,看看路径是不是正常。



21. GCC的版本是4.4

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: