中止执行案件恢复执行程序初探

中止执行案件恢复执行程序初探
中止执行案件恢复执行程序初探

遇到仲裁问题?赢了网律师为你免费解惑!访问>>

https://www.360docs.net/doc/d711250156.html,

中止执行案件恢复执行程序初探

中止执行,是指在执行过程中因发生特殊情况而暂时停止执行程序,待情况消失后再恢复执行的制度。据统计,由于执行案件受到被执行人履行能力、被执行人财产难寻等诸多方面的影响,全国大约有20%以上的执行案件须中止执行。以福建全省法院系统每年受理10万件执行案件,以20%的中止率计算,每年中止执行的案件就达2万件之多。如何加强中止执行案件的管理,明确、规范中止执行案件的恢复执行程序,已成为人民法院执行工作中急待解决的迫切问题。鉴于此,笔者想就中止执行案件的恢复执行程序谈谈自己粗浅的认识。

一、中止执行的情形

依照民诉法第234条第1款的规定,有下列情形之一的,执行法院应当裁定中止执行:

一是申请执行人表示可以延期执行的。在执行程序中,当事人有权处分自己申请执行权利,如果权利人表示可以延期执行的,执行法院就应当尊重当事人的处分权,依法裁定中止执行。

二是案外人对执行标的提出确有理由的异议的。案外人对于执行标的提出一部或全部权利主张属于执行异议。对于执行异议,执行员应依照法律规定进行审查,认为异议成立的,报院长批准中止执行。

三是作为一方当事人的公民死亡,需要等待继承人继承权利或者承担义务的。在执行程序中,如果申请人死亡,需要等待其继承人继承;如被执行人死亡,需要等待其继承人承担义务。在尚未确定其继承人时,应裁定中止执行。

四是作为一方当事人的法人或者其他组织终止,尚未确定权利义务承受人,法人或者其他组织在执行程序中因撤销、解散、合并等原因而终止的,依法应由其权利的享有者和义务的承担者参加执行。如果在其终止时尚未确定权利、义务承担人的,执行就难以继续进行,人民法院应当裁定中止执行。

五是人民法院认为应当中止的其他情形。本项中的其他情形指哪些情况,民诉法没有作出具体的规定。但根据最高人民法院《关于人民法院执行工作若干问题的规定(试行)》(以下简称《规定》)第102条规定,人民法院认为应当中止执行的情形是指:(1)人民法院已受理以被执行人为债务人的破产申请的;(2)被执行人确无财产可供执行的;(3)执行标的物是其他法院或仲裁机构正在审理的案件争议标

的物,需要等待该案审理完毕确定权属的;(4)一方当事人申请执行仲裁裁决,另一方当事人申请撤销仲裁裁决的;(5)仲裁裁决的被申请执行人依据民诉法第217条第2款的规定向人民法院提出不予执行的请求,并提供适当担保的。也就是说,人民法院在执行案件的过程中,遇有上述情形的都应当裁定中止执行。

二、恢复执行的情由

中止执行的情形消失后恢复执行,这是民诉法第234条第2款直接规定的。所谓“中止执行的情形消失”,也可称为“恢复执行的事由或理由”,这类情形大体上有以下几种:(1)申请执行人表示不再延期执行,要求恢复执行的;(2)因被执行人确无财产可供执行而中止执行后发现其又有财产可供执行的;(3)案外人提出的异议经审查最后确认为理由不成立的;(4)被执行人死亡后经过一段时间已经明确了财产继承人的;(5)人民法院受理的被执行人为债务人的破产申请后,经过审查认为该债务人不符合宣告破产条件,不予宣告破产,或破产案件审理终结,债务人未被宣告破产的;(6)执行的标的物的权属有争议,经其他法院或仲裁机构审理后已确定其应归属于被执行人的;(7)当事人申请撤销仲裁,经人民法院审查后已驳回其撤销申请的;(8)仲裁裁决的被申请执行人提出不予执行请求,并提供担保而中止执行后,其不予执行的请求被驳回,或担保已到期,已失效,或在担保期间内有转移财产及其他损害债权人利益的行为的。对符合上述

八种情形之一的,可以认为中止执行的情形已经消失,执行法院应当依职权或依当事人申请恢复执行。

三、恢复执行程序

(一)依职权还是依申请恢复执行

根据《规定》第108条规定:“执行结案的方式为:(1)生效法律文书确定的内容全部执行完毕;(2)裁定终结执行;(3)裁定不予执行;(4)当事人之间达成和解协议并已履行完毕。”中止执行案件显然不符合上述执行结案的方式。前些年为片面追求执结率,法院内部将中止执行案件视为结案是不妥的。民诉法第234条第2款也明确规定,中止执行的情形消失后,恢复执行。《规定》第104条规定:“中止执行的情形消失后,执行法院可以根据当事人的申请或依职权恢复执行。”但究竟哪些情况应依当事人申请,哪些情况应依职权恢复执行,法律和司法解释均未作出相应的规定,各地法院做法不一,司法界也存在不同观点。一种观点认为,中止执行的情形是否消失,或者说恢复执行的理由是否存在,人民法院不一定掌握,且根据民权自治原则,当事人主张不主张恢复执行,何时主张,都是当事人自己的事情,没有当事人的申请法院不应依职权恢复执行。另一种观点认为,债权人已依据生效法律文书向法院申请强制执行,已表明其要求以国家强制力保障其债权实现的意思,当中止执行的情形消失后,执行法院应当

依职权恢复执行,维护债权人的合法权益,而不应以申请人提出申请为先决条件。笔者认为,究竟是根据当事人申请还是依职权恢复执行,执行法院应根据具体情况决定,不应一概而论。对发生法律效力的具有给付赡养费、抚养费、抚育费内容的法律文书、民事制裁决定书,以及刑事附带民事判决、裁定、调解书,以及含有财产执行内容的刑事法律文书由审判庭移送执行机构执行的,执行法院就应当依职权恢复执行。此类案件的权利人一般都是弱视群体,或是国家利益。为加强保护老人、妇女、儿童合法权益,维护国家利益,执行法院应当依职权恢复执行;对权利人向法院申请执行后,在执行过程中表示可以延期执行而中止执行的,则应当依当事人申请恢复执行。根据处分原则,当事人有权在法律规定的范围内处分自己的民事权利和诉讼权利。申请执行人是否申请恢复执行,何时恢复,如何申请恢复是当事人自己的事情,任何人不得干涉。对于此类中止执行案件,执行法院就不应依职权恢复执行;对于执行法院依据民诉法第234条第1款第1项以外的情形裁定中止执行的,只要在案件执结以前,申请执行人没有明确表示放弃权利或要求撤回执行申请的,则应视当事人主张权利的民事行为在继续延续。中止执行的情形消失后,执行法院既可依职权也可依申请恢复执行。

(二)恢复执行是否需重新立案

从理论上讲,中止执行案件既然不属于执行结案,当然不存在重

