当前位置:首页 » 操作系统 » linux的bootloader

linux的bootloader

发布时间: 2023-01-04 19:56:21

Ⅰ 请问bootloader、u-boot和linux内核的区别和关系是怎样的麻烦哪位大侠给小弟指导指导。。

bootloader是取代mbr功能的,可以看成mbr的加强.u-boot是把usb盘做成启动盘的,linux内核就是linux系统的核心,你用的linux就是在内核基础上扩展了shell和应用程序.

Ⅱ linux系统是从bootloader开始执行的吗

看你用的是啥引导了,有lilo,有grub,都是加载内核……
前者是编辑文件以后,执行lilo,就把引导部分加在……比如是盘的引导位置,引导系统会去加载,然后找到内核……
后者,加载grub,根据list文件找到内核并加载之;uefi的话,一系列,一样的玩意……

Ⅲ bootloader

ARM Linux启动流程大致为:bootloader ---->kernel---->root filesystem。bootloader 是一上电就拿到cpu 的控制权的,而bootloader实现了硬件的初始化,为kernel的运行创造好条件。

那么bootloader一般都会做些什么

/ ====================================================== /

实现细节

工作在启动加载模式时,uboot会自动执行bootcmd命令,

比如:

uboot首先把内核镜像拷贝到内存地址为0x80000000的地方,然后执行bootm 0x80000000命令。

bootm命令实际上调用的是do_bootm_linux函数:

内核调用函数:theKernel (0,bd->bi_arch_number, bd->bi_boot_params);

the kernel其实不是个函数,而是指向内核入口地址的指针,把它强行转化为带三个参数的函数指针,会把三个参数保存到通用寄存器中,实现了向kernel传递信息的功能,在这个例子里,会把R0赋值为0,R1赋值为机器号 R2赋值为启动参数数据结构的首地址。

这里的machine id,是让内核知道是哪个CPU,从而调用对应的初始化函数。

继续深入

1、需要在设备树文件中声明,单板需要什么样的machine_desc,(可以是一系列的字符串,kernel会从左到右匹配这些字符串,一直找到匹配的为止);

2、kernel中需要表明每个machine_desc需要表明它能支持哪些单板,用字符串表明支持哪些单板。

MACHINE_START和 MACHINE_END实际上被展开成一个结构体

3、 kernel有多个machine_desc跟设备树文件dts中的compatible 吻合,选择哪个?
设备树文件dts中compatible(属性值)从左到右的属性值与kernel中的machine_desc结构体中的dt_compat成员进行比较,匹配成功之后就不会再进行匹配(设备书的属性值从左右匹配优先级依次降低)。

从内核的第一个执行文件head.S开始分析

start_kernel的调用过程如下:

注意:

C语言中的变量在汇编语言中出现,变量名表示的是变量的地址

Ⅳ 关于LINUX的问题,GRUB,bootloader,LILO到底有什么区别

Boot Loader只是一个概念,代表引导装载程序的意思,操作系统必须要有Boot Loader才能加载操作系统的内核;而LILO和grub都是都是实实在在的、使用广泛的引导装载程序,只不过Lilo这个程序太老了,现在的各种Linux发行版都很少用了,现在使用最广泛的是grub、grub2这个引导装载程序。

Ⅳ Linux( bootloader)启动操作系统过程

Linux Booting Process:
(1) BIOS
功能:执行计算机系统完整性检测;通电自检;搜索/加载/执行 boot loader程序。
一旦 boot loader 程序被探测到,并且加载到内存,BIOS会把控制权交给它。
(2) MBR
MBR位于引导盘(Bootable Disk)的第一个扇区(512B)。
通常是在 /dev/sda 或者 /dev/hda 。

注意:引导盘(bootable disk)和引导分区(bootable partition)的区别。

(3) GRUB
GRUB = Grand Unified Bootloader

如果在系统中安装有多个内核镜像,你可以选择某一个被执行。
GRUB展示了一个启动画面,等待几秒,如果你不输入任何字符,它将会按照grub配置文件的规定加载默认的内核镜像。

Grub配置文件在: /boot/grub/grub.conf
它包含了内核和initrd.img

(4) Kernal
(注意Kernal和kernel不一样)

Kernal按照grub.conf文件的规定,挂载根文件系统。
一旦kernal启动,它第一件事情就是执行:sbin/init 进程。

initrd是被kernel用做临时根文件系统,直到Kernal挂载了根文件系统。

(5) INIT(Initilization)

根据 /etc/inittab 文件决定Linux运行层级,运行级别决定了哪个初始化程序(Initial Programs)被加载到启动项。

(6) Run Level

根据你的运行级别的设定,操作系统会执行下来对应的文件夹下的程序:

Linux的7个运行级别(Run levels):

标准的Linux运行级别为3或者5,如果是3的话,系统就在多用户状态;如果是5的话,则是运行着XWindow系统。不同的运行级别有着不同的用处,也应该根据自己的不同清晰来设置。例如,如果丢失了root口令,那么可以让机器启动进入单用户模式来设置。

