请问c语言能编写操作系统引导程序吗?

时间:2022-06-19 14:24:17
请问c语言能编写操作系统引导程序吗?另外我想一开机自检后就进入一个菜单界面该如何编写?用汇编还是c语言?有源代码就更好了。

22 个解决方案

#1


系统引导程序 你知道是什么  加载cpu的 rom 里面的8k程序 ,启动boot程序 初始化内存 初始化硬盘
把启动代码拷贝到内存 加载操作系统 boot实现 这里面的东西太多了 不是你想写就能写得 再说必然会用到汇编啊
这个东西是人家厂商做好的 是在实现了读驱动 和写驱动 及读内存和写内存写好的汇编 之上设计的 
不是说你想盖楼 就能盖的至少得有砖块吧

#2


Linux的grub就是一个优秀的多系统引导程序,你可以装个Linux玩玩(和Windows双系统),有能力你可以去看它的源代码。

#3


引用 1 楼 u011779875 的回复:
系统引导程序 你知道是什么  加载cpu的 rom 里面的8k程序 ,启动boot程序 初始化内存 初始化硬盘
把启动代码拷贝到内存 加载操作系统 boot实现 这里面的东西太多了 不是你想写就能写得 再说必然会用到汇编啊
这个东西是人家厂商做好的 是在实现了读驱动 和写驱动 及读内存和写内存写好的汇编 之上设计的 
不是说你想盖楼 就能盖的至少得有砖块吧

+1

#4


可以得,参见:30天自制操作系统。

#5


C语言的底层实现 是汇编写的驱动
底层API 又叫系统级的编程  比如内核中的printk等函数 
不可能完全用C实现来实现  你要写引导程序 你启动的时候连标准库什么的你都已经用不了了
你必须自己用手写汇编 或者C嵌入汇编写 那些串口等读写的驱动
你还得把你写的程序down到电脑固定的硬盘上 
有源代码啊 windows的 你可能很难找到 但是linux和Unix很多
linux内核详解  教你写操作系统 什么磁盘管理啊 内存管理 和IO 文件系统  乱七八糟 
最后有教你如何写引导

#6


请问,编写引导程序不依托操作系统可以吗?哪些编写还原软件是不是都是依赖操作系统呢?难道不是靠调用bois中断吗?请问哪里有下载引导程序的源代码的地方?那些还原软件在系统崩溃或者损坏的情况下在重启系统的时候是如何调用系统资源的?

#7



是不是所有的还原系统的软件都的调用硬盘中断呢?请问如果有的话,哪里可以查找相关的硬盘中断资料呢?

#8


x86还是arm?

#9


引用 楼主 king_2007 的回复:
请问c语言能编写操作系统引导程序吗?另外我想一开机自检后就进入一个菜单界面该如何编写?用汇编还是c语言?有源代码就更好了。

两者都可以,参考grub或LILO

#10


其实楼主问错问题了,你应该问:C语言不能写什么?

然后,我就可以回答:
1.不能写美女肉体;
2.。。。

#11


用汇编

#12


都说能写,具体的代码呢?我都不知道你们的依据是什么?我说的都是针对x86电脑,请问下如果不依赖操作系统,那么能编写开机启动自检后编写窗体吗?另外我想知道如何控制启动计算机的顺序?如何获取硬盘或者处理器的权限?

#13


引用 12 楼 king_2007 的回复:
都说能写,具体的代码呢?我都不知道你们的依据是什么?我说的都是针对x86电脑,请问下如果不依赖操作系统,那么能编写开机启动自检后编写窗体吗?另外我想知道如何控制启动计算机的顺序?如何获取硬盘或者处理器的权限?

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

#14


引用 13 楼 zhao4zhong1 的回复:
Quote: 引用 12 楼 king_2007 的回复:

都说能写,具体的代码呢?我都不知道你们的依据是什么?我说的都是针对x86电脑,请问下如果不依赖操作系统,那么能编写开机启动自检后编写窗体吗?另外我想知道如何控制启动计算机的顺序?如何获取硬盘或者处理器的权限?

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
11年刚学编程的时候就看到这窜东西了= =自己写过一个arm板子的bootloader...要汇编+一点硬件知识...x86架构没写过...国人好像就出过类似的一本书,楼上说了,叫30天什么来着

#15


引用 4 楼 zjq9931 的回复:
可以得,参见:30天自制操作系统。

《30天自制操作系统》

#16


这个书不是国人写的,是日本一个少年写的

#17


用c语言嵌入汇编,毕竟,像int 18这种指令,要自己写才行,呵呵呵

你要恢复系统,只能尽量往前,在mbr,嵌入自己程序,就像病毒一样

#18


已经有人说了grub之类的东西,LZ可有去看?

#19


理论上可以但不合适,实际都是用汇编

#20


那现在的c语言难道就不能调用bios中断吗?那些还原系统都是用什么语言编写的?《30天自制操作系统》 这本书我在今年的夏天在书店看到,当时看的我是热血沸腾,想买,可后来一想我的汇编8086学的不扎实,跟这本书的作者水平差一大截呢,所以也就没有买。请问下高手操作系统的引导程序原理是不是都是一样的?代码固定不变的。另外我想问下bios系统选择加载驱动器后,后面又做了那些工作才进入的操作系统自检程序?

#21


引用 10 楼 super_admi 的回复:
其实楼主问错问题了,你应该问:C语言不能写什么?


这个才是真会C语言的人

#22


楼主可以下载一个u-boot源码看看,比较不错的bootloader
不过当然了,汇编和c肯定都有的,用什么汇编就看你用在什么架构上了
bootloader也可以是一个小型系统,可能比你想像中要强大一些
如果想针对某一款cpu写一个引导某一款os的bootloader,估计比较简单
楼主可以自己写一个,主要是不需要考虑移植性,加油哦