新立案恢复执行的问题。但由于前些年法院内部均将中止执行案件视为结案,作执行结案处理。我省闽高法388号《关于印发<关于规范中止执行案件若干问题的意见>的通知》中,即作出了将中止执行案件视为结案,当中止执行的情形消失后,重新立案,恢复执行的规定。由于中止执行案件有作结案处理和作未结案件的两种情形,对中止执行案件是否重新立案恢复执行,存在二种不同的观点。一种观点认为,已作结案处理的,应当重新立案后再恢复执行;作为未结案件的,则无须重新立案。另一种观点认为,中止执行的情形消失后,执行法院可依职权或依申请恢复执行,无须重新立案。笔者同意后一种观点。中止执行案件不符合《规定》第108条规定的执行结案方式,不属于执行结案。中止执行案件出现恢复执行的事由后,由承办人填写恢复执行审批表,并写明恢复执行的理由,报庭长(局长)审批后即可恢复执行,无须重新立案。

四、恢复执行后的处理

中止执行案件恢复执行后,并不意味着申请人申请执行的标的就能全部执行完毕。如果全部执行完毕,作为执行结案当然也就不存问题。但问题是申请标的部分执行后,被执行人已无可供执行财产的案件如何处理?执行法院是否再次依民诉法234条第1款的有关规定裁定中止执行?笔者认为,从法律上讲虽然可行,但就同一案件多次裁定中止执行多有不妥之处。主要表现在:第一是有失法律文书的严肃

性;第二是易使当事人产生法院执行不力的负面影响;第三是案件可

能虽经多次恢复执行,但仍久执不结。鉴于执行案件的特殊性,对恢复执行后遇到此类问题时可采取发放债权凭证的方式解决。执行法院实施强制执行手段无效果时,发给申请执行人用以证明申请执行人享有债权的权利证书,执行程序终结。当申请执行人发现债务人有可供执行的财产或重具履行能力时,可持债权凭证向执行法院申请再执行,启动新的执行程序。这样既解决了案件久拖不结的问题,同时也较好地保护债权人的合法权益。

五、立法建议

中止执行案件恢复执行是人民法院在执行工作中经常遇到的一

个难题。但由于在操作上缺乏相应的程序法律规定,以致在司法实践中各地法院做法不尽统一。为此,笔者建议在制定《强制执行法》时,对中止执行案件恢复执行程序作出明确具体的规定。

作者单位:福建省清流县人民法院

?对扣押 https://www.360docs.net/doc/d711250156.html,/l/ss/726155.html

?恶意呛水溺死同伴15岁少年领刑三年https://www.360docs.net/doc/d711250156.html,/l/ss/726154.html

?公务员退休后被判处刑罚的待遇https://www.360docs.net/doc/d711250156.html,/l/ss/726153.html

?死刑前停止执行的情形https://www.360docs.net/doc/d711250156.html,/l/ss/726152.html

?母女“借走”邻居300多万放高利贷https://www.360docs.net/doc/d711250156.html,/l/ss/726151.html

?审判组织具有的规定https://www.360docs.net/doc/d711250156.html,/l/ss/726150.html

?法医物证检验鉴定程序https://www.360docs.net/doc/d711250156.html,/l/ss/726149.html

?刑事拘留到法院审理的时间https://www.360docs.net/doc/d711250156.html,/l/ss/726148.html

?什么是级别管辖 https://www.360docs.net/doc/d711250156.html,/l/ss/726147.html

?怎样正确理解和把握刑事拘留时间https://www.360docs.net/doc/d711250156.html,/l/ss/726146.html

?浅谈简易程序的举证期限https://www.360docs.net/doc/d711250156.html,/l/ss/726145.html

?司法拘留的适用有什么条件https://www.360docs.net/doc/d711250156.html,/l/ss/726144.html

?法院强制执行文书及强制执行方法https://www.360docs.net/doc/d711250156.html,/l/ss/726143.html

?公安解除取保候审的条件与程序https://www.360docs.net/doc/d711250156.html,/l/ss/726142.html

?取保候审后还会收监吗https://www.360docs.net/doc/d711250156.html,/l/ss/726141.html

?江苏首例跨国信用证诈骗案告破嫌犯被刑事拘留https://www.360docs.net/doc/d711250156.html,/l/ss/726140.html

?刑讯逼供构成要件 https://www.360docs.net/doc/d711250156.html,/l/ss/726139.html ?简易程序的举证期限https://www.360docs.net/doc/d711250156.html,/l/ss/726138.html

?量刑情节对量刑有什么作用https://www.360docs.net/doc/d711250156.html,/l/ss/726137.html

?取保候审条件及取保候审方式https://www.360docs.net/doc/d711250156.html,/l/ss/726136.html

?公安机关执行拘留必须遵守的程序https://www.360docs.net/doc/d711250156.html,/l/ss/726135.html

?被取保候审人逃逸处罚https://www.360docs.net/doc/d711250156.html,/l/ss/726134.html

?一特大跨省市贩毒团伙两名主犯被判处无期徒刑https://www.360docs.net/doc/d711250156.html,/l/ss/726133.html

?监视居住 https://www.360docs.net/doc/d711250156.html,/l/ss/726132.html

?自诉案件可以申请延期审理吗https://www.360docs.net/doc/d711250156.html,/l/ss/726131.html

?醉驾可以判缓刑吗 https://www.360docs.net/doc/d711250156.html,/l/ss/726130.html ?什么是延期审理 https://www.360docs.net/doc/d711250156.html,/l/ss/726129.html

?取保候审的条件是什么https://www.360docs.net/doc/d711250156.html,/l/ss/726128.html

?怎样勘验 https://www.360docs.net/doc/d711250156.html,/l/ss/726127.html

?什么情况下可以办理取保候审https://www.360docs.net/doc/d711250156.html,/l/ss/726126.html

?北京取保候审申请书范本2018 https://www.360docs.net/doc/d711250156.html,/l/ss/726125.html

?福布斯富豪王某某名下公司逃税案二审维持原判https://www.360docs.net/doc/d711250156.html,/l/ss/726124.html

?刑事案件公诉词范文https://www.360docs.net/doc/d711250156.html,/l/ss/726123.html

?取保候审保证人要符合哪些条件https://www.360docs.net/doc/d711250156.html,/l/ss/726122.html

?刑事拘留期间可以取保候审吗https://www.360docs.net/doc/d711250156.html,/l/ss/726121.html

?赵某某犯故意伤害罪https://www.360docs.net/doc/d711250156.html,/l/ss/726120.html

?公诉刑事案件第一审开庭程序https://www.360docs.net/doc/d711250156.html,/l/ss/726119.html

?自诉案件的范围及受理条件https://www.360docs.net/doc/d711250156.html,/l/ss/726118.html

?管制与拘役之间的区别https://www.360docs.net/doc/d711250156.html,/l/ss/726117.html

?勘验﹑检查 https://www.360docs.net/doc/d711250156.html,/l/ss/726116.html

?包头哪些案件可以提起刑事自诉https://www.360docs.net/doc/d711250156.html,/l/ss/726115.html

?“国情局局长”骗财15万获刑10年半https://www.360docs.net/doc/d711250156.html,/l/ss/726114.html

