扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1、grub 命令行接口(一次性设置)
成都创新互联主营临潭网站建设的网络公司,主营网站建设方案,App定制开发,临潭h5微信小程序定制开发搭建,临潭网站营销推广欢迎临潭等地区企业咨询
系统启动过程中按 c 键可进入grub 命令行界面,就可以自定义grub 启动参数了。常用命令有:
help ##查询帮助
help COMMAND ##查询命令帮助
ls : 显示系统磁盘及分区情况
root (hd#,#) :将hd#的第#号分区设置为根分区;(CentOS 6)
kernel /PATH/TO/KERNEL_FILE : 设定本次启动用到的内核文件(CentoS 6)
set root=(hd#,msdos#) : 将第#块硬盘的第#个分区设置为根分区;(CentOS 7)
linux /PATH/TO/KERNEL_FILE : 设定本次启动用到的内核文件(CentoS 7)
r oot=/dev/mapper/cl-root ro init=/bin/sh : 指明根分区路径;以ro/rw格式挂载; 第一个运行的程序是bash ;
initrd /PATH/TO/INITRAMFS_FILE_FILE : 为选定的内核提供额外的ramdisk ;
CentOS 7:
然后boot 重启,将会出现以下定制的系统了:
CentOS 6:
2、grub 配置文件: 永久配置是要在grub 的配置文件中配置的;
CentOS 6 : /boot/grub/grub.cfg
default=0 : 设置默认启动菜单项;编号从0开始;
timeout=5 : 设置菜单项等待被选择的时长
title CentOS Express ##定义内核菜单选项
root (hd0,0)
kernel /vmlinuz-VERSION-release ro [selinux=0] root=/dev/mapper/vg0-root (根据系统设置)
initrd /initramfs-VERSION-release.img
CenOS 7 : /boot/grub2/grub.cfg (/etc/grub2.cfg ), 不要直接修改 ;
grub2-mkconfig会调用/etc/grub.d中的脚本去搜集/etc/default/grub 中的配置参数,生成/etc/grub2.cfg ;
/etc/default/grub中的参数被修改,就可以使用grub2-mkconfig重新生成/etc/grub2.cfg
#grub2-mkconfig –o /boot/grub2/grub.cfg
3、给Grub 添加保护
CentOS 6:
配置项:
default=0
timeout=5
password [--md5] STRING : 菜单编辑认证 ;
title TITLE :
root (hd#,#) :
kernel /PATH/TO/VMLINUXZ_FILE [PARAMETERS]
initrd /PATH/TO/INITRAMFS_FILE
password [--md5] STRING : 启动选定的内核或操作系统时需要进行认证;
CentOS 7:
a.添加grub菜单和命令行的密码认证:
grub2-setpassword ##输入密码两次生成/boot/grub2/user.cfg 文件
cat /boot/grub2/user.cfg
GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.CC6F56BFCFB90C49E6E16DC7234.....
grub2-mkconfig -o /boot/grub2/grub.cfg ##重新生成配置文件
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-f9725b0c842348ce9e0bc81968cf7181
Found initrd image: /boot/initramfs-0-rescue-f9725b0c842348ce9e0bc81968cf7181.img
done
shutdown -r now
再次键入e 或 c ,系统都会要求输入用户名和密码的;
rel:
b. 删除grub 密码保护(删除掉user.cfg,重新生成配置文件即可)
rm -rf /boot/grub2/user.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
步骤如下:
a 进入grub的命令模式。进入grub界面后按C键进入命令行界面。
b 先熟悉一下grub 的一些命令 grubhelp
c 熟悉一下cat命令
d root指令来指定/boot所在的分区
e kernel指令来指定linux的内核,及所在的分区
f 用initrd命令来指定initrd文件
g boot引导系统
cat命令的用法
cat指令是用来查看文件内容的,有时不知道Linux的/boot分区,以及/根分区所在的位置,要查看/etc/fstab的内容来得知, 这时,就要用到cat (hd[0-n],y)/etc/fstab 来获得这些内容;注意要学会用tab键命令补齐的功能;
grub cat ( 按tab 键会出来hd0或hd1之类的;
grub cat (hd0, 注:输入hd0,然后再按tab键;会出来分区之类的;
grub cat (hd0,6)
Possible partitions are:
Partition num: 0, Filesystem type unknown, partition type 0x7
Partition num: 4, Filesystem type is fat, partition type 0xb
Partition num: 5, Filesystem type is reiserfs, partition type 0x83
Partition num: 6, Filesystem type is ext2fs, partition type 0x83
Partition num: 7, Filesystem type unknown, partition type 0x83
Partition num: 8, Filesystem type is reiserfs, partition type 0x83
Partition num: 9, Filesystem type unknown, partition type 0x82
grub cat (hd0,6)/etc/fstab 注:比如我想查看一下 (hd0,6)/etc/fstab的内容就这样输入;
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
主要查看/etc/fstab中的内容,主要是Linux的/分区及/boot是否是独立的分区;如果没有/boot类似的行,证明/boot和 Linux的/处于同一个硬盘分区;比如上面的例子中LABEL=/ 这行是极为重要的;说明Linux系统就安在标签为LABEL=/的分区中;
如果您的Linux系统/boot和/没有位于同一个分区,可能cat (hd[a-n],y) 查到的是类似下面的;
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
root (hd[0-n,y) 指令来指定/boot所在的分区;
其实这个root (hd[0,n],y)是可以省略的,如果省略了,要在kerenl 命令中指定;前面已经说过 (hd[0-n],y) 硬盘分区的表示方法的用途;主要是用来指定 /boot所在的分区;
eg:
grub root (hd0,0)
kernel 指令,用来指定Linux的内核,及/所在的分区;
kernel 这个指令可能初学者有点怕,不知道内核在哪个分区,及内核文件名的全称是什么。不要忘记tab键的命令补齐的应用;
如果已经通过root (hd[0-n],y) 指定了/boot所在的分区,语法有两个:
如果/boot和Linux的/位于同一个分区,应该是下面的一种格式;
kernel /boot/vmlinuz在这里按tab键来补齐,就看到内核全称了 ro root=/dev/hd[a-z]X
如果/boot有自己独立的分区,应该是;
kernel /vmlinuz在这里按tab键来补齐,就看到内核全称了 ro root=/dev/hd[a-z]X
在这里 root=/dev/hd[a-z]X 是Linux 的/根所位于的分区,如果不知道是哪个分区,就用tab出来的来计算,一个一个的尝试;或用cat (hd[0-n],y)/etc/fstab 中得到Linux的/所在的分区或分区的标签;
grub kernel /boot/在这里按tab键;这样就列出/boot中的文件了;
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369
_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK memtest86+-1.55
.1 xen-syms xen.gz
grub kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
[Linux-bzImage, setup=0x1e00, size=0x18e473]
注解: root=LABEL=/ 是Linux的/所在的分区的文件系统的标签;如果您知道Linux的/在哪个具体的分区,用root=/dev/hd[a-z]X来指定也行。比如下面的一行也是可以的;
grub kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
也可以把/boot所在的分区的指定 root (hd[0-n],y)这行省掉,直接在kernel 中指定/boot所在的分区;所以就在下面的语法;
如果是/boot和Linux的根同处一个分区;
kernel (hd[0-n],y)/boot/vmlinuz ro root=/dev/hd[a-z]X
比如:
grubkernel
如果是/boot和Linux所在的根不在一个分区;则是;
kernel (hd[0-n],y)/vmlinuz ro root=/dev/hd[a-z]X
grub kernel (hd0,0)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
[Linux-bzImage, setup=0x1e00, size=0x18e473]
或下面的输入,以cat 出/etc/fstab内容为准;
grub kernel (hd0,0)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
[Linux-bzImage, setup=0x1e00, size=0x18e473]
initrd 命令行来指定initrd文件;
grub initrd /boot/initrd在这里tab 来补齐;
grub initrd /boot/initrd-2.6.11-1.1369_FC4.img
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]
如果/boot是独立的一个分区,应该是如下样子的语法;比如下面的;
grub initrd /initrd在这里tab 来补齐;
grub initrd /initrd-2.6.11-1.1369_FC4.img
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]
boot 引导系统;
grubboot
下面是在我机器上的命令:
grub cat (hd0,0)/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
grub root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub kernel /boot/在这里按tab补齐,全列出/boot所有的文件;
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4
memtest86+-1.55.1 xen-syms xen.gz
grub kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
[Linux-bzImage, setup=0x1e00, size=0x18e473]
grub initrd /boot/在这里按tab补齐
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK
memtest86+-1.55.1 xen-syms xen.gz
grub initrd /boot/initrd-2.6.11-1.1369_FC4.img 注;输入intrd文件名的全名;
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]
grub boot
1、在启动linux系统时,如果/boot/grub/grub.cfg文件损坏或者不存在时,启动linux时,就会有Grub命令行的提示。
如下操作,将系统自带的grub.cfg文件改名。
2、重新启动系统后,发现和自己预想的一样,没有出现引导菜单。
3、在grub命令提示符下,可以使用一些命令加载内核和文件系统,设置根目录的分区。
有的grub使用
linux
/boot/vmlinuz-xx
有的grub使用kernel
/boot/vmlinuz-xx,可自己输入一个首字母,按TAB键查看,演示的grub支持的是linux命令
4、过一会出现下面的界面。
-
sudo
update-grub
-sudo
grub-install
/dev/sda
输入这两个命令后,新的grub.cfg就生成了,跟之前文件的一样(前提是没有对文件做任何更改)。
hprx2620进入单用户模式方法是
1、使用"a"操作按键进入单用户模式:这是进入单用户模式最快速的方法。在GRUB启动菜单里使用a操作按键编辑kernel参数,在末行输入single,来告诉linux内核后续的启动过程需要进入单用户模式,编辑后按enter键,即可启动单用户模式。
2、使用'e'操作按键进入单用户模式。在GRUB启动菜单里使用e操作按键进入Linux启动菜单向界面,移动光标至kernel配置项一行,按e编辑kernel菜单项,在行末输入single,告诉Linux内核后续的启动过程需要进入单用户模式,更改后,按回车返回Linux启动菜单项界面,然后按b,使用更改后的Linux启动菜单启动单用户模式。
3、使用c操作按键进入单用户模式这是进入单用户模式最麻烦的一中方式,必须要熟悉GRUB命令行界面才行。在grup启动菜单里使用c进入GRUB命令行.分别使用grup下的root、kernel(在末行输入single)、initrd命令指定启动参数,最后使用boot命令启动到单用户模式。
我不知道大家为什么都说按esc键,我按esc键就没有任何反映,重点是一定要用鼠标把虚拟机当前系统窗口点为激活状态,也就是说虚拟机系统窗口看不到鼠标了,然后你再按“任意键”就可以进入可选菜单了,说一下我的环境
VMware15Pr 安装在win10操作系统上
CentOS 5.11 安装 在VMware虚拟机上
从虚拟机开启linux想要进入启动时的grub需要注意几个点:启动菜单是否配置好,手速是否够快,系统蓝色窗口是否被鼠标激活等,说明如下~~
/boot/grub/menu.lst(或者/boot/grub/grub.conf),此文件是否timeout参数设置过小,默认是5秒,如果你手速不够快的话,可以改成10或者20秒。不够快的话系统会默认进入可选菜单的第一项
hiddenmenu参数默认开启,也就是说默认菜单选择界面是不显示的,只显示蓝色界面(当然你手速够快也没啥大问题),如果想开机显示可选菜单就把这个参数给注释掉,前面加上# 变成 #hiddenmenu
以上都没有问题后,在蓝色界面出现时按任意键就能够进入可选菜单,这时按下方界面说明 按e、a、c、b等键可进行grub命令控制或者修改你的menu.lst文件
简单的说,GRUB 是系统的启动引导程序。我们要启动系统时,需要通过BIOS启动硬盘0扇区的程序引导启动系统内核。从早期的 MBR到如今的UEFI启动类型和GUID分区表 (GPT) 特殊操作。想了解详情自行查阅资料。
Linux系统 U盘
首先我们要给U盘分区。通过下面命令查看U盘的挂在情况。
如果挂载正常,就可以通过下面命令给U盘分区。(/dev/sdb是我的U盘)
d删除所有分区,然后o写入DOS分区表,再n添加分区。配置好后w保存退出。
然后格式化U盘分区。命令:
然后挂载U盘,如果U盘无法挂载,可以把分区类型改为Linux filesystem(20类型),挂载后再改回BIOS boot(4类型)。否则GURB安装时会提示错误。
挂载命令
--force 选项启用对 blocklists(块列表)的支持
--debug 显示安装信息
第一个路径挂载的分区路径,第二个路径为U盘的设备路径。
至此我们已经把GRUB安装到了U盘。U盘会多个boot目录 。
可以重启BIOS选U盘启动,正常的话会进入GRUB 命令行。
下一篇说说GRUB配置
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流