#1


系统引导程序 你知道是什么  加载cpu的 rom 里面的8k程序 ,启动boot程序 初始化内存 初始化硬盘
把启动代码拷贝到内存 加载操作系统 boot实现 这里面的东西太多了 不是你想写就能写得 再说必然会用到汇编啊
这个东西是人家厂商做好的 是在实现了读驱动 和写驱动 及读内存和写内存写好的汇编 之上设计的 
不是说你想盖楼 就能盖的至少得有砖块吧

#2


Linux的grub就是一个优秀的多系统引导程序,你可以装个Linux玩玩(和Windows双系统),有能力你可以去看它的源代码。

#3


引用 1 楼 u011779875 的回复:
系统引导程序 你知道是什么  加载cpu的 rom 里面的8k程序 ,启动boot程序 初始化内存 初始化硬盘
把启动代码拷贝到内存 加载操作系统 boot实现 这里面的东西太多了 不是你想写就能写得 再说必然会用到汇编啊
这个东西是人家厂商做好的 是在实现了读驱动 和写驱动 及读内存和写内存写好的汇编 之上设计的 
不是说你想盖楼 就能盖的至少得有砖块吧

+1

#4


可以得,参见:30天自制操作系统。

#5


C语言的底层实现 是汇编写的驱动
底层API 又叫系统级的编程  比如内核中的printk等函数 
不可能完全用C实现来实现  你要写引导程序 你启动的时候连标准库什么的你都已经用不了了
你必须自己用手写汇编 或者C嵌入汇编写 那些串口等读写的驱动
你还得把你写的程序down到电脑固定的硬盘上 
有源代码啊 windows的 你可能很难找到 但是linux和Unix很多
linux内核详解  教你写操作系统 什么磁盘管理啊 内存管理 和IO 文件系统  乱七八糟 
最后有教你如何写引导

#6


请问,编写引导程序不依托操作系统可以吗?哪些编写还原软件是不是都是依赖操作系统呢?难道不是靠调用bois中断吗?请问哪里有下载引导程序的源代码的地方?那些还原软件在系统崩溃或者损坏的情况下在重启系统的时候是如何调用系统资源的?

#7



是不是所有的还原系统的软件都的调用硬盘中断呢?请问如果有的话,哪里可以查找相关的硬盘中断资料呢?

#8


x86还是arm?

#9


引用 楼主 king_2007 的回复:
请问c语言能编写操作系统引导程序吗?另外我想一开机自检后就进入一个菜单界面该如何编写?用汇编还是c语言?有源代码就更好了。

两者都可以,参考grub或LILO

#10


其实楼主问错问题了,你应该问:C语言不能写什么?

然后,我就可以回答:
1.不能写美女肉体;
2.。。。

#11


用汇编

#12


都说能写,具体的代码呢?我都不知道你们的依据是什么?我说的都是针对x86电脑,请问下如果不依赖操作系统,那么能编写开机启动自检后编写窗体吗?另外我想知道如何控制启动计算机的顺序?如何获取硬盘或者处理器的权限?

#13


引用 12 楼 king_2007 的回复:
都说能写,具体的代码呢?我都不知道你们的依据是什么?我说的都是针对x86电脑,请问下如果不依赖操作系统,那么能编写开机启动自检后编写窗体吗?另外我想知道如何控制启动计算机的顺序?如何获取硬盘或者处理器的权限?

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

#14


引用 13 楼 zhao4zhong1 的回复:
Quote: 引用 12 楼 king_2007 的回复:

都说能写,具体的代码呢?我都不知道你们的依据是什么?我说的都是针对x86电脑,请问下如果不依赖操作系统,那么能编写开机启动自检后编写窗体吗?另外我想知道如何控制启动计算机的顺序?如何获取硬盘或者处理器的权限?

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……
11年刚学编程的时候就看到这窜东西了= =自己写过一个arm板子的bootloader...要汇编+一点硬件知识...x86架构没写过...国人好像就出过类似的一本书,楼上说了,叫30天什么来着

#15


引用 4 楼 zjq9931 的回复:
可以得,参见:30天自制操作系统。

《30天自制操作系统》

#16


这个书不是国人写的,是日本一个少年写的

#17


用c语言嵌入汇编,毕竟,像int 18这种指令,要自己写才行,呵呵呵

你要恢复系统,只能尽量往前,在mbr,嵌入自己程序,就像病毒一样

#18


已经有人说了grub之类的东西,LZ可有去看?

#19


理论上可以但不合适,实际都是用汇编

#20


那现在的c语言难道就不能调用bios中断吗?那些还原系统都是用什么语言编写的?《30天自制操作系统》 这本书我在今年的夏天在书店看到,当时看的我是热血沸腾,想买,可后来一想我的汇编8086学的不扎实,跟这本书的作者水平差一大截呢,所以也就没有买。请问下高手操作系统的引导程序原理是不是都是一样的?代码固定不变的。另外我想问下bios系统选择加载驱动器后,后面又做了那些工作才进入的操作系统自检程序?

#21


引用 10 楼 super_admi 的回复:
其实楼主问错问题了,你应该问:C语言不能写什么?


这个才是真会C语言的人

#22


楼主可以下载一个u-boot源码看看,比较不错的bootloader
不过当然了,汇编和c肯定都有的,用什么汇编就看你用在什么架构上了
bootloader也可以是一个小型系统,可能比你想像中要强大一些
如果想针对某一款cpu写一个引导某一款os的bootloader,估计比较简单
楼主可以自己写一个,主要是不需要考虑移植性,加油哦