linux操作系统的引导

本文详细解释了Linux启动时如何从硬盘读取数据,获取硬件参数,以及初始化陷阱处理、时间管理、调度等功能的过程,涉及BIOS/Bootloader、bootsect.s、setup.s和head.s关键部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.linux是如何从硬盘读出的

2.linux在启动的时候是如何拿到这些硬件参数的

3.linux在初始运行中都做了什么

        trap.c         trap_init()

        mktime.c    time_init()

        sched.c      sched_init()

BIOS/Bootloader        

由pc机的BIOS(0xFFFF0是BIOS存储的总线地址)把bootsect从某个固定地址拿到内存中的某个固定地址(0x90000),并进行了一系列的硬件初始化和参数设置

bootsect.s

        磁盘引导块程序,在磁盘的第一个山区中的程序(0磁道 0磁头 1扇区)

        作用:首先将后续的setup.s代码从磁盘加载到紧接着bootsect.s的地方

                   在显示屏上显示loading system再将system(操作系统)加载到0x10000的地方

                   最后跳转到setup.s中去运行

setup.s

        解析BIOS/BOOTLOADER传递来的参数

        设置系统内核运行的LDT(局部描述符) IDT(终端描述符寄存器)全局描述符(设置全局描述符寄存器)

        设置中断控制芯片,进入保护模式运行(svc32保 护模式,设置寄存器中的值)

        跳转到SYSTEM模块的最前面的代码运行(head.s)

head.s

        加载内核运行时的各数据段寄存器,重新设置中断描述符表

        开启没和正常运行时的协处理器等资源

        设置内存管理的分页机制

        跳转到main.c开始运行    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值