grub命令行启动linux下一行在么转写

这两天一口气看完了《古董局中局》,一共3本,也算是小小的实践了下新年愿望要多读书,然后又强烈推荐给同事,昨天晚上那个同事说看了下,很不错,然后根据“君子棋”的场景把一个工作上的问题解决了,然后我今天也仔细思考了下,发现也可以总结一下:
1、看代码,首先要明白这段代码的意义。《古董局中局》中的“君子棋”中,之所以沈一诚能功成身退,最重要的就是分析了吴阎王的心理,利益所驱。当然我们分析代码不是分析人心,也没那么复杂,但是每段代码和函数必定有他的作用,你搞清楚了作用再回头去解析代码,就相当于是清楚了某个人的动机,再去分析他的行为(PS:所以我最近也在看推理小说,是不是感觉有点破案的感觉)。
2、典故,有的时候就是没什么道理。比如把内核加载到一个地址0x90000,比如串口的端口号0x2f8。这些都是在不断的发展过程中,前人遗留下来的规则,然后约定俗成,你又不能去改,久而久之就遗留了下来,有些人不知道的,就像找到了一件古董,不懂这个是为什么。比如唐代是以肥为美,然后再看看武媚娘的现代剧,你估计就要抓狂抽风了,所以有的时候看ReadMe,然后推测以前的用法,真的是和现代的考古一样有成就感。
下面言归正传,昨天在调试grub的ramdisk,发现有问题,于是仔细google了下grub的命令行,结合帖子,好好理解了一番,当然也还有一些疑问。说起ramdisk,刚入职的时候,就有人分配任务让去网络安装linux。于是就需要ramdisk,于是上网找资料,结果找了一大堆资料,总算搞定了,但是呢,很多东西不明白,比如一些命令initrd,比如initrd用到的img文件,现在总算是清楚了,迟到的爱。
首先搞清楚ramdisk的作用,也就是为什么要去做ramdisk。
因为内核不能包含所有驱动,因此内核只会包含一些基本的驱动,然后内核启动后,在去加载其他一些驱动和模块。所以linux启动分成2部分,一部分为内核,一部分为系统相关模块。
1、网络无盘引导,通过网络传递内核文件到内存,然后引导操作系统,不需要硬盘
2、提高文件读写效率,由于文件系统在内核直接操作,比操作硬盘,或者U盘等存储介质要快的多。
以前内核是不支持ramdisk,是在linux2.6以后的版本才开始支持内存文件系统,下面把整个流程分析如下:(改成图片)
grub的启动命令行如下:
set root=(hd0,1)
linux /vmlinuz-2.6.32.4&root=/dev/ram console=ttyS0, rootwait
initrd /initrd.img-2.6.32.4
内核 :vmlinuz-2.6.32.4
内核以外的支持:initrd.img-2.6.32.4
传递给内核的参数:root=/dev/ram console=ttyS0, rootwait
linux命令实际上进行了2个操作,一个操作是把内核导入内存,找到内核的入口,另外一个作用就是,传递启动参数到内核。
initrd命令把initrd.img导入到内存,并且告诉内核,这个文件在内存哪个位置,方便内核去找。实际上传统方式是放在一个固定地址段,而uefi方式则是申请的一段内存(具体在哪里就是动态分配的了)
其中在内核linux-3.2.1\Documentation\x86中boot.txt介绍了整个内核和initrd放在内存中位置的演变,就像刚才我说到的考古
另外要使能ramdisk,需要在内核选项里面使能RAM disk support和initial RAM disk(initrd) support 选项
而且系统默认的ramdisk的大小是4M,一共会创建16个,启动成功后,可以在/dev/目录下看到/dev/ram0 到/dev/ram15一共16个设备,这里有个疑问就是ramdisk最大能支持多大的initrd。因为最后root是会mout到/dev/ram上,如果太大,是不是会报错?而且编译选项里可以指定ramdisk_size这个大小是所有16个设备加起来的大小,还是指定的某一个的大小呢?
grub指定好参数后,然后跳转到内核,grub的使命就到此结束了,内核先加载自己,之后就会去解析initrd文件,解析后会执行initrd中的,init进程,只有会加载驱动模块,然后挂载root到/dev/ram上,整个启动过程就完成了。
补充一个小知识:
rootwait,同事突然告诉我只有U盘需要加rootwait,而硬盘不用加,后来看了ramdisk解释如下:是因为U盘的驱动加载到USB硬件能正常使用,需要几秒钟的时间,因此如果驱动加载好,就直接去读U盘会读取不到,导致出错,所以要加上rootwait,等待一下。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:397次
排名:千里之外您的浏览器已经禁用了脚本,这会严重影响您正常使用本站的功能,请开启!
当前位置: &
grub命令是多重引导程序grub的命令行shell工具。
grub(选项)
--:打开批处理模式;
--boot-drive=&驱动器&:指定stage2的引导驱动器;
--config-&配置文件&:指定stage2的配置文件;
--device-map=&文件&:指定设备的映射文件;
--:显示帮助信息;
---partition=&分区&:指定stage2安装分区;
--no-config-file:不使用配置文件;
--no-pager:不使用内部分页器;
--preset-menu:使用预设菜单;
--probe-second-floppy:检测第二个软盘驱动器;
---only:只读模式。
利用grub命令来启动损坏的Linux系统,可能你的电脑因为某些原因损坏不能自动启动了。当然原因很多,可能的现象也很多。
这里说一下这种情况下的处理方法,即:屏幕上提示grub&,但你的硬盘上数据没有丢失,各分区都是好的。这种情况是你的grub信息损坏了,但比较严重的是系统启动不了。
当然,在正常启动情况下,屏幕上出现grub的启动项选择菜单时按c键也是可以进入grub&状态的。这时候我们需要用grub的命令来手工启动系统。
只需要用到四个命令boot、kernel、initrd、boot。
但grub本身命令很多,比如查看文件内容的 ,你输入help会得到。
首先,输入& root (hd & ,然后按两次 TAB 键; /* 这会列出你电脑上可能的磁盘设备,硬盘为 hd0/hd1 或 sd0/sd1 等 */
然后,选择你的安装 Linux 系统的硬盘,比如 hd0 ,输入 & root (hd0, & 再按两次 TAB 键; /* 这会列出你的第一块硬盘上的分区情况,你会知道哪个是 swap 交换分区, 0x82 ,哪个是 Linux 分区 0x83 */
选择你认为可能的 /boot 目录所在的分区, 输入root (hd0, 1)回车;
接着,输入cat /boot/vm, 按两次 TAB 键,如果出现一些 vm 开头的文件,比如 vmlinuz-2.6.15-26-386 说明这里是 /boot 所在的分区。
删除上一次的输入,再输入cat /boot/initrd,按两次 TAB 键,如果出现一些 initrd 开头的文件,比如 initrd.img-2.6.15-26-386 说明这个 /boot 所在的分区有 initrd ,即 ramdisk 镜像;
删除上一次的输入,再输入cat /sbin/,按两次 TAB 键,如果出现一些 init 开头的文件,比如/sbin/init说明这个分区是/所在的分区;
如果没有出现/sbin/init文件,说明(hd0,1)分区仅仅是/boot分区而不是/分区。重新输入root (hd0,N)命令,这里 N 是某个 Linux 分区,然后再试cat /sbin/init, 直到屏幕上出现/sbin/init,说明你找到了/分区,严格来说,应该是/sbin目录所在的分区;
依次输入命令:
root (hd0,1)
/* 假设 /dev/hda2 是你的 /boot 所在的分区 */
kernel /boot/vmlinuz-2.6.15-26-386 ro dev=/dev/hda3
/* 假设 /dev/hda3 是你的 / 所在的分区 */
initrd /boot/initrd.img-2.6.15-26-386
即可启动系统。
这里的关键问题是如何确定系统的几个分区:/boot / /sbin
最近更新的命令
在Linux命令大全(man.linuxde.net)可以查询您所需要的Linux命令教程和相关实例。如果您觉得本站内容对您有所帮助,请推荐给更多需要帮助的人。GRUB命令行引导启动Linux(二)
开机的时候,如果直接出现grub&提示符,说明没有menu.lst文件;如果出现GRUB菜单,按组合键ctrl+c可以进入命令行模式,出现提示符。
关于help没什么好说的,help列出所有命令,help command_name给出某一具体命令的帮助内容。
cat指令查看文件内容。比如:cat(hd[0-n],y)/etc/fstab可以显示/etc/fstab的内容,帮助我们查看boot分区以及根分区的位置。
这里有一个提示,如果fstab中的内容显示linux的根分区和boot分区位于同一个分区,i.e.boot分区不是一个独立分区,就说明linux应当是安装在根分区中的。比如:
LABEL=/&&&&&&&&&&&&&&&&
/&&&&&&&&&&&&&&&&&&&&&&
defaults&&&&&&&
/dev/devpts&&&&&&&&&&&&
/dev/pts&&&&&&&&&&&&&&&
devpts& gid=5,mode=620& 0 0
/dev/shm&&&&&&&&&&&&&&&
/dev/shm&&&&&&&&&&&&&&&
defaults&&&&&&&
/dev/proc&&&&&&&&&&&&&&
/proc&&&&&&&&&&&&&&&&&&
defaults&&&&&&&
/dev/sys&&&&&&&&&&&&&&&
/sys&&&&&&&&&&&&&&&&&&&
defaults&&&&&&&
LABEL=SWAP-hda1&&&&&&&&
swap&&&&&&&&&&&&&&&&&&&
defaults&&&&&&&
/dev/hdc&&&&&&&&&&&&&&&
/media/cdrecorder&&&&&&
pamconsole,exec,noauto,
managed 0 0
如果显示如下:LABEL=/&&&&&&&&&&&&&&&&
/&&&&&&&&&&&&&&&&&&&&&&
defaults&&&&&&&
LABEL=/boot&&&&&&&&&&&&
/boot&&&&&&&&&&&&&&&&&&
defaults&&&&&&&
说明根和boot是位于不同分区的。
root命令确定boot所在分区,假如现在确认boot在hd0,6,就可以输入:
grub&root (hd0,6)
接下来就是使用kernel指令,制定linux内核及所在分区,语法如下:1,
boot和根位于同一分区: kernel
/boot/vmlinuz-按tab补齐,应该可以看到内核全称
&&&&&&&&&&&&&&&&&&&&&&&
root=/dev/hd[a-z]X
2, boot有独立分区: kernel
/vmlinuz-按tab补齐,应该可以看到内核全称 ro root=/dev/hd[a-z]X
侬晓得区别了伐?kernel后面的路径一个有/boot前缀一个没有啊!
看到某不同的root写法是:root=LABEL=/ [Linux-bzImage, setup=0x1e00,
size=0x18e473],这个写法表示linux根所在分区的文件系统的标签。若吾等粗鄙浅陋之辈且用硬盘分区指定便是。
假如要取消掉之前使用root命令指定boot分区的步骤,则可直接在kernel中指定boot分区如下:
grub& kernel
(hd[0-n],y)/boot/vmlinuz-xxxx ro root=/dev/hd[a-z]X
grub& kernel
(hd[0-n],y)/vmlinuz-xxxx ro root=/dev/hd[a-z]X
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。2349人阅读
background
设置图形模式下的背景色。
输出文件的块清单标记。
引导已加载的操作系统或扇区链式加载器。
通过BOOTP初试化网络设备。
显示指定文件的内容。
chainloader
加载扇区链式加载器。
比较两个文件, 并且报告两者之间的不同的信息。
改变菜单的颜色。
configfile
将指定文件作为配置文件予以加载。
打开/关闭除错模式。
把 NUM 项菜单设为缺省值。
声明BIOS驱动器对应的实际物理设备。
通过DHCP初试化网络设备。
displayapm
显示 APM BIOS 的相关信息。
displaymem
显示 GRUB 所判断到的当前系统的内存分布,包括所有物理内存区域。
显示诸多文件的内容。
如果设备是个驱动器, 则将Stage 1.5嵌入到主引导扇区之后。
如果调用当前的菜单项时出现错误,则转移到 NUM 项后重试
在所有分区上查找文件名, 并显示包含该文件的设备。如果设置了参数 --set-root,则在找到第一个匹配后马上停止,并且把该设备设为根。
指定中文字体文件,并切换到简体中文显示方式。
foreground
设置图形模式下的前景色。
切换文件系统的试验模式。
输出驱动器的相关信息。
使用 FILE 中的图形菜单。
关闭系统。
显示内部命令的帮助信息。
hiddenmenu
隐藏菜单。
通过在分区类型上置隐藏标志,隐藏指定分区。
指定 IP 地址, 子网掩码, 网关和服务器地址。不带参数时,将显示当前的网络配置。
通过一些循环操作,侦测出符合 Intel 多处理器规范 1.1/1.4 的 CPUs,以便于发挥其更好的效能。
加载Linux格式的初始化虚拟盘, 并设置必要的参数。
安装STAGE1到指定设备上,安装加载STAGE2需要的块列表到STAGE2上。
侦测指定设备的 I/O 端口号。
尝试载入主引导影像文件。
如果用户未被认证,则终止命令的执行。
makeactive
将 root 设备置为活动分区。
对设备进行映射。
产生一个 MD5 格式的密码。
对多重启动影像, 加载启动模块文件 (不处理该文件的内容, 用户必须自己确定核心的要求)。
modulenounzip
与 'module' 类似, 但是自动禁用了解压缩。
没有参数时,切换页模式。
创建一个新的主分区。
改变指定分区(PART)的分区类型(TYPE)。
设置密码。
终止命令的运行,并给出一段信息。任意键按下后,将继续。
进行端口映射。
从 GRUB 命令行中退出。
用 RARP 初始化网络设备。
从内存的指定位置读取一个 32-bit 的值,并以十六进制形式显示出来。
重启系统。
设置根分区。
rootnoverify
类似`root'指令, 但不测试安装该分区。这用于有些系统装在 GRUB 能访问的磁盘区之外, 但仍需要设置正确的根分区的情况。有些需要安装分区才能确定的参数可能会有问题。
运行一个为光盘启动而设计的引导文件(非模拟方式的)
savedefault
将当前项设置为默认的引导项。
寻找系统的第一个 CD-ROM 驱动器,然后为其分配一个驱动器号以备后续使用(--install)。或者,用该驱动器中的可引导光盘启动系统。(--boot)。
初始化一个串口设备。
改变键盘映射关系。
自动安装GRUB.
splashimage
图形模式下载入背景图片文件。
选择一个终端。
指定终端的功能。
以多种不同的方式读取文件(由FILE指定)的整个内容,并予以比较,以测试文件系统的代码。
测试所指定(MODE)的 VBE 模式。
tftpserver
指定 TFTP 服务器的 IP 地址。
设置在自动启动缺省菜单前所等待的秒数。
命名菜单项。
通过清除隐藏标志,解除指定分区(PARTITION)的隐藏。
强制指定仅有(KBYTES) KB 的上位内存。
侦测 VBE 的信息。
用法: blocklist FILE
输出文件的块清单标记。
用法: boot
引导已加载的操作系统或扇区链式加载器。
用法: bootp [--with-configfile]
通过BOOTP初试化网络设备。如果使用了`--with-configfile'参数,此命令将会试图去加载一个特定的配置文件。
用法: cat FILE
显示指定文件的内容。
chainloader
用法: chainloader [--force] FILE
加载扇区链式加载器。若使用了--force参数, 则忽略该扇区的启动标识的有效性。
用法: cmp FILE1 FILE2
比较两个文件, 并且报告两者之间的不同的信息。
用法: color NORMAL [HIGHLIGHT]
改变菜单的颜色。Normal 用于指定菜单项的未选中时的颜色,HIGHLIGHT 则用于指定菜单项的被选中时的颜色。如果你未指定 HIGHLIGHT 色,那么我们将使用 NORMAL 的反色值。颜色值的格式是 "FG/BG"。FG 和 BG 是颜色的名称,如下:black(黑), blue(蓝), green(绿), cyan(青), red(红), magenta(粉红), brown(棕), light-gray(亮灰),dark-gray(暗灰), light-blue(浅蓝), light-green(淡绿), light-cyan(淡青), light-red(明红), light-magenta(浅红), yellow(黄) 和 white(白)。注意,BG 的值只能是前八个。另外,若想使用闪烁的前景色,你在 FG 前使用前缀 "blink-" 即可。
configfile
用法: configfile FILE
将指定文件作为配置文件予以加载。
用法: debug
打开/关闭除错模式。
用法: default [NUM | `saved']
把 NUM 项菜单设为缺省值。
用法: device DRIVE DEVICE
声明BIOS驱动器对应的实际物理设备。这条命令只用于grub命令行。
用法: portmap prog_number vers_number
进行端口映射。
用法: dhcp
通过DHCP初试化网络设备。
splashimage
用法: splashimage FILE
图形模式下载入背景图片文件。
foreground
用法: foreground RRGGBB
设置图形模式下的前景色。RR 代表红色, GG 代表绿色, BB 代表蓝色。注意他们都使用十六进制的值。
background
用法: background RRGGBB
设置图形模式下的背景色。RR 代表红色, GG 代表绿色, BB 代表蓝色。注意他们都使用十六进制的值。
用法: clear
displayapm
用法: displayapm
显示 APM BIOS 的相关信息。
displaymem
用法: displaymem
显示 GRUB 所判断到的当前系统的内存分布,包括所有物理内存区域。
用法: dump FROM TO
显示诸多文件的内容。注意,FROM 所指定的必须是一个 GRUB 文件,TO 所指定的必须是一个 OS 文件。
用法: embed STAGE1_5 DEVICE
如果设备是个驱动器, 则将Stage 1.5嵌入到主引导扇区之后。如果是个FFS分区, 则可嵌入到该设备饿`引导代码'区中。并输出 Stage 1.5所占的扇区数。
用法: fallback NUM
如果调用当前的菜单项时出现错误,则转移到 NUM 项后重试
用法: find [--set-root] FILENAME
在所有分区上查找文件名, 并显示包含该文件的设备。如果设置了参数 --set-root,则在找到第一个匹配后马上停止,并且把该设备设为根。
用法: fstest
切换文件系统的试验模式。
用法: gfxmenu FILE
使用 FILE 中的图形菜单。
用法: geometry DRIVE [CYLINDER HEAD SECTOR [TOTAL_SECTOR]]
输出驱动器的相关信息。在grub壳程序中, 你可以用这条命令设置驱动器参数为任意值。如果你省略了总扇区数, 则该值缺省有其它参数决定。
用法: halt [--no-apm]
关闭系统。如果APM(高级电源管理)功能存在,将使用 APM BIOS 关闭系统,除非指定了 `--no-apm' 选项。
用法: help [--all] [PATTERN ...]
显示内部命令的帮助信息。要查看所有命令的帮助,请使用 `--all' 参数。
hiddenmenu
用法: hiddenmenu
隐藏菜单。
用法: hide PARTITION
通过在分区类型上置隐藏标志,隐藏指定分区。
用法: ifconfig [--address=IP] [--gateway=IP] [--mask=MASK] [--server=IP]
指定 IP 地址, 子网掩码, 网关和服务器地址。不带参数时,将显示当前的网络配置。
用法: impsprobe
通过一些循环操作,侦测出符合 Intel 多处理器规范 1.1/1.4 的 CPUs,以便于发挥其更好的效能。
用法: initrd FILE [ARG ...]
加载Linux格式的初始化虚拟盘, 并设置必要的参数。
用法: install [--stage2=STAGE2_FILE] [--force-lba] STAGE1 [d] DEVICE STAGE2 [ADDR] [p] [CONFIG_FILE] [REAL_CONFIG_FILE]
安装STAGE1到指定设备上,安装加载STAGE2需要的块列表到STAGE2上。如果使用了选项'd', STAGE1总是试图使用安装STAGE2的驱动器, 而不是启动盘。STAGE2将加载在指定地址上, 如果未声明地址, 则自动检测。如果使用了选项 'p' 或给出了配置文件, 将修改STAGE2的第一个数据块, 修正实际Stage2启动时使用的配置文件位置。对于Stage 1.5, 该值为Stage 2的路径。如果安装的是Stage 1.5, 且指定了实际配置文件, 则将该配置文件路径写入Stage2中。
用法: ioprobe DRIVE
侦测指定设备的 I/O 端口号。
用法: kernel [--no-mem-option] [--type=TYPE] FILE [ARG ...]
尝试载入主引导影像文件。其它项将被作为内核的命令行参数而传递给内核。使用此命令以前,内核所用到的模块应该被重新载入。参数 --type 用于说明内核的类型,包括 "netbsd", "freebsd", "openbsd", "linux", "biglinux" 和 "multiboot"。参数 --no-mem-option 用于说明不必自动传递 Linux 的内存参数。
用法: lock
如果用户未被认证,则终止命令的执行。
makeactive
用法: makeactive
将 root 设备置为活动分区。当然,此命令只对 PC 的硬盘主分区有效。
用法: map [--status] [--hook] [--unhook] [--rehook] [[--read-only] [--fake-write] [--unsafe-boot] [--disable-chs-mode] [--disable-lba-mode] [--heads-per-cylinder=H] [--sectors-per-track=S] TO_DRIVE FROM_DRIVE]
对设备进行映射。这对于扇区链式引导是很有用的功能,比如 DOS。这里,目的驱动器(TO_DRIVE)可以是一个磁盘文件,即使用磁盘虚拟功能。注意,这要求磁盘文件是连续存放于分区中的。另外,若使用了 --read-only 参数,该功能将使`磁盘'处于只读;若使用了 --fake-write 参数,该功能将使`磁盘'处于假写,即可以"写入"数据,但是却并未记录到真实磁盘上; 若使用了 --unsafe-boot 参数,该功能将使`磁盘'处于真实可写; 若使用了 --disable-chs-mode 参数,CHS 访问功能将被禁用; 若使用了 --disable-lba-mode 参数, LBA访问功能将被禁用; H 和 S 指定了虚拟磁盘的物理参数。若使用了 --status, --hook, --unhook,--rehook 诸参数之一, 那么其它的命令行参数将被忽略。
用法: md5crypt
产生一个 MD5 格式的密码。
用法: module FILE [ARG ...]
对多重启动影像, 加载启动模块文件 (不处理该文件的内容, 用户必须自己确定核心的要求)。剩余参数作为`模快命令行`传递, 象`kernel'命令一样。
modulenounzip
用法: modulenounzip FILE [ARG ...]
与 'module' 类似, 但是自动禁用了解压缩。
用法: pager [FLAG]
没有参数时,切换页模式。如果使用了 FLAG 参数,那么它为`on' 时为开启, 为 `off' 时为关闭。
用法: partnew PART TYPE START LEN
创建一个新的主分区。START 为起始扇区号,LEN 为其包含的扇区数,TYPE 为其分区类型。
用法: parttype PART TYPE
改变指定分区(PART)的分区类型(TYPE)。
用法: password [--md5] PASSWD [FILE]
设置密码。当其处于菜单文件的首项时,将禁用所有的交互式菜单编辑功能,包括编辑菜单项(`e`)/进入命令行(`c`)。当正确输入密码 (由PASSWD指定)后,载入新的菜单文件(由FILE指定)。如果你没有指定 FILE 项,那么上述被禁用的功能将被启用了。当然,你也可以将此命令用到某个菜单项里,用以提高系统安全性。参数 --md5 说明密码(PASSWD)是使用md5crypt 加密的。
用法: pause [MESSAGE ...]
终止命令的运行,并给出一段信息。任意键按下后,将继续。
用法: quit
从 GRUB 命令行中退出。
用法: rarp
用 RARP 初始化网络设备。
用法: read ADDR
从内存的指定位置读取一个 32-bit 的值,并以十六进制形式显示出来。
用法: reboot
重启系统。
用法: fontfile FILE
指定中文字体文件,并切换到简体中文显示方式。
用法: scdrom [--install], [--bootcd]
寻找系统的第一个 CD-ROM 驱动器,然后为其分配一个驱动器号以备后续使用(--install)。或者,用该驱动器中的可引导光盘启动系统。(--boot)。
用法: run FILE
运行一个为光盘启动而设计的引导文件(非模拟方式的)
用法: root [DEVICE [HDBIAS]]
设置根分区。设置根分区为指定设备(DEVICE), 然后尝试挂接该分区以得到分区大小(用于在ES:ESI中传递, 扇区链式启动方式要求这样)。BSD 驱动类型用于启动 BSD 的核心启动), 和确定 BSD 子分区所在的 PC 分区。可选的磁盘偏移参数, 用于 BSD 核心确定有多少个控制器在当前控制器前。比如: 假设同时有一个IDE和SCSI盘, 而BSD根分区在 SCSI盘上, 那么磁盘偏移就为1。
rootnoverify
用法: rootnoverify [DEVICE [HDBIAS]]
类似`root'指令, 但不测试安装该分区。这用于有些系统装在 GRUB 能访问的磁盘区之外, 但仍需要设置正确的根分区的情况。有些需要安装分区才能确定的参数可能会有问题。
savedefault
用法: savedefault
将当前项设置为默认的引导项。
用法: serial [--unit=UNIT] [--port=PORT] [--speed=SPEED] [--word=WORD] [--parity=PARITY] [--stop=STOP] [--device=DEV]
初始化一个串口设备。UNIT 用于指定要使用的串口设备 (如,0 == COM1); PORT 用于指定端口号; SPEED 用于指定通讯的数率; WORD 为字长; PARITY 为奇偶类型(取 `no', `odd' 和 `even' 之一的值。); STOP 是停止位的长度值; 选项 --device 仅用于命令行模式,用以指定 tty 设备的文件名。默认值是这样的,COM1, 。
用法: setkey [TO_KEY FROM_KEY]
改变键盘映射关系。把FROM_KEY映射为TO_KEY。这里的键必须是字母, 数字, 和以下特殊键: escape(转义), exclam(!), at(@), numbersign(#), dollar($), parenright ()) , caret(^), ampersand(&), asterisk(*), plus(+), percent(%), minus(-), underscore(_), equal(=), parenleft[(], backspace(退格), tab(制表), bracketleft([), braceleft({), bracketright(]), braceright(}), enter(回车), control(控制), semicolon(;), colon(:), quote('), doublequote("), slash(/), backquote(`), tilde(~), shift(换档), backslash(/), bar(|), comma(,), less(&), period(.), greater(&), question(?), alt(交互), space(空格), capslock(大写), Fx(功能键) 和 delete(删除)。
用法: setup [--prefix=DIR] [--stage2=STAGE2_FILE] [--force-lba] INSTALL_DEVICE [IMAGE_DEVICE]
自动安装GRUB. 这条命令使用更灵活的install命令将GRUB安装到指定设备上。如果给出了映象设备,将在该设备寻找GRUB,否则使用缺省的根设备。根设备可用root指令指定。如果你确认系统的 BIOS 应该支持 LBA 模式, 但是 GRUB 却没有工作于该模式, 则请指定 `--force-lba' 参数。如若你在命令行中已安装了一次 GRUB 可是,你却无法卸载 GRUB 程序所在的分区,请指定 `--stage2' 参数。
用法: terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules] [graphics]
选择一个终端。当指定了多个终端以后, 按任意键方可继续操作。如果控制台和串口都被指定了, 那么你首先在其中按下键盘的终端将被首先选中。如果没有指定任何参数, 那么此命令将显示出当前的终端设置; 参数 --dumb 用以指定一个哑终端, 否则即为 vt100 兼容型; 若使用了 --no-echo 参数, 屏幕上将不会回显输入的字符; 若使用了 --no-edit 参数, the BASH-like 的编辑功能将被禁用; 若使用了 --timeout 参数, 该命令将等待数秒钟(由SECS指定); 可使用 --lines 指定最大的行数; 可使用 --silent 选项关闭消息显示。
用法: terminfo [--name=NAME --cursor-address=SEQ [--clear-screen=SEQ] [--enter-standout-mode=SEQ] [--exit-standout-mode=SEQ]]
指定终端的功能。如果此终端为 vt100 兼容型的,则可指定换码顺序 (即使用 /e 代表 ESC, ^X 代表控制码); 在未给任何参数的情况下,将给出当前配置信息。
用法: testload FILE
以多种不同的方式读取文件(由FILE指定)的整个内容,并予以比较,以测试文件系统的代码。输出看起来会有点儿混乱,但是,如果没有错误的话,`i=X, filepos=Y' 里的 X 和 Y 最后必得相等。如果测试即告成功,下一步即可试图载入内核了。
用法: testvbe MODE
测试所指定(MODE)的 VBE 模式。
tftpserver
用法: tftpserver IPADDR
指定 TFTP 服务器的 IP 地址。
用法: timeout SEC
设置在自动启动缺省菜单前所等待的秒数。
用法: title [NAME ...]
命名菜单项。
用法: unhide PARTITION
通过清除隐藏标志,解除指定分区(PARTITION)的隐藏。
用法: uppermem KBYTES
强制指定仅有(KBYTES) KB 的上位内存。任何系统的地址变换将被取消。
用法: vbeprobe [MODE]
侦测 VBE 的信息。如果指定了一个模式(MODE 不为空),则仅显示其信息。
kernel command line 参数详解
&Linux内核在启动的时候,能接收某些命令行选项或启动时参数。当内核不能识别某些硬件进而不能设置硬件参数或者为了避免内核更改某些参数的值,可以通过这种方式手动将这些参数传递给内核。
  如果不使用启动管理器,比如直接从BIOS或者把内核文件用&cp zImage /dev/fd0&等方法直接从设备启动,就不能给内核传递参数或选项--这也许是我们使用引导管理器比如LILO的好处之一吧。
  Linux的内核参数是以空格分开的一个字符串列表,通常具有如下形式:
  name[=value_1][,value_2]...[,value_10]
  &name&是关键字,内核用它来识别应该把&关键字&后面的值传递给谁,也就是如何处理这个值,是传递给处理例程还是作为环境变量或者抛给&init&。值的个数限制为10,你可以通过再次使用该关键字使用超过10个的参数。
  首先,内核检查关键字是不是 `root=',`nfsroot=', `nfsaddrs=', `ro', `rw', `debug'或 `init',然后内核在bootsetups数组里搜索于该关键字相关联的已注册的处理函数,如果找到相关的已注册的处理函数,则调用这些函数并把关键字后面的值作为参数传递给这些函数。比如你在启动时设置参数name=a,b,c,d,内核搜索bootsetups数组,如果发现&name&已注册,则调用&name&的设置函数如name_setup(),并把a,b,c,d传递给name_setup()执行。
  所有型如&name=value&参数,如果没有被上面所述的设置函数接收,将被解释为系统启动后的环境变量,比如&TERM=vt100&就会被作为一个启动时参数。
  所有没有被内核设置函数接收也没又被设置成环境变量的参数都将留给init进程处理,比如&single&。
  常用的设备无关启动时参数。
  1、init=...
  设置内核执行的初始化进程名,如果该项没有设置,内核会按顺序尝试/etc/init,
  /bin/init,/sbin/init, /bin/sh,如果所有的都没找到,内核会抛出 kernel panic:的错误。
  2、nfsaddrs=...
  设置从网络启动时NFS的启动地址,已字符串的形式给出。
  3、nfsroot=...
  设置网络启动时的NFS根名字,如果该字符串不是以 "/"、","、"."开始,默认指向&/tftp-boot&。
  以上2、3在无盘站中很有用处。
  4、no387
  该选项仅当定义了CONFIG_BUGi386时才能用,某些i387协处理器芯片使用32位的保护模式时会有BUG,比如一些浮点运算,使用这个参数可以让内核忽略387协处理器。
  5、no-hlt
  该选项仅当定义了CONFIG_BUGi386时才能用,一些早期的i486DX-100芯片在处理&hlt&指令时会有问题,执行该指令后不能可靠的返回操作系统,使用该选项,可以让linux系统在CPU空闲的时候不要挂起CPU。
  6、root=...
  该参数告诉内核启动时使用哪个设备作为根文件系统。比如可以指定根文件为hda8:root=/dev/hda8。
  7、ro和rw
  ro参数告诉内核以只读方式加载根文件系统,以便进行文件系统完整性检查,比如运行fsck;rw参数告诉内核以读写方式加载根文件系统,这是默认值。
  8、reserve=...
  保留端口号。格式:reserve=iobase,extent[,iobase,extent]...,用来保护一定区域的I/O端口不被设备驱动程序自动探测。在某些机器上,自动探测会失败,或者设备探测错误或者不想让内核初始化设备时会用到该参数;比如: reserve=0x300,32 device=0x300,除device=0x300外所有设备驱动不探测 0x300-0x31f范围的I/O端口。
  9、mem=...
  限制内核使用的内存数量。早期BIOS设计为只能识别64M以下的内存,如果你的内存数量大于64M,你可以指明,如果你指明的数量超过了实际安装的内存数量,系统崩溃是迟早的事情。如:mem=0x1000000意味着有16M内存,如果是mem=0x6000000,就是96M内存了。
  注意:很多机型把部分内存作为BIOS的映射,所以你在指定内存大小的时候一定要预留空间。你也可以在 pentium或者更新的CPU上使用mem=nopentium关闭4M的页表,这要在内核配置时申明。
  10、panic=N
  默认情况,内核崩溃--kernel panic 后会宕机而不会重启,你可以设置宕机多少秒之后重启机器;也可以在/proc/sys/kernel/panic文件里设置。
