手动修改系统Linux grub文件,更新引导顺序
linux更新grub内核启动参数的方法
linux更新grub内核启动参数的⽅法#!/bin/bashset -xset -eexport PS4=+{$LINENO:${FUNCNAME[0]}}trap 'echo "---NEWKERNARGS=$NEWKERNARGS xx=$xx------"' DEBUGNEWKERNARGS=""grubby --info=`/sbin/grubby --default-kernel` 2>/dev/null | grep -q crashkernelif [ $? -ne 0 ];thenNEWKERNARGS="--kernel-args=\"crashkernel=auto\""figrubby --info=`/sbin/grubby --default-kernel` 2>/dev/null | grep -q "nopti noibrs noibpb"if [ $? -ne 0 ];thenNEWKERNARGS="--kernel-args=\"crashkernel=auto nopti noibrs noibpb\""fi/sbin/new-kernel-pkg --package kernel%{?1:-%{1}} %{!?1:--make-default} --install %{KVERREL}%{?1:.%{1}}上⾯的这种做法其实存在3个问题:1 缺失⼀种场景,即是grub的内核⼊⼝参数中包含"crashkernel=auto"但不包含"nopti noibrs noibpb",2 转义字符使⽤过多,不便理解且容易出错,可参照--install将--kernel-args参数选项移出变量的赋值过程,⼤⼤简化原有逻辑和复杂度;3 NEWKERNARGS参数的赋值其实可以采⽤字符串加⽅式,这样可以减少grubby查询次数具体做法如下:#!/bin/bashset -xset -eexport PS4=+{$LINENO:${FUNCNAME[0]}}trap 'echo "---NEWKERNARGS=$NEWKERNARGS xx=$xx------"' DEBUGNEWKERNARGS=""grubby --info=`/sbin/grubby --default-kernel` 2>/dev/null | grep -q crashkernelif [ $? -ne 0 ];thenNEWKERNARGS="crashkernel=auto"figrubby --info=`/sbin/grubby --default-kernel` 2>/dev/null | grep -q "nopti noibrs noibpb"if [ $? -ne 0 ];thenNEWKERNARGS=${NEWKERNARGS}"nopti noibrs noibpb"fi/sbin/new-kernel-pkg --package kernel%{?1:-%{1}} %{!?1:--make-default} --install %{KVERREL}%{?1:.%{1}} --kernel-args="$NEWKERNARGS"。
修改自己的uboot,实现快捷更新Linux系统
新手上路
Ok6410的硬件相比mini6410强大许多(同样的价钱),但是ok6410的uboot制作用起来不 方便,需要输入很多命令才可以烧写完一个系统。我还是比较怀念在2440上方便、灵活的烧 写方式。 下面我们就来修改出一个简单的uboot,实现快速更新系统。 一、首先简单的说明uboot的启动过程: 1)、从文件层面上看主要流程是在两个文件中:cpu/xxxx/start.s,lib_arm/board.c。 Start.s 在flash中执行的引导代码,也就是bootloader中的stage1,负责初始化硬件环境,把u-boot从 flash加载到RAM中去,然后跳到lib_arm/board.c中的start_armboot中去执行。 1.1.6版本的start.s流程: 硬件环境初始化: 进入svc模式-->关闭watch dog-->屏蔽所有IRQ掩码-->设置时钟频率FCLK、HCLK、 PCLK-->清I/D cache-->禁止MMU和CACHE-->配置memory control-->重定位:如果当前 代码不在连接指定的地址上(对smdk2410是0x3f000000)则需要把u-boot从当前位置拷 贝到RAM指定位置中;-->建立堆栈,堆栈是进入C函数前必须初始化的。-->清.bss区。--> 跳到start_armboot函数中执行。(lib_arm/board.c) 2)、lib_arm/board.c: start_armboot是U-Boot执行的第一个C语言函数,完成系统初始化工作,进入主循环,处理 用户输入的命令。这里只简要列出了主要执行的函数流程: void start_armboot (void) { //全局数据变量指针gd占用r8。 DECLARE_GLOBAL_DATA_PTR; /* 给全局数据变量gd安排空间*/ gd = (gd_t*)(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t)); memset ((void*)gd, 0, sizeof (gd_t)); /* 给板子数据变量gd->bd安排空间*/ gd->bd = (bd_t*)((char*)gd - sizeof(bd_t)); memset (gd->bd, 0, sizeof (bd_t)); monitor_flash_len = _bss_start - _armboot_start;//取u-boot的长度。 /* 顺序执行init_sequence数组中的初始化函数 */ for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) if ((*init_fnc_ptr)() != 0) { hang ();} /*配置可用的Flash */ size = flash_init (); …… /* 初始化堆空间 */ mem_malloc_init (_armboot_start - CFG_MALLOC_LEN); /* 重新定位环境变量, */ env_relocate (); /* 从环境变量中获取IP地址 */ gd->bd->bi_ip_addr = getenv_IPaddr ("ipaddr"); /* 以太网接口MAC 地址 */ …… devices_init (); /* 设备初始化 */ jumptable_init (); //跳转表初始化
grub2修改启动菜单原理
windows linux 双系统grub2默认启动项的更改和早期grub的启动菜单不一样,以前只要修改/boot/grub/menu.lst就行了。
linux7中已经没有menu.lst文件了。
+++++++++++++++++++以下是重点理论知识++++++++++++++++++++++grub2由三个部分组成:/etc/default/grub文件、/etc/grub.d目录、/boot/grub/grub.cfg文件。
在开机启动时,linux系统是调用/boot/grub/grub.cfg 文件执行的。
但这个文件即使手动编辑后也是会被还原的,为什么呢?当我们或linux系统更新后,会自动执行update-grub更新启动菜单命令。
该命令会根据/etc/default/grub文件和/etc/grub.d/的所有配置文件重新生成/boot/grub/grub.cfg文件;也就是说update-grub命令执行后,/boot/grub/grub.cfg文件就被更新了。
+++++++++++++++++++++以上是理论知识+++++++++++++++++++++++++++++配置文件:/etc/default/grub文件//保存开机默认启动项、倒计时内容;GRUB_TIMEOUT=5 //超时时间GRUB_DEFAULT=saved //开机菜单默认项,可以使用0-nGRUB_DISABLE_SUBMENU=trueGRUB_TERMINAL_OUTPUT="console" /启用 consoleGRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root rhgb quiet" //追加内核安全性;GRUB_DISABLE_RECOVERY="true" //禁止显示救援模式;/etc/grub.d/* //保存各个启动项;[root@tang ~]# ls /etc/grub.d/00_header 10_linux 30_os-prober README00_tuned 20_linux_xen 40_custom01_users 20_ppc_terminfo 41_custom其中,30_os-prober 是windows系统的启动项;其中,10_linux 是linux 系统的启动项;其中,/etc/grub.d/00_header //初始化默认选项,超时时间其中,/etc/grub.d/05_debian_theme //配置引导画面,主题颜色;其中,04_custom //自定义菜单;**注意**,这里的每个文件前面都有数字组成;数字越小启动顺序就越靠前。
Linux系统引导的顺序
Linux系统引导的顺序
当打开计算机电源时,计算机就会进入BIOS。
BIOS的工作是检查计算机的硬件设备,如CPU、内存和风扇速度等。
检查完之后,将进入MBR,也就是进入引导加载程序(boot loader).MBR会在启动盘的第1个块中,大小为512B.其中前446B中的程序代码是用来选择boot partition(分区),也就是由哪个分区来装入开机用的程序代码。
之后载入操作系统内核(Kernel)的代码,在内核部分主要是装入计算机设备的驱动程序以便操作系统可以控制计算机上的设备,并且以只读的方式挂载/(根)文件系统所在的分区等信息,也就是说开机的第4个阶段系统只能阅读
/dev/sda2这个分区。
所以必须将/etc、/bin、/lib、/sbin、/dev这些文件系统包含在/dev/sda2这个分区中。
root@ubuntu:~#df-h/
Filesystem Size Used Avail Use%Mounted on
/dev/sda220G5.9G13G32%/
最后内核会执行init程序,所以init程序的进程id为1,即Linux操作系统第1个执行的程序。
Linux Grub总结
Linux Grub总结GNU GRUB的前身为Grand Unified Bootloader。
目前GRUB分成GRUB legacy和GRUB2。
版本号是0.9x以及之前的版本都称为GRUB Legacy,从 1.x开始的就称为GRUB2。
grub2采用模块化的设计,主要配置文件是/boot/grub/grub.cfg,但是这个文件的权限是444,连root也不让修改,这是刻意为之的,不要修改文件权限,grub.cfg的内容更新由update-grub命令来更新,其实就是执行grub-mkconfig-o/boot/grub/grub.cfg来更新,此文件会在更新内核自动更新,在/boot/grub目录下有很多模块文件,以在按需时自动加载模块每段模块配置的加载以###BEGIN xxx###开始,以###END xxx###结尾。
一、grub2主要有三部分组成:update-grub和grub-mkconfig的作用都是一样的。
update-grub是Debian系Linux操作系统专用的,其它Linux操作系统不一定可以使用。
grub-mkconfig是Linux操作系统都通用的命令。
1.update-grubupdate-grub主要是在每次配置文件有更新后生成新的grub.cfg,其实update-grub是调用grub-mkconfig,在系统中还有一个update-grub2,发现他是调用update-grub2.grub-mkconfig调用grub-mkdevicemap和grub-probe生成grub.cfg3.grub-probe从给定的设备上探测设备信息二、/etc/default/grub/etc/default/grub控制grub-mkconfig的操作,grub里面是以键值对存在的选项,如果值有空格或者其他字符需要用引号引起来,参数如下#If you change this file,run'update-grub'afterwards to updateGRUB_DEFAULT=0#设置默认启动项,按menuentry顺序如果要默认从第四个菜单项启动,数字改为3,若改为saved,则默认为上次启动项GRUB_TIMEOUT="10"#设置进入默认启动项的等候时间,默认值10秒,按自己需要修改,单位为秒改改为零和负值为无限等待操作GRUB_DISTRIBUTOR=`lsb_release-i-s2>/dev/null||echo Debian`#获得发行版名称(比如Ubuntu, DebianGRUB_CMDLINE_LINUX_DEFAULT="quiet splash"#选择启动的环境,“quiet splash”为图像界面,“text”为文本界面#GRUB_CMDLINE_LINUX="noresume"#手动添加内核启动参数,比如acpi=off noapic等可在这里添加#Uncomment to disable graphical terminal(grub-pc only)#GRUB_TERMINAL=console#设置是否使用图形介面。
XP与Centos Linux双系统 默认启动顺序解决方案
XP与Centos 双系统默认启动顺序解决方案情况一:默认Centos启动,要改为XP启动1、进入Centos系统,寻找系统启动文件,然后使用vi 或gedit 等指令打开配置文件进行更改。
2、配置文件位置:/etc/grub。
conf 或/boot/grub/grub.conf3、配置文件内容##########################################################以下为配置文件内容########################################################## grub.conf generated by anaconda## Note that you do not have to rerun grub after making changes to this file#NOTICE: You do not have a /boot partition. This means that#all kernel and initrd paths are relative to /,eg。
#root (hd0,2)# kernel /boot/vmlinuz-version ro root=/dev/sda3#initrd /boot/initrd—version.img#boot=/dev/sdadefault=0 #默认启动的系统,默认启动第一个系统。
(更改其值,可改变启动顺序)timeout=5 #等待超时时间为5秒。
splashimage=(hd0,2)/boot/grub/splash。
xpm。
gz #开机图片地址。
Hiddenmenu #是否显示开机菜单。
title XP #第一个系统(更改其顺序,可改变启动顺序)rootnoverify (hd0,0)chainloader +1title CentOS (2。
Ubuntu+win10双系统修改启动项顺序的方法
Ubuntu+win10双系统修改启动项顺序的⽅法Ubuntu16.04+windows10双系统修改启动项顺序的⽅法在windows下直接安装ubuntu,默认直接进⼊ubuntu,但是我暂时还是经常⽤windows,所以便有了修改启动顺序的想法,以后可以直接进⼊windows。
这⾥我总结了⼀下⽹上最简单的⽅法,直接在获取系统root权限的情况下修改grub⽂件即可。
⼀桌⾯右键打开终端输⼊:sudonautilus获取root权限,这时会跳出⼀个⽂件,依次进⼊计算机/boot/grub/grub.cfg双击打开,修改setdefault="2"如下图。
我这⾥是2因为启动界⾯window选项是第三个如果你是第四个位置就修改为3,依次类推。
修改完成后重启看效果。
默认直接进⼊windows。
安装双系统以后,开机引导项是由Ubuntu来进⾏引导,每次开机10s选择时间,⼀不⼩⼼就跳到Ubuntu系统上,但是个⼈更常⽤为windows,所以将windows设为开机默认启动项。
开机时,Ubuntu引导项上,第⼀排为Ubuntu启动,最后⼀项也就是第5排为windows启动。
?这个顺序在Ubuntu系统中是从0计数,也就是Ubuntu是第0项,windows为第4项。
?类似,计算出你的windows启动项顺序开机Ubuntu,打开终端cd/etc/default/sudosudonanogrub//使⽤管理员权限打开grub⽂件在这个grub中显⽰GRUB_DEFAULT=0,这个也就是刚刚我们记住的Ubuntu的开机顺序,我的windows启动顺序为4,所以改成GRUB_DEFAULT=4。
然后ctrl+X保存,两次确认。
就成功了,重启以后就会发现windows默认启动在在win7下安装了Ubuntu13.04后,在grub中,win7启动想是最后⼀个,为了把win7设置为默认启动项,需要更改grub设置。
双系统Linux下系统启动顺序更改
linux多核心的启动菜单修改默认启动为windowsubuntu/linux升级后编辑多核心的启动菜单并修改默认菜单为windows备份一下源文件: cp /boot/grub/menu.lst /boot/grub/menu.lst.backup编辑菜单文件: sudu gedit /boot/grub/menu.lst然后会打开文本编辑器:在不要的核心启动项目的行前面添加#即可,例如#title Ubuntu, kernel 2.6.17-10-generic#root (hd0,2)#kernel /boot/vmlinuz-2.6.17-10-generic root=/dev/sda3 ro quiet splash locale=zh_CN#initrd /boot/initrd.img-2.6.17-10-generic#quiet#savedefault#boot#title Ubuntu, kernel 2.6.17-10-generic (recovery mode)#root (hd0,2)#kernel /boot/vmlinuz-2.6.17-10-generic root=/dev/sda3 ro single#initrd /boot/initrd.img-2.6.17-10-generic#boot最后一段的window复制到引导段的最前端:# This entry automatically added by the Debian installer for a non-linux OS# on /dev/sda1title Microsoft Windows XP Professionalroot (hd0,0)savedefaultmakeactivechainloader +1分割段复制到第二段,也可以删除:# This is a divider, added to separate the menu items below from the Debian# ones.title Other operating systems:root其中各个段的title就是启动菜单项目的名称,可以自己修改,例如title Other operating systems:可以修改为:title --------------------------------这样更加清晰一些.启动菜单还有颜色可选择,默认是被注释掉的,详情请查看相关注释,好像是#color那一行.默认有蓝白/黑白模式,也可以自己填入其他颜色方法2:1、打开命令行终端;2、输入:sudo cp /boot/grub/menu.lst /boot/grub/menu.lst.baksudo gedit /boot/grub/menu.lst注:第一句做备份用。
改动grub默认启动顺序
改动grub默认启动顺序
grub如今有两个版本号,⼀个grub,⼀个grub2,两个版本号的操作不太⼀样。
装centos的朋友⾮常有可能是grub。
我电脑装的是ubuntu14.04,为grub2。
我演⽰grub2的过程。
GRUB2的默认启动顺序改动
⾸先我们cd到ubuntu的/boot/grub⽂件夹下,该⽂件夹下有个⽂件grub.cfg,就是设置默认启动的⽂件。
刚装ubuntu的朋友⾮常可能会遇到这种问题。
由于ubuntu系统本来是让这个⽂件不可写的。
例如以下查看grub.cfg⽂件的权限就能够知道了。
仅仅读⽂件。
改动权限,运⾏命令 sudo chmod a+w ./grub.cfg 全+写。
如今改⽂件的权限变成这样。
以下是我电脑的grub启动项,Windows系统在第5个,由于它第⼀个的index是0,所以递推下去第5个所在的index是4在grub.cfg⽂件中⾯找到 set default = "0" 将0改为你电脑windows系统的index(我这⾥是4)
保存,重新启动,OK!。
如何用linux修复grub引导菜单
如何用linux修复grub引导菜单使用DOS引导盘,找到grub文件.修改grub.conf文件。
其中“default=n”(n是个数字)是grub引导菜单默认被选中的项,n从0开始,0表示第一项,1表示第二项,依此类推。
“timeout=x”(x是一个数)是超时时间,单位是妙。
也就是引导菜单显示后,如果x秒内用户不进行选择,那么grub将启动默认项。
“splashimage =xxxxxx”,这是引导菜单的背景图,先不理他。
其它常用项我用下面的例子来说明:title Red Hat 8.0root (hd1,6)kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hdb7initrd /boot/initrd-2.4.18-14.img其中"Red Hat 8.0"是在启动菜单列表里显示的名字root (hdx,y)用来指定你的boot分区位置,如果你没有分boot分区(本例就没分boot分区),那就指向根分区就行了,hdx是linux所在硬盘,hd0是第一块硬盘,hd1是第二块,依此类推。
y是分区位置,从0开始,也就是等于分区号减一,比如你要指向的分区是hdx7,那么y就是6,如果是hdx1,那y就是0。
注意root后面要有一个空格。
kernel /boot/vmlinuz-2.4.18-14,其中"/boot/vmlinuz-2.4.18-14"是你要用的内核路径,如果你编译了心内核,把它改成你的新内核的路径就行了。
ro就不用管,写上不会有错。
root=/dev/hdxx指定根分区,本例是hdb7,所以root=/dev/hdb7initrd xxxxxxxxxxxxx这行不要也行,目前我还不清楚它是做什么用的。
上面是linux的,下面是windows的title windows 98rootnoverify (hd0,0)chainloader +1title xxxxxxx不用解释了,上面有解释。
windows和linux双系统修改启动项顺序
windows和linux双系统修改启动项顺序windows和linux双系统修改启动项顺序在windows下安装ubuntu双系统,启动时默认选择ubuntu,至少有三种方法可以修改启动顺序。
1. 修改/boot/grub/grub.cfgsudo vim /boot/grub/grub.cfg (如果对vim不太熟悉,可以试试sudo gedit /etc/default/grub)有如下内容## DO NOT EDIT THIS FILE## It is automatically generated by grub-mkconfig using templates# from /etc/grub.d and settings from /etc/default/grub### BEGIN /etc/grub.d/00_header ###if [ -s $prefix/grubenv ]; thenset have_grubenv=trueload_envfiset default="0"if [ "${prev_saved_entry}" ]; thenset saved_entry="${prev_saved_entry}"save_env saved_entryset prev_saved_entry=save_env prev_saved_entryset boot_once=truefi...menuentry 'Ubuntu,Linux 3.0.0-28-generic' --class ubuntu --class gnu-linux --class gnu --class os {recordfailset gfxpayload=$linux_gfx_modeinsmod gzioinsmod part_msdosinsmod ext2set root='(hd0,msdos8)'search --no-floppy --fs-uuid --set=root 6eaff320-f96f-4e63-91d3-9b45bb387d1dlinux /boot/vmlinuz-3.0.0-28-generic root=UUID=6eaff320-f96f-4e63-91d3-9b45bb387d1d ro quiet splash vt.handoff=7 initrd /boot/initrd.img-3.0.0-28-generic}...我们修改的是set default="0"。
XP Ubuntu windows Linux 双系统 启动顺序更改为默认winxp启动
windows Linux 双系统启动顺序更改为默认windows启动Windows XP sp3; Ubuntu LTS 12.10 64bit桌面版本;/detail/hongwulu/44916372012-11-14我的系统是Windows XP sp3,之后又安装了Ubuntu LTS 12.10 64bit 桌面版本Linux。
在开机启动时,默认是启动Ubuntu,为了改为winXP,我做了如下工作,实践证明好用!1、在开机时,查看Windows XP的顺序,从0开始计数。
我的启动菜单如下所示:UbuntuAdvanced options for UbuntuMemory test (memtest86+)Memory test (memtest86+, serial console 115200)Microsoft Windows XP Professional (on /dev/sda1)第一项是Ubuntu,第五项是Windows XP,因为是从0开始,所以Windows XP的顺序应该为4,把这个数记下来。
2、进入Ubuntu Linux系统,按ALT+F2,打开命令行,输入gksu nautilus,回车.系统会提示输入当前登录用户的密码,输入后即以root身份登录(在所有任务完成后务必要关闭本窗口)。
输入密码登录成功后的界面:3、单击File System,进入目录/boot/grub/找到文件grub.cfg,打开它,找到set default = "0",可以看出默认是第一项 (从 0 开始计数)。
只要改为set default = "4"(从 0 开始计数)就可以把 Windows XP 改为默认启动系统。
保存并关闭文件grub.cfg。
4、关闭当前的窗口退出root.至此,大功告成,下次重启动时,默认的操作系统变成了Windows XP.。
Linux启动流程与Grub的配置(精)
Linux启动流程与Grub的配置严寒发布于 2006-10-12 | 918次阅读字号: 大中小 (网友评论 1 条我要评论一、Linux的启动流程 1. 从BIOS到KERNEL BIOS自检->MBR(GRUB->KERNEL->KERNEL自解压->内核初始化->内核启动 2. 内核启动:创建1#进程并执行,由它创建若干内核线程(kernel thread),然后装入并执行程序/sbin/init(变成一个用户进程)。
此后,init根据/etc/inittab配置文件来执行相应的脚本进行系统初始化,如设置键盘、字体,装载模块,设置网络等对于Redhat来说,执行的顺序为: /etc/rc.d/rc.sysinit # 由init执行的第一脚本/etc/rc.d/rc $RUNLEVEL # init执行指定运行级别($RUNLEVEL为缺省的运行模式)的各脚本; /etc/rc.d/rc.local #运行模式2、3、5时会运行的脚本 /sbin/mingetty (或getty) # 等待用户登录 /etc/inittab中指定了系统的运行级别(RUNLEVEL),init根据运行级别启动相关的服务(一些后台进程),实现不同的功能。
RUNLEVEL值为:0-6 0:halt, 1:单用户,2:多用户,3:多用户并启动NFS服务 4:保留,5:运行xdm(X window)以图形界面方式登录 6:reboot 3、/etc/inittab文件 /etc/inittab的文件内容如下: # 设定系统开机预设的RUNLEVEL: id:3:initdefault: # 开始进行RUNLEVEL的服务启动前,使用来侦测与初始化系统环境的设定文件: si::sysinit:/etc/rc.d/rc.sysinit # 7 个不同 run level 的,需要启动的服务的 scripts 放置路径: l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 # 是否允许按下 [ctrl]+[alt]+[del] 就重新开机的设定项目: ca::ctrlaltdel:/sbin/shutdown -t3 -r now # 本机端终端机启动的个数: 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty23:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty45:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 # 在 X Window (RUNLEVEL 5 环境下的启动 script 设定项目: x:5:once:/etc/X11/prefdm -nodaemon 这个文件的语法是这样的:标识符:级别:init 的动作行为:指令项目 1. 标识符:最多四个字符,代表 init 的主要工作项目,只是一个简单的代表说明。
Linux系统启动过程故障排除顺序
故障排除
8
案例二:硬盘扇区错乱
在启动过程中最容易遇到的问题就是硬盘可能有坏道或扇区错乱(数 据损坏)的情况,这种情况多由于异常断电、不正常关机导致。此种 问题发生,在系统启动的时候,屏幕会显示:
Press root password or ctrl+D:
故障排除
9
此时输入root密码系统自动进入单用户模式,输入 “fsck -y /dev/hda6”
其中“title”段指定了GRUB引导的系统:“root”段指定了/boot分 区所在的位置:“kernel”段指定了内核文件所在位置,内核加载 时权限属性为只读(“ro”)以及指定根分区所在位置 (root=LABEL=/);initrd指定了镜像文件所在位置。所以GRUB在引 导时顺序为首先加载/boot分区,然后依次载入内核与镜像文件。
Linux启动过程
6
(4) 按回车键,不需任何口令系统就进入单用户模式
故障排除
7
案例一:root密码忘记
exit退出重启即可。
在单用户模式中,Linux不需要root密码这使更改root密码 非常容易。了解当系统引导进入多用户模式失败时,如何进
入单用户模式,非常重要。
1、 在系统启动过程中,会出现开始界面,按任意键,进入GRUB菜单选项。 若希望以后无此提示,直接进入GRUB菜单选项,删除配置文件grub.conf中 “hiddenmenu”项即可。 2、 按“e”键编辑GRUB引导菜单选项,按“e”键后的GRUB屏幕。通过箭头键下移 到kernel行,并按“e”键 3、在尾行光标处添加single,按回车键返回前一个屏幕,按“b”键进行引导,则系 统自动进入单用户模式,如果要改变root密码,则执行命令:sh-3.1# passwd root更 改成功后,执行命令exit退出重启即可。
win7和ubuntu12.04双系统,修改启动顺序
win7和ubuntu12.04双系统,修改启动顺序刚安装了双系统,分别是windows7(先)和Ubuntu12.04(后)(非wubi安装),. 默认是Linux启动,通过下面的操作可把windows7改为默认启动系统启动ubuntu后,在终端中输入:先备份sudo cp /boot/grub/grub.cfg/boot/grub/grub.cfg.backup修改启动列表:sudo gedit /boot/grub/grub.cfg(注意不是sudo gedit /boot/grub/menu.lst,貌似9.10就改为了grub.cfg)然后找到default 0然后往下看,找你想默认启动的操作系统!修改default 后面的数字,0对应第一个,1对应第二个,依次往下!以下是我的grub.cfg默认是ubuntu!把0改为4就可以了!(升级内核之后数字酌情修改)## 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 ]; thenload_envfiset default="0"if [ ${prev_saved_entry} ]; thenset saved_entry=${prev_saved_entry}save_env saved_entryset prev_saved_entry=save_env prev_saved_entryset boot_once=truefifunction savedefault {if [ -z ${boot_once} ]; thensaved_entry=${chosen}save_env saved_entryfi}function recordfail {set recordfail=1if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi}insmod ext2set root='(hd0,3)'search --no-floppy --fs-uuid --set0ee185d8-a603-4309-97b7-6440643becb7if loadfont /usr/share/grub/unicode.pf2 ; thenset gfxmode=640x480insmod gfxterminsmod vbeif terminal_output gfxterm ; then true ; else# For backward compatibility with versions of terminal.mod that don't# understand terminal_outputterminal gfxtermfifiinsmod ext2set root='(hd0,3)'search --no-floppy --fs-uuid --set0ee185d8-a603-4309-97b7-6440643becb7set locale_dir=($root)/boot/grub/localeset lang=zhinsmod gettextif [ ${recordfail} = 1 ]; thenset timeout=-1elseset timeout=10fi### END /etc/grub.d/00_header ###### BEGIN /etc/grub.d/05_debian_theme ### set menu_color_normal=white/blackset menu_color_highlight=black/light-gray### END /etc/grub.d/05_debian_theme ###### BEGIN /etc/grub.d/10_linux ###menuentry 'Ubuntu,Linux 2.6.32-21-generic' --class ubuntu --class gnu-linux --class gnu --class os {recordfailinsmod ext2set root='(hd0,3)'search --no-floppy --fs-uuid --set0ee185d8-a603-4309-97b7-6440643becb7linux /boot/vmlinuz-2.6.32-21-genericroot=UUID=0ee185d8-a603-4309-97b7-6440643becb7 ro quiet splashinitrd /boot/initrd.img-2.6.32-21-generic}menuentry 'Ubuntu,Linux 2.6.32-21-generic (恢复模式)' --class ubuntu --class gnu-linux --class gnu --class os { recordfailinsmod ext2set root='(hd0,3)'search --no-floppy --fs-uuid --set0ee185d8-a603-4309-97b7-6440643becb7echo '载入Linux ...'linux /boot/vmlinuz-2.6.32-21-genericroot=UUID=0ee185d8-a603-4309-97b7-6440643becb7 ro singleecho '载入引导虚拟磁盘...'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 ext2set root='(hd0,3)'search --no-floppy --fs-uuid --set0ee185d8-a603-4309-97b7-6440643becb7linux16 /boot/memtest86+.bin}menuentry "Memory test (memtest86+, serial console 115200)" {insmod ext2set root='(hd0,3)'search --no-floppy --fs-uuid --set0ee185d8-a603-4309-97b7-6440643becb7linux16 /boot/memtest86+.bin console=ttyS0,115200n8}### END /etc/grub.d/20_memtest86+ ###### BEGIN /etc/grub.d/30_os-prober ###menuentry "Windows 7 (loader) (on /dev/sda1)" {insmod ntfsset root='(hd0,1)'search --no-floppy --fs-uuid --set 6e40b6ff40b6ccd9 chainloader +1}### 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 ###→→此处分割←←上面的自己修改default后面的数字。
Linux-修改内核启动顺序及删除无用内核
Linux-修改内核启动顺序及删除⽆⽤内核问题现象CentOS7开机启动界⾯显⽰多个内核选项原因分析正常情况下,有两个启动项,⼀个是“正常启动”,另⼀个是“救援模式启动”(rescue)。
如果启动项多于2个,说明当前系统有旧内核未删除。
原因是CentOS更新后不会⾃动删除旧内核。
默认以新内核启动,可以在启动选项中临时选择,也可以修改配置永久指定。
⽰例:修改默认启动的内核[root@CentOS-7 ~]# uname -r # 查看当前内核版本3.10.0-693.5.2.el7.x86_64[root@CentOS-7 ~]#[root@CentOS-7 ~]# cat /boot/grub2/grub.cfg |grep "menuentry " # 查看所有可⽤内核menuentry 'CentOS Linux (3.10.0-693.5.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-88ae7d3d-ffaf-4402-9d44-56b6845789e4' { menuentry 'CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-88ae7d3d-ffaf-4402-9d44-56b6845789e4' { menuentry 'CentOS Linux (0-rescue-8405cda22c0b421db40478edcf9c1fb2) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-8405cda22c0b421db40478edcf9c1fb2-advanced-88 [root@CentOS-7 ~]#[root@CentOS-7 ~]# grub2-set-default 'CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)'[root@CentOS-7 ~]#[root@CentOS-7 ~]# grub2-editenv list # 查看内核修改结果saved_entry=CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)[root@CentOS-7 ~]#⽰例:删除⽆⽤内核[root@CentOS-7 ~]# uname -r # 查看当前内核版本3.10.0-693.5.2.el7.x86_64[root@CentOS-7 ~]#[root@CentOS-7 ~]# rpm -qa |grep kernel-[0-9] # 查看全部内核包kernel-3.10.0-693.5.2.el7.x86_64kernel-3.10.0-327.el7.x86_64[root@CentOS-7 ~]#[root@CentOS-7 ~]# yum remove kernel-3.10.0-327.el7.x86_64 # 删除指定的⽆⽤内核Loaded plugins: fastestmirror, langpacksResolving Dependencies--> Running transaction check---> Package kernel.x86_64 0:3.10.0-327.el7 will be erased--> Finished Dependency ResolutionDependencies Resolved=============================================================================================================================================================Package Arch Version Repository Size=============================================================================================================================================================Removing:kernel x86_64 3.10.0-327.el7 @anaconda 136 MTransaction Summary=============================================================================================================================================================Remove 1 PackageInstalled size: 136 MIs this ok [y/N]: yDownloading packages:Running transaction checkRunning transaction testTransaction test succeededRunning transactionErasing : kernel-3.10.0-327.el7.x86_64 1/1Verifying : kernel-3.10.0-327.el7.x86_64 1/1Removed:kernel.x86_64 0:3.10.0-327.el7Complete![root@CentOS-7 ~]#[root@CentOS-7 ~]# rpm -qa |grep kernel-[0-9] # 查看全部内核包kernel-3.10.0-693.5.2.el7.x86_64[root@CentOS-7 ~]#[root@CentOS-7 ~]# cat /boot/grub2/grub.cfg |grep "menuentry "menuentry 'CentOS Linux (3.10.0-693.5.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-88ae7d3d-ffaf-4402-9d44-56b6845789e4' { menuentry 'CentOS Linux (0-rescue-8405cda22c0b421db40478edcf9c1fb2) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-8405cda22c0b421db40478edcf9c1fb2-advanced-88 [root@CentOS-7 ~]#。
Linux命令高级技巧之系统更新与升级
Linux命令高级技巧之系统更新与升级操作系统的更新与升级是保持系统安全性和稳定性的重要步骤。
Linux作为一个开源操作系统,在这个领域具有广泛的应用。
本文将介绍Linux系统更新与升级的高级技巧,旨在帮助读者更好地进行系统维护和管理。
一、概述在开始讨论Linux系统更新与升级之前,先来了解一下为什么需要更新与升级。
随着时间的推移,操作系统会收到各种漏洞和安全威胁的挑战。
为了解决这些问题,开发者会定期发布新的补丁和更新。
通过应用这些更新,系统的性能可以得到改进,同时也可以提高安全性,防止未知漏洞的攻击。
二、系统更新系统更新是指应用补丁和更新程序来修复系统的漏洞和错误。
在Linux上,我们可以使用以下命令来进行系统更新:1. apt-get update该命令会更新本地存储库中可用软件包的最新列表。
在更新之前,务必确保网络连接正常。
2. apt-get upgrade该命令用于升级可用的软件包。
它会自动安装最新版本的软件包,以保持系统与最新补丁的同步。
3. apt-get dist-upgrade该命令比apt-get upgrade更进一步,它可以处理软件包之间的依赖关系,并在必要时删除或添加软件包。
三、内核升级内核是操作系统的核心部分,是与硬件直接交互的重要组件。
为了获得更好的性能和更好的硬件兼容性,有时需要升级内核。
在Linux上,可以使用以下命令来进行内核升级:1. apt-get install linux-image-{version}该命令可以安装指定版本的内核镜像。
在升级内核之前,建议先备份系统,以防止升级过程中出现问题。
2. update-grub该命令会更新系统引导程序Grub的配置文件,将新安装的内核镜像添加到引导菜单中,以便在重启后选择新内核。
四、软件包管理除了系统更新和内核升级,软件包管理也是Linux中重要的一个方面。
下面介绍几个常用的软件包管理工具:1. apt-get install {package}该命令可以安装指定名称的软件包。
Linux操作系统GRUB引导程序配置方法
Linux操作系统GRUB引导程序配置方法1. GRUB 介绍计算机在启动的时候,首先由BIOS中的程序执行自检,自检通过后,就根据CMOS 的配置找到第一个可启动磁盘的MBR中的Boot Loader程序(一般在启动盘的第一个物理扇区,占416字节),并把控制权交给Boot Loader,由Boot Loader进一步完成操作系统内核的加载。
当Boot Loader找到内核之后,就把控制权交给操作系统内核,由内核继续完成系统的启动。
可以看出,Boot Loader 是计算机启动中第二个要执行的程序,它是引导操作系统的关键程序。
可以引导操作系统的Boot Loader主要有LiLo、GRUB以及Windows下的MBR程序。
其中,GRUB是目前使用最为广泛,并且非常优秀的一款启动引导程序。
(1) GRUB特性q 提供了图形和文本两种操作接口q 提供文本格式可手工修改的配置文件q 支持动态加载需要的模块q 可以移植到不同的平台上q 支持国际化语言,如英文,中文,日文汉文等多字节语言q 跨平台的安装,允许从另一个平台上安装GRUBq 支持rescue模式,可用于系统无法引导的情况q 支持多种可执行文件格式,支持各种a.out格式和ELF格式q 多文件系统识别。
如BSD FFS,DOS FAT16,FAT32和Linux ext2fsq 支持压缩文件的解压缩。
能够解压缩被gzip压缩的文件q 能够使用BIOS所检测到的全部RAM空间q 支持硬盘的LBA模式,能够访问8GB以外的全部硬盘空间q 支持网络引导,可以通过TFTP协议从网络上得到操作系统映象文件并引导(2) GRUB对设备的命名首先,GRUB对设备的命名必须包含在小括号( )内;其次,GRUB不区分IDE硬盘和SCSI 硬盘,统一使用hdx,其中x指定BIOS中硬盘的编号,并从0开始计数,而且IDE硬盘编号小于 SCSI硬盘;第三,GRUB用fdx指定软盘设备,x是软盘驱动器号。