如果是使用S(Start)开头的程序,那么是用在启动的时候,
如果是使用K(Kill)开头的程序,那么是用在关机的时候。

Ⅵ linux的内核是由bootloader装载到内存中的

linux的内核的确是由bootloader装载到内存中的。linux的bootloader有2个部分组成:bootstrap和uboot。所以更准确点的说法是:linux的内核是由uboot装载到内存中的。内核文件本身是存放在硬盘的文件系统中,这句话就是错的。内核和文件系统是分开存储的。uboot读取kernel到内存是从kernel开始存储的地址开始读取的,而读取开始位置和读取大小,是由环境变量决定的。所以这个时候不需要文件系统的。

给你张图片,便于理解吧。这张图片是bootstrap、uboot、环境变量、kernel、文件系统在nandflash里面的存储分布。

其中rootfs.jfss2就是文件系统。

Ⅶ 什么是嵌入式Linux的Bootloader的移植

1、BootLoader能初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。
2、移植是根据目标板的特征对Uboot或vivi等bootloader进行针对性的修改,使之能够在目标板上发挥应有的作用,初始化一些必要的外围设备。
3、bootloader的移植是嵌入式系统移植流程中的第一部分(除硬件之外),此后还有内核移植,根文件系统的制作,应用程序的开发与移植。
不知道满意否

Ⅷ 怎么删除linux操作系统

有网友咨询我“我的服务器是linux系统,我不知道弄那了,现在 不能启动 了,我想把这个系统删了,请问怎么删啊”那么怎么删除linux 操作系统 呢?接下来大家跟着我一起来了解一下删除linux操作系统的解决 方法 吧。

删除linux操作系统方法

如果你想将Linux从机器中删除,只保留Windows,你需要进行以下几步操作:

从开始菜单(或开始屏幕)找到“Disk Management”(磁盘管理工具)并启动.

找到Linux分区。在Windows下无法识别Linux分区,所以,你需要按照驱动器和分区大小去判断,确认好以后继续下面的步骤。

右键选好的分区,然后选择“删除卷”,这将会把分区删除成自由空间,如果你再选择自由空间,选择删除卷,就会变成未分配空间。

在Windows分区上右键,选择“扩展卷”,扩展它以填补删除Linux所留下的自由空间。

最后,插入Windows恢复光盘(或恢复USB驱动器),并从它启动。选择“修复计算机”,去“疑难解答”,然后输入一个命令提示符。键入以下命令

bootrec.exe /fixmbr

这将删除Linux的bootloader和恢复Windows'。

重新启动你的电脑,你会发现,它直接引导进入Windows,不会有Linux分区。

如果你设置了双启动不同或把一个单独的硬盘驱动器上的Linux,又或者有其他的操作系统在驱动器上的,操作方式可能会略有不同。但对于大多数人来说,这些指令就足够了。

linux操作系统怎样清除垃圾

tmp目录下是用户的临时文件,可将不需要的直接用rm命令删除。 另外,也可以使用以下方法对linux系统进行清理。1)清理升级缓存以及无用包;sudo apt-get autocleansudo apt-get cleansudo apt-get autoremove

2)清理opera/firefox缓存文件;ls ~/.opera/cache4|xargs rm -fls ~/.mozilla/firefox/*.default/Cache|xargs rm -f

3)清理Linux下孤立的包;图形界面下我们可以用:gtkorphansudo apt-get install gtkorphan -y终端命令下我们可以用:deborphansudo apt-get install deborphan -y

4)删除多余的内核;打开终端敲命令:dpkg --get-selections|grep linux有image的就是内核文件;删除老的内核文件:sudo apt-get remove 内核文件名 (例如:linux-image-2.6.27-2-generic)内核删除,释放空间了,应该能释放130-140M空间。最后看看当前内核:uname -a

5)清空某个目录下所有log日志;for i in `ls *.log*`docat /dev/null >$idone

附录:临时文件目录:/var/cache/apt/archives未下载完目录:/var/cache/apt/archives/partial

热点内容
一键搭建sk5服务器 发布:2025-05-11 01:40:09 浏览:511
鸿业acs加密锁模拟器 发布:2025-05-11 01:38:49 浏览:935
神庙逃亡2安卓版怎么玩 发布:2025-05-11 01:38:05 浏览:159
凯杰都什么配置 发布:2025-05-11 01:38:04 浏览:469
php微信开源系统源码 发布:2025-05-11 01:37:54 浏览:811
pythonfor多个参数 发布:2025-05-11 01:12:32 浏览:72
plcsfc编程 发布:2025-05-11 01:11:56 浏览:164
安卓手机能删除什么东西 发布:2025-05-11 01:03:55 浏览:413
怎么更改fox存储路径 发布:2025-05-11 01:02:30 浏览:612
忘记账户密码如何恢复出厂设置 发布:2025-05-11 00:51:15 浏览:391