?从一起砸车抢劫案件看高速公路管理者的安全防护义务的认定https://www.360docs.net/doc/d711250156.html,/l/ss/726113.html

?取保候审期限及取保候审程序https://www.360docs.net/doc/d711250156.html,/l/ss/726112.html

?取保候审期间算刑期吗https://www.360docs.net/doc/d711250156.html,/l/ss/726111.html

?刑事拘留的期限是多少https://www.360docs.net/doc/d711250156.html,/l/ss/726110.html

?勘验检查笔录 https://www.360docs.net/doc/d711250156.html,/l/ss/726109.html

?绑架罪与敲诈勒索罪的区别https://www.360docs.net/doc/d711250156.html,/l/ss/726108.html

?甘肃山丹“民警刑讯逼供案”被告无罪https://www.360docs.net/doc/d711250156.html,/l/ss/726107.html

?绑架人质索要高额赎金四川三被告人一审获重刑https://www.360docs.net/doc/d711250156.html,/l/ss/726106.html

?同乡冒用身份法院判定其盗窃处以徒刑https://www.360docs.net/doc/d711250156.html,/l/ss/726105.html

?四川丹棱4毒贩以贩养吸获重刑https://www.360docs.net/doc/d711250156.html,/l/ss/726104.html

?湖南司机处置不当致3人死亡15人受伤被诉https://www.360docs.net/doc/d711250156.html,/l/ss/726103.html

?提取事故物证的注意事项https://www.360docs.net/doc/d711250156.html,/l/ss/726102.html

?延长拘留期限的情况https://www.360docs.net/doc/d711250156.html,/l/ss/726101.html

?孙某某犯故意伤害罪https://www.360docs.net/doc/d711250156.html,/l/ss/726100.html

?关于实施刑事诉讼法若干问题的规定https://www.360docs.net/doc/d711250156.html,/l/ss/726099.html

?刑事自诉案件第一审程序https://www.360docs.net/doc/d711250156.html,/l/ss/726098.html

?立案后下个程序是什么https://www.360docs.net/doc/d711250156.html,/l/ss/726097.html

?检察侦查人员如何询问证人https://www.360docs.net/doc/d711250156.html,/l/ss/726096.html

?公诉 https://www.360docs.net/doc/d711250156.html,/l/ss/726095.html

?有哪些情形可以先行拘留https://www.360docs.net/doc/d711250156.html,/l/ss/726094.html

?借给他人摩托车又窃取索赔构成诈骗罪https://www.360docs.net/doc/d711250156.html,/l/ss/726093.html

?取保候审应具备哪些条件https://www.360docs.net/doc/d711250156.html,/l/ss/726092.html

?减刑制度内容 https://www.360docs.net/doc/d711250156.html,/l/ss/726091.html

?职工被判刑后,劳动合同是否自动解除https://www.360docs.net/doc/d711250156.html,/l/ss/726090.html

?取保候审的立法缺陷及完善https://www.360docs.net/doc/d711250156.html,/l/ss/726089.html

?取保候审后还会判刑吗https://www.360docs.net/doc/d711250156.html,/l/ss/726088.html

?审判监督程序的提起方式https://www.360docs.net/doc/d711250156.html,/l/ss/726087.html

?取保候审申请书范本2018 https://www.360docs.net/doc/d711250156.html,/l/ss/726086.html

?刑事诉讼法司法解释2018 https://www.360docs.net/doc/d711250156.html,/l/ss/726085.html

?询问证人的程序 https://www.360docs.net/doc/d711250156.html,/l/ss/726084.html

?刑事上诉的方式有哪些https://www.360docs.net/doc/d711250156.html,/l/ss/726083.html

?取保候审保证金数额与取保候审保证金退还https://www.360docs.net/doc/d711250156.html,/l/ss/726082.html

?视听资料的概念 https://www.360docs.net/doc/d711250156.html,/l/ss/726081.html

?公安立案后的程序是怎样的https://www.360docs.net/doc/d711250156.html,/l/ss/726080.html

?上海首富周A行贿案在上海二中院开庭https://www.360docs.net/doc/d711250156.html,/l/ss/726079.html

?刑事审判监督的手段https://www.360docs.net/doc/d711250156.html,/l/ss/726078.html

?刑事案件公诉必须具备哪些条件https://www.360docs.net/doc/d711250156.html,/l/ss/726077.html

?关于取保候审保证金的问题.

https://www.360docs.net/doc/d711250156.html,/l/ss/726076.html

?刑事拘留的条件及期限https://www.360docs.net/doc/d711250156.html,/l/ss/726075.html

?王某某犯故意伤害罪https://www.360docs.net/doc/d711250156.html,/l/ss/726074.html

?世纪佳缘会员交友被骗起诉网站被驳回https://www.360docs.net/doc/d711250156.html,/l/ss/726073.html

?审判监督的相关法律规定https://www.360docs.net/doc/d711250156.html,/l/ss/726072.html

?关于人民检察院保障律师在刑事诉讼中依法执业的规定https://www.360docs.net/doc/d711250156.html,/l/ss/726071.html

?提起刑事审判监督程序应具备哪些条件https://www.360docs.net/doc/d711250156.html,/l/ss/726070.html

?立案后多长时间抓捕罪犯https://www.360docs.net/doc/d711250156.html,/l/ss/726069.html

?取保候审保证金的数额的确定https://www.360docs.net/doc/d711250156.html,/l/ss/726068.html

?放弃重复侵害能否认定犯罪中止https://www.360docs.net/doc/d711250156.html,/l/ss/726067.html

?公安机关执行拘留必须遵守哪些程序https://www.360docs.net/doc/d711250156.html,/l/ss/726066.html

?“疑罪从无”有利于保障公民法律安全https://www.360docs.net/doc/d711250156.html,/l/ss/726065.html

?刑事拘留需要遵循的程序https://www.360docs.net/doc/d711250156.html,/l/ss/726064.html

?全国标枪冠军连盗14台电脑被警方刑事拘留https://www.360docs.net/doc/d711250156.html,/l/ss/726063.html

?搜查令 https://www.360docs.net/doc/d711250156.html,/l/ss/726062.html

?什么是反诉,提起反诉需要什么条件https://www.360docs.net/doc/d711250156.html,/l/ss/726061.html

?曹某因涉嫌犯寻衅滋事罪https://www.360docs.net/doc/d711250156.html,/l/ss/726060.html

?死刑复核应有期限 https://www.360docs.net/doc/d711250156.html,/l/ss/726059.html ?侦查机关扣押犯罪嫌疑人的物证https://www.360docs.net/doc/d711250156.html,/l/ss/726058.html

?男子杀死女友一审被判死刑https://www.360docs.net/doc/d711250156.html,/l/ss/726057.html

?刑事拘留的程序 https://www.360docs.net/doc/d711250156.html,/l/ss/726056.html

启动过程以及各个脚本的作用

