Grub配置、解释

先看一个grub设置:
  timeout 10

  default 2

  # --> Debian linux <--

  title Debian linux

  root (hd0,2)

  kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro

  initrd /boot/initrd-2.2.18.gz

  # --> Debian END <--

  # --> Windows 菜单选项 <--

  title Windows2000

  root (hd0,0)

  LILO

  A. 从主引导记录中移走LILO并重存原先的windows MBR

  1. c:> fdisk /mbr

  2. #/sbin/lilo -u /dev/hda

  3. #dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1

  4. #cat /boot/boot.0300 > /dev/hda

  注意:只有你原先安装windows 95后再安装Linux时,/boot/boot.0300才是你原先的wi

  ndows 95 MBR。

  B. 重存LILO到MBR

  1. 用安装软盘或光盘启动到boot:

  boot: vmlinuz root=/dev/hdXY (如: hda1 )

  启动完成后运行 #/sbin/lilo

  2. 用两张软盘启动后:

  #mount -t ext2 /dev/hda1 /mnt

  #ln -s /mnt/boot boot

  #ln -s /mnt/etc/lilo.conf /etc/lilo.conf

  #/mnt/sbin/lilo

  C. 拷贝LILO到软盘

  1. /sbin/lilo -b /dev/fd0

  2.用Redhat 安装盘引导到 boot:

  boot: vmlinuz root=/dev/hdXY (hdXY 为你的根分区)

  update /etc/lilo.conf

  root=/dev/fd0

  boot=/dev/fd0

  再运行:#/sbin/lilo -v

  D. 制作一张Redhat Linux 引导盘

  #mkbootdisk --device /dev/fd0 2.0.36-3

  E. 拷贝内核至软盘,让软盘单独引导Linux并挂上硬盘上的根文件系统。

  #fdformat /dev/fd0H1440

  #dd if=/boot/vmlinuz of=/dev/fd0

  #rdev /dev/fd0 /dev/hda1

  --

  chainloader +1

  # --> Winddows 结束 <--

  # --> RedHat linux 菜单选项 <--

  title RedHat linux

  root (hd0,8)

  chainloader +1 # 在硬盘主引导分区装了lilo,所以也用了chainloader。

  # --> RedHat linux 结束 <--

  # --> Mandrake linux 菜单选项 <--

  title Mandrake linux

  root (hd0,5)

  kernel /boot/vmlinuz-2.4.3-20mdk root=/dev/hda6 ro

  initrd /boot/initrd-2.4.3-20mdk.img

  # --> Mandrake linux 结束 <--

  #例子到此结束

  以符号井"#"开头的行表示被注释掉,没有任何意义。

  timeout表示默认等待的时间,这儿是10秒钟。超过10秒,用户还没有作出选择的话,系统将自动选择默认的操作系统。

  默认的操作系统就是由default控制的。default后加一个数字n,表明是第n+1个。需要注意的是,GRUB中,计数是从0开始的,第一个硬盘是hd0,第一个软驱是fd0,等等。所以,default 2 表示默认的操作系统在这儿是 Redhat linux。

  接下来,正如你所想象的,title表示的是“Debian linux”菜单项。root (hd0,2)表示第一个硬盘,第三个分区。这儿的root 于linux的root分区及其不同,此root非彼root也!

  在 Linux 中,当谈到 "root" 文件系统时,通常是指主 Linux 分区。但是,GRUB 有它自己的 root 分区定义。GRUB 的 root 分区是保存 Linux 内核的分区。这可能是您的正式 root 文件系统,也可能不是。我们讨论的是 GRUB,需要指定 GRUB 的 root 分区。进入 root 分区时,GRUB 将把这个分区安装成只读型,这样就可以从该分区中装入 Linux 内核。GRUB 的一个很“酷”的功能是它可以读取本机的 FAT、FFS、minix、ext2 和 ReiserFS 分区。

  到目前为止,您可能会感到一点疑惑,因为 GRUB 所使用的硬盘/分区命名约定与 Linux 使用的命名约定不同。在 Linux 中,第一个硬盘的第五个分区称作 "hda5"。而 GRUB 把这个分区称作 "(hd0,4)"。GRUB 对硬盘和分区的编号都是从 0 开始计算。另外,硬盘和分区都用逗号分隔,整个表达式用括号括起。现在,可以发现如果要引导 Linux 硬盘 hda5,应输入 "root (hd0,4)"。

  知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是kernel的工作。

  kernel /boot/vmlinuz-2.2.18 root=/dev/hda3 ro说明/boot/vmlinuz-2.2.18 就是要载入的内核。后面的都是传递给内核的参数。root=/dev/hda3就是linux的硬盘分区表示法,ro是以readonly的意思。

  initrd用来初始的linux image,并设置相应的参数。

  是不是感觉很简单啊!再来看一看windows的定义段吧。

  这里,我添加了一项来引导 Windows2000。要完成此操作,GRUB 使用了“链式装入器”(chainloader)。链式装入器从分区 (hd0,0) 的引导记录中装入 win2000 自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 -- 它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。

  我的RedHat linux在硬盘主引导分区装了lilo,所以也用了chainloader。

  GRUB的配置文件要简单就这么简单,如果你要更个性化一点,试一试把“color light-gray/blue ”加在default语句的下面,下一次启动GRUB时,看看有什么变化,再试一试“color light-blue/red",惊喜吗? 有趣吧!

  # GRUB的交互性 #

  事实上,如有必要,只要更新 menu.lst 文件即可,一切将保持正常。

  只有少数情况下,才需要将 GRUB 引导装入器重新安装到引导记录。首先,如果更改 GRUB root 分区的分区类型(例如,从 ext2 改成 ReiserFS),则需要重新安装。或者,如果更新 /boot/grub 中的 stage1 和 stage2 文件,由于它们来自更新版本的 GRUB,很有可能要重新安装引导装入器。其它情况下,可以不必理睬!

  GRUB的最大的特点就是交互性特别强。在开机时,按一下“c”,将进入GRUB 控制台。显示如下:

  GRUB version 0.5.96.1 (640K lower / 3072K upper memory)

  [ Minimal BASH-like line editing is supported. For the first word, TAB

  lists possible command completions. Anywhere else TAB lists the possible

  completions of a device/filename. ]

  grub>

  欢迎使用 GRUB 控制台。现在,再研究命令:

  我将通过GRUB 控制台绕过lilo来启动RedHat linux,

  grub> root (h

  现在,按一次 Tab 键。如果系统中有多个硬盘,GRUB 将显示可能完成的列表,从 "hd0" 开始。如果只有一个硬盘,GRUB 将插入 "hd0,"。如果有多个硬盘,继续进行,在 ("hd2") 中输入名称并在名称后紧跟着输入逗号,但不要按 Enter 键。部分完成的 root 命令看起来如下:

  grub> root (hd0,

  现在,继续操作,再按一次 Tab 键。GRUB 将显示特定硬盘上所有分区的列表,以及它们的文件系统类型。在我的系统中,按 Tab 键时得到以下列表:

  grub> root (hd0, (tab,按tab一下键)

  Possible partitions are:

  Partition num: 0, Filesystem type is fat, partition type 0x6

  Partition num: 2, Filesystem type is ext2fs, partition type 0x83

  Partition num: 4, Filesystem type unknown, partition type 0x7

  Partition num: 5, Filesystem type is ext2fs, partition type 0x83

  Partition num: 6, Filesystem type is fat, partition type 0xb

  Partition num: 7, Filesystem type is fat, partition type 0xb

  Partition num: 8, Filesystem type is ext2fs, partition type 0x83

  Partition num: 9, Filesystem type unknown, partition type 0x82

  如您所见,GRUB 的交互式硬盘和分区名称实现功能非常有条理。这些,只需要好好理解 GRUB 新奇的硬盘和分区命名语法,然后就可以继续操作了

  grub> root (hd0,8)

  现在已安装了 root 文件系统,到装入内核的时候了

  grub> kernel /boot/vmlinuz-2.4.2 root=/dev/hda5 ro

  [Linux-bzImage, setup=0x1200, size=0xe1a30]

  您已经安装了 root 文件系统并装入了内核。现在,可以引导了。只要输入 "boot",Linux 引导过程就将开始。是不是很cool啊,GRUB的menu.lst更像一个linux下的脚本程序。

  #####################

  # GRUB启动盘 #

  #####################

  要制作引导盘,需执行一些简单的步骤。首先,在新的软盘上创建 ext2 文件系统。然后,将其安装,并将一些 GRUB 文件复制到该文件系统,最后运行 "grub" 程序,它将负责设置软盘的引导扇区。准备好了吗?

  将一张空盘插入 1.44MB 软驱,输入:

  # mke2fs /dev/fd0

  创建了 ext2 文件系统后,需要安装该文件系统:

  # mount /dev/fd0 /mnt/floppy

  现在,需要创建一些目录,并将一些关键文件(原先安装 GRUB 时已安装了这些文件)复制到软盘:

  # mkdir /mnt/floppy/boot

  # mkdir /mnt/floppy/boot/grub

  # cp /boot/grub/stage1 /mnt/floppy/boot/grub

  # cp /boot/grub/stage2 /mnt/floppy/boot/grub

  再有一个步骤,就能得到可用的引导盘。

  在linux bash中,从 root 用户运行“grub”,该程序非常有趣并值得注意,因为它实际上是 GRUB 引导装入器的半功能性版本。尽管 Linux 已经启动并正在运行,您仍可以运行 GRUB 并执行某些任务,而且其界面与使用 GRUB 引导盘或将 GRUB 安装到硬盘 MBR 时看到的界面(即GRUB控制台)完全相同。

  在 grub> 提示符处,输入:

  grub> root (fd0)

  grub> setup (fd0)

  grub> quit

  现在,引导盘完成了。

  如果要把GRUB装到硬盘上,也很容易。这个过程几乎与引导盘安装过程一样。首先,需要决定哪个硬盘分区将成为 root GRUB 分区。在这个分区上,创建 /boot/grub 目录,并将 stage1 和 stage2 文件复制到该目录中,可以通过重新引导系统并使用引导盘,或者使用驻留版本的 GRUB 来执行后一步操作。在这两种情况下,启动 GRUB,并用 root 命令指定 root 分区。例如,如果将 stage1 和 stage2 文件复制到 hda5 的 /boot/grub 目录中,应输入 "root (hd0,4)"。接着,决定在哪里安装 GRUB -- 在硬盘的 MBR,或者如果与 GRUB 一起使用另一个“主”引导装入器,则安装在特定分区的引导记录中。如果安装到 MBR,则可以指定整个磁盘而不必指定分区,如下(对于 hda):

  grub> setup (hd0)

  如果要将 GRUB 安装到 /dev/hda5 的引导记录中,应输入:

  grub> setup (hd0,4)

  现在,已安装 GRUB。引导系统时,应该立即以 GRUB 的控制台方式结束(如果安装到 MBR)。现在,应创建引导菜单,这样就不必在每次引导系统时都输入那些命令
<think> 首先,用户的问题是:“我想查找Linux系统中GRUB配置的相关信息 请问Linux系统下GRUB配置方法和相关信息”。这基于提供的引用内容。 从系统级指令,我需要: - 所有行内数学表达式使用 $...$ 格式(但这里没有数学内容)。 - 独立公式使用 $$...$$ 并单独成段(可能不适用)。 - LaTeX语法正确(同样,可能不适用)。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,如 [^1]。 - 在用户可见层,回答要结构清晰,帮助用户逐步解决问题,确保真实可靠。 引用内容: - [^1]:讨论Linux系统引导过程和GRUB配置,包括配置文件位置、编辑、生成和示例。 - [^2]:关于GRUB故障修复方法。 - [^3]:GRUB命令介绍和使用案例,包括引导操作系统、内核参数传递等。 - [^4]:grub.cfg详解和实例操作,包括U盘安装系统的例子。 - [^5]:GRUB修复方法的例子。 用户的问题焦点是GRUB配置方法和相关信息,所以我应该基于这些引用构建回答。 回答结构: 1. **介绍GRUB**:简要解释GRUB是什么及其重要性。 2. **GRUB配置方法**: - 配置文件位置:如 /boot/grub/grub.cfg - 如何编辑配置文件(通过 /etc/default/grub 和 /etc/grub.d/ 目录) - 生成GRUB配置的命令(如 update-grub) - 添加自定义引导项的例子 3. **相关信息**: - GRUB的基本功能(引导多个操作系统等) - 故障排除方法(如进入GRUB命令行手动引导) - 修复GRUB的方法 4. **确保真实可靠**:基于引用内容,不要添加猜测。 5. **结构清晰**:使用标题或分点来组织内容(但避免Markdown列表,用自然语言)。 6. **引用标识**:在相关段落末尾添加 [^1] 等。 最后,生成相关问题: - 在回答结尾添加 "§§相关问题§§" 部分,列出2-3个相关问题。 完整回答框架: - 开头:直接回答用户问题。 - 主体:分步骤或分部分解释GRUB配置。 - 结尾:总结或引导到相关问题。 生成相关问题: - 基于引用,问题如: 1. GRUB故障如何修复? 2. GRUB命令行如何使用? 3. GRUB配置文件的结构是什么? - 确保问题相关且基于内容。 现在,构建回答: - 用中文。 - 引用时添加标识:例如,在提到配置文件位置后添加 [^1],在修复方法后添加 [^2] 等。 </think>### Linux系统中GRUB配置方法和相关信息 GRUB(GRand Unified Bootloader)是Linux系统中常用的引导加载程序,负责在系统启动时加载操作系统内核。其配置涉及文件编辑、命令执行和故障排除。下面我将基于可靠引用,逐步解释GRUB配置方法和相关信息。整个过程以Ubuntu或CentOS等常见Linux发行版为例,确保真实可靠。 #### 1. **GRUB配置文件的位置与结构** GRUB的主要配置文件是 `/boot/grub/grub.cfg`,但此文件通常不直接编辑,而是通过修改模板文件生成: - **编辑模板文件**:实际配置位于 `/etc/default/grub`(用于设置全局参数如默认启动项和超时时间)和 `/etc/grub.d/` 目录(包含脚本用于生成引导项)。例如,您可以通过文本编辑器(如 `sudo nano /etc/default/grub`)修改参数,如 `GRUB_DEFAULT=0` 设置默认启动项[^1]。 - **配置文件示例**:`grub.cfg` 文件定义了引导菜单项,每个 `menuentry` 块对应一个操作系统。例如,添加自定义引导项可能如下(基于U盘安装系统的实例): ```conf menuentry 'Custom OS Install' { set root=(hd0,1) linux /vmlinuz root=/dev/sda1 initrd /initrd.img } ``` 这展示了如何指定内核和初始RAM磁盘[^4]。 - **注意事项**:直接修改 `grub.cfg` 可能导致系统更新时覆盖,因此推荐通过模板文件配置[^1]。 #### 2. **GRUB配置的步骤与方法** 配置GRUB通常分为编辑、生成和测试三步: - **步骤1: 编辑配置文件** 使用命令 `sudo nano /etc/default/grub` 修改参数,例如: - `GRUB_TIMEOUT=5`:设置启动菜单显示5秒。 - `GRUB_CMDLINE_LINUX="quiet splash"`:添加内核启动参数。 完成后保存文件[^1]。 - **步骤2: 生成GRUB配置** 运行命令 `sudo update-grub`(在Debian/Ubuntu系统)或 `sudo grub2-mkconfig -o /boot/grub/grub.cfg`(在RHEL/CentOS系统)。此命令会读取 `/etc/default/grub` 和 `/etc/grub.d/` 中的脚本,生成新的 `grub.cfg` 文件。例如,添加新引导项后,运行此命令使更改生效[^1][^4]。 - **步骤3: 测试配置** 重启系统(`sudo reboot`),观察GRUB菜单是否显示新项。如果问题出现,可进入GRUB命令行调试(见故障排除部分)[^3]。 #### 3. **GRUB的相关信息与功能** GRUB不仅是引导工具,还支持多系统管理和故障恢复: - **基本功能**: - 引导多个操作系统(如LinuxWindows),通过菜单项选择启动项。 - 传递内核参数,例如在启动时添加 `single` 进入单用户模式进行修复。 - 提供命令行接口(GRUB rescue>),用于手动引导或调试[^3]。 - **故障排除方法**: - **进入GRUB命令行**:系统启动时按 `Shift` 或 `Esc` 键进入GRUB菜单,选择 "Advanced options" 或直接输入 `c` 进入命令行。 - **手动引导系统**:在命令行中,使用 `ls` 列出磁盘分区,然后通过 `set root=(hd0,msdos1)` 设置根分区,`linux /boot/vmlinuz root=/dev/sda1` 加载内核,`initrd /boot/initrd.img` 加载初始RAM磁盘,最后 `boot` 启动系统[^2][^5]。 - **修复GRUB**:如果GRUB损坏(如启动时卡在 "grub>" 提示符),可使用Live USB启动系统,挂载根分区后运行 `sudo grub-install /dev/sda` 重新安装GRUB,然后执行 `sudo update-grub` 重建配置[^2][^5]。 - **实际应用**:GRUB常用于多系统安装(如WindowsLinux双系统)、系统恢复(通过恢复模式修复内核问题)和定制启动项(如添加自定义内核参数)[^3][^4]。 #### 4. **注意事项** - **安全提示**:修改GRUB配置需root权限,错误操作可能导致系统无法启动。建议备份文件(如 `sudo cp /etc/default/grub ~/grub_backup`)再操作。 - **兼容性**:配置方法因发行版而异(如Ubuntu使用 `update-grub`,CentOS使用 `grub2-mkconfig`),参考官方文档或引用内容确保正确性[^1][^4]。 - **性能影响**:合理配置GRUB可加速启动过程,例如减少 `GRUB_TIMEOUT` 值。 通过以上步骤,您可以安全地管理GRUB配置。如果遇到问题,GRUB的命令行工具是强大的故障排除手段[^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值