深度技术系统-Windows11专业版_W10纯净版_win7旗舰版下载

当前位置:深度技术官网 > 系统教程 > IT相关资讯 >

深度技术教你menu.lst的写法

发布时间:2017-12-18源自:深度系统之家作者:深度技术阅读( )

对于GRUB来说,如果没有配置menu.lst,无论是Linux版本的GRUB,还是WINGRUB,都会有命令行可用,通过命令行是一样能把操作系统引导起来的;有些弟兄总以为menu.lst 配置错了,或者在机器启动后出现grub>命令行模式就要重新安装系统,其实根本没有这个必要;只要学会GRUB的命令行的用法,根本没有必要重装系统; 


  menu.lst 位于/boot/grub目录中,也就是/boot/grub/menu.lst 文件;您可以用vi或您喜欢的编辑器来编辑他;如果您不会用vi,还是去学习一下吧;简单的用法怎么也得会,对不对?毕竟这个文档不是讲vi的用法的; 

  有的弟兄会说,我没有menu.lst怎么办?那就创建一个;用下面的命令; 

  [root@localhost ~]# touch /boot/grub/menu.lst 

  然后我们再做一个/boot/grub/menu.lst 的链接 /boot/grub/grub.conf 

  [root@localhost ~]# cd /boot/grub 

  [root@localhost ~]# ln -s menu.lst grub.conf 

  现在我们来写GRUB的menu.lst了,因为/boot/grub/grub.conf是 /boot/grub/menu.lst的链接文件,改哪个都行。链接文件相当于Windows的快捷方式,这样可能能更好的理解; 

  1、menu.lst的写法之一; 

  首先我们看一下我的Fedora 4.0 中的/boot/grub/menu.lst 的内容; 

  default=0 

  timeout=5 

  #splashimage=(hd0,6)/boot/grub/splash.xpm.gz 

  hiddenmenu 

  title Fedora Core (2.6.11-1.1369_FC4) 

  root (hd0,6) 

  kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ 

  initrd /boot/initrd-2.6.11-1.1369_FC4.img 

  title WinXp 

  rootnoverify (hd0,0) 

  chainloader +1 

  注解: 

  default=0 

  default=0 是默认启动哪个系统,从0开始;每个操作系统的启动的定义都从title开始的,第一个title 在GRUB的启动菜单上显示为0,第二个启动为1,以此类推; 

  timeout=5 

  注:表示在开机后,GRUB画面出现几秒后开始以默认启动;如果在启动时,移动上下键,则解除这一规则; 

  #splashimage=(hd0,6)/boot/grub/splash.xpm.gz 注:GRUB的背景画面,这个是可选项;我不喜欢GRUB的背景画面,所以加#号注掉,也可以删除; 

  hiddenmenu 

  注解: 隐藏GRUB的启动菜单,这项也是可选的,也可以用#号注掉; 

  一般的情况下对Linux操作系统的启动,一般要包括四行;title 行;root行;kernel 行;initrd 行; 

  1)在menu.lst中 ,通过 root (hd[0-n],y)来指定/boot 所在的分区; 

  title XXXXX 注:title 后面加一个空格,title 是小写的,后面可以自己定义;比如FC4,自己定义一个名字就行; 

  root (hd[0-n],y) ,在本例中,我们看到的是root (hd0,6) ,root (hd[0-n],y)表示的是/boot所在的分区;有时我们安装Linux的时候,大多是不设置/boot的,这时/boot和/所在的同一个分区;这个root (hd[0-n],y)很重要,因为/boot目录中虽然有grub目录,最为重要的是还有kernel 和initrd文件,这是Linux能启动起来最为重要东西,UGG boots; 

  有的弟兄会问,root (hd[0-n],y)是怎么来的? 

  请参考: 《在Linux系统中存储设备的两种表示方法》 

  2)在menu.lst中,kernel 命令行的写法; 

  kernel 一行,是通指定内核及Linux的/分区所在位置; 

  比如例子中是; 

  kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ 

  在这里以kernel 起始,指定Linux的内核的文件所处的绝对路径;因为内核是处在/boot目录中的, 如果/boot是独立的一个分区,则需要把boot省略;如果/boot是独立的分区,这行要写成: 

  kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ 

  因为/boot所处的分区已经在title 下一行root (hd[0-n],y)中指定了,所以就无需要再指明内核处在哪个分区了;另外Linux系统的硬盘分区的挂载配置文件在/etc/fstab ,原理是通过 mount /dev/hd[a-z]X /boot 来进行的;您可以对照着来理解; 

  ro 表示只读; root=LABEL=/ 来表示Linux的根所处的分区。LABEL=/ 这是硬盘分区格式化为相应文件系统后所加的标签;如果您不了解什么是标签,也可以直接以/dev/hd[a-z]X 或者/dev/sd[a-z]X来表示;就看您的Linux是根分区是在哪个分区了。比如我的是在/dev/hda7 ,那这里就可以写成root=/dev/hda7; 

  如果查看系统运行所挂载的分区,请用 df -lh 来查看,就能明白是不是/boot是独立的分区,或者查看/etc/fstab也能知道; 

  [root@localhost ~]# df -lh 

  Filesystem 容量 已用 可用 已用% 挂载点 

  /dev/hda7 11G 9.2G 1.2G 90% / 

  /dev/shm 236M 0 236M 0% /dev/shm 

  在这个例子中,我们可以发现 /boot并没有出现只有/dev/hda7,这表示/boot并不是独立的一个分区;所有的东西都包含在/中;于是我们在/boot中查看内核版本; 

  [root@localhost ~]# ls /boot/vmlinuz* 

  /boot/vmlinuz-2.6.11-1.1369_FC4 注:看到内核vmlinuz所处的目录; 

  于是我们就可以这样kernel 这行了; 

  kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7 

  3)initrd 命令行的写法; 

  如果是/boot独立一个分区,initrd 一行要把/boot中省略;如果/boot不是处于一个分区,而是和Linux的/分区处于同一分区,不应该省略; 

  比如我们在2)中用的例子;现在拿到这里,我们应该首先查看 /boot中的initrd的文件名到底是什么; 

  [root@localhost ~]# ls /boot/initrd* 

  /boot/initrd-2.6.11-1.1369_FC4.img 

  如果是通过df -lh 得知或查看/etc/fstab 也行, 得知/boot是独立的分区;这时initrd 应该写成; 

  initrd /initrd-2.6.11-1.1369_FC4.img 

  如果是 /boot不是独处一个分区,而是在/同一处一个分区, 则要写成; 

  initrd /boot/initrd-2.6.11-1.1369_FC4.img 

  4)menu.lst第一种写法的总结和实践; 

  在这里,我们只说重要的,不重要的就一带而过了; 

  1〕用fdisk -l ;df -lh ;more /etc/fstab来确认分区情况; 

  我们过fdisk -l ;df -lh ; more /etc/fstab 来确认/boot所在的分区,及Linux的根分区所在位置; 

  比如我们确认/boot和Linux的/分区同处一个分区; 

  [root@localhost ~]# df -lh 

  Filesystem 容量 已用 可用 已用% 挂载点 

  /dev/hda7 11G 9.2G 1.2G 90% / 

  /dev/shm 236M 0 236M 0% /dev/shm 

  然后我们/etc/fstab 中,查看/分所在的分区或分区标签是什么; 

  [root@localhost ~]# more /etc/fstab 

  # This file is edited by fstab-sync - see 'man fstab-sync' for details 

  LABEL=/ / ext3 defaults 1 1 

  /dev/devpts /dev/pts devpts gid=5,mode=620 0 0 

  /dev/shm /dev/shm tmpfs defaults 0 0 

  /dev/proc /proc proc defaults 0 0 

  /dev/sys /sys sysfs defaults 0 0 

  LABEL=SWAP-hda1 swap swap defaults 0 0 

  /dev/hdc /media/cdrecorder auto pamconsole,exec,noauto,managed 0 0 

  经过上面的df -lh 和more /etc/fstab 的对照中得知,/boot并是独处一个分区,而是和/在同一个分区;这个Linux系统安装在/dev/hda7上,文件系统(此分区)的标签为 LABEL=/ ,/boot也是处于/dev/hda7 ,/dev/hda7也可以说是 root (hd0,6); 

  2]查看内核vmlinuz的和initrd文件名的全称; 

  [root@localhost ~]# ls -lh /boot/vmlinuz* 

  -rw-r--r-- 1 root root 1.6M 2005-06-03 /boot/vmlinuz-2.6.11-1.1369_FC4 

  [root@localhost ~]# ls -lh /boot/initrd* 

  -rw-r--r-- 1 root root 1.1M 11月 26 22:30 /boot/initrd-2.6.11-1.1369_FC4.img 

  3]开始写menu.lst ; 

  我们根据上面所提到的,可以写成如下的样子; 

  default=0 

  timeout=5 

  title FC4 

  root (hd0,6) 

  kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ 

  initrd /boot/initrd-2.6.11-1.1369_FC4.img 

  也可以写成; 

  default=0 

  timeout=5 

  title FC4 

  root (hd0,6) 

  kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7 

  initrd /boot/initrd-2.6.11-1.1369_FC4.img 

  注解: 上面两个不同之处在于一指定Linux的根/所在的分区时,一个是用了文件系统的标签,另一个没有用标签; 

  2、menu.lst的写法之二,精简型; 

  本写法主要是把指定/boot所位于的所分区直接写入kernel 指令行;这样就省略了通过root (hd[0-n],y)来指定/boot所位于的分区; 

  1)第一种情况:/boot和Linux的/根分区在同一个分区; 

  有前面的那么多的讲解,menu.lst写法之二就好理解多了;也得分两种情况,咱们先把/boot并不是独处一个分区,而是和Linux的根分区处于同一个分区;我们以 4)menu.lst第一种方法的写法总结 的实例为例子; 

  default=0 

  timeout=5 

  title FC4x 

  kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7 

  initrd (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img 

  注解: 

  title FC4x 注:自己为这个Linux 起个简单的名,以title开头,然后一个空格,后面就自己发挥吧,FC4或FC4x都行;

  kernel 空格 (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 空格 ro 空格 root=/dev/hda7 

  kernel 这行这样理解 kernel (boot所在的分区)/boot/内核文件件全称 ro root=Linux根所位于的分区或标签 

  initrd 空格 (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img 

  initrd 这行可以这样理解 initrd (/boot所在的分区)/boot/内核文件名全称 

  2)第二种情况:/boot独立一个分区,和Linux的根分区不是同一个分区; 

  比如我们查看到df -lh 得到的是 

  [root@localhost ~]# df -lh 

  Filesystem 容量 已用 可用 已用% 挂载点 

  /dev/hda6 200M 120M 80M 60% /boot 

  /dev/hda7 11G 9.2G 1.2G 90% / 

  我们再进一行查看/etc/fstab 得知; LABEL=/ / ext3 defaults 1 1 

  LABEL=/boot /boot ext3 defaults 1 2 

  所以我们应该写成如下的; 

  title FC4x 

  kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ 

  initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img 

  因为Linux的根分区是/dev/hda7,通过/etc/fstab和df -h的内容得知标签为 LABEL=/的分区就是/dev/hda7 ,所以有; 

  title FC4x 

  kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7 

  initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img 
 

深度官网推荐装机神器:大神U盘工具http://www.udeepin.com/upan/43.html

    欢迎分享转载→ 深度技术教你menu.lst的写法

    支付宝打赏 微信打赏

    如果对你有帮助,欢迎点击上方按钮打赏,请自愿为本站打赏或捐助。

    
    

    本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件! 如侵犯到您的权益,请及时通知我们,我们会及时处理。 Power by DedeCms

    声明: 本站文章均来自互联网,不代表本站观点 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告