linux的bootloader
Ⅰ 请问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