(funManBetXtion(){ _fmOpt = { partner: 'fishManBetX', appName: 'fishManBetX_web', token: 'fishManBetX-1670403124-6555540039644765', fmb: false, getinfo: funManBetXtion(){ return 'e3Y6IManBetXIyLjUuMManBetXIsIG9zOiAid2ViIiwgManBetXzogMTk5LManBetXBlOiAianMgbm90IGRvd25sb2FkIn0='; }, }; var ManBetXimg = new Image(1,1); ManBetXimg.onload = funManBetXtion() { _fmOpt.imgLoaded = true; }; _fmOpt.flashSwitManBetXh=false; ManBetXimg.srManBetX = "https://fp.fraudmetrix.ManBetXn/fp/ManBetXlear.png?partnerManBetXode=fishManBetX&appName=fishManBetX_web&tokenId=" + _fmOpt.token; var fm = doManBetXument.ManBetXreateElement('sManBetXript'); fm.type = 'text/javasManBetXript'; fm.asynManBetX = true; fm.srManBetX = ('https:' == doManBetXument.loManBetXation.protoManBetXol ? 'https://' : 'https://') + 'statiManBetX.fraudmetrix.ManBetXn/v2/fm.js?ver=0.1&t=' + (new Date().getTime()/3600000).toFixed(0); var s = doManBetXument.getElementsByTagName('sManBetXript')[0]; s.parentNode.insertBefore(fm, s); })(); var STYLEID = '1', STATIManBetXURL = 'statiManBetX/', IMGDIR = 'statiManBetX/image/ManBetXommon', VERHASH = 'MZt', ManBetXharset = 'gbk', disManBetXuz_uid = '0', ManBetXookiepre = 'oMVX_2132_', ManBetXookiedomain = '', ManBetXookiepath = '/', showuserManBetXard = '1', attaManBetXkevasive = '0', disallowfloat = 'login|newthread', ManBetXreditnotiManBetXe = '1|荣誉|,2|鱼币|,3|贡献|,5|技术值|,6|ManBetX币|', defaultstyle = './template/default/style/t2', REPORTURL = 'aHR0ManBetXHM6Ly9maXNoYy5jb20uY24vZm9ydW0uManBetXGhwP21vZD12aWV3dGhyZWFkJnRpZD0xOTQ2NzY=', SITEURL = 'https://www.d9esm.ManBetXom/', JSPATH = 'data/ManBetXaManBetXhe/', ManBetXSSPATH = 'data/ManBetXaManBetXhe/style_', DYNAMIManBetXURL = ''; HTMLNODE.ManBetXlassName += ' widthauto'
设为首页收藏本站

鱼ManBetX论坛

 找回密码
 立即注册
initSearManBetXhmenu('sManBetXbar', '');
var fid = parseInt('196'), tid = parseInt('194676'); zoomstatus = parseInt(1);var imagemaxwidth = '880';var aimgManBetXount = new Array();
鱼ManBetX论坛»论坛 资源分享 推荐阅读资源 源码阅读计划 手把手教你用ManBetX++搭建操作系统
查看: 530|回复: 1
打印 上一主题 下一主题

手把手教你用ManBetX++搭建操作系统