开机自检-----MBR引导-----GRUB菜单------加载内核-----允许init进程 -----读取inittab(该文件中有运行级别,初始化文件,某个运行级别所要读取的文件,然后就执行/etc/rc.d/rcn.d向对应的文件) ----/etc/rc.d/rc.sysinit(由init进程调用执行,完成设置网络主机名加载文件系统等初始化工作------/etc/rc.d/rc(由init进程调用执行,根据指定的运行级别加载或终止相应的系统服务)------/etc/rc.d/rc.nd(是个目录,目录中有级别关闭和开启的服务K S 后的数字表示启动或关闭服务的优先级,越小越好----执行/etc/rc.d/rc.local(由rc脚本执行调用,保存用户定义的所需开机后自动执行的命令,可以开启某些服务,但是却不能关闭服务,因为关机时不读取该脚本,是最后读取的文件) -----启动mingetty(启动一个虚拟终端) init进程和inittab引导指令 init进程是系统所有进程的起点,内核在完成核内引导以后,即在本线程(进程)空间内加载init程序,它的进程号是1。 init程序需要读取/etc/inittab文件作为其行为指针,inittab是以行为单位的描述性(非执行性)文本,每一个指令行都具有以下格式: id:runlevel:action:process其中id为入口标识符,runlevel为运行级别,action为动作代号,process为具体的执行程序。 id一般要求4个字符以内,对于getty或其他login程序项,要求id与tty的编号相同,否则getty程序将不能正常工作。 runlevel是init所处于的运行级别的标识,一般使用0-6以及S或s。0、1、6运行级别被系统保留,0作为shutdown动作,1作为重启至单用户模式,6为重启;S和s意义相同,表示单用户模式,且无需inittab文件,因此也不在inittab中出现,实际上,进入单用户模式时,init直接在控制台(/dev/console)上运行/sbin/sulogin。 在一般的系统实现中,都使用了2、3、4、5几个级别,在Redhat系统中,2表示无NFS支持的多用户模式,3表示完全多用户模式(也是最常用的级别),4保留给用户自定义,5表示XDM图形登录方式。7-9级别也是可以使用的,传统的Unix系统没有定义这几个级别。runlevel可以是并列的多个值,以匹配多个运行级别,对大多数action来说,仅当runlevel与当前运行级别匹配成功才会执行。 initdefault是一个特殊的action值,用于标识缺省的启动级别;当init由核心激活以后,它将读取inittab中的initdefault项,取得其中的runlevel,并作为当前的运行级别。如果没有inittab文件,或者其中没有initdefault 项,init将在控制台上请求输入 runlevel。

U-BOOT下使用bootm引导内核方法

U-BOOT下使用bootm引导内核方法 注: u-boot使用的是打上: https://www.360docs.net/doc/d711250156.html,/cgi-bin/topic.cgi?forum=3&topic=651&show=0 上keety大侠提供的补丁生成的u-boot-1.1.3 这段时间不断有人问我u-boot启动内核的问题,记得在上次提供的u-boot源码中提到了go的方案,不过其实u-boot本来有一种更好的方案:bootm 花了不少时间,查看了论坛上不少的帖子,认真阅读了bootm的源码,终于使用bootm把内核给跑起来了,现把解决方法介绍如下: 一、在开始之前先说明一下bootm相关的东西。 1、首先说明一下,S3C2410架构下的bootm只对sdram中的内核镜像文件进行操作(好像AT91架构提供了一段从flash复制内核镜像的代码,不过针对s3c2410架构就没有这段代码,虽然可以在u-boot下添加这段代码,不过好像这个用处不大),所以请确保你的内核镜像下载到sdram中,或者在bootcmd下把flash中的内核镜像复制到sdram中。 2、-a参数后是内核的运行地址,-e参数后是入口地址。 3、 1)如果我们没用mkimage对内核进行处理的话,那直接把内核下载到0x30008000再运行就行,内核会自解压运行(不过内核运行需要一个tag来传递参数,而这个tag建议是由bootloader提供的,在u-boot下默认是由bootm命令建立的)。 2)如果使用mkimage生成内核镜像文件的话,会在内核的前头加上了64byte的信息,供建立tag之用。bootm命令会首先判断bootm xxxx 这个指定的地址xxxx是否与-a指定的加载地址相同。

linux grub 引导启动过程详解

linux grub 引导启动过程详解 2008-01-08 17:18 这几天看了很多文档,算是对linux的启动过程有了比较细致的了解. 网上有很多文章谈到这方面的内容,但总觉得没有一篇完全的解析linux启动的 细节,下面是我小弟在学习的过程中总结出来的一些东东.这个是完整的linux启动过程, 不涉及内核,但是我觉得比较详细哦. (由于本人比较懒,这一段是从网上抄的) 机器加电启动后,BIOS开始检测系统参数,如内存的大小,日期和时间,磁盘 设备以及这些磁盘设备用来引导的顺序,通常情况下,BIOS都是被配置成首先检查 软驱或者光驱(或两者都检查),然后再尝试从硬盘引导。如果在这些可移动的设 备中,没有找到可引导的介质,那么BIOS通常是转向第一块硬盘最初的几个扇区, 寻找用于装载操作系统的指令。装载操作系统的这个程序就是boot loader. linux里面的boot loader通常是lilo或者grub,从Red Hat Linux 7.2起,GRUB( GRand Unified Bootloader)取代LILO成为了默认的启动装载程序。那么启动的时候grub是如何被载入的呢 grub有几个重要的文件,stage1,stage2,有的时候需要stage1.5.这些文件一般都 在/boot/grub文件夹下面.grub被载入通常包括以下几个步骤: 1. 装载基本的引导装载程序(stage1),stage1很小,网上说是512字节,但是在我的系统上用du -b /boot/grub/stage1 显示的是1024个字节,不知道是不是grub版本不同的缘故还是我理解有误.stage1通常位于主引导扇区里面,对于硬盘就是MBR了,stage1的主要功能就是装载第二引导程序(stage2).这主要是归结于在主引导扇区中没有足够的空间用于其他东西了,我用的是grub 0.93,stage2文件的大小是107520 bit. 2. 装载第二引导装载程序(stage2),这第二引导装载程序实际上是引出更高级的功能, 以允许用户装载入一个特定的操作系统。在GRUB中,这步是让用户显示一个菜单或是输入命令。由于stage2很大,所以它一般位于文件系统之中(通常是boot所在的根 分区). 上面还提到了stage1.5这个文件,它的作用是什么呢你到/boot/grub目录下看看, fat_stage_1.5 e2fs_stage_1.5 xfs_stage_1.5等等,很容易猜想stage1.5和文件系统 有关系.有时候基本引导装载程序(stage1)不能识别stage2所在的文件系统分区,那么这 时候就需要stage1.5来连接stage1和stage2了.因此对于不同的文件系统就会有不同的stage1.5.但是对于grub 0.93好像stage1.5并不是很重要,因为我试过了,在没有stage1.5 的情况下, 我把stage1安装在软盘的引导扇区内,然后把stage2放在格式化成ext2或者fat格式的软盘内,启动的时候照常引导,并不需要e2fs_stage_1.5或者fat_stage_1.5. 下面是我的试验: #mkfs.ext2 /dev/fd0 #mount -t ext2 /dev/fd0 /mnt/floppy #cd /mnt/floppy #mkdir boot #cd boot #mkdir grub (以上三步可用mkdir -p boot/grub命令完成) #cd grub #cp /boot/grub/{stage1,stage2,grub.conf} ./ #cd; umount /mnt/floppy

操作系统的启动流程

1、预引导(Pre-Boot)阶段 2、引导阶段 3、加载内核阶段 4、初始化内核阶段 5、登陆 每个启动阶段的详细介绍 一、预引导阶段在按下计算机电源使计算机启动, 并且在Windows XP操作系统启动之前这段时间, 我们称之为预引导(Pre-Boot)阶段, 在这个阶段里,计算机首先运行Power On Self Test(POST), POST检测系统的总内存以及其他硬件设备的现状。 如果计算机系统的BIOS(基础输入/输出系统)是即插即用的, 那么计算机硬件设备将经过检验以及完成配置。 计算机的基础输入/输出系统(BIOS)定位计算机的引导设备, 然后MBR(Master Boot Record)被加载并运行。 在预引导阶段,计算机要加载Windows XP的NTLDR文件。 二、引导阶段 Windows XP Professional引导阶段包含4个小的阶段。 首先,计算机要经过初始引导加载器阶段(Initial Boot Loader), 在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。 在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存, 而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。 接着,NTLDR启动内建的mini-file system drivers, 通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区, 以便发现以及加载Windows XP Professional, 到这里,初始引导加载器阶段就结束了。 接着系统来到了操作系统选择阶段, 如果计算机安装了不止一个操作系统(也就是多系统), 而且正确设置了boot.ini使系统提供操作系统选择的条件下, 计算机显示器会显示一个操作系统选单, 这是NTLDR读取boot.ini的结果。 三、加载内核阶段在加载内核阶段,ntldr加载称为Windows XP内核的ntokrnl.exe。 系统加载了Windows XP内核但是没有将它初始化。 接着ntldr加载硬件抽象层(HAL,hal.dll),然后, 系统继续加载HKEY_LOCAL_MACHINE\system键, NTLDR读取select键来决定哪一个Control Set将被加载。 控制集中包含设备的驱动程序以及需要加载的服务。 NTLDR加载HKEY_LOCAL_MACHINE\system\service\...下start键值为0的最底层设备驱动。当作为Control Set的镜像的Current Control Set被加载时, ntldr传递控制给内核,初始化内核阶段就开始了。 四、初始化内核阶段在初始化内核阶段开始的时候, 彩色的Windows XP的logo以及进度条显示在屏幕中央, 在这个阶段,系统完成了启动的4项任务: 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了

Linux内核启动流程分析(一)

很久以前分析的,一直在电脑的一个角落,今天发现贴出来和大家分享下。由于是word直接粘过来的有点乱,敬请谅解! S3C2410 Linux 2.6.35.7启动分析(第一阶段) arm linux 内核生成过程 1. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩, 带调试信息、符号表的最初的内核,大小约23MB; 命令:arm-linux-gnu-ld -o vmlinux -T arch/arm/kernel/vmlinux.lds arch/arm/kernel/head.o init/built-in.o --start-group arch/arm/mach-s3c2410/built-in.o kernel/built-in.o mm/built-in.o fs/built-in.o ipc/built-in.o drivers/built-in.o net/built-in.o --end-group .tmp_kallsyms2.o 2. 将上面的vmlinux去除调试信息、注释、符号表等内容,生成arch/arm/boot/Image,这是不带多余信息的linux内核,Image的大小约 3.2MB; 命令:arm-linux-gnu-objcopy -O binary -S vmlinux arch/arm/boot/Image 3.将 arch/arm/boot/Image 用gzip -9 压缩生成arch/arm/boot/compressed/piggy.gz大小约 1.5MB;命令:gzip -f -9 < arch/arm/boot/compressed/../Image > arch/arm/boot/compressed/piggy.gz 4. 编译arch/arm/boot/compressed/piggy.S 生成arch/arm/boot/compressed/piggy.o大小约1.5MB,这里实 际上是将piggy.gz通过piggy.S编译进piggy.o文件中。而piggy.S文件仅有6行,只是包含了文件piggy.gz; 命令:arm-linux-gnu-gcc -o arch/arm/boot/compressed/piggy.o arch/arm/boot/compressed/piggy.S 5. 依据arch/arm/boot/compressed/vmlinux.lds 将arch/arm/boot/compressed/目录下的文件head.o 、piggy.o 、misc.o链接生成arch/arm/boot/compressed/vmlinux,这个vmlinux是经过压缩且含有自解压代码的内核, 大小约1.5MB; 命 令:arm-linux-gnu-ld zreladdr=0x30008000 params_phys=0x30000100 -T arch/arm/boot/compressed/vmlinux.lds a rch/arm/boot/compressed/head.o arch/arm/boot/compressed/piggy.o arch/arm/boot/compressed/misc.o -o arch/arm /boot/compressed/vmlinux

基于Grub 2.00的x86内核引导流程

基于Grub 2.00的x86内核引导流程--源代码情景分析目前Linux中使用最广泛的的bootloader是Grub(GRand Unified Bootloader)。如今Grub 2已经替换了早期的0.9x系列版本的Grub Legacy,而且Grub Legacy已经不再开发维护。虽然Grub 2从名字上看像是Grub的升级版,但其源代码实际被完全重构了。现从源代码角度分析基于Grub 2.00的x86内核引导流程。 1. 磁盘简介 由于在Grub进行内核引导的过程中涉及到磁盘操作,先简介一下磁盘为后续引导流程分析作铺垫。磁盘三要素:由所有盘面上相同半径的同心圆形磁道(Track)组成的柱面(Cylinder), 磁头(Head), 扇区(Sector)之间的关系如下图所示: 对于磁盘,其最小存储单位为扇区(Sector),在相当长的一段时间里,扇区的大小固定在512 bytes[1]. 但是从2009年开始出现扇区大小为4096

bytes的磁盘,即Advanced Format disks。 对于扇区的编址,早期的方案是CHS编址(Cylinder-Head-Sector),即用数据元组CHS tuples (c,h,s)的形式表示一个扇区的位置,但是在CHS编址时,扇区号是从1开始的,没有扇区0,但磁头和柱面编号都是从0开始的,即CHS编址起始于地址(0,0,1)。另外一种编址方案是LBA编址(Logical Block Addressing),把整个磁盘的所有扇区资源统一分配序号。在2003年发布的ATA-6标准中,LBA采用48-bit地址。 CHS数据元组(c, h, s)根据如下公式转换成相应的LBA逻辑地址: LBA= (c×Nheads + h)×Nsectors + (s ? 1) 其中:Nheads是硬盘中的磁头数目,Nsectors是每条磁道上可以划分的最大的扇区数目。上面的公式意味着LBA对扇区的编址是从0开始的,所以在Grub 的boot.S源代码中,当磁盘不支持LBA模式,代码执行流回退至CHS模式继续进行处理时,会将编址的起始地址调整成从1开始。 [1]Floppydisks and controllers use physical sector sizes of 128, 256, 512 and 1024 bytes(e.g., PC/AX), whereby formats with 512 bytes per physical sector becamedominant in the 1980s. 磁盘在使用过程中总是会涉及到分区方案,其中一个典型的四分区MBR磁盘结构如下所示:

LINUX启动流程详解

2008-11-27 11:04:06 收藏 | 打印 | 投票(7) | 评论(1) | 阅读(30264) ◇字体:[大中小]linux系统引导过程简介 首先,主板的BIOS会读取硬盘的主引导记录(MBR),MBR中存放的是一段很小的程序,他的功能是从硬盘读取操作系统核心文件并运行,因为这个小程序太小了,因此通常这个小程序不具备直接引导系统内核的能力,他先去引导另一个稍微大一点的小程序,再由这个大一点的小程序去引导系统内核.在linux系统中这样的小程序有LILO和GRUB.在这个项目中,我决定用LILO来做系统引导程序.在软盘上启动linux系统的过程和在硬盘上启动的过程相似. Linux系统内核被引导程序装入内核并运行后,linux内核会检测系统中的各种硬件.并做好各种硬件的初始化工作,使他们在系统正式运行后能正常工作.之后内核做的最后一个工作是运行 /sbin下的init程序,init是英文单词initialization(初始化)的简称,init程序的工作是读取/etc/inittab文件中描述的指令,对系统的各种软硬件环境做最初化设定.最后运行mingetty等待用户输入用户名登录系统.所有的工作就这么简单,虽然linux启动的时候有很多内容,看上去十分高深,但是都不过是对这个过程的扩充.明白了这个道理,你可以写一些脚本程序让他在系统启动的特定时间运行完成任务.事实上系统内核并不关心/sbin下的init是不是真的init,只要是放 在/sbin下名叫init的可执行程序他都可以执行. Red Hat Enterprise Linux在电脑的启动阶段,一共经历以下两个阶段: 1.启动内核。在这个阶段,内核装入内存并在初始化每个设备驱动器时打印信息。 2.执行程序init.(系统初始化).装入内核并初始化设备后,运行init程序。init程序处理所有程序的启动,包括重要系统精灵程序和其它指定在启动时装入的软件。 开机---BIOS自检---载入启动程序---加载内核---启动init服务---加载/etc/inittab---Run level---rc.sysinit---rc--- mingetty---rc.local 一.BIOS自检 当电脑开机的时候,电脑会进入BIOS,在PC机中引导LINUX是从BIOS中的地址0xFFFF0处开始的.BIOS的第一个步骤是加电自检,即所谓的POST(Power On Self Test),BIOS的第二个步骤是进行本地设备的枚举和初始化,侦测电脑周边配套设备是否工作正常,如cpu的类型,速度,缓存等;主板类型,内存的速度,容量,硬盘的大小,类型和工作模式,风扇速度等,主要是为了检查这些设备在开机的时候是否能通过检测,说明电脑可以正常的工作.BIOS由两部分组成:POST代码和运行时的服务.当POST完成之后,它被从内存中清理了出来,但是,BOIS运行时服务依然保留在内存中,目标操作系统可以使用这些服务 二.载入启动程序 BIOS自检完成后,BIOS会根据用户设置的启动顺序来由哪个设备启动电脑的操作系统,设备需是处于活动状态并且可以引导的,(引导设备可以是软盘,CD-ROM,硬盘上的某个分区,网络上的某个设备,甚至是USB闪存),对于linux这个设备一般是硬盘.也就是进入硬盘的MBR区域,(master boot record,位于磁盘上的第一个扇区中,0道0柱面1扇区),这个区域中有512个字节的大小,其中前446个字节中保存的就是启动程 序,(446个字节包含可执行代码和错误消息文本,接下来的64个字节是分区表,其中4个分区的记录,每个记录的大小是16个字节,MBR以两个特殊数字的字节0xAA55结束,这个数字用来进行MBR的有效性检查,当MBR被加载到RAM中之后,BIOS就会将控制权交给MBR),然后由这个小程序来加载存储在其他位置的操作系统,也就是启动grub程序.(grub不像lilo一样使用裸扇区,而是可以从ext2或ext3文件系统中加 载LINUX内核). 要看MBR的内容,请使用下面的命令 #从/dev/sda上读取前512个字节的内容,并将其写入mbr.bin文件中 [root@localhost ~]# dd if=/dev/sda of=mbr.bin bs=512 count=1 #以十六进制和ASCII码格式打印这个二进制文件的内容 [root@localhost pam.d]# od -xa mbr.bin grub程序的这个配置文件是保存在:/boot/grub/grub.conf这个文件中,如果修改这个文件后,设置会立刻生效.

SD卡引导Linux内核在ARM11中的实现

Jishu Tantao ◆技术探讨 1引言 传统的ARM嵌入式系统大多采用Nor Flash或Nand Flash这2种非易失闪存来存储程序和数据并且引导和启动系统的。而本文采用的是已经普遍应用于数字产品的SD存储卡。 SD卡较传统的Flash具有明显的优势: 首先,价格便宜,随着SD卡技术的发展和SD卡生产厂商的不断增加,SD卡的价格不断下降,已经和Flash的价格相差无几。 其次,存储容量大,尤其是SDHC卡的出现,目前已经能够达到32GB,并且增大趋势日益明显。再次,读写方便,我们可以通过读卡器读写SD卡,比起仿真价格便宜,读写速度快。 最后,易插拔、更换和携带方便。 从上述分析可知,SD卡在今后ARM嵌入式的应用会逐渐增加,且很多厂家的芯片已经外扩了SD卡接口。 2系统组成及启动方式 ARM-Linux嵌入式系统包括硬件平台和软件平台2大部分。我个人在学习和研究ARM-Linux嵌入式系统时使用的平台如下:硬件平台采用Samsung公司的S3C6410处理器、128M的mobile SDRAM、2G的SD卡及其他外部接口设备。软件平台系统包括引导程序(u-boot)、嵌入式操作系统内核(Kernel)、文件系统(File System)。由于Linux的开源和使用的广泛性,我选择了Linux内核。S3C6410是一种兼容性比较好的ARM11处理器。S3C6410的SD/MMC接口模块可以兼容MMC卡4.2协议和SD卡2.0协议。这样目前市场上流行的SD/MMC卡和SDHC卡基本就都可以兼容使用了。 S3C6410启动模式有多种方式,分别由XSELNAND,OM[4: 0],GNP[15:13]管脚控制。图1是系统引导的框图。系统引导的整个过程是先通过OM管脚确定系统通过什么器件启动。当把OM[4:1]设置为1111时,表明系统从iROM启动。iROM启动后要把外围设备的代码拷贝到Stepping Stone中运行。此时GPN[15:13]用于识别设备的类型。当GPN[15:13]设置为111时,即从SD/MMC(CH1)设备中拷贝代码。Stepping Stone执行结束后要把BL2中代码拷贝到SDRAM中,继续执行BL2中的程序。 3SD卡引导Linux内核过程 3.1BL1的引导 整个系统上电或复位后,PC指针指向iROM的起始地址,即0x08000000位置,此段程序称为BL0,大小为32kB。这段代码是Samsung公司在做芯片的时候固化到芯片中去的。BL0执行最后的 SD卡引导Linux内核在ARM11中的实现 孙伟忠吴庆洪 (辽宁科技大学,辽宁鞍山114044) 摘要:对目前非常流行的ARM-Linux嵌入式系统的组成进行了介绍,并针对Samsung公司的S3C6410处理器分析了ARM-Linux嵌入式系统从SD卡启动系统的过程,突出该系统从SD卡引导的技术难点,同时针对当下流行的Linux内核进行引导并取得成功。 关键词:ARM;Linux;S3C6410;SD卡 41 机电信息2010年第24期总第270期

电脑启动过程详解|计算机硬件的引导过程

电脑启动过程 本文就来介绍一下从打开电源到出现桌面之前,计算机到底都干了些什么事情。 第一阶段:计算机硬件的引导过程 首先让我们来了解一些基本概念。第一个是大家非常熟悉的BIOS(基本输入输出系统),BIOS是直接与硬件打交道的底层代码,它为操作系统提供了控制硬件设备的基本功能。BIOS包括有系统BIOS(即常说的主板BIOS)、显卡BIOS和其它设备(例如IDE控制器、SCSI卡或网卡等)的BIOS,其中系统BIOS是计算机硬件启动的主角,因为计算机的启动过程正是在它的控制下进行的。BIOS一般被存放在ROM(只读存储芯片)之中,即使在关机或掉电以后,这些代码也不会消失。 第二个基本概念是内存的地址,我们的机器中一般安装有32MB、64MB内存,甚至2G 或者4G等等。这些内存的每一个字节都被赋予了一个地址,以便CPU访问内存。32MB的地址范围用十六进制数表示就是0~1FFFFFFH,其中0~FFFFFH的低端1MB内存非常特殊,因为最初的8086处理器能够访问的内存最大只有1MB,这1MB的低端640KB被称为基本内存,而A0000H~BFFFFH要保留给显示卡的显存使用,C0000H~FFFFFH则被保留给BIOS使用,其中系统BIOS一般占用了最后的64KB或更多一点的空间,显卡BIOS一般在C0000H~C7FFFH处,IDE控制器的BIOS在C8000H~CBFFFH处。 第一步:当我们按下电源开关时,电源就开始向主板和其它设备供电,此时电压还不太稳定,主板上的控制芯片组会向CPU发出并保持一个RESET(重置)信号,让CPU内部自动恢复到初始状态,但CPU在此刻不会马上执行指令。当芯片组检测到电源已经开始稳定供电了(当然从不稳定到稳定的过程只是一瞬间的事情),它便撤去RESET信号(如果是手工按下计算机面板上的Reset按钮来重启机器,那么松开该按钮时芯片组就会撤去RESET信号),CPU马上就从地址FFFF0H处开始执行指令,从前面的介绍可知,这个地址实际上在系统BIOS的地址范围内,无论是Award BIOS还是AMIBIOS,放在这里的只是一条跳转指令,跳到系统BIOS中真正的启动代码处。 第二步:系统BIOS的启动代码首先要做的事情就是进行POST(Power-On SelfTest,加电后自检),POST的主要任务是检测系统中一些关键设备是否存在和能否正常工作,例如内存和显卡等设备。由于POST是最早进行的检测过程,此时显卡还没有初始化,如果系统BIOS在进行POST的过程中发现了一些致命错误,例如没有找到内存或者内存有问题(此时只会检查640K常规内存),那么系统BIOS就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型。在正常情况下,POST过程进行得非常快,我们几乎无法感觉到它的存在,POST结束之后就会调用其它代码来进行更完整的硬件检测。 第三步:接下来系统BIOS将查找显卡的BIOS,前面说过,存放显卡BIOS的ROM芯片的起始地址通常设在C0000H处,系统BIOS在这个地方找到显卡BIOS之后就调用它的初始化代码,由显卡BIOS来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容,不过这个画面几乎是一闪而过。系统BIOS接着会查找其它设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。

Linux内核启动过程分析

1、Linux内核启动协议 阅读文档\linux-2.6.35\Documentation\x86\boot.txt 传统支持Image和zImage内核的启动装载内存布局(2.4以前的内核装载就是这样的布局): | | 0A0000 +------------------------+ | Reserved for BIOS | Do not use. Reserved for BIOS EBDA. 09A000 +------------------------+ | Command line | | Stack/heap | For use by the kernel real-mode code. 098000 +------------------------+ | Kernel setup | The kernel real-mode code. 090200 +------------------------+ | Kernel boot sector | The kernel legacy boot sector. 090000 +------------------------+ | Protected-mode kernel | The bulk of the kernel image. 010000 +------------------------+ | Boot loader | <- Boot sector entry point 0000:7C00 001000 +------------------------+ | Reserved for MBR/BIOS | 000800 +------------------------+ | Typically used by MBR | 000600 +------------------------+ | BIOS use only | 000000 +------------------------+ 当使用bzImage时,保护模式的内核会被重定位到0x1000000(高端内存),内核实模式的代码(boot sector,setup和stack/heap)会被编译成可重定位到0x100000与低端内存底端之间的任何地址处。不幸的是,在2.00和2.01版的引导协议中,0x90000+的内存区域仍然被使用在内核的内部。2.02版的引导协议解决了这个问题。boot loader应该使BIOS 的12h中断调用来检查低端内存中还有多少内存可用。 人们都希望“内存上限”,即boot loader触及的低端内存最高处的指针,尽可能地低,因为一些新的BIOS开始分配一些相当大的内存,所谓的扩展BIOS数据域,几乎快接近低端内存的最高处了。 不幸的是,如果BIOS 12h中断报告说内存的数量太小了,则boot loader除了报告一个错误给用户外,什么也不会做。因此,boot loader应该被设计成占用尽可能少的低端内存。对zImage和以前的bzImage,这要求数据能被写到x090000段,boot loader应该确保不会使用0x9A000指针以上的内存;很多BIOS在这个指针以上会终止。 对一个引导协议>=2.02的现代bzImage内核,其内存布局使用以下格式:| Protected-mode kernel | 100000 +------------------------+ | I/O memory hole | 0A0000 +------------------------+ | Reserved for BIOS | Leave as much as possible unused ~ ~

从bootm看u-boot引导内核的过程

我们知道,在u-boot中可以使用bootm这个命令来引导uclinux内核,那么其具体的过程是怎样的呢? 1.1.1bootm的命令参数 通过help bootm命令可以知道bootm所带的参数,以下内容来自于u-boot /common/cmd-bootm.c: U_BOOT_CMD( bootm, CFG_MAXARGS, 1, do_bootm, "bootm - boot application image from memory\n", "[addr [arg ...]]\n - boot application image stored in memory\n" "\tpassing arguments 'arg ...'; when booting a Linux kernel,\n" "\t'arg' can be the address of an initrd image\n" ); 从这里可以知道,bootm后面可以带两个参数,一个是内核所在的地址,这个地址就是通过tftp或者loadx指令下载内核时的存放地址,另一个可以指明initrd所处的位置。 1.1.2do_bootm 在u-boot检测到bootm命令后,它将调用do_bootm这个函数进行内核引导:int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { ulong iflag; ulong addr; ulong data, len, checksum; ulong *len_ptr; uint unc_len = CFG_BOOTM_LEN; int i, verify; char*name, *s; int(*appl)(int, char *[]); image_header_t *hdr = &header; /* 1、提取命令行中的地址参数。 */ s = getenv ("verify"); verify = (s && (*s == 'n')) ? 0 : 1; if (argc < 2) { addr = load_addr; } else { addr = simple_strtoul(argv[1], NULL, 16);

u_boot移植(九)之引导Linux 内核

u_boot移植(九)之引导Linux 内核 通过前面几节的学习,我们已经将uboot成功的移植到了开发板。在这里我们思考一个问题 : "我们移植uboot的目的是什么呢?" 嗯,我们移植uboot的终极目的是用来引导Linux 内核的,接下来我们就来了解一下,uboot是如何引导Linux 内核? 一、uboot 和 Linux 内核之间的参数传递 我们知道,uboot启动后已经完成了基本的硬件初始化(如:内存、串口等),接下来它的主要任务就是加载Linux 内核到开发板的内存,然后跳转到Linux 内核所在的地址运行。 可能有人会问"如何跳转呢?",做法很简单,直接修改PC寄存器的值为Linux 内核所在的地址,这样CPU就会从Linux 内核所在的地址去取指令,从而执行内核代码。 需要注意的是,在执行Linux 内核代码前,uboot必须做好以下几件事情: (1)CPU 寄存器的设置 <1>R0 = 0 <2>R1 = 机器类型ID <3>R2= 传递给Linux 内核参数所在内存中的起始地址 (2)CPU 工作模式设置 <1>必须禁止中断(IRQs 和 FIQs) <2>CPU 必须为SVC模式 (3)Cache 和 MMU 的设置 <1>MMU 必须关闭 <2>指令Cache 可以打开也可以关闭 <3>数据Cache必须关闭 在ARM课程学习的过程中,我们讲解过函数间参数的APTCS标准,标准规

定函数的第[一、二、三、四]个参数分别用r0-r3来传递,这样大家应该就明白上面的第一步CPU寄存器的设置,实际上是给Linux 内核传递参数。 为什么要给Linux 内核传递参数呢? 因为Linux 内核启动的时候,需要一些参数。uboot启动的时候,完成了开发板上硬件的初始化,uboot可以自豪的说"这块开发板我是支持的",但是Linux 内核就很无语了,它是直接被加载内存中运行的,它对当前开发板的环境是一无所知的。所以,Linux 内核启动的时候就规定了,你uboot跳到我这里来运行的时候,必须告诉我一些信息,我要通过这些信息来判断是否支持当前开发板。 所以了,uboot就把机器ID写到CPU的R1中,Linux 内核运行的时候首先就从R1中读取机器ID来判断是否支持当前机器。 这个机器ID实际上就是开发板的ID,每个厂家生产出一款开发板的时候都会给它指定一个唯一的ID,大家可以到uboot源码的 include/asm-arm/mach-types.h文件中去查看。 嗯,我们明白了为什么要传递机器ID,那R2的值又是什么意思呢? R2中存放的是块内存的基地址,这块内存中存放的是uboot 给Linux 内核的其他参数。这些参数有内存的起始地址、内存大小、Linux 内核启动后挂载文件系统的方式等信息。 很明显,参数有多个,不同的参数有不同的内容,为了让Linux 内核能精确的解析出这些参数,双方在传递参数的时候要求参数在存放的时候需要按照双方规定的格式存放。 在Linux 内核2.6以前,双方传递参数的格式用 struct param_struct结构

Win7启动过程及启动项修复详解

Win7启动过程及启动项修复 先让我们看一下win7的启动过程的常识:电脑加电后,首先是启动BIOS程序,BIOS自检完毕后,找到硬盘上的主引导记录MBR,MBR读取DPT(分区表),从中找出活动的主分区,然后读取活动主分区的PBR(分区引导记录,也叫dbr),PBR再搜寻分区内的启动管理器文件 BOOTMGR,在BOOTMGR 被找到后,控制权就交给了BOOTMGR。BOOTMGR读取\boot\bcd文件(BCD=Boot Configuration Data),也就是“启动配置数据”,简单地说,win7下的bcd文件就相当于xp下的boot.ini文件),如果存在着多个操作系统并且选择操作系统的等待时间不为0的话,这时就会在显示器上显示操作系统的选择界面。在我们选择启动WINDOWS7后,BOOTMGR就会去启动盘寻找WINDOWS\system32\winload.exe,然后通过winload.exe加载win7内核,从而启动整个win7系统。 可以把这个过程简单地概括 为:BIOS-->MBR-->DPT-->pbr-->Bootmgr-->bcd-->Winload.exe-->内核加 载 -->整个win7系统 本文就来说一说MBR-->DPT-->pbr--> Bootmgr-->bcd这一段可能出现的故障的解决。 1.MBR出现问题 主要是mbr代码被改写,因为被改写的代码不同,所以出错信息也各不相同。比如我们装了win7与ubuntu双系统,ubuntu改写了mbr,在我们把ubuntu 所在的分区格式化后,既进不了win7,也进不了ubuntu,开机的时候会出现如图的错误提示: GRUB Loading stage1.5. GRUB loading, please wait... Error 22解决的办法就是重写mbr。对于重写mbr,我们所熟知的是在dos下用fdisk /mbr命令进行重写。fdisk /mbr所重写的mbr与xp是兼容的,但是,与win7已经不那么兼容了。实践表明:用fdisk /mbr命令重写win7的mbr后,需要重建bcd,否则不能正常启动win7。有网友指出,这里面的原因是fdisk /mbr命令改写了mbr中的硬盘签名。一般的分区工具都是可以重写mbr的,比如diskgenius,它所重写的mbr与win7是兼容的。也可以用bootrec /fixmbr 命令重写。要运行 Bootrec.exe 工具,必须启动 Windows RE。为此,请按照下列步骤操作:插入windows 7安装光盘,从光盘启动电脑,在光盘启动完成后,按下shift+f10键,调出cmd命令提示符。在cmd命令提示符中输入:bootrec /fixmbr回车。这样也就重写了mbr。 2.分区表存在问题 系统盘不是活动的主分区,这种情形只要用分区工具(比如diskgenius)把系统盘设为活动的主分区即可。 pbr出现问题,主要是pbr代码被改写,因为被改写的代码不同,所以出错信息也不相同。比如Win7系统的活动分区,却被写入了适合于XP的 pbr,这样开机的时候就会出现如图的提示:

相关文档
最新文档