视窗
loading...
您现在的位置:首页 > IT认证 > Linux认证 >

Linux开机启动过程分析


开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。

    启动第一步--加载BIOS

    当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。在BIOS将系统的控制权交给硬盘第一个扇区之后,就开始由Linux来控制系统了。

    启动第二步--读取MBR

    硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,可里面却存放了预启动信息、分区表信息。可分为两部分:第一部分为引导(PRE-BOOT)区,占了446个字节;第二部分为分区表(PARTITION PABLE),共有66个字节,记录硬盘的分区信息。预引导区的作用之一是找到标记为活动(ACTIVE)的分区,并将活动分区的引导区读入内存。

    系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。

    启动第三步--Boot Loader

    Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。通常,BootL oade:是严重地依赖于硬件而实现的,不同体系结构的系统存在着不同的Boot Loader。

    Linux的引导扇区内容是采用汇编语言编写的程序,其源代码在arch/i386/boot中(不同体系的CPU有其各自的boot目录),有4个程序文件:

    ◎bootsect.S,引导扇区的主程序,汇编后的代码不超过512字节,即一个扇区的 大 小

    ◎setup.S, 引导辅助程序

    ◎edd.S,辅助程序的一部分,用于支持BIOS增强磁盘设备服务

    ◎video.S,辅助程序的另一部分,用于引导时的屏幕显示

    Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader,这里以Grub为例来讲解吧。

    系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。

    启动第四步--加载内核

    根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。

    系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

    start_kenrel()定义在init/main.c中,它就类似于一般可执行程序中的main()函数,系统在此之前所做的仅仅是一些能让内核程序最低限度执行的初始化操作,真正的内核初始化过程是从这里才开始。函数start_kerenl()将会调用一系列的初始化函数,用来完成内核本身的各方面设置,目的是最终建立起基本完整的Linux核心环境。

    start_kernel()中主要执行了以下操作:

    (1) 在屏幕上打印出当前的内核版本信息。

    (2) 执行setup_arch(),对系统结构进行设置。

    (3)执行sched_init(),对系统的调度机制进行初始化。先是对每个可用CPU上的runqueque进行初始化;然后初始化0号进程(其task struct和系统空M堆栈在startup_32()中己经被分配)为系统idle进程,即系统空闲时占据CPU的进程。

    (4)执行parse_early_param()和parsees_args()解析系统启动参数。

    (5)执行trap_in itQ,先设置了系统中断向量表。0-19号的陷阱门用于CPU异常处理;然后初始化系统调用向量;最后调用cpu_init()完善对CPU的初始化,用于支持进程调度机制,包括设定标志位寄存器、任务寄存器、初始化程序调试相关寄存器等等。

    (6)执行rcu_init(),初始化系统中的Read-Copy Update互斥机制。

    (7)执行init_IRQ()函数,初始化用于外设的中断,完成对IDT的最终初始化过程。

    (8)执行init_timers(), softirq_init()和time_init()函数,分别初始系统的定时器机制,软中断机制以及系统日期和时间。

    (9)执行mem_init()函数,初始化物理内存页面的page数据结构描述符,完成对物理内存管理机制的创建。

    (10)执行kmem_cache_init(),完成对通用slab缓冲区管理机制的初始化工作。

    (11)执行fork_init(),计算出当前系统的物理内存容量能够允许创建的进程(线程)数量。

    (12)执行proc_caches_init() , bufer_init(), unnamed_dev_init() ,vfs_caches_init(), signals_init()等函数对各种管理机制建立起专用的slab缓冲区队列。

    (13 )执行proc_root_init()Wl数,对虚拟文件系统/proc进行初始化。

    在 start_kenrel()的结尾,内核通过kenrel_thread()创建出第一个系统内核线程(即1号进程),该线程执行的是内核中的init()函数,负责的是下一阶段的启动任务。最后调用cpues_idle()函数:进入了系统主循环体口默认将一直执行default_idle()函数中的指令,即CPU的halt指令,直到就绪队列中存在其他进程需要被调度时才会转向执行其他函数。此时,系统中唯一存在就绪状态的进程就是由kerne_hread()创建的init进程(内核线程),所以内核并不进入default_idle()函数,而是转向init()函数继续启动过程。

    启动第五步--用户层init依据inittab文件来设定运行等级

    内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。

    其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:

    0:关机

    1:单用户模式

    2:无网络支持的多用户模式

    3:有网络支持的多用户模式

    4:保留,未使用

    5:有网络支持有X-Window支持的多用户模式

    6:重新引导系统,即重启

    启动第六步--init进程执行rc.sysinit

    在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以到/etc/rc.d中查看一下rc.sysinit文件。

    线程init的最终完成状态是能够使得一般的用户程序可以正常地被执行,从而真正完成可供应用程序运行的系统环境。它主要进行的操作有:

    (1) 执行函数do_basic_setup(),它会对外部设备进行全面地初始化。

    (2) 构建系统的虚拟文件系统目录树,挂接系统中作为根目录的设备(其具体的文 件系统已经在上一步骤中注册)。

    (3) 打开设备/dev/console,并通过函数sys_dup()打开的连接复制两次,使得文件号0,1 ,2 全部指向控制台。这三个文件连接就是通常所说的“标准输入”stdin,“标准输出”stdout和“标准出错信息”stderr这三个标准I/O通道。

    (4) 准备好以上一切之后,系统开始进入用户层的初始化阶段。内核通过系统调用execve()加载执T子相应的用户层初始化程序,依次尝试加载程序"/sbin/initl"," /etc/init"," /bin/init',和“/bin/sh。只要其中有一个程序加载获得成功,那么系统就将开始用户层的初始化,而不会再回到init()函数段中。至此,init()函数结束,Linux内核的引导 部分也到此结束。

    启动第七步--启动内核模块

    具体是依据/etc/nf文件或/etc/modules.d目录下的文件来装载内核模块。

    启动第八步--执行不同运行级别的脚本程序

    根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

    启动第九步--执行/etc/rc.d/rc.local

    你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:

    # This script will be executed *after* all the other init scripts.

    # You can put your own initialization stuff in here if you don’t

    # want to do the full Sys V style init stuff.

    rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

    启动第十步--执行/bin/login程序,进入登录状态

    此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。

    /bbsoft2002/blog/item/fa9bde820d710ca90df4d2e6.html

    1: 启动电源后,主机第一步先做的就是查询BIOS(全称:basic input/output system 基本输入输出系统)信息。了解整个系统的硬件状态,如CPU,内存,显卡,网卡等。嗯,这一步windows算和它是一家。不分彼此。

    2: 接下来,就是主机读取MBR(硬盘的第一个扇区)里的boot loader了。这个可是重点哦,据说troubleshooting里就会考这点,给个坏了的loader,叫你修正。windows不支持linux的分区格式。所以,用windows的boot。ini是查不到linux的系统的。一般我装系统都是先装 windows再装linux,然后用grub来做boot loader。两个字:省心!因为linux不像windows那么小气。grub可是支持windows分区格式的哦。

    3: 接上一步,主机读取boot loader后,会读取里面的信息,知道谁跟谁是待在哪,假如主机想进入linux系统,读取到linux核心是在/boot文件目录中后,将此核心加载到内存中。开始了接下来的分析启动之旅。

    4: OK,第一个运行程序是谁?就是/sbin/init程序。不信,就用top程序看下,是不是PID为1的就是这个东东,它,可是万物之祖啊,我简称它是女娲娘娘(不喜欢亚当夏娃)。

    · 5: init首先查找启动等级(run-level)。因为启动等级不同,其运行脚本(也就是服务)会不同。默认的等级有以下几项:

    0 - halt (系统直接关机)

    1 - single user mode (单人模式,用于系统维护时使用)

    2 - Multi-user, without NFS (类似3模式,不过少了NFS服务)

    3 - Full multi-user mode (完整模式,不过,是文本模式)

    4 - unused (系统保留功能)

    5 - X11 (与3模式类似,不过,是X终端显示)

    6 - reboot (重新开机)

    (不要选择0或4,6 否则,进步了系统的)

    · 6: OK。系统知道自己的启动等级后,接下来,不是去启动服务,而是,先设置好主机运行环境。读取的文件是/etc/rc。d/rc。sysinit文件。那究竟要设置哪些环境呢?

    · 设置网络环境/etc/sysconfig/network,如主机名,网关,IP,DNS等。

    · 挂载/proc。此文件是个特殊文件,大小为0,因为它是在内存当中。里面东东最好别删。

    · 根据内核在开机时的结果/proc/sys/kernel/modprobe。开始进行周边设备的侦测。

    · 载入用户自定义的模块/etc/sysconfig/modules/*。modules

    · 读取/etc/sysctl。conf文件对内核进行设定。

    · 设定时间,终端字体,硬盘LVM或RAID功能,以fsck进行磁盘检测。

    · 将开机状况记录到/var/log/dmesg中。(可以用命令dmesg查看结果)

    · 7: OK,接下来,就是启动系统服务了,不同的run-level会有不同的服务启动。到/etc/rc。d目录中,不同的level会有不同的目录。如启动 3模式,会有个rc3。d目录,里面就保存着服务。其中,S(start)开头的表明开机启动,K(kill)开头的表明开机不启动。数字表示启动顺序。数字越小,启动越早。

    注意,他们都是连接到etc/rc。d/init。d/目录中的相关文件。所以,想手工启动某一服务,可以用"/etc/rc。d/init。 d/某个服务 start"启动哦。相反,我们也可以把某个服务ln(链接命令)到不同run-level的目录中。记得打上S或者K+数字哦。

    · 8: 读取服务后,主机会读取/etc/rc。d/rc。local文件。所以,如果需要什么开机启动的话,可以写个脚本或命令到这里面来。就不用像上面那么麻烦。以后删除也方便。

    OK,经过一番长途跋涉后,系统终于可以安心的开启shell了。

闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣椤愯姤鎱ㄥ鍡楀幊缂傚倹姘ㄩ幉绋款吋閸澀缃曢梺璇查閸樻粓宕戦幘缁樼厱闁哄洢鍔屾禍鐐烘煥濞戞瑧娲存慨濠呮閹瑰嫰濡搁妷锔惧綒闂備胶鎳撻崵鏍箯閿燂拷

闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣椤愯姤鎱ㄥ鍡楀幊缂傚倹姘ㄩ幉绋款吋閸澀缃曢梺璇查閸樻粓宕戦幘缁樼厱闁哄洢鍔屾禍鐐烘煥濞戞瑧娲存慨濠呮閹瑰嫰濡搁妷锔惧綒闂備胶鎳撻崵鏍箯閿燂拷

闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣椤愯姤鎱ㄥ鍡楀幊缂傚倹姘ㄩ幉绋款吋閸澀缃曞┑鐘垫暩閸嬫稑螞濞嗘挸绠伴柛婵勫劤閻棗顭块懜闈涘闁绘挻鐩弻娑㈠Ψ閿濆懎濮庨梺璇茬箚閺呯娀寮诲☉姘勃閻犲洦褰冮~鍥⒑閸濆嫭婀版繛鑼枎閻g兘鎮℃惔妯绘杸闂佹悶鍎滅仦鎷樼喖姊绘担绛嬪殭閻庢稈鏅犻幊婵囥偅閸愶絺鍋撻敃鍌涘€婚柦妯侯槼閹芥洟姊洪棃娴ㄥ綊宕曢鈧銊︾鐎n偆鍘遍梺鏂ユ櫅閸橀箖顢旈崼鐔蜂户闂佸搫鍟崐鑽ゅ閽樺褰掓晲閸ャ劌娈岄梺杞扮婢х晫妲愰幘鎰佸悑闁告洦鍘鹃悰銏ゆ倵濞堝灝鏋涙い顓犲厴瀵偊骞樼紒妯轰汗闂佽偐鈷堥崜锕€危鐟欏嫪绻嗛柣鎰典簻閳ь剚鐗犲畷婵婎槾闁逞屽墴濞佳囨儗閸岀偛鏄ラ柍褜鍓氶妵鍕箳瀹ュ洩绐楀┑鐐茬墛缁捇寮婚垾宕囨殕闁逞屽墴瀹曚即寮介鐐殿啈闁瑰吋鐣崝宀€澹曢崗鍏煎弿婵妫楁晶浼存煏閸偄娅嶆慨濠勭帛閹峰懐绮电€n亝鐣伴梻浣告憸閸c儵宕戞繝鍌滄殾闁诡垶鍋婂Ο鍕⒑閸濄儱浠滈柣鏍帶椤繘鎼归崷顓狅紲濠碘槅鍨靛畷鐢稿矗閸℃稒鈷戠痪顓炴噹琚氱紓渚囧枛濞寸兘宕氶幒妤€绫嶉柛顐亝閺呫垽姊洪崨濠冨闁告挻鐩畷銏$鐎n偀鎷虹紓鍌欑劍閳笺倝顢旈崟闈涙闂佸壊鍋呭ú鏍不瑜版帗鐓欓柟娈垮枛椤eジ鏌i幘璺烘灈妤犵偞甯¢獮搴ㄦ寠婢跺矈妲烽梺璇茬箳閸嬬姴螞閸曨厾鐭堟い鎰堕檮閳锋帒霉閿濆嫯顒熼柡鈧导瀛樼厵婵炶尪顔婄花鐣岀磼椤旂⒈鐓兼鐐差儔閺佹劙宕堕埡濠傛櫖闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊瑜夐弸鏍煛閸ャ儱鐏╅梻鍌ゅ灦閺屻劑寮撮悙娴嬪亾閸濄儳涓嶆い鏍仦閻撱儵鏌i弴鐐测偓鍦偓姘炬嫹
闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣捣閻棗銆掑锝呬壕濡ょ姷鍋為悧鐘汇€侀弴銏℃櫆闁芥ê顦純鏇熺節閻㈤潧孝闁挎洏鍊濋幃褔宕卞▎鎴犵劶闂佸壊鍋嗛崰鎾剁不妤e啯鐓欓悗娑欋缚閹冲啴鏌h箛锝勯偗闁哄本绋撻埀顒婄秵閸撴瑩寮搁幋锔界厪闁搞儜鍐句純閻庢鍠曠划娆撱€侀弴顫稏妞ゆ挾鍠庢刊浼存⒒閸屾瑨鍏岀紒顕呭灣閺侇噣鏁嶉崟顓濈瑝闂佸搫绋侀崢濂告嫅閻斿吋鐓涢柛銉㈡櫅閺嬫梻绱掗悩鑽ょ暫闁哄本鐩垾锕傚箣濠靛洨浜┑鐘愁問閸犳牠鏌婇敐鍜佹綎闁惧繗顫夌€氭岸鏌涘▎蹇fЦ闁衡偓椤撶儐娓婚柕鍫濇閼茬娀鏌涢埄鍐炬畼闁稿﹥甯″濠氬磼濞嗘垵濡介梺璇″枛閻栫厧鐣烽弴銏″殥闁靛牆鎳愮粵蹇涙⒑閸忛棿鑸柛搴㈠絻閳诲秹鎮╃紒妯煎幍缂傚倷鐒﹂敋缁绢厸鍋撻柣鐔哥矌婢ф鏁Δ鍛;闁稿瞼鍋涚粻瑙勭箾閿濆骸澧柣蹇婃櫆缁绘盯宕奸悤浣圭杹闂佽鍠楅〃鍛村煝閹捐鍨傛い鏃傛櫕娴滎亪姊绘担铏瑰笡闁绘娲熷畷銉р偓锝庡亞閳瑰秴鈹戦悩鍙夊闁稿﹤顭烽弻銈夊箒閹烘垵濮曞┑鐐叉噹濡繂顫忓ú顏勫窛濠电姴鍟惁鐑芥⒑閸涘﹤濮﹀ù婊勭矌閺侇喖螖閳ь剟鍩為幋锔藉亹闁割煈鍋呭В鍕⒑缁嬫鍎愰柣鈺婂灦楠炲啫煤椤忓嫀鈺冩喐瀹ュ鍨傛繝闈涚墐閸嬫捇宕楁径濠佸闂備線鈧偛鑻晶鎾煙瀹曞洤浠遍柡灞芥椤撳ジ宕卞Δ浣烘殶闂傚倷绀侀崯鍧楀箹椤愩倐鍋撳鐓庡闁活煈鍓氱换婵嬫偨闂堟稐绮跺銈嗘处閸欏啫鐣烽姀锝庢▌闂佽鍠楀鑺ヤ繆閹间礁鐓涘ù锝呮啞閸庮亪姊绘担鍛靛綊鎯夋總绋跨;闁绘劗鍎ら崑鍌涚箾閹存瑥鐏柣鎾存礋閺岀喖骞嶉搹顐g彅婵犵鈧偨鍋㈤柡灞界Х椤т線鏌涢幘瀵哥畵闁伙絿鍏橀幃浠嬫濞戞ḿ浜伴梻浣告惈閸燁偄煤閵忥紕顩茬憸鐗堝笚閻撴瑩鏌i幋鐐嗘垹浜搁悽鍛婄厱婵炲棗绻戦ˉ婊堟煃鐟欏嫬鐏撮柟顔界懇瀵爼骞嬮悩杈╃濠电姷鏁搁崑娑㈠箠韫囨拋鍝勨堪閸繄鍔﹀銈嗗笂閼冲爼宕弻銉︾厵闁告垯鍊栫€氾拷闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅悷婊冪Ч濠€渚€姊虹紒妯虹伇婵☆偄瀚板鍛婄瑹閳ь剟寮婚悢鍏尖拻闁圭虎鍠楅鏍⒑闁偛鑻崢鎼佹煟閹虹偛顩柟骞垮灩閳规垹鈧綆浜為敍娑橆渻閵堝棛澧慨妯稿妿缁棃鎼归崗澶婁壕閻熸瑥瀚粈鈧悗瑙勬处閸撴繈鎮橀幒妤佺厽闁绘ê寮堕幖鎰繆椤栨熬宸ュ畝锝呮健椤㈡盯鎮欑划瑙勫濠电偠鎻紞渚€藟閹惧鈻旈柤纰卞墰绾惧ジ妫呴顐㈠箻闁活厽鐟ч埀顒侇問閸犳岸寮繝姘モ偓浣肝旈崨顓狀槹濡炪倖宸婚崑鎾趁归悩灞傚仮婵﹥妞藉畷銊︾節鎼淬垻鏆梻浣呵归敃銉╁垂閸洖绠氶柡鍐ㄧ墕鎯熼梺闈涳紡閸愶絽浜鹃柣鎰劋閳锋垿鏌熺粙鎸庢崳缂佺姵鎹囬弻鐔煎礃閺屻儱寮伴梺绯曟櫆缁嬫帒顕ラ崟顓涘亾閿濆骸澧版い鏃€娲熼弻锝嗘償閿濆棙姣勯柡瀣典邯閹粙顢涘鍗炵厽闂佸搫鐬奸崰鏍箹瑜版帩鏁冩い鎺戝暊閸嬫捇宕稿Δ浣哄幗濠电偞鍨靛畷顒勫几閵堝鐓冪憸婊堝礈閵娧呯闁糕剝绋戠粣妤呮煛瀹ュ骸浜炲☉鎾崇Ч閺屻劌鈹戦崱姗嗘¥缂備讲妾ч崑鎾斥攽閻樺灚鏆╁┑顔芥尦瀹曟劙骞栨笟鍥ㄦ櫆濡炪倖鍔ч梽鍕偂濞嗘挻鐓涢悗锝夋涧娴滄粌鈹戦鐓庘偓褰掑箞閵婏妇绡€闁告劏鏂傛禒銏ゆ倵鐟欏嫭纾搁柛鏂跨Ф閹广垹鈹戠€n亞顦ㄩ梺鎸庣箓濡顢旈崫銉х=闁稿本鑹鹃埀顒勵棑缁牊绗熼埀顒勩€侀弽顓炲耿婵炲棙鍔栧▓浼存⒑鐠恒劌鏋斿┑顔碱嚟缁顫濋懜鐢靛幈闂侀潧顧€缁茶姤淇婇崗绗轰簻闁哄浂婢€閹查箖鏌$仦绋垮⒉鐎垫澘瀚埀顒婄秵娴滅偞绂掗幘顔解拺闁告縿鍎辨禍濂告煕閺冣偓閸ㄧ敻锝炶箛鎾佹椽顢旈崟顓у晣闂備胶绮崝鏍亹閸愨晜鍙忕€光偓閸曨兘鎷洪梺鍛婄☉閿曘儵鎮¢妷褏纾煎璺猴功缁夋椽鏌℃担鐟板闁诡喗鐟╁畷顐﹀礋椤愩垺鏆忓┑锛勫亼閸娿倝宕楀▎鎾崇?闂侇剙绉甸悡鈧梺鎸庣箓閹虫劙寮抽敃鍌涚厱妞ゆ劧绲剧粈鍐煛閸涱喚鍙€闁哄本绋戦埥澶愬础閻愯尙顔囬梻浣筋潐閻忔岸宕愰弴銏犵厴闁硅揪闄勯崐椋庘偓鐟板閸犳牕鈻撻崼鏇熲拺闁告稑饪撮悞濂告煕閵夋垵鎳愰弸鍐╃節濞堝灝鏋熼柕鍥ㄧ洴瀹曟垿骞橀幖顓燁啍闂佺粯鍔曞鍫曀夐姀鈶╁亾鐟欏嫭绀冮柨鏇樺灲閵嗕礁鈻庨幘鏉戞異闂佸啿鎼敃銉︽櫏濠电姷顣槐鏇㈠磻閹达箑纾归柡宥庡幖缁€澶愭煙鏉堝墽鐣遍柛銊ュ€圭换娑橆啅椤旇崵鍑归梺绋块閿曨亪寮婚敓鐘茬闁挎繂鎳嶆竟鏇犵磽閸屾瑨鍏岀紒顕呭灣閹广垽宕奸悢绋垮伎闂侀€炲苯澧撮柡灞诲妼閳规垿宕卞鍡橈骏闂備線娼уΛ娆撳礉濞嗘挸钃熼柨婵嗘閸庣喖鏌曡箛銉у埌妞ゃ儲绻堝铏规兜閸涱厜鎾剁磼椤旇壈瀚扮€规挸瀚板铏规喆閸曨偒妫嗘繝鈷€鍕垫疁鐎殿喗鐓¢獮鏍ㄦ媴閸︻厼寮抽梻浣虹帛濞叉牠宕愰崷顓涘亾濮樼偓瀚�闂傚倸鍊搁崐鎼佸磹閹间礁纾归柣鎴eГ閸ゅ嫰鏌涢锝嗙缂佺姷濞€閺岀喖宕滆鐢盯鏌涚€c劌鈧繈寮婚弴鐔虹闁绘劦鍓氶悵鏃堟⒑閹肩偛濡奸柛濠傛健瀵鈽夐姀鐘电杸濡炪倖鎸炬慨浼村磻閻愮儤鈷戦柛鎾村絻娴滆棄霉濠婂簼閭€殿喖顭烽幃銏㈡偘閳ュ厖澹曢梺姹囧灮濞呫儵鎮烽幍顔界槗闂傚倸鍊烽懗鍓佸垝椤栨粍鏆滈柟鐑橆殕閺呮繈鏌曢崼婵愭Ц闁绘挻锕㈤弻鐔告綇妤e啯顎嶉梺绋款儐閸旀瑩寮诲☉妯锋瀻闊浄绲炬晥闂備浇顕栭崰妤呮偡閵夆晛鐓橀柟杈鹃檮閸婄兘鏌涘▎蹇fЦ婵炲拑绻濆娲箹閻愭彃顬堢紓鍌氱Т閿曘倝鏁冮姀锛勭懝闁逞屽墮椤繐煤椤忓嫮顔囬柟鑹版彧缁插潡鎮鹃棃娑掓斀闁宠棄妫楁禍婵嬫煟閳哄﹤鐏︽鐐叉娴狅箓鎮欓鈧崝鍛存⒑闂堟稈搴峰┑鈥虫喘瀹曘垽骞樼紒妯轰画濠电姴锕ょ€氼噣鎯岄幒鏂哄亾鐟欏嫭绀冪紒顔肩焸閸┿垺鎯旈妸銉ь啋閻庤娲栧ú銊╁几閸愵喗鈷掑ù锝呮憸缁夋椽鏌涚€n亷韬€规洘顨呴~婊堝焵椤掆偓椤曪綁骞栨担鍝ョ潉闂佸壊鍋嗛崰鎾诲储閻㈠憡鐓涘璺猴功婢э妇绱掗悩宕囧ⅹ妞ゎ剙锕、姘跺焵椤掑嫬钃熸繛鎴炲焹閸嬫捇鏁愭惔婵囧枤闂佺ǹ瀛╁Λ鍐蓟閿涘嫪娌柛鎾楀嫬鍨辨俊鐐€戦崹鍝劽洪悢闀愮箚闁割偅娲栧婵囥亜閺冨牊鏆滈柛瀣崌瀹曟粏顦寸痪鍙ョ矙閺屾稓浠﹂悙顒傛閻炴熬绠撳铏圭矙濞嗘儳鍓遍梺鍦嚀濞层倝锝炶箛鏇犵<婵☆垵顕ч鎾绘⒑閼姐倕鏋戝鐟版缁傚秵瀵肩€涙ǚ鎷虹紓鍌欑劍閿氶梺鍙夌矌缁辨帡鎮╅搹顐㈤瀺婵烇絽娲ら敃顏堝箖娴犲宸濆┑鐘插€甸崑鎾绘倻閼恒儳鍘介梺闈涚箞閸ㄦ椽寮抽埡鍌樹簻闁挎棁顕ч悘锔芥叏婵犲啯銇濈€规洦鍋婂畷鐔碱敃閿濆棭鍞查梻鍌欒兌缁垶銆冮崨顓囨稑鈽夐姀鈥冲墻濡炪倕绻愬ù鍌毼熼崟顖涒拺闁告繂瀚﹢浼存煟閳哄﹤鐏﹂柣娑卞櫍瀹曞爼顢楁径瀣珫婵犵數鍋為崹鍫曞传鎼淬劌鐒垫い鎺嗗亾闁挎洩濡囧Σ鎰板箻鐎涙ê顎撻梺鍦帛鐢﹥绔熼弴銏♀拻濞达綀濮ょ涵鍫曟煕閿濆繒鐣垫鐐茬箻閺佹捇鏁撻敓锟�闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅悷婊冪箻閹崇偤鏌嗗鍡楁異闂佸疇妗ㄩ懗鍓佺驳韫囨梻绡€闁汇垽娼ф牎闂佺粯妫忛崜娑氭閻愬搫鍐€鐟滄粓鎮㈤崱娑欑厾闁归棿鐒﹀☉褍鈹戦鍏煎枠闁哄本鐩俊鎼佸Ψ閵夈垹浜鹃柛锔诲幗瀹曞弶绻濋棃娑欏窛缂佲檧鍋撻梻浣呵归張顒勫礄鐟欏嫬顕遍柍褜鍓氭穱濠囨倷椤忓嫧鍋撻幇鏉跨柧闁绘ǹ顕х紒鈺呮⒑椤掆偓缁夊瓨顢婇梻浣告啞濞诧箓宕归幍顔句笉闁规儼濮ら悡娆撴倵濞戞瑡缂氱紒鐘崇墬缁绘盯宕奸敐鍛缂備浇椴搁幐濠氬箯閸涱噮妲归幖娣€楅悰銉╂⒒娓氣偓濞艰崵绱為崶鈺佺筏濞寸姴顑愰弫瀣煥濠靛棭妲搁梺鍗炴喘閺岋繝宕堕埡浣圭€婚梺閫炲苯澧伴柛蹇旓耿瀵鈽夐埗鈹惧亾閿曞倸绠f繝闈涙噽閸戝綊姊绘担铏瑰笡缂佽绉电粋宥呪堪閸繄鍘撮梺纭呮彧闂勫嫰宕愰悜鑺ョ厾缁炬澘宕晶顔姐亜閵堝倸浜鹃梻鍌氬€烽悞锕傚箖閸洖绀夐悘鐐靛亾濞呯娀骞栨潏鍓у埌闁搞劍绻冮幈銊ノ熼崹顔惧帿闂佺粯甯熼崑鎰板焵椤掆偓缁犲秹宕曢柆宥呯疇闁圭増婢樼粈澶愭煙缂併垹鏋熼柍閿嬪灴閺屾稑鈽夊鍫濅紣婵犮垻鎳撻崯鎾蓟濞戞ǚ妲堥柛妤冨仧娴煎洤鈹戦垾铏枙闁告挻姘ㄩ幑銏犫攽鐎n偄浠洪梻鍌氱墛閸掆偓闁靛璐熸禍婊堟煥濠靛棗顏柣顓熺懇閺屾盯鍩為幆褌澹曞┑锛勫亼閸婃牕顔忔繝姘;闁瑰墽绮悡鏇㈡煟閺冨牊鏁遍柛瀣ㄥ劦閺屾盯鍩為幆褌澹曞┑锛勫亼閸婃牜鏁幒妤€纾圭憸鐗堝笒閸氬綊鏌嶈閸撶喎顫忓ú顏勭閹兼番鍨婚敍姗€姊洪幖鐐插婵$偘绮欓悰顔跨疀濞戞ê绐涢梺鍝勵槹閸ㄥ綊藝椤撱垺鈷戦柛锔诲幘鐢盯鎮介娑辨疁妞ゃ垺锕㈠畷绋课旀担鍙夊濠电偠鎻徊浠嬪箠濞嗘帇浜归柟鐑樺灥閻濇ê顪冮妶鍡楃瑨闁稿﹦鎳撻悾鐑芥嚑椤戣棄浜炬鐐茬仢閸旀碍銇勯敂璇茬仸闁硅櫕绮忛妵鎰板箳閹捐泛骞嶇紓鍌氬€烽梽宥夊垂瑜版帒鍑犻柣鏂垮悑閻撶喖鏌熼幆褜鍤熼柟鍐叉喘閺岀喖顢欑粵瀣暥闂佸疇妫勯ˇ顖炲煝鎼达絺鍋撻敐搴″缂佹劖顨呴埞鎴︽偐椤愶絽顎忛柣蹇曞仩濡嫰锝為鍡欑=濞达綀娅g敮娑氱磼鐠囪尙澧︾€规洘妞介崺鈧い鎺嶉檷娴滄粓鏌熼崫鍕ら柛鏂跨Т閳规垿顢涘☉娆忓攭闂佸搫鏈惄顖炲极閸屾粍瀚氶柟缁樺笧椤旀帡姊绘担渚敯婵炲懏娲滈幑銏ゅ醇濠垫劖缍庡┑鐐叉▕娴滄粎绮堥崼銉︾厾缁炬澘宕晶顕€鎮介妯哄姦婵﹨娅g划娆忊枎閹冨闂備胶顢婂▍鏇㈠礉濡も偓鍗遍柟鎵閸婄兘鏌涘┑鍡楊伀闁告棑绠戦—鍐Χ閸℃鐟ㄩ柣搴㈠嚬閸欏啴宕哄☉銏犵闁挎梻鏅崢浠嬫⒑缂佹ɑ鈷掗弸顏呫亜閵夈儺鍎旈柡宀€鍠栭幃鍓т沪鐟欙絾鐎伴梻浣告惈閻寰婇崐鐔轰簷闂備礁鎲¢崝鎴﹀礉鐎n喖绠i柣鎴eГ閳锋垿鏌i悢绋款棆闁伙綆鍙冮弻娑㈠Ω閵壯呅ㄩ梺鎸庣箘閸嬫盯鍩為幋鐘亾閿濆懐浠涢柡鍛仱濮婃椽宕楅梻纾嬪焻闂佺ǹ姘﹀▍鏇犵矉瀹ュ應鏋庨柟鍓цˉ閹风粯绻涙潏鍓у埌闁硅绻濋獮鍡涘醇閻旇櫣顔曢柣鐘叉厂閸涱垱娈奸梻浣筋嚃閸ㄤ即鎯岄崒鐐偓浣糕枎閹炬潙鈧攱銇勯幒鍡椾壕闁瑰吋娼欓敃顏勵潖閾忕懓瀵查柡鍥╁仜閳峰绱撴担鍓插剱閻㈩垽绻濋獮鍐灳閺傘儲鐎婚梺瑙勫閺呮瑧鑺辨繝姘拺闁革富鍘兼禍鐐亜閵娿儲鍤囩€规洦鍨堕幃褔宕奸姀鈺傜カ闂備礁鎼ˇ浼村春閸縿鈧帗绻濆顓犲帾闂佸壊鍋呯换鍐夐悙宸唵閻犲搫鎼顓㈡煛鐏炲墽娲存鐐瘁缚閹瑰嫰鎮滃Ο灏栧亾婵犳碍鈷戝ù鍏肩懅閹ジ鏌涜箛鏃撹€跨€殿噮鍋婇獮鍥级閸喛鈧灝鈹戦悙鍙夘棡闁搞劎鎳撳嵄闁搞儺鍓氶埛鎺懨归敐鍛暈闁哥喓鍋ら弻娑㈠棘鐠恒劎顔掗悗娈垮枟閻擄繝宕洪埄鍐╁闁告洖澧庣粔顔姐亜閵忥紕娲撮柟顔界懅閸掓帞鎲撮崟顐紪闂傚倸鍊风粈渚€濡堕幖浣哥劦妞ゆ帊鑳堕埥澶屸偓瑙勬尭濡繈寮诲☉妯锋斀闁割偅绻傛俊娲⒑闁稓鈹掗柛鏂跨Ф閹广垹鈹戠€n亞锛滈梺闈涚墕濞层倝骞冮幋锔解拻濞达絽鎲¢幆鍫ユ煠濞茶鐏﹂柟顔ㄥ洤绠婚柤濮愬€曠粊锕€鈹戦濮愪粶闁稿鎸婚妵鍕閿涘嫭鍣伴梺纭呮珪閻楃娀宕洪埄鍐瘈闁稿本绋戦埀顒佺洴濮婂宕掑顑藉亾閻戣姤鍤勯柛顐f礀缁犵娀鏌熼崜褏甯涢柛瀣ㄥ€濋弻鏇熺箾瑜嶉崯顐︽倶婵犲洦鍊垫鐐茬仢閸旀碍绻涚仦鍌氣偓婵嗙暦閻熸壋鏀介悗锝庡亞閸欏棝姊洪崫鍕窛闁稿鐩崺鈧い鎺嗗亾缂傚秴锕獮鍐晸閻樺弬銊╂煥閺傚灝鈷旀い鏃€娲熷娲偡闁箑娈堕梺绋匡攻閻楃娀鐛€n亖鏀介柟鎯у帨閸嬫捇宕稿Δ浣哄幗濠德板€愰崑鎾绘煟濡も偓缁绘帒顕h閸┾偓妞ゆ帒瀚埛鎴︽⒑椤愩倕浠滈柤娲诲灡閺呭墎鈧稒锕╁▓浠嬫煟閹邦垰鐨洪弫鍫濐渻閵堝啫鐏柣鐔叉櫊閻涱噣宕卞鍏夹╅梺鑽ゅ枑閻熼亶姊介崟顓熷床婵犻潧顑嗛崑銊╂⒒閸喓鈼ョ紒顔挎硾閳规垿鍩ラ崱妞剧凹濡炪們鍔岄幊妯猴耿娴i€涚箚闁绘劕妯婇崕蹇旂箾鐎电ǹ鍘撮柟顔肩-缁辨帒螣閸︻厾鐣鹃梻渚€娼ч悧鍡涘箠鎼淬劌姹查柣鏃囨濡垶鏌熼鍡曠娴狀噣姊洪崫鍕効缂佺粯绻傞悾鐑藉箳閹存梹顫嶉梺鍛婎殘閸嬫稒淇婃總鍛娾拻濞达絽鎳欑憴鍕垫闁告縿鍎插畷鏌ユ煙閻戞﹩娈旈柣鎺戠仛閵囧嫰骞掗幋婵囩亾濠电偛鍚嬮崝娆撳蓟閻旂厧浼犻柕澶婃川椤㈠﹪鎮樼€n亖鏀介柣妯肩帛濞懷勪繆椤愶絿娲寸€殿喗濞婇弫鍌炴嚍閵夈儱浼庢繝纰樻閸ㄤ即鎮樺┑瀣亗闁规壆澧楅悡鏇㈡倵閿濆骸浜滃┑顔碱槺缁辨帗娼忛妸锕€闉嶉梺鐟板槻閹虫劙骞忚ぐ鎺濇晬婵犲﹤鎳愰悰銉╂⒑閼姐倕鏋戠紒顔煎閺呰泛螖閸涱厼鐎梺鍓茬厛閸n喖岣块弽銊х鐎瑰壊鍠曠花鑽ょ磼閻樺崬宓嗘鐐寸墱閸掓帡宕楁径濠佸闂佹儳娴氶崑鍡樼閻愮儤鈷掗柛灞剧懆閸忓矂鏌熼搹顐e磳鐎规洜鏁诲浠嬵敇閻愭鍞甸梻浣芥硶閸o箓骞忛敓锟�闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掑鏅悷婊冪Ч濠€渚€姊虹紒妯虹伇婵☆偄瀚板鍛婄瑹閳ь剟寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磽娴e搫啸濠电偐鍋撻梺鍝勭灱閸犳牠鐛幋锕€绠涙い鎺戝€哥敮鍧楁⒒娴e憡鎯堟俊顐g懅閸掓帒顓兼径濞箓鏌涢弴銊ョ仩缂佺姵鐩弻娑㈠箻閼艰泛鍘¢梺鍝勬婵妲愰幘瀛樺闁圭粯甯婃竟鏇㈡⒒娴h櫣銆婇柛鎾寸箓閻滆崵鎹勯妸褌绗夋俊銈忕到閸燁垶鎮″▎鎾村€甸柣銏犳啞濞呮粎绱掓潏顐g彧闁靛洤瀚粻娑㈠箻鐠轰警鏆梻浣告惈椤戝嫮娆㈠璺鸿摕婵炴垯鍩勯弫鍐煥濠靛棙顥犳い锔哄姂濮婅櫣绮欓崠鈥冲闂佽桨鐒﹂幃鍌炲箚閳ь剚銇勮箛鎾跺⒈闁轰礁娲弻锝夊箛椤撶喓绋囧銈呭缁嬫垿鍩為幋锔藉€烽柟缁樺笚閸婎垶姊洪崨濠冣拹闁荤啿鏅涢锝囨嫚濞村顫嶉梺闈涚箳婵牓鍩¢崨顔惧弳闂佸搫鍊搁悘婵嬪煕閺冨牊鐓熼柟鎹愬蔼閸忓瞼绱掓潏銊﹀鞍闁瑰嘲鎳愮划娆愭償閹惧厖澹曢梺闈╁瘜閸樹粙寮冲⿰鍫熺叆闁绘柨鎼ⅷ闂侀€炲苯鍘哥紒鈧担鐣屼簷濠电偠鎻徊鍧楀箠閹炬椿鏁侀柟鎯у绾捐棄霉閿濆懎顥忛柛搴$箻閺岋繝宕ㄩ鍓х杽濡炪們鍨哄ú鐔煎极閸屾粍鍠嗛柨婵嗘椤忓綊姊绘担钘夊惞闁哥姵鍔欓幃鐑藉Ψ瑜夐崑鎾愁潩閻撳骸绠诲┑鐐叉閸ㄤ粙骞婇悩娲绘晢闁稿本绮g槐鑼磽閸屾艾鈧兘鎮為敃鍌涙櫔闂備浇顕х换鎰邦敋椤撱垹鐒垫い鎺嶇贰閸熷繘鏌涢敐搴℃珝鐎规洘鍨剁换婵嬪炊閵夈垹浜惧ù锝囩《閺嬪酣鏌熼悙顒佺稇濞寸姴銈搁幃妤呭礂婢跺﹣澹曞┑鐘垫暩婵挳宕导鏉懳фい鎰ㄦ噰閺€浠嬫煟濡澧柛鐔风箻閺屾盯鎮╅幇浣圭杹婵犵绻濆ḿ褔鍩ユ径鎰潊闁绘ḿ顣槐閬嶆⒒娴g儤鍤€濠⒀呮櫕閸掓帡顢涢悙鏉戜簵闂佸憡鍔︽禍婵嬪窗閹邦厾绡€濠电姴鍊绘晶鏇犵磼閳ь剟宕奸悢铏诡啎闂佺硶鍓濊摫閻忓浚鍘鹃惀顏堝箚瑜忕粔娲煛鐏炲墽鈽夐柍瑙勫灴瀹曠喖顢曢姀鐘樻垹绱撻崒娆掝唹闁稿鎸搁埞鎴︽偐閸欏顦╅梺绋匡功閺佸寮婚妸銉㈡斀闁糕剝渚楅埀顒侇殜閺岋紕鈧綆鍓欓弸娑㈡煛鐏炲墽鈯曢柟顖涙閺佸秹宕熼幊宄版处閻撴盯鎮橀悙鎻掆挃婵炴彃顕埀顒侇問閸犳骞愰搹顐$箚闁归棿绀佸敮闂侀潧锛忛崨顔兼灕闂傚倷娴囧畷鐢稿窗閹邦喖鍨濋幖娣灪濞呯姵淇婇妶鍛殲闁哄棙绮嶆穱濠囧Χ閸涱喖娅ら梺绋款儏閸婂潡寮诲鍫闂佸憡鎸婚悷鈺呭灳閺冨牆绀冩い鏂挎瑜旈弻娑㈠焺閸愮偓鐣奸梺鑽ゅ枂閸旀垵顫忓ú顏勭閹兼番鍨婚埞娑欑節绾版ǚ鍋撻搹顐㈢獩闂佸憡甯楃敮鈥崇暦婵傜ǹ唯闁挎棁濮ら鐔兼⒒娴h姤纭堕柛锝忕畵楠炲繘鏁撻敓锟�闂傚倸鍊搁崐鎼佸磹閹间礁纾圭€瑰嫭鍣磋ぐ鎺戠倞闁靛ě鍛獎闂備礁澹婇崑鍡涘窗閸℃ḿ顩烽柛顐犲灮绾惧ジ鎮楅敐搴′航闁稿簺鍎茬换娑㈠礂閼测晛鈪归梺瀹狀潐閸ㄥ潡骞冮埡浣烘殾闁搞儴鍩栧▓褰掓⒒娴h櫣甯涢悽顖ょ磿缁寮介鐐舵憰闂佺粯妫佸▍锝囧婵傚憡鐓忛煫鍥ㄦ礀鏍¢梺璇茬箰閻楀棝鍩為幋锕€鐓¢柛鈩冦仦缁ㄥジ姊洪幐搴㈢8闁搞劏妫勯锝嗙節濮橆厽娅滄繝銏f硾椤戝懏绂嶅⿰鍛=濞达絽澹婇崕鎰亜閹寸偟鎳冮摶鐐烘煕閳╁啰鎳呯痪鎹愬亹缁辨挻鎷呴棃娑氫患濡ょ姷鍋為崝娆撳蓟濞戞埃鍋撻敐搴′簼鐎规洖鏈幈銊︾節閸曨厼绗¢梺鐟板槻閹虫﹢骞冮悜鑺ョ劷闁挎洍鍋撴繛鍫熺箘缁辨捇宕掑▎鎴М濡炪倖鍨靛Λ娑㈠极椤曗偓楠炴帒螖娴i晲鎮f繝鐢靛█濞佳囶敄閸涱垳涓嶉柣鐔稿櫞瑜版帗鏅查柛娑卞枟閸犳劙姊洪幐搴b姇闁烩晩鍨伴~蹇撁洪鍕炊闂佸憡娲﹂崢婊堟偐缂佹ḿ鍘遍梺鍝勫€稿ḿ锟犲矗閸曨垱鐓忛柛鈩冾殕閸ゅ洭鏌熼鐣岀煉闁瑰磭鍋ゆ俊鐤槻鐎殿喗濞婂缁樻媴閾忕懓绗″┑鐐插级閻楃姴鐣烽幇鏉挎嵍妞ゆ挻绋戞禍鐐叏濡厧浜鹃悗姘炬嫹:webmaster@jscj.com闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣椤愯姤鎱ㄥ鍡楀幊缂傚倹姘ㄩ幉绋款吋閸澀缃曢梺璇查閸樻粓宕戦幘缁樼厱闁哄洢鍔屾禍鐐烘煥濞戞瑧娲存慨濠冩そ閹兘寮舵惔鎾村瘱缂傚倷绶¢崳顕€宕归崼鏇炵畺闁跨喓濮甸崑鍕煙閼测晛浠掔紒銊嚙椤啴濡堕崱妤€袝闂佺ǹ顑呯€氫即鎮伴鍢夌喖鎳栭埡鍐跨床濠电偠鎻徊浠嬪箹椤愶箑鍌ㄩ柟缁㈠枟閻撴稓鈧厜鍋撻悗锝庡墰琚﹂梻浣芥〃缁€渚€宕愭繝姘闁告洦鍨版儫閻熸粌绻樺畷銏ゎ敍閻愮补鎷绘繛杈剧秬婵倝濡撮崘顏嗙<闁逞屽墯閹峰懘鎼归崷顓犲帬闁荤喐绮庢晶妤冩暜閹烘鍑犲〒姘e亾闁哄瞼鍠栧畷婊嗩槾閻㈩垱鐩弻锟犲川椤旇棄鈧劙鏌$仦璇插闁诡喓鍊濆畷鎺戔槈濮楀棔绱�4008816886

相关文章

无相关信息
更新时间2022-09-16 10:03:36【至顶部↑】
联系我们 | 邮件: webmaster@jscj.com | 客服热线电话:4008816886(QQ同号) | 

付款方式留言簿投诉中心网站纠错二维码手机版

电话:
付款方式   |   给我留言   |   我要纠错   |   联系我们