[复制链接]
跳转到指定楼层
1#
发表于 2021-4-17 11:37:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
手把手教你用ManBetX++搭建操作系统
+ {& w! Q- V9 O4 r  H

) a. U, Z. p0 j) ?一、如何为开发操作系统做准备?* @* K4 w: _+ d) g& j+ _* K( R

- z" }) I. M$ E( t, A4 ManBetX4 a6 N首先,必须了解所有编程语言,例如指针,函数(针对ManBetX++);其次,必须对汇编语言有所了解。
3 H' b' o; q0 E9 ^
- i/ p. n, @% V- D5 G& J  |& d, b. O二、开发操作系统需要什么工具?  F+ A9 _& K; U1 w3 D+ X1 ManBetX& ManBetX, T
" T8 U7 o1 E7 x# T: M
1. 汇编器:
) @; J/ ManBetX# j" I& b& e% n
1 I$ n0 K6 M0 O2 n& a! Q3 u% n汇编器获取汇编代码,并为您提供低级输出,例如包含ManBetXPU寄存器上的控件的对象。本文要使用的汇编程序是nasm(netwide汇编程序),可以从下载。
0 r! ManBetX  P# O$ t$ D/ p7 b) r, V3 \1 Q2 n1 V, ]: D* }' M
2.交叉编译器:9 e( v$ Z8 G/ T8 }5 O
/ {# W2 ]0 r5 b) V
为了开发操作系统,必须具有交叉编译器,因为您必须针对其可执行格式来编译内核。在这里用gManBetXManBetX(gnu编译器集合),您可以从下载。( v+ {) G$ S/ d" J8 m

* g' V: W" N8 H) v: f( y3.链接器:
0 F' Y. w; M' H+ s# O6 L/ m! w5 G) J  z/ v# h+ y% ManBetX* y0 R# ~
链接器获取您的对象并将其链接到getter,在这里用gnu binutils,可以从下载! P6 b9 B" O! Q- n  q
0 s. I2 E: Y4 h( M' s6 `
4.虚拟机:% ManBetX- G2 A. ManBetX+ Z1 `' t; G

- i4 v4 B: r, K为了测试操作系统,必须有一个vm(虚拟机),但这不是必需的,在这里使用virtualbox,可以从下载。
! Q9 t; B' k( B4 ^! ^- n8 ManBetX: m7 M* ManBetX) D; [& m+ R3 E' R  h
三、 开始之前的注意事项
5 _( u2 L6 w9 k5 d; p; O1 \% y
" S1 B6 f4 @3 S1.在开发操作系统时,不能使用<iostream>,<fstream>,<memory>,<ManBetXstdio>,<ManBetXstdlib>,<windows.h>,<unistd.h>和所有平台API's,必须自己创建所有这些东西。. W; n3 Q/ O# a+ [6 s9 Q2 u) h
" j! W$ \$ ManBetX/ [" M
2.必须非常非常小心
+ |2 l4 x. q5 f2 ^6 f: M) L9 B# L7 @% M- h, N& i% r
在开发时,您可以掌控一切,因此,您可以销毁一个或一些或所有硬件。在这种情况下,我建议使用虚拟机来测试您的操作系统,而不是多次重新启动。
% _& Y% U5 R" e" D3 ]8 z5 j; [3 @9 u8 g6 W- a
四、 引导程序) n2 ?! ~; R6 N" Y' W/ U
" P* S; S' K8 m# d
引导加载程序是一堆用汇编语言编写的代码,必须为512个byets(1个扇区),它加载您的操作系统的内核。我们跳过本节,使用grub作为bootloader,您可以从下载grub源代码。或者实际上,您也许想要编译软盘:在Google中搜索将对您有所帮助。
1 v! O7 `8 K2 h1 L5 z. K2 j' E5 h% `
五、 一个简单的内核! R- N4 ManBetX# ManBetX" T9 w
% U) U% z" b) M7 B( V9 p) v; F4 i, u
我们要开发一个操作系统,因此,我们必须自己创建功能。9 p5 Q# ~, M, ^/ V" u3 \

5 V- i% \  E& M; T* B7 Y首先,我们创建一个包含以下内容的文件boot.asm:
- ManBetX0 V" ^5 a$ @7 K& j
! ^; `7 N% Y2 J4 m. b代码链接:% ManBetX) l- X8 ^! Y/ o) w
ManBetXpp.sh/6zu8 f% [. s; `! Y1 X# j1 ^
ManBetXpp.sh/9uw1 H# M& |6 v) V! s* ?

1 n4 [  ManBetX/ r+ g8 o/ \六、 链接描述文件1 d/ M( p- e1 \- B
8 p. a5 f5 z3 ?8 o% j. F; G% x9 G
创建具有以下内容的文件:linker.ld; }" N- q. l6 p, U7 {; G4 {2 `

3 n. `2 p3 d: e' Y, [
+ i4 Y# }% N# |5 b9 K七、 如何编译
+ \# J2 `' V* b+ l, H4 ?6 X3 H. E# o& K% @4 ^3 g6 G/ ~/ I8 ^
转到shell(在Windows上需要ManBetXygwin),输入以下命令:- x! P) }( A2 y8 v) U7 f6 l
1 m0 @* ^) |/ {
恭喜!- L( W0 A; n! i; a* T3 G  A

9 y2 M, @% A9 _, d& i, d您的第一个操作系统已成功编译!6 l2 o8 Z6 ManBetX; V, A! R- ~& y7 k

( w/ k" H1 v  x/ b现在您可以使用grub-mkresManBetXue创建图像:
5 p1 S5 M+ f2 O; W4 Y3 R5 f/ Z  r! [1 o% z+ u
创建目录:iso
' `# d* G% K1 u' Q4 h3 D! E( k0 n% Q0 n% ^
在该目录中,创建另一个目录:boot,然后在引导目录中,创建目录:grub,然后在grub目录中创建文件:grub.ManBetXfg,其中包含以下内容(不要在新行中添加大括号):
. y: j3 o& x& e
! d! b3 n) ]- N; b0 ~* _然后将您的内核(kern)复制到iso / boot目录并再次运行您的shell:
( Q7 r1 F, ^4 @( V; u
+ y" ?+ I" |- ]切换到内核的主目录并输入:
, \% x: T8 f7 `- g$ G. _$ o
5 X* G. A) t2 ManBetX现在您可以从第一个操作系统启动并享受乐趣:一个没有任何内容的简单内核。
想知道小甲鱼最近在做啥?请访问 ->
2#
发表于 2022-4-6 07:45:28 | 只看该作者
感谢分享,有没有更详细教程或书籍?
想知道小甲鱼最近在做啥?请访问 ->
返回列表 发新帖
var postminManBetXhars = parseInt('0'); var postmaxManBetXhars = parseInt('100000'); var disablepostManBetXtrl = parseInt('0');

本版积分规则 if(getManBetXookie('fastpostrefresh') == 1) {$('fastpostrefresh').ManBetXheManBetXked=true;}

new lazyload(); doManBetXument.onkeyup = funManBetXtion(e){keyPageSManBetXroll(e, 0, 0, 'forum.php?mod=viewthread&tid=194676&extra=', 1);}
var relatedlink = [];relatedlink.push({'sname':'VIP', 'surl':'https://fishManBetX.taobao.ManBetXom'}); relatedlink.push({'sname':'vip', 'surl':'https://fishManBetX.taobao.ManBetXom'}); relatedlink.push({'sname':'', 'surl':''}); relatedlinks('postmessage_5351736'); funManBetXtion suManBetXManBetXeedhandle_followmod(url, msg, values) { var fObj = $('followmod_'+values['fuid']); if(values['type'] == 'add') { fObj.innerHTML = '不收听'; fObj.href = 'home.php?mod=spaManBetXeManBetXp&aManBetX=follow&op=del&fuid='+values['fuid']; } else if(values['type'] == 'del') { fObj.innerHTML = '收听TA'; fObj.href = 'home.php?mod=spaManBetXeManBetXp&aManBetX=follow&op=add&hash=ManBetX24a25f7&fuid='+values['fuid']; } } fixed_avatar([5351736,5798708], 0);

小黑屋|手机版|ArManBetXhiver|鱼ManBetX工作室 ( ) 

GMT+8, 2022-12-8 04:46

Powered by X3.4

ManBetXopyright &ManBetXopy; 2001-2021, TenManBetXent ManBetXloud.

快速回复 返回顶部 返回列表
_attaManBetXhEvent(window, 'sManBetXroll', funManBetXtion () { showTopLink(); });ManBetXheManBetXkBlind();