ubuntu中引导程序grub的配置问题

操作系统45讲之Ubuntu 18.0.4使用GRUB配置并启动自己的简单操作系统雏形 其中的“sda1”就是硬盘的第一个分区(硬件分区选择 MBR),但是 GRUB 的 menuentry 中不能写 sda1,而是要写“hd0,msdos1”,这是 GRUB 的命名方式,hd0 表示第一块硬盘,结合起来就是第一块硬盘的第一个分区。发现多了不少文件,HelloOS.bin需要移动到/boot目录下。将上边写入到grub.cfg的内容写入到40_custom文件中。更新/boot/grub/grub.cfg文件。按下“ESC”可以正常退出到grub引导菜单。将下边的内容写到grub.cfg中。 阅读详情



在ubuntu10.04中,启动菜单是由/boot/grub/grub.cfg文件决定的。打开该文件,在此文件的开头可以看见这样一句话# it is automatically generated by /usr/sbin/grub-mkconfig using templates from /etc/grub.d and setting from /etc/default/grub。这句话的大致意思是,/boot/grub/grub.cfg是通过 /etc/grub.d 作为模板、/etc/default/grub 作为配置,被 grub-mkconfig 命令自动生成的。在我之前发表的ubuntu10.04内核升级博文中所说的自动设置grub方法,即运行update-grub命令,本质上就是根据/etc/default/grub配置文件,用grub-mkconfig命令自动生成的。那么怎么修改配置文件呢?下图是/etc/default/grub文件中常用的变量:

ubuntu <wbr>10.04 <wbr>grub设置

其中的GRUB_DEFAULT表示默认的菜单项,各启动菜单的菜单号是从0开始依次加1的。

GRUB_HIDDEN_TIMEOUT=0被#注释掉后,系统在启动时会显示所有的启动菜单。

GRUB_TIMEOUT 为引导项列表自动选择超时时间。

根据自己的需要设置好这些变量以后,必须运行update-grub命令,这些配置参数才会更新到/boot/grub/grub.cfg文件中。

我在虚拟机中用这种方法进行grub配置以后,重启,系统在启动升级内核的时候,显示:VFS:Unable to mount fs on unknown-blocking(0,0),然后无法进入系统。这个错误一般都是因为找不到内存盘ramdisk的镜像文件。于是,我从原来版本的ubuntu内核进入系统,打开/boot/grub/grub.cfg文件,看到update后的该文件的升级内核菜单项:

menuentry 'Ubuntu,Linux 2.6.34.11' --class ubuntu --class gnu-linux --class gnu --class os {

recordfail

insmod ext2

set root='(hd0,1)'

search --no-floppy --fs-uuid --set 2e78226c-16d3-4da2-a35a-77e2146d6427

linux /boot/vmlinuz-2.6.34.11 root=/dev/sda1 ro   quiet splash

}

我们只需加上一个initrd项(粗体显示),修改后的升级内核菜单项为:

menuentry 'Ubuntu,Linux 2.6.34.11' --class ubuntu --class gnu-linux --class gnu --class os {

recordfail

insmod ext2

set root='(hd0,1)'

search --no-floppy --fs-uuid --set 2e78226c-16d3-4da2-a35a-77e2146d6427

linux /boot/vmlinuz-2.6.34.11 root=/dev/sda1 ro   quiet splash

initrd /boot/initrd-linux2.6.34.11

}

其中,initrd项就是指定内存盘ramdisk镜像文件路径。

PS:在添加initrd项之前,要先修改/boot/grub/grub.cfg的读写权限,才能对该文件进行修改。修改保存之后,新内核就能够正常启动啦啦啦~

另一种方法是手动更改/boot/grub/grub.cfg文件,打开该文件:

# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
 load_env
fi

#该default设置系统默认的菜单项
set default="0"
if [ ${prev_saved_entry} ]; then
 set saved_entry=${prev_saved_entry}
 save_env saved_entry
 set prev_saved_entry=
 save_env prev_saved_entry
 set boot_once=true
fi

function savedefault {
 if [ -z ${boot_once} ]; then
 saved_entry=${chosen}
 save_env saved_entry
 fi
}

