设为首页 收藏本站
查看: 1000|回复: 0

[经验分享] 探讨:取消Ubuntu系统错误关机后停留在GRUB界面

[复制链接]

尚未签到

发表于 2018-5-6 13:24:31 | 显示全部楼层 |阅读模式
  废话:
  话说这问题纠结了很久,于是。。。 终于,我憋不住啦,还是上去CSDN和Ubuntu中文论坛问别人吧,找找思路也好。。。 纠结,问了整天,哪里都没人回答,好吧~不过呢,终于,最后,解决啦~
  我的提问:
现在我的计算机上只安装了Ubuntu一个操作系统,正常情况下,开机时会默认正常启动,想实现一个简单的功能,想知道如何去做~

功能:
       在Ubuntu正在开机的过程中,如果将计算机断电,那么再次启动计算机后,计算机会进入到
GNU GRUB 1.99-21ubuntu3版的界面中,而此时菜单选项并未倒计时的功能,一定得手动选择,在这么一个前提条件下,有什么方法能让计算机自动选择第一项呢?
PS: 在正常开关机的时候,计算机会自动选择第一项的。
       上网看过 upstart 和ubuntu启动过程原理介绍 这文章,不过好像没什么关联,不知道这个GNU是属于开机后的哪个步骤,到了下载init这里没有了呢?
       我想实现这个功能,正常的思路是去修改GNU的配置文件吗? 看过GNU的修改方法,不过修改了后,好像对这种情况没有作用。

求指教~
  
解决过程:
  刚刚开始,还不知道那个画面叫做GRUB呢,将这个界面的一些文字打上去Googole一下,知道了,原来启动到这个画面是GRUB的菜单选择页面。
  OK,总算是知道一点点东西啦,不过呢,这个GRUB又是属于整个启动流程中的哪一步呢,以前在探讨装多系统的时候见过这个名词,不过现在已经忘得差不多了,于是呢,再次打开搜索引擎,我真怀疑自己是不是有搜索引擎依赖症呢~“UBUNTU系统启动过程”,好吧,经过一大堆的网页的筛选后,终于得到一个符合自己想要答案的网页了,终于想起来,BIOS->MBR->GRUB,就是你,就是你,就是MBR后面,咦,这样的话,岂不是不用经过系统的处理,那为什么问题会出现呢,难道是GRUB出现问题了?是不是就意味着可以排除系统的问题了呢?
  问题探讨到这里,这时候终于有网友回答我的帖子,“我用ext2也这样,换成ext4后就没出现过了 ”哇塞,原来这个也会有影响,于是,我再查。。。df -T 话说,我是一个超级菜鸟,第一次接触Linux-Ubuntu,以前一直在windows下呢,所以呢,连查个分区信息也得上网搜搜,结果,纠结。。。我就是ext4啊,为什么呢?于是,我试着朝着这个解决问题的思路,去找答案,分区格式对启动这里有影响?找着找着找到这里去了http://forum.ubuntu.org.cn/viewtopic.php?f=120&t=257333 ,知道了这个引导是放在/root/下面的,只是呢,这个跟我的问题没啥大关系,还打算将这个root独立建一个分区呢,嘿嘿,不过,在找资料的过程中,还没有那样做,因为这时候又想先去了解GRUB的启动过程又是怎样的,于是,先转向GRUB的启动过程,这又是一大堆的资料呢~纠结,看了好多的文章,设置都没有说断电这种情况,只有说正常情况的,还多次想放弃了。。。 只是。。 后来,还是硬着头皮上吧,即然配置文件配不了,那就试着看源代码,看看它写这个的思路是怎么的,终于,开始看起了grub.cfg   哈哈,发现亮点啦~
  接下来,不重复说啦,直接将帖子上的粘上来~
  哈哈哈,终于解决啦~

先是找了很久的GRUB的资料,知道原来GRUB可以修改,后来,尝试从网站上看那些教程修改GRUB,不过还是没有效果,后来,再深入一点,去看/boot/grub/grub.cfg,才发现,原来啊,这里有个可恶的
if [ "${recordfail}" = 1 ]; then
set timeout=-1
else
set timeout=0
正是被这个-1给害惨啦~
于是呢,因为看见这个grub.cfg文件写着DO NOT EDIT THIS FILE 尝试再通过/etc/default/grub修改,才发觉自己创的这个语句无效SET_RECORDFAIL_TIMEOUT = 0无效呢。。。 DSC0000.gif

嘿嘿,后来,在组长的带领下,还是使用暴力的方法,将/boot/grub/grub.cfg权限改为可写入,然后直接将这个timeout给改了,结果,终于成功啦啦啦~

折腾了两天多的时间的一个问题,记录一下下下下下下~
DSC0001.gif

顺便,如果哪位大牛会使用常规的方法,不那么暴力的话,告诉小弟一声罗~

  zhw2101024:
grub.cfg是通过/etc/grub.d目录里面的脚本生成的,可以切换到里面通过grep -r recordfail .
搜索一下,自己分析脚本代码,很简单的。注意最后的"."不能少,表示当前目录
  
我:

如果修改这个脚本,能提供一点思路吗?先谢过啦~
表示完全的菜鸟。。脚本如何改或者上网搜哪些关键词才好也不知道。。。。
    zhw2101024:
软件更新一般不会修改/etc里面的配置文件,可以放心修改。如果需要新的配置才能发挥新版本功能的话,安装的时候会提示是否修改配置文件。grub.cfg开头的注释说得很清楚,/etc/grub.d里面的是模版文件,只是简单的替换一下变量就几乎原样写入grub.cfg,grub那个是配置文件,概念不同的。
grub.cfg怎么改这里就怎么改,结构上不会有任何不同,就是一些数值用变量表示了,这些都是shell脚本。主要找以cat << EOF开头,EOF结尾的代码段,这是输出到grub.cfg文件的语句
  

我: DSC0002.gif

啦啦啦~ 我好像找到啦~ 可以确认一下吗?

我从 /etc/grub.d/00_header 这个文件里面找到了

make_timeout(){
cat << EOF
if[&quot;\${recordfail}&quot; = 1]; then
set timeout = 0
else
set timeout = ${2}
fi
EOF
}

嘿嘿, 直接修改了。
  
先发表,回宿舍,回复中后续。。   写得有点乱,有点急。。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-456601-1-1.html 上篇帖子: Ubuntu字符编码修改 下篇帖子: Ubuntu12.04安装和管理VirtualBox
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表