linux课程设计总结
A. linux的课程设计,急!!!!!!!
这么庞大的工作量
找专业的搞一两天,起码几千块。找学长学姐搞,几百块就可以了
B. 《Linux》课程设计
1、网络工程专业大学生职业生涯规划书范文主要从自己对职业生涯规划的认知、对自身优势、劣势的分析、职业目标的制定和实施阶段、步骤等方面详细阐述了自己在大学期,以及人生的职业生涯发展规划。
第一 对职业生涯规划的认知
大学生职业生涯规划设计——设计未来
职业生涯规划开始成为在人争夺战中的另一重要利器。对企业而言,如何体现公司“以人为本”的人才理念,关注员工的人才理念,关注员工的持续成长,职业生涯规划是一种有效的手段;而对每个人而言,职业生命是有限的,如果不进行有效的规划,势必会造成生命和时间的浪费。作为当代大学生,若是带着一脸茫然,踏入这个拥挤的社会怎能满足社会的需要,使自己占有一席之地?因此,我试着为自己拟定一份职业生涯规划,将自己的未来好好的设计一下。有了目标,才会有动力。掌握在自己手中大学生职业生涯规划设计书花开花又落,春去春又回。踏着时光车轮,我已走到20岁的年轮边界。大学生职业生涯规划设计书驻足观望,电子、网络铺天盖地,知识信息飞速发展,科技浪潮源源不绝,人才竞争日益激烈,形形色色人物竞赴出场,不禁感叹,这世界变化好快。大学生职业生涯规划设计书身处信息世界,作为一名软件工程专业的当代大学生,我不由得考虑起自己的未来。在机遇与挑战粉墨登场的未来社会里,我究竟该扮演如何一个角色呢?
水无点滴量的积累,难成大江河。人无点滴量的积累,难成大气候。没有兢兢业业的辛苦付出,哪里来甘甜欢畅的成功的喜悦?没有勤勤恳恳的刻苦钻研,哪里来震撼人心的累累硕果?只有付出,才能有收获。未来,掌握在自己手中。大学生职业生涯规划设计书由此,想起自己走过岁月中的点点滴滴,我不禁有些惭愧。我对自己以往在学业、文体、社团活动中的表现不是很满意。我发现我自己惰性较大,平日里总有些倦怠、懒散,学习、做事精力不够集中,效率不高,态度也不够专注。倘若不改正,这很可能会导致我最终庸碌无为。不过还好,我还有改进的机会。否则,岂不遗憾终生?
一本书中这样写到:一个不能靠自己的能力改变命运的人,是不幸的,也是可怜的,因为这些人没有把命运掌握在自己的手中,反而成为命运的奴隶。而人的一生中究竟有多少个春秋,有多少事是值得回忆和纪念的。生命就像一张白纸,等待着我们去描绘,去谱写。
而如今,身为大学生的我们,在一天天消磨时光的日子里,不如抓紧时间多学一些知识来充实自己,不如多在学校社团里加强个人锻炼,充实自己的管理、说教、实践能力。人的大学时光一生中也许就一次,不把握好,将来自己一定回追悔莫及。于是,再经过一番深思熟虑之后,我决定把自己的未来设计一下。
有了目标才能有动力!
第二 个人概况 (Personal Data)
毕业院校:杭州电子科技大学
专业:计算机系统管理,软件工程(网络方向)
———————————
第三 在自己心目中的最理想职业目标和方向(按顺序):
1、网络工程师(负责网络研究和管理工作)
2、电信、网络、IT企业、影视娱乐的管理人员
3.大专和高等院校的教师(网络方面的)
———————————
第四 自我认知与分析(Personal Valuation)
1.自己兴趣爱好简单分析:
业余爱好:读书写作、听音乐、打羽毛球、外出旅游。
喜欢的文学作品:巴金的《家》《春》《秋》、《围城》、《骆驼祥子》等。
心中偶像:绍兴周恩来、南阳诸葛亮、韶山毛泽东、香港李嘉诚。
2.自己优势分析:我是一个认真而严谨的人,勤奋而负有责任感,对待问题善于和别人交流,认准的事情很少会改变或气馁,做事深思熟虑,信守承诺并值得信赖。我依靠理智的思考来做决定,总是采取客观、合乎逻辑的步骤,不会感情用事,甚至在遇到危机时都能够表现得平静。 我谨慎而传统,重视稳定性、合理性;我善于聆听并喜欢将事情清晰而条理的安排好。我喜欢先充分收集各种信息,然后根据信息去综合考虑实际的解决方法,而不是运用理论去解决。我对细节非常敏感,有很实际的判断力,决定时能够运用精确的证据和过去的经验来支持自己的观点,并且非常系统有条不紊,对那些不这样做的人没有耐心。
3.自己劣势分析:我非常固执,经常沉浸于具体的细节和日常的操作中,我看问题有很强的批判性,通常持怀疑态度,我需要时常的换位思考,更广泛的收集信息,并理智的评估自己的行为带来的可能后果。我过于认真,对某些事物过于严谨和挑剔;我非常有主见,时常会将自己的观点和标准强加给别人,而且无视那些不自信的人的建议。自我感觉若能在以后多尝试和接受新颖的、有创造性的方法,就能做出更有效的决策。
———————————
第五 职业分析(知彼)
1、软件工程(网络方向)专业毕业与就业分析
u .学院培养目标:本专业培养有一定政治觉悟、有强烈的进取心、责任感、开拓精神的具有熟谙专业知识与技能,从事计算机网络工程安装,系统操作管理与维护,网站建设与维护、计算机网络软件编制,网络软硬件产品的销售与服务等工作,在具有计算机网络的公司、银行、证券公司、海关、企事业单位及公、检、法等部门,从事计算机信息安全管理,或信息安全产品销售与服务等工作,从事计算机信息化管理,计算机辅助设计,ERP等相关软件的维护、销售、项目开发等工作。
u 主要课程::《大学英语》《计算机硬件基础》《网页脚本设计java script》《windows网络操作系统》《计算机网络及应用—华为3COM网络学院HCNE(1,2学期)》《VC++程序设计语言》《TCP/IP协议原理》《数据结构与算法》《Oracle数据库设计》《Java程序设计》《华为3COM网络学院(3~8学期)—高级路由技术与IPv6》《计算机网络组建与系统集成》,《基于WED的网络服务器管理》,《Linux》《C脚本语言与动态网页设计》《目录服务》》《ARM嵌入式系统》,《高级交换技术》,《JSP》
就业方向:计算机和互联网类的,计算机,网络工程和软件工程方向的工作。
社会实践:
2004年考入浙江工业大学计算机系统管理专业,
在浙江工业大学期间,曾参加过,计算机系统管理实训,
网站设计实训,数据库设计实训,工大恒生软件实训
2006年4月10日至6月10日在杭州学易科技有限公司实习,从事软件测试工作
2006年考入杭州电子科技大学软件工程专业
第六 职业定位(找准坐标)
职业:网络工程师(负责网络研究和管理工作)、电信、网络、IT企业、影视娱乐的管理人员、大专和高等院校的教师(网络方面的)
主要爱好传统性的工作,喜欢整理、安排、规划事务,对经营性事务也有兴趣,乐于工作的筹划、运作,细心、有条理。喜欢有条不紊的工作,要求严谨点的,
在工作中,往往对自己所从事的工作认真而执着,表现出旺盛的精力,喜欢工作一切都井井有条,喜欢有序地控制,希望一切都在自己的良好控制之下,喜欢能良好支配一切的活动,对过程很在意,但也乐于在工作中有所开拓和变革,有事业心。所适宜的工作环境:经营与事务交叉性工作,制度化的相当严谨的环境,但允许一定程度的自由发挥和创造性;有一定权限,有支配权。我的成功标准:我的成功标准是个人事务、职业生涯、家庭生活的协调发展。只要自己尽心尽力,能力也得到了发挥,每个阶段都有了切实的自我提高,即使目标没有实现(特别是收入目标)我也不会觉得失败,给自己太多的压力本身就是一件失败的事情。为了家庭牺牲职业目标的实现,我认为是可以理解的。在28岁之前一定要有自己的家庭。
———————————
第七 树立目标计划
短期计划(大学计划):2007年--2008年合格大学毕业,本科毕业证书,学士学位,并取得相关人才必备证书,如全国网络工程师,四级英语证书,还有一些网络认证等,在杭州有稳定的工作。
中期计划,考公务员,在家里,准备车准备房子
长远计划:事业有成,家庭幸福美满.
———————————
第八 我的一些感想
回首昨天,曲折坎坷外,得失荣辱间,都是一个奋进勃发的身影,都是一份无悔无愧的心情。在学校期间,我不断积极进取,立足扎实基础,努力学习专业知识,成绩优异。积极参与学校组织的各种活动,关心同学热爱集体,具有良好的团队协作精神,深知个人的知识与勤奋固然重要,但集体团队的协作精神更应该得到发展。作为即将是2008年的毕业生,在这样一个竞争激烈的社会里,不仅要掌握好专业知识,更加要做到与社会与时代接轨。因此,学习之余,我注重知识与能力的平衡发展。
即将踏出校门的我谈不上十分的成熟和足够的经验,但我有过人的胆识和自信心,正所谓:“是龙,就应该去大海搏击,是鹰,就应该去长空翱翔。”在面临人生的重大抉择之际,我希望能加盟于贵单位,展示自己的才能,实现个人的理想与价值。
在长期的勤工俭学中我学会了如何自食其力、如何与人相处;而长期的暑期社会实践则增强了我的分析问题和解决问题的能力。而深刻的理解力、敏锐的洞察力、独立的思考、分析和判断能力以及浓厚的科研兴趣是我大学生涯中最大的收获,当然最为重要的还是我学会了如何做人做事。
2、不少人都曾经这样问过自己:“人生之路到底该如何去走?”记得一位哲人这样说过:“走好每一步,这就是你的人生。”是啊,人生之路说长也长,因为这是你一生意义的诠释;人生之路说短也短,因为你度过的每一天都是你的人生。每个人都在计划自己的人生,都在实现自己的梦想:梦想是一个百花园,我只是百花园里一根小草,可小草也有一个大理想,于是我在这里畅想一下自己的职业生涯。 一、个人分析与角色评价:
1.个人分析:
别人说我性格偏于内向,但我认为我性格具有两面性,我喜欢安静的环境,喜欢一个人学习、看书。但有时却喜欢热闹,和朋友在一起谈天,给彼此带来快乐,我会感觉很开心。喜欢画画,喜欢运动,尤其是打乒乓球。也喜欢路游,开阔眼界,陶冶情操。另外,我具有团队精神和协作能力,比较强的创新意识,动手实践能力及自学能力。但我有一个缺点,就是优柔寡断。
2、角色评价:
父母:良好的沟通能力,善于自立;
老师:积极乐观,有上进心,责任心,学习刻苦,遵守纪律;
同学:工作能力强,责任感强,能顾全大局。
二、社会环境和职业分析(十年规划)
1、社会一般环境:中国政治稳定,科技发展层出不穷。
2、职业特殊社会环境:中国科技发展较晚,科技知识和科技产品大部分还源于国外,因此科技力量相对薄弱。
三、行业分析:
未来社会发展的最终趋势将是集体一体化,这就注定网络的链接必不可少,现在电脑已普及到大众用户。网上购物,网络管理已成为人类交流的一种途径。服务器设备广泛用于各大商场及商业媒体。但总的来说,其功能还不晚上。因此,全自动化技术将成为网络管理的任务所在。
四、职业目标分解与组合:
1、美好愿望:事业有成,家庭幸福;
职业目标:网络管理,软件开发;
成果目标:网络工程师
能力目标:学以致用
总体目标:完成本科,研究生的学习,进入思科网络公司或其他外资企业,成为高科技技术人才。
2、成功标准:
只要自己尽心尽力,能力也得到发挥,每个阶段都有切实的自我提高,即使目标没有实现,也不觉得失败,决不气馁!
五、大学期间学习计划:
学习不仅是为了以后的工作,最重要的是它能让你终身收益。我一直坚信“活到老,学到老”的格言。无论怎样,学生最首要的任务就是学习。如果抛开学习,那么一切都无从谈起。在数字化、信息化的时代对计算机知识的掌握尤为必要。所以我对自己的大学生涯作出以下简短设计。
大学二年级:
1、认真学好专业知识和其他基础学科,坚信基础的东西一定是最重要的。注意提高自身的基本素质,通过参加各种社团等组织,锻炼自己的各科能力,同时检验自己的知识技能。
2、做一些兼职,社会实践活动,同时在课余时间从事一些与自己未来职业有关的专业类的工作,进一步提高自己的责任感、主动性和掌
3、证书大突破:考取英语四、六级。全国计算机二级等级考试。以及其他相关证书。
大学三年级:
1、开始尝试并学习写简历、求职信,了解社会需求。搜集与本人目标工作有关的信息,并通过信息渠道尝试和已毕业的校友交流思想 。开始毕业前的申请,积极参加招聘,在实践中校验自己的知识积累。
2、预习或模拟面试,积极利用学校提供的条件,了解就业指导中心体统的用人公司资料信息,强化求职技巧,进行模拟面试等训练,尽可能作出较为充分准备的情况下进行演练,为自己以后找到理想的工作而努力。
3、获得普通话等级证书及全国计算机三级等级考试。
大学目标规划表:
六、为人处世方面:
1、改掉自己偶尔情绪急躁的坏毛病,千万不和同学发生冲突。
2、最终身边的每一个人,不管他(她)有什么性格,学习优秀的人,感化恶搞的人,用一颗真诚的心去对待他们。不去争名利,不计较利益得失,做一位合格的中国公民,为和谐社会的构建做自己力所能及的事。
3、抓住每一个锻炼自己的机会,这样的机会不是每个人都有,全力以赴完成班级和学院本职工作,为集体做一些力所能及的事,干出一点成绩,不一定非要得到别人的肯定,重要是给自己找一个相信自己的理由。
七、生活方面:
大学是真正属于自己的天地,在人的一生中这样的时光不多,好好把握将会收益终身。
要多和家人及同学联络,告诉他们我们的快乐和不安。一路走来,是他们一直支撑着我们克服种种困难。尤其是上了年纪的父母,他们操劳了一辈子也许最想要得只是我们的一声问候。我决不会让他们失望。
八、职业生涯规划实施方案存在的障碍:
目前,我经济条件相对薄弱,作为未来的信息人士,我较少能接触到高科技产品,且时间较少。
解决方法:
我在校一直勤工俭学,利用假期时间做兼职。尽量将我的大部分开支投资到学业中去。
九、本人对职业生涯规划的看法:
俗话说:“欲行千里,先立其志。”规划我的职业生涯,就相当于在人生之路上迈出一大步。一位哲人曾说过:“没有目标的人,就像是漂泊的船只,可能永远到大不了壁岸。”写过职业生涯规划书,突然感觉像是在黑暗中看到了亮光,让我有目标可循。进而信心百倍,动力十足的去实现它,这乃是人生的一大快事。我不再盲目的、无目的的学习,生活,而是有计划、有步骤的生活。
十、结束语:
计划固然好,但最重要的在于付出实施并取得成效。时时刻刻都不能忘记,任何目标,只说不做到头来只是一场空。
路漫漫其修远兮,吾将上下而求索。不经历风雨怎能见彩虹。我们要时刻保持一颗清醒的头脑。其实,每个人心中都有一座山,雕刻着理想、信念、追求、报负;每个人心中都有一片森林,承载着收获、芬芳、失意、磨砺。一个人,若要获得成功,必须拿出勇气,付出努力、拼搏、奋斗、成功。机遇不相信眼泪,不相信颓废,不相信幻影,只相信爱打拼的人!
3、 自己下载
C. 基于linux的课程设计有哪些
一 、需求分析
本程序的功能是:模拟车站售票厅内进程同步问题,售票厅任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需要在外面等待。每个购票者可看成一个进程。
功能的互斥与同步的实现:
1. 当有乘客进入售票厅购票时,售票员不能下班(进程的互斥);
2. 当没有乘客购票时,则售票员下班(进程的互斥);
3. 乘客进入购票时,售票员给予售票(进程的同步)。
二、功能设计
本程序的设计思路和原理比较简单,由两个过程来实现售票员与乘客购票之间的过程。
1.售票员的操作过程
一开始时,设定当前售票厅内的人数为20,然后根据当天售票员到班情况来选择售票员上班的人数,由于过程和操作相似,故这里选择的售票员人数为0,1,2。
①当选择售票员为0时,则提示当天没有售票员上班,本售票站不进行售票操作;
②当选择的售票员为1时,则提示当天只有一个售票员上班,故每次只能对一个人进行售票操作;
③当选择的售票员为2时,则提示当天有两个售票员上班,故每次能同时对两个人进行售票操作。
2.乘客购票操作过程
①乘客先在售票厅外等候排队购票;②当提示售票厅内人数不足20人时,则按排队顺序进入售票厅内进行购票动作;③乘客购票完后则离开售票厅内。
3实现过程具体分析
① 由于程序中的售票厅最大只能容纳20个人,所以,当售票厅内的人数进入超过20时,则程序会提醒用户必须减少到人数小于等于20,不然程序不执行下去;
② 当进入售票厅内的人数与售票厅里原先的人数之和不足20时,会提醒用户,售票厅内还能容纳具体的人数;
③ 若在售票员处理完当前购票者的操作后,售票厅里人数为零;则售票员当天的售票任务结束,不再进行售票(这里只考虑这一理想情况)。
④ 当天如果选择的售票员上班人数为0时,则当天不进行售票操作。
三、功能实现过程
1.设置两个私有信号量:spys、ck,分别是售票员和乘客的。乘客的私有信号量初始值设为ck=0,售票员的初始值设为spys=1,以此来表示乘客的购票和售票员的售票操作的初始状态,当没有售票员时,则不能进行售票,当有乘客时,则售票员不能拒绝售票(这里排除票已售完的情况)。
1.实现流程图
2.售票员与乘客之间的过程
这里是实现P、V操作
Begin
Semaphore Spys,ck ;//设置售票员与乘客的私有信号量
Spys=1,ck=0;//初始化信号量
cobegin
int spy;//售票员人数
process 售票员 //售票员执行的过程
begin
switch(spy){ //选择售票员人数 ;
Case 0:goto S0;
Case 1: goto S1;
Case 2: goto S2;
}
S0: return 0;//无售票员上班,乘客无法购票;
End
S1:int P1( spys); //P操作
Hello( );//自定义的一个无返回值函数
售票操作;
售票结束;
提示下一位购票者;
Int V1(ck); //V操作
排队等候进入售票大厅内;
进入厅内排队等候购票;
购票后,离开售票大厅;
Goto S1;
End
S2:int P2( spys); //P操作
Hello( );//自定义的一个无返回值函数
售票操作;
售票结束;
提示下一位购票者;
Int V2(ck); //V操作
排队等候进入售票大厅内;
进入厅内排队等候购票;
购票后,离开售票大厅;
Goto S2;
End
四、程序结构
1.程序使用的头文件和宏
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#define MAX 20//厅内最大能容纳的人数
2.程序使用的函数和全局变量
int spys=1;//售票员的私有信号量
int spy;//选择售票员的人数,最多只能有两个
int ck=0;//厅内购票者私有信号量
int n=MAX;
int x;//每次进入售票厅内的人数
int P1();//定义P操作函数,一个售票员执行的过程
int P2();//定义p操作,两个售票员执行该过程
int j=0;//人多时,减少的人数
int V1();//V操作函数,一个售票窗口时购买者执行的过程
int V2();//V操作函数,两个售票窗口时购买者执行的过程
void Hello();//输出客套语句
void Introce();//本售票站人员介绍
3.主函数
int main()
{
Introce();
printf("请输入今天上班的售票员人数:(最多2位):\n");
scanf("%d",&spy);
switch(spy){
case 0:{printf("sorry!由于今天假日,所以售票员不上班,请各位乘客改乘其他交通工具!\n");break;}
case 1:{ printf("今天就一个窗口售票哦!请乘客们排成一队!谢谢合作!\n");P1();break;}
case 2:{printf("今天有两个售票窗口啦!请乘客们按顺序排成两队!谢谢合作\n");P2();break;}
default:{printf("本站员工有限,没有多余员工哦!");break;}
}
return 0;
}
D. 操作系统课程设计(linux)
我也遇到过这个问题,安装的时候你没有装图形用户终端(似乎是叫回Xwindow)。之前有叫你打勾安答装的。所以最后就只有命令行界面了(其实这个界面也可以解,但我不大会)。重回到开头找到打勾选项去勾选相应图形界面安装!
E. LINUX操作系统课程设计:企业服务器的配置与实现怎样做
一般购买大品牌的服务器才有相应的驱动程序:
硬件:4核CPU,4G的内存,主板带RIAD,512G内存,
安装与配置Web服务器
Apache服务器源代码安装:
http://httpd.apache.org
Apache RPM软件下载:
http://updates.redhat.com
Apache模块和MPM可使用类型的更详细介绍:
http://httpd.apache.org/docs-2.0/mod/N
Apache对模块的使用有两种方法,一种是将其永久性地编译Apache内核中,即采用静态编译;另一种是采取动态编译,将其编译成DSO(Dynamic shared object,动态共享对象)模块,DSO模块的存储是独立于内核的,可被内核在需要时调用,具体是由mod_so模块提供的运行时配置指令(LoadMole)来实现的,若在编译中包含有任何动态模块,则mod_so模块会被自动包含进内核。若仅希望内核能够支持装载DSO模块,但不实际编译任何动态模块,则在编译配置时就明确指定--enable-so配置参数。
还提供了多道处理模块MPMs(multi-processing moles),编译过程中必须包含一个且只能有一个MPM,编译时系统会根据平台类型自动选择使用默认的MPM,也可在configure命令行中配置:
--with-mpm=要使用MPM类型
模块的指定方法:
1.静态编译模块到内核中,如编译包含mod-sll和mod_rewrite(去掉mod_)模块:
./configure --enable-mole="ssl rewrite"或./configure --enable-sll --enable-rewrite
动态编译模块为DSO:
./configure --enable-mods-shared="ssl rewrite"或./configure --enable-rewrite=shared
模块说明:
httpd -l //查看httpd进程中包含哪些模块;
httpd -S //检查虚拟主机的配置是否存在语法错误;
httpd -f //启动httpd守护进程时,加载配置文件;
mod_deflate模块允许支持此功能的浏览器,在请求的页面内容发送前进行压缩,以节少网络带宽。
mod_vbost_alias模块支持虚拟主要的动态配置。
chkconfig --level 235 httpd on
chkconfig --list httpd
service httpd start
service httpd restart
service httpd reload //重新装载httpd.conf(不重启服务器)
./configure --prefix=/usr/local/apache2 --enable-so --with-mpm=prefork --enable-moles="setenvif rewrite deflate vhost_alias"
#apachectl start //启动Apache服务器;
#apachectl restart
#echo "/usr/local/apache2/bin/apachectl start">>/etc/rc.d/rc.local //自动启动
#httpd -t //检查配置文件httpd.conf
#apachect configtest //检查配置文件httpd.conf
#ServerRoot apache安装路径 //设置服务器的根目录;
#ServerName 完整的域名[:端口号] //设置服务器用于重定向(端口)和虚拟主机;
#Listen [IP地址]端口号 //告诉服务器接受来自指定端口或者指定IP地址的某端口的请求;
Listen 80
Listen 61.186.160.104:8088
#ServrAdmin E-mail地址 //设置Web站点管理员的E-mail地址,当产生错误时(如指定的网页找不到),服务器返回给客户端的
错误信息中将包含该邮件地址,以告诉用户该向谁报告错误;
#DocumentRoot 目录路径名 //设置Web服务器站点根目录;
DocumentRoot /usr/local/apache2/htdocs
#ErrorDocument 错误号 所要显示的网页 //定义当遇到错误时,服务器将给客户端什么样的回应,通常是显示预设置的一个错误页面;
grep ErrorDocument /etc/httpd/conf/httpd.conf //httpd.conf中一些对不同错误的响应信息;
#DirectoryIndex index.php index.htm index.html default.htm //设置站点主页文件的搜索顺序;
#user nobody //设置服务器以哪种(nobody)用户身份来响应客户端的请求;
#Group # -1 //设置服务器以哪种(nobody)用户身份来响应客户端的请求;nobody用户权限较小。
#AddDefaultCharset GB2312 //指定默认的字符集;
#TimeOut //设置连接请求超时的时间(秒),超时将断开;
#KeepAlive //用于启用持续的连接或者禁用;KeepAlive On|Off
#MaxKeepAliveRequests //设置在一个持续连接期间允许的最大HTTP请求数目;
#KeepAliveTimeout //设置在关闭TCP连接之前,等待后续请示求的秒数;一旦接受请求建立了TCP连接后则开始计时;
#PidFile logs/httpd.pid //指定存放httpd主(父)进程号的文件名;
日志配置命令:
#ErrorLog //指定服务器存放错误日志文件的位置和文件名;
#LogLevel //设置记录在错误日志中的信息的详细程序;
emerg 紧急,系统将无法使用;
alert 必须立即采取措施;
crit 致命情况;
crror 错误情况;
warm 警告;
info 普通信息;
notice 一般重要情况;
debug 出错级别信息;
http://127.0.0.1 //测试Apache是否正常运行
Test Page
This page is used to test the proper operation of the Apache Web server after it has been installed. If you can read this page, it means that the Apache Web server installed at this site is working properly.
#rpm -q httpd
#rpm -Uvh http-2.0.40-21.11.i386.rpm
目录说明:
/etc/httpd/conf //Apache服务器的配置文件httpd.conf
/etc/rc.d/init.d/ //Apache服务器启动脚本安装,httpd
/var/www/html //Web站点根目录;
/usr/bin //Apache软件包提供的可执行程序安装在该目录下。
/etc/httpd/logs //日志文件
htdocs //默认Web站点的根目录,可通过配置文件httpd.conf进行设置或更改;
cgi-bin //CGI脚本目录;
bin //apachectl启动脚本会自动设置在某些操作系统下,正常运行httpd所需的环境变量;
httpd守扩进程被调用后做的第一件事就是读取httpd.conf,并根据其配置项来配置当前Web服务器;
httpd.conf 分为三部分(section),
第一部分为全局环境设置,主要用于设置ServerRoot、主进程号的保存文件、
对进程的控制、服务器侦听的IP地址、端口、要装载的DSO模块
第二部分是服务器的主要配置指一位置;
第三部分用于设置和创建虚拟主机;
Listen 80 //Web服务器绑定在80端口;
DocumentRoot //设置Web站点的根目录等;
访问控制指令:
<Directory /usr/local/*/htdoes> //<Directory>使指定的目录及其子目录有效;不可嵌套。目录名可使用“*”或“?”通配符,
<Files ~“\.ht"> //作用于指定的文件,则不管该文件实际存在子哪个目录,允许所有主机访问位于任何目录下的.ht开的文件
Order allow,deny //指定allow和deny语句,哪一个被执行;允许、禁止访问主机。
Allow from all //允许所有主机访问;也可以是IP地址。
<Files>
</Directory>
<Location /assistant> //针对URL地址进行访问限制,不是文件系统;
Order deny,allow //
Deny from all
Allow from 61.186.160.105
</Location>
Order deny,allow //若主机没有被特别指出拒绝访问,则该资源被允许访问。
Order allow,deny //若主机没有被特别指出允许访问,则该主要将被拒绝访问该资源。
Order mntual-failure //只有那些在allow语句中被指定,同时又没有出现在deny语句的主机,才允许访问。若主机在两条指
令中都没有出现,则将被拒绝访问;
*、? //*代表任意个字符,?代表一个任意的字符;
<DirectoryMatch> //指定目录名时,可直接使用正则表达式;<Directory>若要使用正则表达式,则需要在正则表达式前加“~"
<FilesMatch> //可直接使用正则表达式来通配多个文件;
AccessFileName .htaccess //.htaccess分布式配置文件,在该文件中也可放置一些配置指令,以作用于该文件所在的目录以及
其下的所有子目录。搜寻.htaccess文件会降低系统性能;
<Directory />
AllowOverride None //禁止系统查找.htaccess文件;
Options FollowSymLinks //Options:控制在特定目录中将使用哪些服务器特性;
</Directory>
Options命令可用的选项:
None 不启用任何额处特性;
All 除MultiViews之外的所有特性,默认设置;
ExecCGI 允许执行CGI脚本;
FollowSymLinks 服务器允许在此目录中使用符号连接。在<Location>段中无效
Includes 允许服务器端包含SSI(Server-side includes)
IncludesN()EXEC 允许服务器端包含,但禁用#exec和#exec CGI命令。但仍可以从ScriptAltase目录使用#include虚拟CGI脚本;
Indexes 如果一个映射目录的URL被请求,而此目录中又没有DirectoryIndex(如:index.html),那么服务器返回一个
格式化后的目录列表;
MultiViews 允许内容协商的多重视图;
SymLinksIfOwnerMatch 服务器仅在符号连接与其目的目录或文件拥有者具有同样的用户ID时,才使用它;
ExecCGI 拥有ExecCGI执行权限;
prefork.c 控制Apache进程,对于使用prefork多道处理模块的Apache服务器;
<IfMole prefork.c>
StartServers 5 //设置服务器启动时启动的子进程的个数;
MinSpareServers 5 //设置服务器中空闲子进程(即没有HTTP处理请求的子进程)数目的下限;
MaxSpareServers 10 //设置服务器中空闲子进程数目的上限。若空闲子进程超过该设置值,则父进程就会
停止多余的子进程;
MaxClients 150 //设置服务器允许连接的最大客户数;
MaxRequestsPerChild 0 //设置子进程所能处理请求的数目上限,0为不受限制;
</IfMole>
access_log //日志文件用于记录服务器处理的所有请求;
CustomLog 指定access_log日志文件的位置和日志记录的格式;
LogFormat 定义日志的记录格式;
LogFormat 日志格式字符串 日志格式名称
LogFormat "%h %1 %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined;
LogFormat "%h %1 %u %t \"%r\" %>s %b" common;
LogFormat "%{Referer}i->%U" referer;
LogFormat "%{User-agent}i“ agent;
LogFormat logs/access_log common
LogFormat "%v %h %l %u %t \"%r"\ %>s %b" vhost
CustomLog logs/vhost_log vhost
%a 远程主机IP地址
%A 本地主机IP地址
%h 远程主机名
%H 请求协议
%l 远程登录名
%u 来自auth 的远程用户
%U 请求的URL路径
%U{User-agent}i 用户浏览器类型
%b 发送的字节数,不包括HTTP标题
%t 请求的时间
%r HTTP请求的第一行的内容
%s HTTP响应状态码,200代表访问成功,404代表文件未找到,403代表禁止访问,401代表未授权访问,400代表错误请求。
%m 请求方法
%v 服务于该请求的服务器的ServerName
%V 服务器的名字,取决于UseCanonicalName的设置
%{Host}i 返回HTTP请求的主机头信息,可能含端口号信息
split-logfile </var/www/myweb/vhost_log //当所有虚拟机日志都记录在主站点日志中时,使用此命令将日志按虚拟主机名分组,拆分成一个个独立的日
志文件,第个日志文件采用"虚拟主机名.log“形式命名,其中包含了该虚拟主机所产生的日志记录;
容器与访问控制指令:容器指令通常用于封装一组指令,使其在容器条件成立时有效,或者用于改变指令的作用域。
<IfMoe ! mpm_winnt.c> //<IfMoe>用于判断指定的模块是否存在,若存在(被静态地编译进服务器,或是被动态装载进服务器)则包含于
其中的指令将有效,否则会被忽略。可嵌套使用。
<IfMoe ! mpm_netware.c> //若要使模块不存在时所包含的指令有效,只需在模块名前加一个“!”即可,
User nobody
Group # -1
</IfMoe>
</IfMoe>
基于域名虚拟主机:
例:假设当前服务器的IP地址为192.168.3.120,现要在该服务器创建两个基于域名的虚拟主机,使用端口为标准的80,其域名分别为www.myweb1.com和www.myweb2.com,站点根目录分别为/var/www/myweb1和/var/www/myweb2,日志文件分别放在/var/vhlogs/myweb1和/var/vhlogs/myweb2目录下面,Apache服务器原来的主站点采用域名www.myweb.com进行访问。
#vi /etc/hosts //使用/etc/hosts进行域名注册;
192.168.3.120 www.myweb1.com www.myweb2.com www.myweb.com
#ping www.myweb1.com //检测域名解析是否正常;
#ping www.myweb2.com
#ping www.myweb.com
#mkdir -p /var/www/myweb1
#mkdir -p /var/www/myweb2
#mkdir -p /var/vhlogs/myweb1
#mkdir -p /var/vhlogs/myweb2
#vi /etc/httpd/conf/httpd.conf
Listen 80 //设置Listen指令侦听的端口
NameVirtualHost 192.168.3.120 //基于域名的虚拟主机,如果对多个地址使用了多个基于域名的虚拟主机
则对每个地址均要使用此指令:NameVirtualHost IP地址:端口
NameVirtualHost * 当IP地址无法确定时,使用“*”通配任意的IP地址
<VirtualHost 192.168.3.120> //定义一个虚拟主机,VirtualHost的参数必须与NameVirtualHost后面所使用的参数保持一致。
ServerName www.myweb.com //当一个请求到时,服务器会首先检查它是否使用了一个能和NameVirtualHost相匹配的IP地址。如果匹配,就会
DocumentRoot /usr/local/apache/htdoes //就会查找每个与这个IP地址相对应的<VirtualHost>配置段,并尝试找出一个ServerName或ServerAlias配置相
ServerAdmin [email protected] //与请求的主机名(域名)相同的,若找到,则使用该虚拟主机的配置,并响应其访问请求。否则将使用符合这个
</VirtualHost> //IP地址的第一个列出的虚拟主机。在最前面的虚拟主机成为默认虚拟主机。
<VirtualHost 192.168.3.120>
ServerName www.myweb1.com
DocumentRoot /var/www/myweb1
DirectoryIndex index.php index.php3 index.html index.htm default.html default.html
ServerAdmin [email protected]
ErrorLog /var/vhlogs/myweb/error_log
TransferLog /var/vhlogs/myweb1/access_log
</VirtualHost>
<VritualHost 192.168.3.200>
ServerName www.myweb2.com
DocumenRoot /var/www/myweb2
DirectoryIndex index.php index.php3 index.htm index.html default.htm default.html
ServerAdmin [email protected]
ErrorLog /var/vhlogs/myweb2/error_log
TranferLog /var/vhlogs/myweb2/access_log
</VirtualHost>
<Directory /var/www> //对Web站点目录设置访问控制;
Options FllowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
Apachectl –S //查查虚拟主机配置是否正确;
Aparhectl restart //重启Apache服务器配置生效;
例:
NameVirtualHost 192.168.168.10 //服务器配有两块网卡,IP:内网192.168.168.10,外网61.186.160.104,在Internet网中,企业域名
NameVirtualHost 61.186.160.104 //www.example.com指向外网IP地址,在企业内网的DNS服务器中,指向内网IP地址;现要求为来自内网
<VirtualHost 192.168.168.10 61.186.160.104> //外网的请求提供同样的Web服务。(httpd.conf中设置)
DocumentRoot /www/server1
ServerName www.example.com
</Virtual>
例:
Listen 80 //服务器:192.168.168.154,服务器上创建两个基于域名(主机名)的虚拟主机,域名:www.myweb3.com和www.
Listen 8080 //myweb4.com,每个虚拟主机的80端口和8080端口,分别服务一个Web站点,其站点根目录分别为
// /var/www/myweb3-80、/var/www/myweb3-8080、/var/www/myweb4-80、/var/www/myweb4-8080。
NameVirtualHost 192.168.168.154:80 //www.myweb3.com的80端口作为默认Web站点。
NameVirtualHost 192.168.168.154:8080
<VirtualHost 192.168.168.154:80>
ServerName www.myweb3.com
DocumentRoot /var/www/myweb3-80
<VirtualHost>
<VirtualHost 192.168.168.154:8080>
ServerName www.myweb3.com
DocumentRoot /var/www/myweb3-8080
</VirtualHost>
<VirtualHost 192.168.168.154:80>
ServerName www.myweb4.com
DocumentRoot /var/www/myweb4-80
</VirtualHost>
<VirtualHost 192.168.168.154:8080>
ServerName www.myweb4.com
DocumentRoot /var/www/myweb4-8080
</VirtualHost>
基于IP地址虚拟主机:
#cd /etc/sysconfig/network-scripts //服务器有两张网卡eth0、eth1,eth0:192.168.167.157,
#cp ifctg-eth1 ifcfg-eth1:0 //eth1:192.168.167.156.eth0网卡用作了基于主机名的虚拟主机,
#vi ifcfg-eth1:0 //eth1通过IP别名方式,为其绑定多个IP地址,用于提供基于IP地址
DEVICE=eth1:0 //的虚拟主机。eth1绑定的第一张虚拟网卡的设备名为eth1:0,对应的
IPADDR=192.168.167.157 //配置文件为ifcfg-eth1:0,通过修改配置文件中的设备名和IP地址,
#ifdown eth1 //即可实现IP地址的绑定。
#ifup eth1:0
#ifup eth1
#ping 192.168.167.157
#ping 192.168.167.156
#vi /etc/hosts //192.168.167.156:www.example2.com,192.168.167.157:
192.168.167.157 www.example3.com //www.example3.com,试为其创建基于IP地址的虚拟主机,端口使用80
#mkdir -p /var/www/example2 //目录分别为/var/www/example2、/var/www/example3,为这两个域再增
#mkdir -p /var/www/example3 //8080端口,使其也能在8080端口发布另外的Web站点。Web站点根目录分
///var/www/example2-8080、/var/www/example3-8080
#vi httpd.conf
Listen 80
Listen 8080
<VirtualHost 192.168.167.156:80>
ServerName www.example2.com
DocumentRoot /var/www/example2
</VirtualHost>
<VirtualHost 192.168.167.156:8080>
ServerName www.example2.com
DocumentRoot /var/www/example2-8080
</VirtualHost>
<VirtualHost 192.168.167.157:80>
ServerName www.exaple3.com
DocumentRoot /var/www/example3
</VirtualHost>
<VirtualHost 192.168.167.157:8080>
ServerName www.exaple3.com
DocumentRoot /var/www/example3-8080
</VirtualHost>
F. 设计一个linux打字训练游戏,根据设计并实现的内容给出一个完整的课程设计
testdigit="39849232"
testchar="jdifjieajfg"
menu()
{
cat<<EOF
1.练习输入数字
2.练习输入字母
q.退出
EOF
}
whiletrue
do
menu
input=
read-p"输入选项:"ch
case$chin
1)
echo$testdigit
read-t5-p"输入上述数字:"input
if["$input"!="$testdigit"];then
echo"typeerror"
fi
;;
2)
echo$testchar
read-t5-p"输入上述字母:"input
if["$input"!="$testchar"];then
echo"typeerror"
fi
;;
q|Q)
break;
;;
*)
echo"选项错误"
;;
esac
done
G. linux system课程设计的摘要怎么写
随着Internet的日抄益普及,在网络上学会配置网络服务器,有着非常重要的意义。综合网络服务器基于LINUX操作系统上,进行服务器与客户端之间的连接,实现服务器为客户端提供服务。其实训内容包括linux服务器搭建与测试:dhcp(主机IP的动态获取)服务器搭建与应用、dns(域名解析)服务器搭建与应用、ftp(能够实现网络文件传输的上传和下载)
服务器搭建与应用、www(能够实现基于域名的虚拟机访问)服务器搭建与应用、网络访问等等。综合网络服务器的功能强大,操作简单,扩展性强,稳定性高;方便不同操作系统平台之间的移植;网站最大限度地实现易维护性和易操作性。
Linux是一套免费使用和自由传播的操作系统,以其稳定性和灵活性而著称。完善的内置网络是Linux的一大特点。Linux为用户提供了完善的、强大的网络功能。作为一种网络操作系统,它在网络服务器上得到了广泛的应用。
H. 嵌入式Linux课程设计源代码
Linux课程体系了解一下:
Linux云计算网络管理实战
Linux系统管理及服务配置实战
Linux Shell自动化运维编程实战
Linux云计算网络管理实战
大型网站高并发架构及自动化运维项目
网站安全渗透测试及性能调优项目实战
公有云运维技术项目实战
企业私有云架构及运维实战
Python自动化运维开发基础
Python自动化运维开发项目实战
I. Linux课程设计实施方案
; boot.asm: ANOS fat12 软盘启动代码
; Larry Li, 2005.2.25
; 2005.3.19
; 整理注释
PosBuf equ 0700h
StackTop equ 07BF0h
BootStart equ 07C00h
;下面是内核的加载地址
SegKernel equ 0100h
RootBufEnd equ 02h
DataStart equ 04h
CursorPos equ 10h
; BOOT 会被 BIOS 载入到 00007C00h 处
org 7C00h
; 代码段
segment .text
; 16 位代码
bits 16
; start: 首先是跳过必须的 FAT 信息表执行后面的程序
Start:
jmp short Main
; 补一个字节的空指令
nop
; FAT12 信息
; 只是文件系统的描述信息
OEMName db 'ANOSDISK'
; 扇区大小(字节),应为 512
BytesPerSector dw 512
; 簇的扇区数,应为 2 的幂,FAT12 为 1
SectsPerCluster db 1
; 保留扇区,FAT12/16 应为 1
ReservedSectors dw 1
; FAT 结构数目,一般为 2
NumberOfFats db 2
; 根目录项目数,FAT12 为 224
MaxRootEntries dw 224
; 扇区总数,1.44M 软盘为 2880
TotalSectors dw 2880
; 设备类型,1.44M 软盘为 F0h
MediaDescriptor db 0f0h
; FAT 占用扇区数,9
SectorsPerFat dw 9
; 磁道扇区数,18
SectorsPerTrack dw 18
; 磁头数,2
NumberOfHeads dw 2
; 隐藏扇区,默认为 0
HiddenSectors dd 0
; FAT32 使用,0
TotalSectorsBig dd 0
;; 下面的内容为 FAT12/16 所有,和 FAT32 不同
; MS-DOS 使用,0
BootDrive db 0
; Windows NT 使用,0
Reserved db 0
; 附加的可启动标志,29h
ExtendSig db 029h
; 卷标序列号,00000000h
SerialNumber dd 00000000h
; 卷标,11 字节,必须用空格( 20h )补齐
VolumeLabel db 'ANOS FLOPPY'
; 文件系统标志,
FileSystem db 'FAT12 '
; Main: BOOT 主程序
Main:
; 初始化运行环境
xor ax,ax
mov ss,ax
mov bp,BootStart
mov sp,StackTop
push ss
pop ds
; LoadRootDirSector: 读取 FAT12 根目录项目扇区
LoadRootDirSector:
push ss
pop es
; 计算 ROOT 启始逻辑扇区
mov al,[BYTE bp+NumberOfFats]
; FAT 表数目
mul WORD [BYTE bp+SectorsPerFat]
; 乘上一个 FAT 表占用的扇区数
add ax,WORD [BYTE bp+HiddenSectors]
; 加上隐藏的扇区数
add ax,WORD [BYTE bp+ReservedSectors]
; 加上保留的扇区数
push ax
mov WORD [BYTE bp-DataStart],ax
; AX ROOT 项目的启始逻辑扇区, 保存
; 计算 ROOT 扇区数
mov ax,20h
mov cx,WORD [BYTE bp+MaxRootEntries]
mul cx
mov bx,WORD [BYTE bp+BytesPerSector]
add ax,bx
dec ax
div bx
mov cx,ax
; CX ROOT 扇区大小
add WORD [BYTE bp-DataStart],ax
; 更新数据区启始逻辑扇区
mul bx
; AX ROOT 总扇区字节大小
mov bx,PosBuf
; BX 缓存启始地址
add ax,bx
; AX 缓存尾地址
mov WORD [BYTE bp-RootBufEnd],ax
; 保存尾地址
pop ax
; 取出 ROOT 项目启始逻辑扇区
call ReadSectors
mov si,bx
; [ES:SI] 根目录内容
; SearchRootDirSector: 在根目录项目中搜索内核文件
SearchRootDirSector:
; [ES:SI] 为当前目录项
; 其头 11 个字节为文件名称
cmp [es:di],ch
; 如果目录项的第一个字节是0,这就是最后一个目录项
jz NotFound
push si
; 保存 SI rep cmpsb 时 SI 会改变
mov cx,11
; 比较前 11 个字节
mov di,FileName
; [DS:DI] 要载入的内核名称
rep cmpsb
; 比较 [ES:SI] [DS:DI]
pop si
; 恢复 [ES:SI] 为当前查对的目录项
je FoundKernel
add si,32
; [ES:SI] 指向下一个目录项
; 每个目录项 32 字节
cmp si,WORD [BYTE bp-RootBufEnd]
; 是否到根目录项目尾
jb SearchRootDirSector
; NotFound: 没有发现内核的处理
NotFound:
mov si,msgNotFound
call PutChars
jmp ReBoot
; FoundKernel: 发现内核后处理
FoundKernel:
; [ES:SI] 内核文件目录项
mov ax,[si+01ah]
push ax
; 内核文件启始簇(低)地址
; 目录项偏移 26(1ah) 为文件项目启始簇低地址
; 偏移 20(14h) 为高地址
; 由 FAT12 只是 12 位簇地址, 低地址 16 位足以
xor dx,dx
mov es,dx
mov ax,WORD [BYTE bp+ReservedSectors]
; DX:AX 第一个 FAT 表的启始逻辑扇区
mov bx,PosBuf
; [ES:BX] 读盘缓存
mov cx,WORD [BYTE bp+SectorsPerFat]
; CX FAT 表扇区数
call ReadSectors
pusha
mov si,msgLoadKernel
call PutChars
popa
mov ax,SegKernel
mov es,ax
xor bx,bx
; [ES:BX] 读盘缓存, 内核载入地址
pop ax
push ax
; 文件的第一个簇
; LoadKernel: 载入内核
LoadKernel:
; AX 当前簇
call ReadCluster
pop ax
; 取当前簇
add bx,0200h
; [ES:BX] 缓存地址增加 512 字节(1 个扇区)
; 下面开始查 FAT12 表项目
; 所以对于簇 n 其项目位于 n / 2 * 3 处
; n / 2 * 3 = n / 2 + n
; n 为偶, 在低 12 位
; n 为奇, 在高 12 位
mov di,ax
; BP DI 文件簇 n
shr di,01h
; DI n / 2
pushf
; 保存标志位, 供以后奇偶处理
add di,ax
; DI n / 2 + n
add di,PosBuf
; DI 加上 FAT12 表的启始地址
mov ax,[di]
; AX 一个 FAT12 组, 两个簇号
popf
; 根据 n / 2 奇偶判定
jc ShiftRight4
and ax,0fffh
; 取低 12 位
jmp IsTheEnd
ShiftRight4:
mov cl,4
shr ax,cl
; 高 12 位, 所以右移 4 位
IsTheEnd:
cmp ax,0ff8h
; 比较, ff8h - fffh 表示簇链末尾
jae ExecKernel
; 载入完毕, 跳转到内核地址
push ax
; 复制下一簇号
jmp LoadKernel
; ExecKernel: 运行内核
ExecKernel:
pusha
mov si,msgLoadKernelOK
call PutChars
popa
mov ah,3
xor bh,bh
int 10h
mov WORD [BYTE bp-CursorPos],dx
; 将当前光标位置写入 7df0h 7df1h
;
push word SegKernel
push word 00h
; 入栈供返回指令跳转
retf
; BadDisk: 显示错误启动信息,然后重启
BadDisk:
mov si,msgDiskError
call PutChars
; ReBoot: 重启
ReBoot:
mov si,msgAnyKey
call PutChars
xor ax,ax
int 16h
; 等待键盘按键
int 19h
; 重启
; ReadCluster: 读磁盘文件簇
; 读数据簇 AX 到 [ES:BX]
; CarryFlag == 1 错误
ReadCluster:
; 显示一个 .
push ax
mov ax,0e2eh
int 10h
pop ax
dec ax
dec ax
; 修正, 簇号 - 2
add ax, WORD [BYTE bp-DataStart]
; AX 数据的启始逻辑扇区
xor dx,dx
mov cx,01h
; ReadSectors: 读磁盘扇区
; 读 CX 个逻辑扇区(地址 DX:AX)到 [ES:BX]
; CarryFlag == 1 错误
ReadSectors:
pusha
push cx ; 保存读取扇区数
; 首先要将 DX:AX 逻辑扇区号转换为[驱动器号][磁头号][磁道号][扇区号]
; 根据:磁盘总扇区 = 磁道数 * 磁头数 * 扇区数
; 逻辑扇区 = (磁道号 * 磁头数 + 磁头号) * 扇区数 + 扇区号 - 1
; (注意:实际在磁道的扇区号是从 1 开始计数的,其他号从 0 开始)
; 那么:扇区号 = 逻辑扇区 % 磁道的扇区数 + 1
; 同样:含磁头计算的磁道号 = 逻辑扇区 / 磁道的扇区数
; 除掉磁头数,就是:磁道号 = 含磁头计算的磁道号 / 磁头数
; 所以:磁头号 = 含磁头计算的磁道号 % 磁头数
xchg ax,cx ; AX <=> CX
xchg ax,dx ; AX <=> DX
; AX:CX 逻辑扇区
xor dx,dx ; DX 清零
div WORD [BYTE bp+SectorsPerTrack] ; 除高位
; 计算得含磁头计算的磁道号的高位
xchg ax,cx ; 临时保存到 CX
; 此时余数 DX 与 AX 组成新数继续低位除
div WORD [BYTE bp+SectorsPerTrack] ; 除低位
; 余数 DX 为 0 开的扇区号
inc dx ; 修正为 1 开
xchg cx,dx ; CX <=> DX
; CX 为扇区号
; DX:AX 为含磁头计算的磁道号
div WORD [BYTE bp+NumberOfHeads] ; 继续除
; AX 为磁道号
; DX(DL) 为磁头号
mov dh,dl
; DH 磁头号
mov dl,[BYTE bp+BootDrive]
; DL 驱动器号
mov ch,al
; CX bit 8-15(CH) 磁道低 8 位
ror ah,2
; CX bit 6-7(AH bit 6-7) 磁道高 2 位
or cl,ah
; CX bit 0-5 扇区
pop ax
; AL 操作扇区数目
mov ah,02h
; AH 02h 读磁盘扇区
int 13h
; BIOS 13h 调用
; int 13h BIOS 功能
; 参数
; AH = 0x02 读磁盘扇区到内存
; AL 需要读出的扇区数量
; CH 磁道(柱面)号的低 8 位
; CL 开始扇区(0-5位),磁道号高 2 位(6-7)
; DH 磁头号
; DL 驱动器号
; ES:BX 指向数据缓存
; 返回
; 出错置 CF 标志位
; AH 状态 = 0x01
; AL 读取的扇区数
jc BadDisk
popa
ret
; PutChars: 打印字符串
; 入口参数 si
PutChars:
lodsb
or al,al
jz short Done
mov ah,0eh
mov bx,07h
int 10h
jmp short PutChars
Done:
retn
TheEnd:
db 0
msgLoadKernel db 'Loading ANOS',0
msgLoadKernelOK db 'OK!',0Dh,0Ah,0
msgNotFound db 'Cannot found ANOS kernel!',0Dh,0Ah,0
msgDiskError db 'Disk Error!',0Dh,0Ah,0
msgAnyKey db 'Press any key to reboot...',0Dh,0Ah,0
; 将 BOOT 映象对齐到 512 个字节
times 496-($-$$) db 0
FileName db 'ANOS SYS',0,0
BootPartition:
db 0
; 启动标志
BootSignature dw 0AA55h ; BootSector signature