function recordfail {
 set recordfail=1
 if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi
}
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set 2e78226c-16d3-4da2-a35a-77e2146d6427
if loadfont /usr/share/grub/unicode.pf2 ; then
 set gfxmode=640x480
 insmod gfxterm
 insmod vbe
 if terminal_output gfxterm ; then true ; else
 # For backward compatibility with versions of terminal.mod that don't
 # understand terminal_output
 terminal gfxterm
 fi
fi
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set 2e78226c-16d3-4da2-a35a-77e2146d6427
set locale_dir=($root)/boot/grub/locale
set lang=zh
insmod gettext
if [ ${recordfail} = 1 ]; then
 set timeout=-1
else

#此处的timeout设置菜单项显示时间
 set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###

#以下几个menuentry都是启动菜单
menuentry 'Ubuntu, with Linux 2.6.32-21-generic' --class ubuntu --class gnu-linux --class gnu --class os {
 recordfail
 insmod ext2
 set root='(hd0,1)'
 search --no-floppy --fs-uuid --set 2e78226c-16d3-4da2-a35a-77e2146d6427

#linux后的粗体路劲为内核镜像文件
 linux /boot/vmlinuz-2.6.32-21-generic root=UUID=2e78226c-16d3-4da2-a35a-77e2146d6427 ro quiet splash

#initrd后的粗体文件为内存盘ramdisk镜像文件
 initrd /boot/initrd.img-2.6.32-21-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-21-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
 recordfail
 insmod ext2
 set root='(hd0,1)'
 search --no-floppy --fs-uuid --set 2e78226c-16d3-4da2-a35a-77e2146d6427
 echo 'Loading Linux 2.6.32-21-generic ...'
 linux /boot/vmlinuz-2.6.32-21-generic root=UUID=2e78226c-16d3-4da2-a35a-77e2146d6427 ro single
 echo 'Loading initial ramdisk ...'
 initrd /boot/initrd.img-2.6.32-21-generic
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
 insmod ext2
 set root='(hd0,1)'
 search --no-floppy --fs-uuid --set 2e78226c-16d3-4da2-a35a-77e2146d6427
 linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
 insmod ext2
 set root='(hd0,1)'
 search --no-floppy --fs-uuid --set 2e78226c-16d3-4da2-a35a-77e2146d6427
 linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

#下面的从“### BEGIN /etc/grub.d/30_os-prober ###”到“### END /etc/grub.d/30_os-prober ###”之间的内容如果注释掉,启动过程才会显示各启动菜单。如果不注释掉,启动过程是不会显示各启动菜单的。

### BEGIN /etc/grub.d/30_os-prober ###
if [ ${timeout} != -1 ]; then
 if keystatus; then
 if keystatus --shift; then
 set timeout=-1
 else
 set timeout=0
 fi
 else
 if sleep --interruptible 3 ; then
 set timeout=0
 fi
 fi
fi
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
OK,了解了这些,我们就可以根据自己需要添加启动菜单,设置grub参量了。

STM32铅酸蓄电池内阻测试仪的交流阻抗测量与数据采集优化 本文深入探讨了基于STM32的铅酸蓄电池内阻测试仪设计,重点解析了交流阻抗测量原理与数据采集优化方案。通过采用1kHz交流小信号注入和数字相敏检波技术,实现对电池欧姆内阻的无损精准测量,并详细介绍了硬件前端调理、ADC过采样及系统标定等关键优化手段,有效提升了测量精度与稳定性。 阅读详情

相关推荐

用运放和乘法器DIY忆阻模拟器:从理论到Multisim仿真实战

本文详细介绍了如何利用运放和乘法器DIY忆阻模拟器,从理论基础到Multisim仿真实战。通过解析忆阻器的数学模型,设计关键电路模块,并完成仿真验证,帮助电子爱好者低成本实现忆阻器功能。文章还提供了实际调试中的常见问题解决方案和进阶应用建议,适合神经形态计算和非易失性存储领域的研究者参考。

weixin_28718345的博客 419

编辑grub.cfg修复linux,Ubuntu如何修改grub.cfg

最近很多人问到开机的grub设定问题,所以我整理一下重点,方便大家查询。顺便厘清一些错误的用法。要修改grub,请注意以下几个重要档案:1. /boot/grub/grub.cfg此档案中包含了GRUB配置选项。注意文件的开头,说明了这是由/etc/grub.d与/etc/default/grub所生成的,不要自己编辑。这个档案还是只读属性,就是要避免你直接去编辑。若是你修改了这个档案,只要更新内...

weixin_36433950的博客 1175

施耐德 Modicon M580 ePAC 项目实战:从硬件选型到 Control Expert V15 组态

本文详细解析了施耐德 Modicon M580 ePAC 在工业自动化项目中的实战应用,从硬件选型到 Control Expert V15 组态的全流程。重点介绍了水处理站控制系统的硬件配置、网络架构设计、软件安装授权及程序框架开发,帮助工程师高效实施中大型控制系统项目。

weixin_33701617的博客 328

Ubuntu的启动配置文件grub.cfg(menu.lst)设置指南

ubuntu版本9.04,那时候启动配置文件还是menu.lst,到了ubuntu9.10的时候就更名为grub.cfg了,ubuntu 10.04依旧沿用的是grub.cfg,但是这个文件的内容变更并不是那么大。在ubuntu中,grub.cfg(menu.lst)就相当于windows系统下的boot.inf文件,记录着一些启动配置信息,在这里奶牛为大家介绍一些简单的设置规则。打开命令行, sudo gedit boot/grub/grub.cfg  (or sudo gedit boot/grub/m

谷风的专栏 1752

新手避坑指南:从GEO数据库下载单细胞测序数据的5个关键步骤(附实操截图)

本文为单细胞测序数据下载新手提供5个关键避坑步骤,涵盖数据搜索准备、样本量评估、文件选择决策、元数据诊断及高效下载技术。通过实操截图和代码示例,帮助研究者快速锁定GEO数据库中的优质单细胞测序数据,避免常见错误。

weixin_30296405的博客 672

OpenFOAM收敛问题排查指南:从参数设置到网格优化

本文系统性地介绍了OpenFOAM计算中收敛问题的排查方法。从理解收敛本质出发,详细讲解了如何通过调优求解控制参数(如松弛因子、离散格式)、合理设置时间步长与耦合算法,以及优化网格质量来解决发散难题。文章提供了从软件设置到硬件网格的完整排查路径,帮助用户实现稳定高效的计算流体力学模拟。

fern8的博客 792

Ubuntu开机启动项的增删改

其中每个menuentry包含的都为一个对应的版本内核,实际可以根据自身情况进行顺序调整或者增删。在自己安装的内核版本若是通过uname-a可以查询到,但是在开机引导向不存在的情况下,也可以将其内核嵌套入此段代码中。一、在重组系统,或者不想开机启动有太多的内核项显示,可以通过修改grub.cfg内的内容进行更正。两行的内容换成自己想要版本的内核即可,后续开机默认开启的即为所选内核。......

jiaostyle的专栏 3199

Java 类与对象 -- Java 语言的类与对象、构造器、static、final、包和 JAR

本篇文章我们将深入了解 Java 语言中的类与对象,探讨构造器、`static`、`final`、包和 JAR 文件。这些概念是面向对象编程的核心,对于理解和掌握 Java 至关重要。

栗筝i的博客 5038

关于Ubuntu开机启动菜单grub2(选择内核、删除内核、调整内核启动顺序)

在早期的Ubuntu中,使用Grub作为系统的启动引导程序,想修改系统启动项非常简单,只要打开系统菜单设定文件 /boot/grub/menu.lst,修改该文件中的内容即可,但是到了Grub2,可就不能采用这种方式修改系统启动项了。Grub2(GRand Unified Bootloader, version 2)是Grub的第二版。其对Grub的接口进行了完整的重写,基于PUPA项目的研究

程序员「阿基米东」的编程之旅 3万+

[系统安全] 四十七.恶意软件分析 (3)动态分析经典沙箱Cape的安装和基础用法详解

系统安全将更好地帮助初学者了解病毒逆向分析和系统安全。前文详细介绍恶意代码静态分析经典工具Capa的基础用法,以及批量提取静态特征和ATT&CK技战术,主要是从提取的静态特征Json文件中提取关键特征。这篇文章将详细讲解动态分析沙箱Cape,其是一个开源的自动恶意软件分析系统,通过自动运行和分析恶意软件,全面分析和提取恶意软件的关键特征。本文先介绍Cape沙箱的安装和基础用法,后续随着深入再分享。基础性文章,希望对您有帮助!

杨秀璋的专栏 6738

半导体材料仿真:二维材料仿真_(1).二维材料的基本概念

在半导体材料仿真领域,二维材料因其独特的物理和化学性质而受到广泛关注。二维材料,也称为二维纳米材料,是指在二维空间(通常是平面)上具有原子级厚度的材料。这些材料的厚度通常在几个纳米甚至单个原子层的范围内,使得它们在电子、光学、热学和机械性能上表现出与传统三维材料显著不同的特性。本节将详细介绍二维材料的基本概念,包括它们的分类、结构、性质以及在半导体材料仿真中的应用。

2401_87715305的博客 1546

[原创] Ubuntu 16.04 grub rescue 模式下修复 grub

  前几天整理了下电脑的分区,合并并删除一些分区,结果导致 grub 被破坏了,Ubuntu进不去了,启动后直接进入了 rescure 模式。后来又折腾了下,终于修复好了,现总结一下。   先说一下我的系统环境,我是 Win7 + Ubuntu 16.04 双系统,先安装的 Win7,后安装的 Ubuntu。采用的是 Windows 引导 Ubuntu 的方式,使用的工具是”EasyBCD ...

Leo's Blog 1361

基于YOLOv26的护栏损坏检测系统原理讲解

本文介绍了一种基于YOLOv26深度学习的护栏损坏检测系统。该系统通过车载摄像头或固定监控采集道路护栏图像,利用改进的YOLOv26算法实现高效准确的损坏检测。系统采用分层架构设计,包含数据采集、检测处理、分析评估和应用服务四个层次,能够自动识别变形、断裂、缺失等五种常见损坏类型,并评估损坏严重程度。相比传统人工检测方法,该系统大幅提高了检测效率和准确性,降低了人工成本和安全风险。关键技术包括多尺度特征融合、注意力机制和自适应非极大值抑制等创新设计,使系统在复杂道路环境下仍能保持稳定的检测性能。

一键难忘的博客 328

Ubuntu 9.10 Grub2 中两个小问题解决方法

Ubuntu自从9.10开始采用Grub2来引导,暂且不说grub2的种种优点,我们有可能会遇到如下两个和以前不同的问题 1.为了不破坏windows的启动,我们不把grub装载mbr上的话,简单的安装grub4dos到C盘下已经不能顺利引导grub2了,需要在C盘下建立一个menu.lst文件,文件内容为:         timeout 3         default 0     ...

Mobile&Go&Wave 148

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Ubuntu探秘之三:linux世界的大门----GRUB

主要讨论了GRUB的作用,以及GRUB软件的安装、配置、排错以及GRUB命令的总结。

geekard的专栏 952

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

安装Ubuntu后无法启动

安装完Ubuntu20.04后,重启,只有一个下划线在左上角闪烁。或者有一个grub引导命令。

weixin_42631782的博客 8812

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

linux bootgrub分区,如何使用grub引导linux?

我想装双系统xp+linux,linux选用了ubuntu8.10,开机直接进xp了,于是下载了grub4doshttp://topic.youkuaiyun.com/u/20090117/12/7e942417-5707-44d5-8a1e-d96eb39ab498.htmlhttp://topic.youkuaiyun.com/u/20090118/19/f10528b7-cab7-4614-ad62-8ad32...

weixin_39922151的博客 321

ubuntu下编译内核问题汇总

1、更新源出现某文件被锁,资源无法使用时,使用命令sudo rm /var/lib/apt/lists 即可。(出现这个情况是因为有另外一个程序正在运行,导致资源被锁不可用,而导致被锁的原因可能是上一次安装时未正常完成,导致出现此情况) 2、安装build-essential出现无法执行,可能是你在更新源的时候,相关东西没有下载成功(我的情况是这样),解决办法是,在软件中心编辑里更新软件源,改服

全世界的屋顶 734

grub rescue解决方法

grub rescue解决办法在Ubuntu+Windows双系统情况下,出现grub rescue,可用命令很少。可通过以下步骤修复引导: 1. 通过ls命令查看有哪些盘 会得到 hd0 (hd0,msdos7) (hd0,msdos8) (hd0,msdos9)等 2. 通过ls (hd0,msdos7)/ 这样的命令,逐一试。看看grub文件夹在哪个盘中(由于

u010565454的博客 3126

windows重装后linux引导程序修复

       今 晚搞了很久时间才把俩个系统的引导程序搞定,现在把经验share,希望大家遇到此类的问题,我的经验能有所帮助。      进入特权模式修改引导程序(grub)的根分区,注意你重装完windows后 windows的根分区可能被修改,所以   先确定两个系统的根分区是多少,然后修改root (hd0,x),x是你的两个系统的分别的根分区。     开机后选择ubuntu,然后按键,修

cheshen的专栏 619

Ubuntu 安装问题

IBM x30 很老的机器了.. Ubuntu 10.04 问题一:tty 狂闪 解决方法: 1.修改 /etc/grub.d/00_header,加入set gfxpayload=keep 位置是:   if loadfont `make_system_path_relative_to_its_root ${GRUB_FONT_PATH}` ; then    set g...

weixin_30781107的博客 159

win7 上安装 ubuntu 后,无法进入 win7 系统的解决方法

系统环境:  Ubuntu 12.04 LTS , Windows 7 64位 旗舰版 问题梗概:  双系统问题:安装 Ubuntu后,win7系统无法进入。 问题描述: 在 grub 界面能够看到 WIN7 的启动选项,点击后黑屏闪了几下,又回到 grub 界面,无法进入 window 系统。同时 ubuntu系统可以正常使用。 出现原因: 安装时最后一

maclaurin12138的专栏 1337

Ubuntu 12.04 和 Windows 7 双启动

Dual-boot的方式很多,有:1. 用Ubuntu GRUB引导Ubuntu &amp; Windows2. 用Win7来引导Ubuntu &amp; Windows本文采用的是Ubuntu GRUB引导Ubuntu &amp; Windows。 环境:Ubuntu 12.04 Desktop 64 bitWindows 7 64 bitLenovo V470Harddriver mode:...

Aaron博客 191

linux下恢复win10启动,重装win10后原来的ubuntu系统启动项丢失恢复方式

windows系统在重装的时候总是把MBR重写了,重装windows后无法找到ubuntu的引导。然后插上你制作好的U盘,重启电脑,当然你得先设置好你得电脑首先是从你得U盘启动,如何设置,请按自己电脑的型号自己百度。进入U盘的ubnutu系统后 恢复引导其实也很简单,找个ubuntu的安装盘,从安装盘启动,试用ubuntu,打开终端。1.运行命令:sudo fdisk -l(这里不是数字1,是字...

weixin_33517544的博客 575

操作系统实战01——运行一个最简单的操作系统HelloOS

操作系统是所有软件的基础,所有上层软件都要依赖于操作系统提供的各种机制,才能运行 操作系统也是一个应用,但工业级的操作系统有着上千万行的代码,其难度不亚于研制一颗原子弹 这里我们通过实现一个简单的HelloOS,让你练练手,直观的感受一下 目录 一、HelloOS安装运行 二、HelloOS构成 三、Grub原理 一、HelloOS安装运行 先把程序跑起来了,我们再细究原理 代码:HelloOS为极客时间《操作系统实战45讲》的例子,很不错的专栏,下载位置:点击我 环境:我是在VMware

qq_44969643的博客 3610

Win和ubuntu双系统重装win后如何找回ubuntu

前段时间弄了个win10和ubuntu的双系统.一时手贱,弄了个win10 预览版-14316。好吧,我承认我为了那传说中的命令行直接运行bash。体验过后才发现:现实很骨感,稳定性渣的一逼。各种bug。于是,再次滚回win8.1.重装win之后,原先的ubuntu 进不去时因为grub引导丢失了。因此,只需要重建grub引导就行。

linlew60的专栏 862
上一篇: ubuntu12.04编译内核流程
下一篇: ubuntu编译添加模块的方法
sunziguang
博客等级 码龄25年 10粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值