文档库 最新最全的文档下载
当前位置:文档库 › GRUB详解

GRUB详解

GRUB详解
GRUB详解

是不是感觉很简单啊!再来看一看windows的定义段吧。

这里,我添加了一项来引导Windows2000。要完成此操作,GRUB 使用了“链式装入器”(chainloader)。链式装入器从分区(hd0,0) 的引导记录中装入win2000 自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因-- 它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的DOS 或Windows。

我的RedHat linux在硬盘主引导分区装了lilo,所以也用了chainloader。

GRUB的配置文件要简单就这么简单,如果你要更个性化一点,试一试把“color light-gray/blue ”加在default语句的下面,下一次启动GRUB时,看看有什么变化,再试一试“color light-blue/red",惊喜吗?有趣吧!

######################

# GRUB的交互性#

######################

GRUB 最好的优点之一就是其强健的设计-- 在不断使用它时请别忘了这点。如果更新内核或更改它在磁盘上的位置,不必重新安装GRUB。事实上,如有必要,只要更新menu.lst 文件即可,一切将保持正常。

只有少数情况下,才需要将GRUB 引导装入器重新安装到引导记录。首先,如果更改GRUB root 分区的分区类型(例如,从ext2 改成ReiserFS),则需要重新安装。或者,如果更新/boot/grub 中的stage1 和stage2 文件,由于它们来自更新版本的GRUB,很有可能要重新安装引导装入器。其它情况下,可以不必理睬!

GRUB的最大的特点就是交互性特别强。在开机时,按一下“c”,将进入GRUB 控制台。显示如下:

GRUB version 0.5.96.1 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB

lists possible command completions. Anywhere else TAB lists the possible

completions of a device/filename. ]

grub>

欢迎使用GRUB 控制台。现在,再研究命令:

我将通过GRUB 控制台绕过lilo来启动RedHat linux,

