linux grub 使用
linux kernel 格式之 vmlinux、zImage、bzImage、vmlinuz、uImage
vmlinux 是编译出来的未经压缩的原始内核文件,是linux接受的可执行文件格式(ELF、COFF),vm 是 Virtual Memor
y 的缩写,与较老的DOS系统只有640K内存限制相比,linux 支持虚拟内存,linux可以使用硬盘空间作为虚拟
内存,因而得名 vm。
zImage 是由gzip压缩vmlinux文件,并加上一段解压启动代码得到的压缩文件,只能从0X00地址运行。
bzImage 表示 big zImage,bzImage 解压缩内核到高端内存(1M以上),zImage 解压缩内核到低端内存(第一个640K
),如果内核较小,可以采用 zImage 或 bzImage,内核较大就应该采用 bzImage
vmlinuz 是 zImage、bzImage的统称,编译内核时通过以下两种方式生成
1. 先make zImage,再 cp /usr/src/linux-2.4/arch/i386/linux/boot/zImage /boot/vmlinuz
2. 先make bzImage,再 cp /usr/src/linux-2.4/arch/i386/linux/boot/bzImage /boot/vmlinuz
uImage 是U-boot使用的映像文件,使用工具 mkimage 在 zImage 文件头部补加长度为0X40的头信息,该头部信息说
明了该映像文件的类型、加载位置、生成时间、大小等信息,即从uImage的0x40位置开始的内容与zImage
、bzImage是一样的
GRUB 是一款多操作系统启动管理器,是 GRand Unified Bootloader 缩写,它可以从 FAT、minix、FFS、ext2、
ReiserFS分区读取内核,即使grub菜单配置不正确,仍可以通过其控制台设置内核参数来引导系统
GRUB 2 笔记
grub 2 的配置文件主要包括 /etc/default/grub 和 /etc/grub.d/ 下的各文件,同样用 fd 表示软盘、hd 表示硬盘(包括 ID
E、SCSI 硬盘),设备编号从0开始、分区编号从1开始,主分区从 1-4,逻辑分区从 5 开始,例如
(fd0) 表示整个软盘
(hd0, 1) 表示BIOS中第1个硬盘的第1个分区
(hd0, 5)/boot/vmlinuz 表示BIOS中第1个硬盘的第1个逻辑分区下 boot 目录下的 vmlinuz 文件
GRUB 2 命令介绍
ls
ls (hd0, 5)/ 显示该分区的所有文件
ls -l 列出当前所有设备,如(hd0)、(hd0, 1)、(hd0, 5)、(hd1)、(hd1, 1)、(hd1, 2) 等
ls / 列出当前设为 root 的分区下的文件
ls (hd1, 1) 列出(hd1, 1)分区下的文件
root
指定用于启动系统的分区,即根目录。set root 就是设置 root 这个环境变量的值
root (hd0, x) 挂载第1个硬盘的第 x 个分区,可以通过 ls 查看这个分区的内容
loopback
建立回放设备,举例如下,使用 lo0 设备访问 aa.iso 里内容,从aa.iso里的软盘映像中启动
loopback lo0 (hd0, 3)/aa.iso 利用 grub 回放设备挂载 iso,这样就不用提取 casper 文件夹
linux (lo0)/memdisk
initrd (lo0)/aa.img
loopback -d lo0 删除回放设备 lo0
search
search -f /ntldr 列出根目录里包含 ntldr 文件的分区,返回分区号
search -l LINUX 列出 label 是 LINUX 的分区
search --set -f /ntldr 搜索根目录包含 ntldr 文件的分区并设为 root,如果存在多个分区包含 ntldr 文件,
则 set 不起作用
kernel
用来加载 linux 内核,举例如下
kernel /boot/bzImage ro ramdisk_size=65536 root=/dev/ram0
"/boot/bzImage" 指定加载哪个内核
"root=" 指定了哪个分区作为根设备,"/dev/ram0" 是从 linux 角度讲的,内核要从根设备上
读取一些文件
linux
该命令是用来取代 grub 的 kernel 命令的,加载 linux 内核,举例如下
linux /boot/vmlinuz-XXX root=UUID=xxx quiet splash rw init=/bin/bash
"/boot/vmlinuz-XXX" 指定加载哪个内核
"root=UUID=xxx" 指定了哪个分区作为根设备,也可以使用 "root=/dev/ram0"
"quiet" 内核启动时,简化提示信息
"splash" 加载时启动进度条提示,代替 init 的字符提示
"rw init=/bin/bash" 让 init 进程执行 /bin/bash,无密码进入 root 单用户模式,执行一些救援工作
rw 表示读写权限,忘记添加该参数的话,root 用户也不能执行写操作
initrd
initial ram disk 缩写,先加载虚拟根文件系统,再加载硬盘上的根文件系统,举例如下
initrd /boot/initrd.img-XXX 使用名称为"/boot/initrd.img-XXX"的文件在内存中构造虚拟的根文件系统,以便
于内核检测完硬件信息后载入必需的模块等等
如果 grub 配置中丢失了该动作,屏幕会出现 kernel panic 提示,因为 initrd.img-XXX 文件在开机时给 kernel 提
供必需的设备驱动(modules)文件,否则 kernel 不能把硬件挂载到根文件系统
linux grub 使用的更多相关文章
- Linux GRUB 2及修改默认启动项
The GRUB 2 boot loader makes sure that you can boot Linux. GRUB 2 is installed in the boot sector of ...
- CentOS 6.5中linux grub修复
在使用Linux的过程中,难免会出现开机提示grub >而无法启动,可能是系统中/boot/grub文件丢失等原因造成的,当出现此问题的时候只要系统分区没有格式化一般是可以修复的,下面就以虚拟 ...
- linux grub
grub 是目前使用最广泛的linux引导装载程序,旧的lilo这个引导装载程序很少见了,grub优点: 支持较多哦的文件系统,可以使用grub主程序在文件系统中查找内核文件名 启动的时候,可以自行编 ...
- Linux——GRUB简单学习笔记
GRUB的配置文件默认为 :/boot/grub/grub.conf # ls -l /etc/grub.conf GRUB配置选项: default定义缺省启动系统 timeout定义缺省等待时间 ...
- linux grub启动密码验证设置
1.认识启动配置选项 [root@server5 ~]# cat /boot/grub/grub.conf # grub.conf generated by anaconda # # Not ...
- Linux:grub密码设置与修改
grub密码设置与修改 默认GRUB启动参数可以的进入单用户模式从而修改root密码,如果想要给GRUB菜单设置密码,可以修改/etc/grub.conf文件 (/boot/grub/grub.con ...
- Linux Grub系统加密、破密、修复
一.在重新启动系统时候按任意键进入 grub界面 Grub加密 一.title前的密码 修改grub.conf 这种加密只是在用户要进入grub界面的时候提示要输入密码,但是可以正常进入系统,有没有 ...
- Linux GRUB手动安装方法详解
需要手工安装 GRUB 主要有两种情况: Linux 系统原先不是使用 GRUB 作为引导程序而现在想要使用 GRUB 来作为引导程序: MBR 中的引导程序被覆盖,需要在 MBR 中重新安装 GRU ...
- Linux grub命令
一.简介 GNU GRUB(GRand Unified Bootloader简称"GRUB")是一个来自GNU项目的多操作系统启动程序.GRUB是多启动规范的实现,它允许用户可以在 ...
随机推荐
- JVM调优思路
一.jvm内存调优 (Gc 和 Full gc) hotspot -Xms40m 最小堆内存 -Xmx512m 最大值内存 -verboose:gc -XX:PrintGCDetails -XX: ...
- distance field(占坑
signed distance field https://kosmonautblog.wordpress.com/2017/05/09/signed-distance-field-rendering ...
- material.setTexture("sampler",tex) assetbundle 下失效
做镜面反射本来写很顺 在手机上测的时候 发现settexture这里绑不上 查好久 是assetbundle的缘故 因为动态加载的 obj用了mat01 我在反射脚本里动态修改mat01而不是拿 re ...
- POJ 1511 链式前向星+SPFA
#include<iostream> #include<cstdio> #include<cstdlib> using namespace std; const i ...
- 教你用webgl快速创建一个小世界
收录待用,修改转载已取得腾讯云授权 作者:TAT.vorshen Webgl的魅力在于可以创造一个自己的3D世界,但相比较canvas2D来说,除了物体的移动旋转变换完全依赖矩阵增加了复杂度,就连生成 ...
- hadoop运行报错Wrong FS: hdfs:/, expected: file:///
内容源自:https://blog.csdn.net/u014470581/article/details/51480600 报错信息: Exception in thread "main& ...
- C#/Sqlite-SQLite PetaPoco django 打造桌面程序
为什么是 SQLite? 在以前的程序中, 我通常会使用 MySQL. 如果使用你程序的用户是一个软件小白, 而且远在另一个城市, 那么让她安装和部署 MySQL 将是一场噩梦: 她需要配置服务, 面 ...
- [Android] Android工程以jar包形式向第三方应用提供服务
参考: http://www.cnblogs.com/0616--ataozhijia/p/4094952.html 以API 19为例: 系统默认提供的 android.jar整体大小为: 21.8 ...
- redis学习笔记——RDB和AOF持久化一
为防止数据丢失,需要将 Redis 中的数据从内存中 dump 到磁盘,这就是持久化.Redis 提供两种持久化方式:RDB 和 AOF.Redis 允许两者结合,也允许两者同时关闭. RDB 可以定 ...
- 【树莓派】Box相关手册-4 Web代理
在盒子上安装配置web代理,通过此代理,用户访问盒子的内网地址实现web portal访问.目前我们使用tinyproxy作为web代理 安装: >sudo apt-get install ti ...