11、reboot=[warm cold][,[bios hard]]
  该选项仅当定义了CONFIG_BUGi386时才能用。2.0.22的内核重启默认为cool reboot,warm reboot 更快,使用"reboot=bios"可以继承bios的设置。
  12、nosmp 和 maxcpus=N
  仅当定义了 __SMP__,该选项才可用。可以用来禁用多CPU或者指明最多支持的CPU个数。
  内核开发和调试的启动时参数
  这些参数主要用在内核的开发和调试上,如果你不进行类似的工作,你可以简单的跳过本小节。
  1、debug
  linux的日志级别比较多(详细信息可以参看linux/kernel.h),一般地,日志的守护进程klogd只把比DEBUG级别高的日志写进磁盘;如果使用该选项,klogd也把内核的DEBUG信息写进日志。
  2、profile=N
  在做内核开发的时候,如果想清楚的知道内核在什么地方耗用了多少CPU的时钟周期,可以使用核心的分析函数设置变量prof_shift为非0值,有两种方式可以实现:一种是在编译时指定,另一种就是通过&profile=&来指定; 他给出了一个相当于最小单位--即时钟周期;系统在执行内核代码的时候, profile[address &;&; prof_shift]的值就会累加,你也可以从 /proc/profile得到关于它的一些信息。
  3、swap=N1,N2,N3,N4,N5,N6,N7,N8
  设置内核交换算法的八个参数:max_page_age, page_advance, page_decline,page_initial_age, age_cluster_fract, age_cluster_min, pageout_weight,bufferout_weight。
  4、buff=N1,N2,N3,N4,N5,N6
  设置内核缓冲内存管理的六个参数:max_buff_age, buff_advance, buff_decline,buff_initial_age, bufferout_weight, buffermem_grace。
  使用 RAMDISK的参数
  (仅当内核配置并编译了 CONFIG_BLK_DEV_RAM)。一般的来说,使用ramdisk并不是一件好事,系统自己会更加有效的使用可用的内存;但是,在启动或者制作启动盘时,使用ramdisk可以很方便的装载软盘等设备上的映象(尤其是安装程序、启动过程中),因为在正真使用物理磁盘之前,必须要加载一些必要的模块,比如文件系统模块,scsi驱动等(可以参见我的initrd-x.x.x.img文件分析-制作安装程序不支持的根文件系统)。
  早期的ramdisk(比如1.3.48的核心)是静态分配的,必须以ramdisk=N来指定ramdisk的大小;现在ramdisk可以动态增加。一共有四个参数,两个布尔型,两个整形。
  1、load_ramdisk=N
  如果N=1,就加载ramdisk;如果N=0,就不加载ramdisk;默认值为0。
  2、prompt_ramdisk=N
  N=1,提示插入软盘;N=0,不提示插入软盘;默认为1。
  3、ramdisk_size=N或者ramdisk=N
  设定ramdisk的最大值为N KB,默认为4096KB。
  4、ramdisk_start=N
  设置ramdisk的开始块号为N,当ramdisk有内核的映象文件是需要这个参数。
  5、noinitrd
  (仅当内核配置了选项 CONFIG_BLK_DEV_RAM和CONFIG_BLK_DEV_INITRD)现在的内核都可以支持initrd了,引导进程首先装载内核和一个初始化的ramdisk,然后内核将initrd转换成普通的ramdisk,也就是读写模式的根文件系统设备。然后linuxrc执行,然后装载真正的根文件系统,之后ramdisk被卸载,最后执行启动序列,比如/sbin/init。
  选项noinitrd告诉内核不执行上面的步骤,即使内核编译了initrd,而是把initrd的数据写到 /dev/initrd,只是这是一个一次性的设备
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:695660次
积分:8102
积分:8102
排名:第2324名
原创:115篇
转载:210篇
评论:108条
本人家乡是宁德,现在福州工作. 如果您觉得这系列的文章对你有所帮助,
欢迎打赏。
支付宝打赏
(1)(1)(4)(4)(6)(2)(2)(4)(10)(4)(3)(4)(13)(1)(1)(15)(1)(5)(1)(1)(2)(1)(1)(7)(1)(2)(14)(37)(1)(8)(3)(2)(4)(2)(1)(12)(8)(2)(1)(2)(6)(4)(9)(6)(17)(1)(4)(6)(2)(23)(7)(4)(3)(2)(6)(2)(2)(1)(2)(1)(4)(1)(1)(3)(18)}

我要回帖

更多关于 grub for dos下载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信