grub> root (h

现在,按一次Tab 键。如果系统中有多个硬盘,GRUB 将显示可能完成的列表,从"hd0" 开始。如果只有一个硬盘,GRUB 将插入"hd0,"。如果有多个硬盘,继续进行,在("hd2") 中输入名称并在名称后紧跟着输入逗号,但不要按Enter 键。部分完成的root 命令看起来

如下:

grub> root (hd0,

现在,继续操作,再按一次Tab 键。GRUB 将显示特定硬盘上所有分区的列表,以及它们的文件系统类型。在我的系统中,按Tab 键时得到以下列表:

grub> root (hd0, (tab,按tab一下键)

Possible partitions are:

Partition num: 0, Filesystem type is fat, partition type 0x6

Partition num: 2, Filesystem type is ext2fs, partition type 0x83

Partition num: 4, Filesystem type unknown, partition type 0x7

Partition num: 5, Filesystem type is ext2fs, partition type 0x83

Partition num: 6, Filesystem type is fat, partition type 0xb

Partition num: 7, Filesystem type is fat, partition type 0xb

Partition num: 8, Filesystem type is ext2fs, partition type 0x83

Partition num: 9, Filesystem type unknown, partition type 0x82

如您所见,GRUB 的交互式硬盘和分区名称实现功能非常有条理。这些,只需要好好理解GRUB 新奇的硬盘和分区命名语法,然后就可以继续操作了

grub> root (hd0,

现在已安装了root 文件系统,到装入内核的时候了

grub> kernel /boot/vmlinuz-2.4.2 root=/dev/hda5 ro

[Linux-bzImage, setup=0x1200, size=0xe1a30]

您已经安装了root 文件系统并装入了内核。现在,可以引导了。只要输入"boot",Linux 引导过程就将开始。是不是很cool啊,GRUB的menu.lst更像一个linux下的脚本程序。

#####################

# GRUB启动盘#

#####################

要制作引导盘,需执行一些简单的步骤。首先,在新的软盘上创建ext2 文件系统。然后,将其安装,并将一些GRUB 文件复制到该文件系统,最后运行"grub" 程序,它将负责设置软盘的引导扇区。准备好了吗?

将一张空盘插入1.44MB 软驱,输入:

# mke2fs /dev/fd0

创建了ext2 文件系统后,需要安装该文件系统:

# mount /dev/fd0 /mnt/floppy

现在,需要创建一些目录,并将一些关键文件(原先安装GRUB 时已安装了这些文件)复制到软盘:

# mkdir /mnt/floppy/boot

# mkdir /mnt/floppy/boot/grub

# cp /boot/grub/stage1 /mnt/floppy/boot/grub

# cp /boot/grub/stage2 /mnt/floppy/boot/grub

再有一个步骤,就能得到可用的引导盘。

在linux bash中,从root 用户运行“grub”,该程序非常有趣并值得注意,因为它实际上是GRUB 引导装入器的半功能性版本。尽管Linux 已经启动并正在运行,您仍可以运行GRUB 并执行某些任务,而且其界面与使用GRUB 引导盘或将GRUB 安装到硬盘MBR 时看到的界面(即GRUB控制台)完全相同。

在grub> 提示符处,输入:

grub> root (fd0)

grub> setup (fd0)

grub> quit

现在,引导盘完成了。

如果要把GRUB装到硬盘上,也很容易。这个过程几乎与引导盘安装过程一样。首先,需要决定哪个硬盘分区将成为root GRUB 分区。在这个分区上,创建/boot/grub 目录,并将stage1 和stage2 文件复制到该目录中,可以通过重新引导系统并使用引导盘,或者使用驻留版本的GRUB 来执行后一步操作。在这两种情况下,启动GRUB,并用root 命令指定root 分区。例如,如果将stage1 和stage2 文件复制到hda5 的/boot/grub 目录中,应输入"root (hd0,4)"。接着,决定在哪里安装GRUB -- 在硬盘的MBR,或者如果与GRUB 一起使用另一个“主”引导装入器,则安装在特定分区的引导记录中。如果安装到MBR,则可以指定整个磁盘而不必指定分区,如下(对于hda):

grub> setup (hd0)

如果要将GRUB 安装到/dev/hda5 的引导记录中,应输入:

grub> setup (hd0,4)

现在,已安装GRUB。引导系统时,应该立即以GRUB 的控制台方式结束(如果安装到MBR)。现在,应创建引导菜单,这样就不必在每次引导系统时都输入那些命令。

小结:在这里只是介绍了GRUB 的一部分。例如,可以使用GRUB 来执行网络引导,引导BSD 文件系统,或更多操作。另外,GRUB 有许多配置和安全性命令也很有用。如需所有GRUB 功能的完整描述,请阅读GRUB 出色的GNU 文档。只要在bash 提示中输入"info grub" 就可以阅读该文档。

补充:

在刚开机时,由于80x86 的特性CS ( Code Segment ) 这个寄存器中全部都放着1 ,而IP ( Instruction Pointer ) 这个寄存器中全部都放着0 ,换句话说,CS=FFFF 而IP=0000 。此时,CPU 就依据CS 及IP 的值,到FFFF0H 去执行那个地方所放的指令。这时候,由于FFFF0H 已经到了高位址的顶端,所以,FFFF0H 这个地方,总是会放一个JMP 指令,跳到比较低的位址。接著,ROM BIOS 就会作一些检查的动作像内存、键盘等...... 并在我们俗称的UMB ( Upper Memory Block )之中扫描,看看是否有合法的ROM 存在( 比如SCSI 卡上的ROM ) 。假如有就到里面去执行一些东西,执行完之后再继续刚才的行程。到了最后,读取硬盘上的第一个sector 。在这里,我假设各位由硬盘启动。因此,就硬盘的构造而言,它的第一个sector 称为MBR ( Master Boot Record ) 。因为一个sector 是512 bytes ,而MBR 这512 bytes 可分为两个部份,第一个部份为Pre-Boot 区,占了446 bytes;第二部份是Partition Table ,占了66 bytes 。Pre-Boot 区的作用之一,就是去看看哪个Partition 被标成Active ,然後去读那个Partition 的Boot区。

在Linux 的启动方面, 一般人最常把LILO或Grub 放在MBR 或Superblock ,假如你把LILO或Grub 放在MBR ,那很明显的,当读取到MBR 的时候,LILO 或Grub就被执行。此时,你的屏幕上会出现启动选项接着,就进行Load Kernel的动作。在另一方面来说,,假如你把LILO或Grub安装在Superblock , 通常你还会有一个管理开机的程序,也许是放在MBR ( 像OSBS ) 或者是放在一个单独的Partition ( 像OS/2 的Boot Manager ) 。再由这个管理开机的程式去读取LILO或Grub ,进而做Load Kernel 的动作。到了目前为止, Kernel 被load 到memory 中之后,接着进行一连串probe 周边的动作,像串口、并口、软盘、声卡、硬盘、光驱等...... 接着mount root partition 。在这之后kernel 会起动init 这个process 。init 这个process 的PID 为1 ,它是所有process 的祖先。

grub命令及使用详解

一.全部命令索引: background 设置图形模式下的背景色。 blocklist 输出文件的块清单标记。 boot 引导已加载的操作系统或扇区链式加载器。bootp 通过BOOTP初试化网络设备。 cat 显示指定文件的内容。 chainloader 加载扇区链式加载器。 clear 清屏幕。 cmp 比较两个文件, 并且报告两者之间的不同的信息。color 改变菜单的颜色。 configfile 将指定文件作为配置文件予以加载。 debug 打开/关闭除错模式。 default 把NUM 项菜单设为缺省值。 device 声明BIOS驱动器对应的实际物理设备。 dhcp 通过DHCP初试化网络设备。 displayapm 显示APM BIOS 的相关信息。 displaymem 显示GRUB 所判断到的当前系统的内存分布,包括所有物理内存区域。 dump 显示诸多文件的内容。 embed 如果设备是个驱动器, 则将Stage 1.5嵌入到主引导扇区之后。 fallback 如果调用当前的菜单项时出现错误,则转移到NUM 项后重试 find 在所有分区上查找文件名, 并显示包含该文件的设备。如果设置了参数--set-root,则在找到第一个匹配后马上停止,并且把该设备设为根。 fontfile 指定中文字体文件,并切换到简体中文显示方式。foreground 设置图形模式下的前景色。 fstest 切换文件系统的试验模式。 geometry 输出驱动器的相关信息。 gfxmenu 使用FILE 中的图形菜单。 halt 关闭系统。 help 显示内部命令的帮助信息。 hiddenmenu 隐藏菜单。 hide 通过在分区类型上置隐藏标志,隐藏指定分区。 ifconfig 指定IP 地址, 子网掩码, 网关和服务器地址。不带参数时,将显示当前的网络配置。 impsprobe 通过一些循环操作,侦测出符合Intel 多处理器规范 1.1/1.4 的CPUs,以便于发挥其更好的效能。 initrd 加载Linux格式的初始化虚拟盘, 并设置必要的参数。 install 安装STAGE1到指定设备上,安装加载STAGE2需要的块列表到STAGE2上。 ioprobe 侦测指定设备的I/O 端口号。 grub命令及使用详解

DISM部署映像服务和管理工具详细参数

DISM 部署映像服务和管理工具 版本: 6.1.7600.16385 DISM.exe [dism_options] {WIM_command} [] DISM.exe { /Image: | /Online} [dism_options]{servicing_command} [] 描述:DISM 枚举、安装、卸载、配置和更新Windows 映像中的功能和程序包。可以使用的命令取决于提供的映像以及映像处于脱机状态还是正在运行。 WIM 命令: /Get-MountedWimInfo 显示有关安装的WIM 映像的信息。 /Get-WimInfo 显示有关WIM 文件中的映像的信息。 /Commit-Wim 保存对安装的WIM 映像的更改。 /Unmount-Wim 卸载安装的WIM 映像。 /Mount-Wim 从WIM 文件安装映像。 /Remount-Wim 恢复孤立的WIM 安装目录。 /Cleanup-Wim 删除与损坏的安装的WIM 映像关联的资源。 映像规格: /Online 以正在运行的操作系统为目标。 /Image 指定脱机Windows 映像的根目录的路径。 DISM 选项: /English 用英文显示命令行输出。 /Format 指定报告输出格式。 /WinDir 指定Windows 目录的路径。 /SysDriveDir 指定名为BootMgr的系统加载程序文件的路径。 /LogPath 指定日志文件路径。 /LogLevel 指定日志(1-4)中所示的输出级别。 /NoRestart 取消自动重新启动和重新启动提示。 /Quiet 取消除错误消息之外的所有输出。 /ScratchDir 指定暂存目录的路径。 WIM 命令: 详细介绍、格式及示例 WIM 命令: 详细介绍、格式及示例 /Get-MountedWimInfo /Get-MountedWimInfo 显示有关安装映像的信息,包括映像是否可用于提供服务,是否需要重新安装,或者是否为有效映像。 示例:DISM.exe /Get-MountedWimInfo /Get-WimInfo /Get-WimInfo /WimFile: [ /Index: | /Name:] 显示有关指定的WIM 文件中包含的映像的信息。 示例: DISM.exe /Get-WimInfo /WimFile:C:\test\images\myimage.wim DISM.exe /Get-WimInfo

DISM命令应用大全

DISM.exe [dism_options] {WIM_command} [] DISM.exe {/Image: | /Online} [dism_options] {servicing_command} [] 描述: DISM 枚举、安装、卸载、配置和更新Windows 映像中的功能和程序包。可以使用的命令取决于提供的映像以及映像处于脱机状态还是正在运行。 WIM 命令: /Get-MountedWimInfo - 显示有关安装的WIM 映像的信息。 /Get-WimInfo - 显示有关WIM 文件中的映像的信息。 /Commit-Wim - 保存对安装的WIM 映像的更改。 /Unmount-Wim - 卸载安装的WIM 映像。 /Mount-Wim - 从WIM 文件安装映像。 /Remount-Wim - 恢复孤立的WIM 安装目录。 /Cleanup-Wim - 删除与损坏的安装的WIM 映像关联的资源。 实例: ------------------------------------------------------------------------------------- /Mount-Wim /WimFile: {/Index: | /Name:} /MountDir: [/readonly] 将WIM 文件安装到指定的目录以便该文件可用于服务。/ReadOnly 设置具有只读权限的安装映像。 示例: DISM.exe /Mount-Wim /WimFile:C:\test\images\myi mage.wi m /index:1 /MountDir:C:\test\offline DISM.exe /Mount-Wim /WimFile:C:\test\images\myi mage.wi m /index:1 /MountDir:C:\test\offline /ReadOnly ------------------------------------------------------------------------------------- /ScratchDir: 指定用来解压缩服务文件的临时目录。此目录必须存在。 如果未设置,则将使用此临时目录。 示例: DISM.exe /Image:C:\test\offline /scratchdir:D:\Scratch ------------------------------------------------------------------------------------- DISM.exe /Image:C:\test\offline /? ------------------------------------------------------------------------------------- 映像规格: /Online - 以正在运行的操作系统为目标。 /Image - 指定脱机Windows 映像的根目录的路径。 DISM 选项: /English - 用英文显示命令行输出。 /Format - 指定报告输出格式。 /WinDir - 指定Windows 目录的路径。 /SysDriveDir - 指定名为BootMgr 的系统加载程序文件的路径。 /LogPath - 指定日志文件路径。 /LogLevel - 指定日志(1-4)中所示的输出级别。 /NoRestart - 取消自动重新启动和重新启动提示。 /Quiet - 取消除错误消息之外的所有输出。 /ScratchDir - 指定暂存目录的路径。 若要获得有关这些DISM 选项及其参数的详细信息,请在紧挨着/? 之前指定一个选项。

linux grub 引导启动过程详解

linux grub 引导启动过程详解 2008-01-08 17:18 这几天看了很多文档,算是对linux的启动过程有了比较细致的了解. 网上有很多文章谈到这方面的内容,但总觉得没有一篇完全的解析linux启动的 细节,下面是我小弟在学习的过程中总结出来的一些东东.这个是完整的linux启动过程, 不涉及内核,但是我觉得比较详细哦. (由于本人比较懒,这一段是从网上抄的) 机器加电启动后,BIOS开始检测系统参数,如内存的大小,日期和时间,磁盘 设备以及这些磁盘设备用来引导的顺序,通常情况下,BIOS都是被配置成首先检查 软驱或者光驱(或两者都检查),然后再尝试从硬盘引导。如果在这些可移动的设 备中,没有找到可引导的介质,那么BIOS通常是转向第一块硬盘最初的几个扇区, 寻找用于装载操作系统的指令。装载操作系统的这个程序就是boot loader. linux里面的boot loader通常是lilo或者grub,从Red Hat Linux 7.2起,GRUB( GRand Unified Bootloader)取代LILO成为了默认的启动装载程序。那么启动的时候grub是如何被载入的呢 grub有几个重要的文件,stage1,stage2,有的时候需要stage1.5.这些文件一般都 在/boot/grub文件夹下面.grub被载入通常包括以下几个步骤: 1. 装载基本的引导装载程序(stage1),stage1很小,网上说是512字节,但是在我的系统上用du -b /boot/grub/stage1 显示的是1024个字节,不知道是不是grub版本不同的缘故还是我理解有误.stage1通常位于主引导扇区里面,对于硬盘就是MBR了,stage1的主要功能就是装载第二引导程序(stage2).这主要是归结于在主引导扇区中没有足够的空间用于其他东西了,我用的是grub 0.93,stage2文件的大小是107520 bit. 2. 装载第二引导装载程序(stage2),这第二引导装载程序实际上是引出更高级的功能, 以允许用户装载入一个特定的操作系统。在GRUB中,这步是让用户显示一个菜单或是输入命令。由于stage2很大,所以它一般位于文件系统之中(通常是boot所在的根 分区). 上面还提到了stage1.5这个文件,它的作用是什么呢你到/boot/grub目录下看看, fat_stage_1.5 e2fs_stage_1.5 xfs_stage_1.5等等,很容易猜想stage1.5和文件系统 有关系.有时候基本引导装载程序(stage1)不能识别stage2所在的文件系统分区,那么这 时候就需要stage1.5来连接stage1和stage2了.因此对于不同的文件系统就会有不同的stage1.5.但是对于grub 0.93好像stage1.5并不是很重要,因为我试过了,在没有stage1.5 的情况下, 我把stage1安装在软盘的引导扇区内,然后把stage2放在格式化成ext2或者fat格式的软盘内,启动的时候照常引导,并不需要e2fs_stage_1.5或者fat_stage_1.5. 下面是我的试验: #mkfs.ext2 /dev/fd0 #mount -t ext2 /dev/fd0 /mnt/floppy #cd /mnt/floppy #mkdir boot #cd boot #mkdir grub (以上三步可用mkdir -p boot/grub命令完成) #cd grub #cp /boot/grub/{stage1,stage2,grub.conf} ./ #cd; umount /mnt/floppy

DISM使用教程

写在前面的话:本教程以原版win7旗舰版(如用其它版本也可)为例来为大家介绍怎样利用DISM++工具整合驱动和预补丁至镜像中的具体步骤。为了使大家能够更直观的了解,从而更好的使用此工具,本篇博文将以图文并茂的方式来展示每一步的操作,希望对大家有所帮助。 在win7/8/10系统中,有个命令大家也许并不会感到陌生,它就是DISM(部署映像服务和管理deployment image servicing and management的缩写)命令。这个命令功能很强大,它可以用于安装、卸载、配置和更新脱机Windows(R)映像和脱机Windows预安装环境(也就是Windows PE)映像中的功能和程序包;还可以检查和修复系统映像文件。不过在本篇博文中并不是要用到DISM的命令行模式,因为需要用到的命令行太多且操作繁琐,一旦操作错误必将导致整体的失败。所以今天我们要请出它的“助手”——DISM++最强的实用工具!它是全球第一款基于CBS(基于组件的服务引用Component Based Servicing Reference的缩写)的DISM GUI实现,但并不依赖系统自带的DISM,属于开源版本。如果大家想要了解更多,可以查看更多信息。闲言少叙言归正传,下面进入正题:整合驱动和预补丁的步骤。 如果您想要整合win7镜像,在开始之前需要做如下的准备: 1.DISM++工具(点击上面链接即可进入网站下载)也可ZIP压缩包。 2.原版windows7镜像,这里提供和。若想获取win7其它系统的下载,可以查看。 接下来就是开始整合的进程了。首先将DISM++工具解压缩到任意目录,之后您将会看到 按照物理机上安装的系统是X86还是X64而定双击对应的DISM++可执行文件。都会看到如下图所示的界面

GRUB2启动代码详解

GRUB2的介绍 目前Grub1已经停止开发了,不再增加新的功能,所有的开发都转移到Grub2上了,Grub 2 是新一代的Grub,它实现了一些Grub中所没有的功能:1.模块化设计 不同于Grub的单一内核结构,Grub 2 的功能分布在很多的小模块中,并且能在运行时动态装载和卸除。 2.支持多体系结构Grub 2可支持PC(i386), MAC(powerpc)等不同的体系结构,而且支持最新的EFI架构。 3.国际化的支持Grub 2 可以支持非英语的语言。 4.内存管理Grub 2 有真正的内存管理系统。 5.脚本语言Grub 2 可以支持脚本语言,例如条件,循环,变量,函数等。 当然,Grub 2正处在开发阶段,因此以上的某些功能可能现阶段还不是很完善。 如果你熟悉Grub2,应该可以看明白里面的内容。要注意的是: a、timeout, default等参数用变量来储存 b、菜单项由menuentry定义 c、第1个分区是(hd0,1)而不是(hd0,0) 理论的东西说多了大家估计也晕,举个简单的例子:在grub1中,要改变启动背景的时候只能选择支持640X480分辨率并且格式也只能是.xpm的图片,分辨率稍微大点的图就显示不出来了,但grub2不存在这个问题,它有更绚丽的菜单界面,grub2默认.png .tga .jpeg等很多种格式的图片都支持,而且支持的图片分辨率也更大。

GRUB2启动代码分析 # # 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 ]; then #如果“$prefix/grubenv”目录不为空 load_env #从grubenv文件中加载环境变量 fi set default="0" #启动第1项# if [ ${prev_saved_entry} ]; then #如果prev_saved_entry的值不为空 set saved_entry=${prev_saved_entry} #将saved_entry的值设置成变量prev_saved_entry的值。 save_env saved_entry #将变量saved_entry保存到grubenv文件中。 set prev_saved_entry= #将prev_saved_entry的值设置为空 save_env prev_saved_entry #将prev_saved_entry保存到grubenv文件中 set boot_once=true #将boot_once的值设置为真(貌似是为了标志已经设置过启动的相关环境变量了)fi function savedefault {

DISM封装系统工具

DISM封装系统工具 大家知道,Windows Vista采用的封装工具是ImageX,与之相关的.wim文件成了新的映像标准。殊不知,还是同样的映像格式,微软在Windows 7中推出了新的封装工具——Dism。这个工具对于大多数用户应该来说比较陌生,本文将列举几个Dism工具的应用实例,和大家一起体验一下这款全新的映像部署工具。 1、获取Dism命令参数 Dism有很多命令参数,适用于不同的应用需求。在Windows 7的命令行下执行“dism /?”可获取其命令参数,为了便于查看我们可在命令后添加通道符号即“dism /? | more”以分页显示其命令参数。其中我们最常用的参数是“/Mount-Win”、“/Unmount-Win”、“/Remount-Win”,其作用分别是挂接映像、卸载映像、移除映像目录。另外,“/Get-MountedWinInfo”和“/Get-WinInfo”分别是获取被加载的映像的信息和映像文件的信息,这两个参数在进行映像部署是非常重要。当然,Dism还有其它更复杂的参数大家可通过其后的描述了解其作用,笔者就不一一列举了,我们开始实例演示。(图1)

图1 Dism命令参数 2、获取Dism映像信息 我们知道Windows 7(Windows Vista也是)的映像中封装了当前系统的所有版本,在进行系统部署前首先要确定安装那一个版本,因为你购买的密钥只能适用于某个版本,所以获取映像的封装信息是必要的。在命令行下执行“dism /get-wininfo /wimfile:c:\test\images\install.wim”即可。需要说明的是:上面的命令/get-wininfo是关键参数,其作用是获取映像的封装信息;参数/wimfile:的后面是映像文件的路径。命令执行后,我们可以看到该系统映像中封装了4个系统版本,分别是HOMEBASIC(家庭普通版)、HOMEPREMIVE(家庭高级版)、BUSINESS(商业版版)、ULTIMATE(旗舰版)。同时,我们也可以看到每一个版本的大小。(图2)

uboot启动代码详解

·1 引言 在专用的嵌入式板子运行GNU/Linux 系统已经变得越来越流行。一个嵌入式Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序。固化在固件(firmware)中的boot 代码,也就是Boot Loader,它的启动通常分为两个阶段。 2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。 3. 文件系统。包括根文件系统和建立于Flash 内存设备之上文件系统,root fs。 4. 用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI 有:MicroWindows 和MiniGUI 等。 引导加载程序是系统加电后运行的第一段软件代码。回忆一下PC 的体系结构我们可以知道,PC 机中的引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR 中的OS Boot Loader(比如,LILO 和GRUB 等)一起组成。BIOS 在完成硬件检测和资源分配后,将硬盘MBR 中的Boot Loader 读到系统的RAM 中,然后将控制权交给OS Boot Loader。Boot Loader 的主要运行任务就是将内核映象从硬盘上读到RAM 中,然后跳转到内核的入口点去运行,也即开始启动操作系统。 而在嵌入式系统中,通常并没有像BIOS 那样的固件程序(注,有的嵌入式CPU 也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由Boot Loader 来完成。比如在一个基于ARM7TDMI core 的嵌入式系统中,系统在上电或复位时通常都从地址 0x00000000 处开始执行,而在这个地址处安排的通常就是系统的Boot Loader 程序。·2 bootloader简介 简单地说,Boot Loader (引导加载程序)就是在操作系统内核运行之前运行的一段小程序,它的作用就是加载操作系统, 实现硬件的初始化,建立内存空间的映射图,为操作系统内核准备好硬件环境并引导内核的启动。如上图所示的那样在设备的启动过程中bootloader位于最底层,首先被运行来引导操作系统运行,很容易可以看出bootloader是底层程序所以它的实现严重地依赖于硬件,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。尽管如此,一些功能强大、支持硬件环境较多的BootLoader也被广大的使用者和爱好者所支持,从而形成了一些被广泛认可的、较为通用的的bootloader实现。 2.1 Boot Loader 所支持的CPU 和嵌入式板 每种不同的CPU 体系结构都有不同的Boot Loader。有些Boot Loader 也支持多种体系结构的CPU,比如U-Boot 就同时支持ARM 体系结构和MIPS 体系结构。除了依赖于CPU 的体系结构外,Boot Loader 实际上也依赖于具体的嵌入式板级设备的配置。这也就是说,对于两块不同的嵌入式板而言,即使它们是基于同一种CPU 而构建的,要想让运行在一块板子上的Boot Loader 程序也能运行在另一块板子上,通常也都需要修改Boot Loader 的源程序。 2.2 Boot Loader 的安装媒介(Installation Medium)

DISM修复系统实战

利用DISM命令修复win10系统 工作原理: DISM可以联网将你当前的系统文件和官方的原镜像进行比对,然后恢复不一样的文件。命令使用方法: 1、按下WIN+X然后选择命令提示符管理员; 2、打开后依次执行下面两条命令: DISM.exe /Online /Cleanup-image /Scanhealth DISM.exe /Online /Cleanup-image /Restorehealth 但经常会出现下面的情况,在线修复失败。

由于在线修复会出现这样的错误,所以使用离线修复来完成。 这是网上提供的方法,经验证是正确的。步骤如下: (1)、要求有系统ISO镜像文件,并装载。 (2)、网上下载wimtool(一种可以提取install.wim文件的工具,功能挺强大,但我们只用到一种)。具体用法也比较简单,打开软件,选择镜像文件夹---Sources文件夹中的install.wim,选择提取的文件夹,提示:目标文件夹一定要选择非系统盘,全英文路径,可以在非系统盘新建一个英文字符文件夹。然后等待提取完成就行。有时候会出现wimtool 软件提取到80%左右中途退出的情况,不要紧张,只要检查提取出来的文件夹里面有windows文件夹,大小为9GB左右,就可以了。 (3)、进入命令提示符管理员模式,输入以下命令: Dism /Online /Cleanup-Image /RestoreHealth /Source:X:\ST\windows /LimitAccess [可以直接复制,手打请注意空格] 这里的X盘符,就是你提取文件放的非系统盘,可以直接理解成X盘符下,ST文件夹中的windows文件夹。如果你设置了不同文件夹,请做相应修改。 (4)、如无意外,等待片刻之后就可以成功修复。重启一下,你就会发现原来困扰你的莫名奇妙的问题可能就不会出现了。 (5)、补充一点,千万不要图方便把install.wim文件提取到系统盘,首先,提取之后这个文件夹会自动归为系统文件,变为隐藏属性,其次,修复完成后你想要删除的话,还必须获取管理员权限,就算用批处理命令也要等待20多分钟。

Windows ADK DISM常用命令

功能命令 拷贝winpe copype.cmd x86 C:\winpe_86如果你的电脑是32位系统,请用X86字样代替amd64 makewinpemedia /ufd c:\winpe_amd64 创建Iso文件Mekewinpemedia /iso C:\winpe_x86 Winp写入U盘Makewinpemedia /ufd /f c:\winpe_x86 e: 拷贝系统安装文件Robocopy D:\ E:\windows\ /E D:指的是windows 8.1系统盘符,E是指目标盘符 应用问答文件E:\windowssetup\setup.exe /unattend:e:\autounattend.xml 抓取image Dism /capture-image /capturedir:c:\ /imagefile:d:\install.wim /name:”windows” 抓取winboot image Dism /capture-image /capturedir:c:\ /imagefile:d:\wimboot.wim /name:”windows” /wi mboot /scratchdir:d:\scratch 应用image Dism /apply-image /applydir:w:\ /imagefile:d:\install.wim /index:1 应用wimboot image适用于WIN8.1 Dism /apply-image /applydir:w:\ /imagefile:d:\wimboot.wim /index:1 /wimboot /scratchdir:d:\scratch 应用压缩image 适用于WIN10 Dism /apply-image /applydir:w:\ /imagefile:d:\install.wim /index:1 /Compact /scratchdir:d:\scratch 创建启动文件1、Bcdboot w:\windows 2、w:\windows\system32\bcdboot w:\windows /s s:\ 装载映像Dism /mount-image /mountdir:d:\image /imagefile:d:\install.wim /index:1 修改winpe登陆脚步Note1pad.exe c:\mountdir\windows\system32\startnet.cmd 查看补丁Dism /image:d:\mountdir /get-packages 添加补丁Dism /image:d:\mountdir /add-package /packagepath:c:\windows8.1-kb2919442.msu /logpath:addpackage.log 添加语言包Dism /image:d:\mountdir /add-package /packagepath:c:\zh-cn\lp.cab /logpath:addpackage.log 删除补丁包Dism /image:d:\mountdir /remove-package /packagename:””补丁包名称 查看语言Dism /image:d:\mountdir /get-intl 设置默认语言Dism /image:d:\mountdir /set-allintl:en-us 设置默认时区Dism /image:d:\mountdir /set-timeione:“Pacific standard time” 查看驱动Dism /image:d:\mountdir /get-drivers 添加驱动Dism /image:d:\mountdir /add-driver /driver:d:\dirvers\xx.inf 添加驱动目录Dism /image:d:\mountdir /add-driver /driver:d:\dirvers /recurse 导出驱动Dism /image:d:\mountdir /export-driver /destination:d:\drivers 删除驱动Dism /image:d:\mountdir /remove-driver /driver:oem0.inf 添加移动版office适用于WIN10 dism /image:e:\mount /add-provisionedAPPxpackage /packagepath:c:\moffice\excel\X.appxbundle /licensepath:c:\moffice\excel\X.xml 清理image Dism /image:d:\mountdir /cleanup-image /startcomponentcleanup /resetbase 检查image Dism /image:d:\mountdir /cleanup-image /scanhealth Wimboot image Dism /image:d:\mountdir /optimize-image /wimboot 卸载并保存映像Dism /unmount-image /mountdir:d:\image /commit 卸载不保存映像Dism /unmount-image /mountdir:d:\image /discard 清理卸载不完全的mount文件夹Dism /cleanup-mountpoints

最全的Android源码目录结构详解

最全的Android源码目录结构详解 Android 2.1 |-- Makefile |-- bionic (bionic C库) |-- bootable (启动引导相关代码) |-- build (存放系统编译规则及generic等基础开发包配置) |-- cts (Android兼容性测试套件标准) |-- dalvik (dalvik JAVA虚拟机) |-- development (应用程序开发相关) |-- external (android使用的一些开源的模组) |-- frameworks (核心框架——java及C++语言) |-- hardware (部分厂家开源的硬解适配层HAL代码) |-- out (编译完成后的代码输出与此目录) |-- packages (应用程序包) |-- prebuilt (x86和arm架构下预编译的一些资源) |-- sdk (sdk及模拟器) |-- system (底层文件系统库、应用及组件——C语言) `-- vendor (厂商定制代码) bionic 目录 |-- libc (C库) | |-- arch-arm (ARM架构,包含系统调用汇编实现) | |-- arch-x86 (x86架构,包含系统调用汇编实现) | |-- bionic (由C实现的功能,架构无关) | |-- docs (文档) | |-- include (头文件) | |-- inet (?inet相关,具体作用不明) | |-- kernel (Linux内核中的一些头文件) | |-- netbsd (?nesbsd系统相关,具体作用不明) | |-- private (?一些私有的头文件) | |-- stdio (stdio实现) | |-- stdlib (stdlib实现) | |-- string (string函数实现) | |-- tools (几个工具) | |-- tzcode (时区相关代码) | |-- unistd (unistd实现) | `-- zoneinfo (时区信息) |-- libdl (libdl实现,dl是动态链接,提供访问动态链接库的功能)|-- libm (libm数学库的实现,) | |-- alpha (apaha架构) | |-- amd64 (amd64架构) | |-- arm (arm架构) | |-- bsdsrc (?bsd的源码)

DISM 命令备份与还原 Windows 系统教程

DISM 命令备份与还原Windows 系统教程 来自:https://www.wendangku.net/doc/4313314636.html,(谢谢分享) 为庆祝Win8正式发布,同时感谢微软让我用上了好系统。(本人Win8中国电话激活),特整理出“用DISM 命令备份与还原Windows 系统”,供同我一样的广大小白参考使用。 用DISM 命令进行系统备份与还原不需要任何第三方软件,是利用Win7、Win8 系统自带的DISM 命令进行操作,安全放心,备份文件占用空间小(比Ghost 小得多)而且还能进行增量备份,进一步节约了磁盘空间。用DISM 命令进行系统备份与还原需要在Win7 以上PE 或Win7 以上的第二系统中进行,并以管理员身份运行命令提示符。不能进行系统热备份。(注意:有的PE 精简过分可能不能运行DISM 命令。) 一、初始备份(例如:把C 分区的系统备份到D 分区的Win8BF 文件夹中,备份文件名为Win8Pro.wim):

Dism /Capture-Image /ImageFile:D:\Win8BF\Win8Pro.wim /CaptureDir:C:\ /Name:Win8Pro-1 /Description:0000-00-00 命令解释: /Capture-Image - 将驱动器的映像捕获到新的WIM 文件中,捕获的目录包含所有子文件夹和数据。

/ImageFile - 指定映像文件路径。/CaptureDir - 指定捕获目录。 /Name: - 指定名字。此项不能省略。

/Description: - 指定描述。描述是为了说明这次备份的具体情况,我们这里用了时间。此项可省略。 如果是在Win8 系统中进行操作,备份时注意暂时关闭Windows Defender,它要对整个备份文件进行扫描,其中MsMpEng.exe 对CPU 的占用有时高达90% 以上,严重拖慢备份速度,有时甚至使备份时间延长十倍以上。 二、增量备份(例如:把C 分区的系统增量备份到D:\Win8BF\Win8Pro.wim 中):

在windows下使用grub for dos安装linux

一、在Windows下使用Grub for DOS安装Linux 1.安装前的准备:要从硬盘安装Fedora8,这里你要保证存放Feora8镜像文件的盘为FAT32格式,因为无论Linux还是DOS,都不能识别NTFS。另外你还要为Linux 系统空出一部分空间出来,空间大小最好在10G以上。 2.下载Grub for DOS工具(https://www.wendangku.net/doc/4313314636.html,/Linux/2007-10/8641.htm),这是在开机时引导进入Linux安装过程用的。将下载好的Grub for DOS里面的文件(包括了menu.lst,grldr,grub.exe)解压缩到C盘根目录下。而不是将解压后的文件夹拷到C盘根目录下。 3.下载Fedora8的ISO镜像文件。https://www.wendangku.net/doc/4313314636.html,/en/get-fedora 4.修改boot.ini。 在C盘根目录打开文件boot.ini,在该文件的最后一行,添加C:\grldr=”Start Grub”,保存,退出。boot.ini是系统文件,打开它需要一点技巧,这里给大家两种办法: 1)开始--设置--控制面板--系统--高级--启动和故障恢复--设置--编辑(或者右键单击-我的电脑--属性--系统--高级--启动和故障恢复--设置--编辑),这时会迸出一个打开的记事本,里面是原先的boot.ini 内容,将其修改即可。 2)如果你有一点DOS基础的话,可以运行中输入cmd打开命令行编辑器,然后键入命令: cd\/*到C盘根目录*/ edit boot.ini/*编辑boot.ini文件*/ 将其修改,然后按Alt,打开“文件“选项,保存退出即可。 (这时重启系统你就会发现启动时多了个系统选项选择单,一个是Microsoft Windows XP,另一个是Grub,这里不需要重启。 .现在假设Fedora8安装包已经下载到你的计算机,用虚拟光驱或RAR打开你下载的镜像安装文件,将:“isolinux”目录中的vmlinuz和initrd.img两个文件拷到C盘(你当前系统的安装盘)里,具体是NTFS还是FAT32,无所谓。 6.C盘找到menu.lst文件,用记事本打开,在末尾添加以下三行(仅红色部分):title Install-Fedora8/*这是个菜单标识,显示Install-Fedora7*/ kernel(hd0,0)/vmlinuz/*文件vmlinuz所在地址为(hd0,0)*/

DISM命令应用大全

DISM命令应用大全 DISM.exe [dism_options] {WIM_command} [] DISM.exe {/Image: | /Online} [dism_options] {servicing_command} [] 描述: DISM 枚举、安装、卸载、配置和更新Windows 映像中的功能和程序包。可以使用的命令取决于提供的映像以及映像处于脱机状态还是正在运行。 WIM 命令: /Get-MountedWimInfo - 显示有关安装的WIM 映像的信息。 /Get-WimInfo - 显示有关WIM 文件中的映像的信息。 /Commit-Wim - 保存对安装的WIM 映像的更改。 /Unmount-Wim - 卸载安装的WIM 映像。 /Mount-Wim - 从WIM 文件安装映像。 /Remount-Wim - 恢复孤立的WIM 安装目录。 /Cleanup-Wim - 删除与损坏的安装的WIM 映像关联的资源。 实例: ------------------------------------------------------------------------------------- /Mount-Wim /WimFile: {/Index: | /Name:} /MountDir: [/readonly] 将WIM 文件安装到指定的目录以便该文件可用于服务。/ReadOnly 设置具有只读权限的安装映像。 示例: DISM.exe /Mount-Wim /WimFile:C:\test\images\myimage.wim /index:1 /MountDir:C:\test\offline DISM.exe /Mount-Wim /WimFile:C:\test\images\myimage.wim /index:1 /MountDir:C:\test\offline /ReadOnly ------------------------------------------------------------------------------------- /ScratchDir: 指定用来解压缩服务文件的临时目录。此目录必须存在。 如果未设置,则将使用此临时目录。 示例: DISM.exe /Image:C:\test\offline /scratchdir:D:\Scratch ------------------------------------------------------------------------------------- DISM.exe /Image:C:\test\offline /? ------------------------------------------------------------------------------------- 映像规格: /Online - 以正在运行的操作系统为目标。 /Image - 指定脱机Windows 映像的根目录的路径。 DISM 选项: /English - 用英文显示命令行输出。 /Format - 指定报告输出格式。

GRUB2及启动过程详解

GRUB2及启动过程详解 作者: 南瓜剪子 2016年7月28日 1. 概述 (2) 2. CentOS7中GRUB2 (2) 3. GRUB2 的bootstrap image文件 (3) 3.1. boot.img (3) 3.2. diskboot.img (3) 3.3. kernel.img (4) 3.4. core.img (4) 3.5. *.mod (4) 4. 对比GRUB Legacy (5) 4.1. stage1 (5) 4.2. *_stage1_5 (5) 4.3. stage2 (5) 5. grub2-mkimage定制core.img (6) 6. GRUB2安装 (7) 6.1. Linux是怎么命名设备(/dev/sda) (7) 6.2. MBR(Master Boot Record) (8) 6.3. MBR分区表DPT(Disk Partition Table) (9) 6.4. LBA and CHS (14) 6.4.1. CHS(cylinders-heads-sectors) (14) 6.4.2. LBA(Logical Block Address) (14) 6.5. boot.img和core.img安装 (14) 6.6. 硬盘总结 (17) 7. 启动过程 (19) 7.1. BIOS (19) 7.2. GRUB2中boot.img (20) 7.2.1. Step1无条件跳转 (20) 7.2.2. Step2 初始化 (20) 7.2.3. Step3 判断硬盘是否支持LBA还是只支持CHS (22) 7.2.4. Step4 采用LBA加载core.img第一个扇区 (23) 7.2.5. Step5 拷贝core.img第一个扇区到内存指定位置 (25) 7.2.6. Step6 执行core.img第一条语句 (26) 7.2.7. Step7 boot.img总结 (26) 7.3. GRUB2中core.img (28) 7.3.1. diskboot.img (28) 7.3.2. GRUB2 core Startup (34) 7.3.3. GRUB主函数即GRUB主要功能 (37) 7.3.4. 加载Linux Kernel (38)

相关文档