精华内容
下载资源
问答
  • 用了Mounty后移动硬盘没有初始化

    千次阅读 2017-11-16 15:32:21
    在MAC电脑用Mounty读写移动硬盘,结果插回windows电脑发现移动硬盘不能识别了,磁盘管理中显示磁盘1未知没有初始化。想要恢复里面的数据,可以看下文了解。 工具/原料 ·  极光数据恢复软件 ·  方法/步骤 ...

    MAC电脑用Mounty读写移动硬盘,结果插回windows电脑发现移动硬盘不能识别了,磁盘管理中显示磁盘1未知没有初始化。想要恢复里面的数据,可以看下文了解。

    工具/原料

    · 

    极光数据恢复软件

    · 

    方法/步骤

    00001. 

    右击软件图标选择《以管理员身份运行》

     

    软件运行后双击物理盘1(从磁盘的容量可以看出哪个盘要恢复)


    等待软件扫描完毕(估计需要十几分钟)


    扫描完毕后会列出找到的分区


    勾选所有需要恢复的文件,右击选择《复制勾选的文件》


    将文件保存到合适的路径


    等待数据完全复制出来就可以了。


    注意事项

    · 

    磁盘没有初始化不要马上重建新的分区,要先做数据恢复再分区

    · 

     

    展开全文
  • Linux-系统的初始化和服务

    千次阅读 2017-05-25 15:12:30
    一、简单介绍RHEL开机时的先后...2、检测完后会进入MBR也就是boot loader(MBR位于硬盘的第一个扇区总共512bytes,其中前446bytes里面的编码是在选择引导分区也就是决定要由哪个分区来引导); 3、 载入系统的Kernel

    一、简单介绍RHEL开机时的先后顺序
    BIOS —> MBR —> Kernel —> init1、当电脑一打开电源时电脑就会进入BIOS(BIOS的工作主要是检测一些硬件设备);
    2、检测完后会进入MBR也就是boot loader(MBR位于硬盘的第一个扇区总共512bytes,其中前446bytes里面的编码是在选择引导分区也就是决定要由哪个分区来引导);
    3、 载入系统的Kernel(核心),在Kernel里主要是载入电脑设备的驱动程序,以便可以控制电脑上的设备,并且以只读方式来挂载根目录,也就是一开始 只能读取到根目录所对应的那个分区,所以/etc、/bin、/sbin、/dev、/lib这五个目录必须同根目录在一个分区中;
    4、最后启动init这个程序,所以init这个程序的进程编号为1,是Linux中第一个执行的程序;
    init这个程序会根据 Run level来执行以下这些程序:
    ·/etc/rc.d/rc.sysinit;
    ·/etc/rc.d/rc 和 etc/rc.d/rc?.d/
    ·/etc/rc.d/rc.local
    ·如果有适当的图形界面管理程序
    二、BIOS初始化时主要的三个任务
    BIOS(Basic Input/Output System)
    1、电脑周边设备的检测,加电自检 POST (Power on self test);
    2、BIOS会选择要由哪一个设备来开机,例如:软盘启动、光盘启动、网络启动、最常见的从硬盘启动;
    3、选择好由哪个设备开机后,就开始读取这个设备的 MBR 引导扇区;
    三、介绍Boot Loader中的主要工作1、Boot Loader可以安装在两个地方:
    · 安装在硬盘的MBR中;
    · 当有时候MBR中被其他开机管理程序占用就可以将 Boot Loader 安装在硬盘中的其中一个分区的引导扇区上,;
    2、Boot Loader的程序码分为两个阶段:
    (1)Boot Loader第一阶段的程序码非常小,只有446bytes,可以存入在MBR或是某一个分区的引导扇区里,
    (2)Boot Loader第一阶段的程序码是从 boot 分区来载入的,就是说 Boot Loader 第二阶段程序码存放在 /boot 这个分区中;
    3、下面来看三个Boot Loader 的开机流程范例,如在一块硬盘中安装了两个系统分别为:windows 2003 和 Red hat linux
    当电脑开机后,会先载入MBR通过第一阶段程序码来载入第二阶段程序码,进入GRUB开机菜单这里选择哪个系统就会载入相应的核心;
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mN15Z_kwEeWTKagNNlPNi6NI9nuOZa5VR8JqstafR7w1atLUpXttqLwlBVyxjGmnpawcJYb_DQJmEDNULPbtMU5uZMBKfnrL4osaBcQntBHgHHndfeDgfa3K5QqiKwkmCDkVMe3urWTc/133_U2_3_3_13.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1mN15Z_kwEeWTKagNNlPNi6NI9nuOZa5VR8JqstafR7w1atLUpXttqLwlBVyxjGmnpawcJYb_DQJmEDNULPbtMU5uZMBKfnrL4osaBcQntBHgHHndfeDgfa3K5QqiKwkmCDkVMe3urWTc/133_U2_3_3_13.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1m-Rnb-8S25Zz9Z7wUyfHq2GLq6ymeKvSm5ltay2_Noi3-d17wxxmgBtAixG59f1GtPOVZctQtGOGLZMp8D_eLId_NFLKDLy6rBc6FJVoRDnadJuRCG0vclqbifJ5EFhlr1Z7_IU1NeUU/133_U2_3_3_210.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1m-Rnb-8S25Zz9Z7wUyfHq2GLq6ymeKvSm5ltay2_Noi3-d17wxxmgBtAixG59f1GtPOVZctQtGOGLZMp8D_eLId_NFLKDLy6rBc6FJVoRDnadJuRCG0vclqbifJ5EFhlr1Z7_IU1NeUU/133_U2_3_3_210.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />
    四、介绍GRUB和grub.conf 这个配置文件的内容
    其实从MBR载入Boot Loader开始,载入Kernel,载入init这些程序之间都是由GRUB这个多重开机管理程序所负责的。
    1、GRUB (GRand Unified Bootloader)拥有以下特性:
    · GRUB的开机管理程序可以在开机提示字元的界面下输入指令;例如在GRUB界面下可以按C键就会来到以 grub> 开头的提示符来输入据指令;
    · GRUB的开机管理程序可以支持以下几种文件系统:ext2/ext3、ReiserFS、JFS、FAT、minix、FFS 等等;
    · 支持MD5的密码来保护GRUB的配置文件;
    2、/boot/grub/grub.conf 这个配置文件是GRUB 的配置文件,在做修改前推荐先做好备份
    下面来介绍这个配置文件的内容以及里面的语法:
    · 以#开头的行为注解执行时不会使用;
    · 可以以title开头的一行为准,分为上下两部分:
    (1)基本设定:
    default=0 指预设使用第一组title的系统记录开机,如果有多个title表示有多重启动,如果预设要使用第二组系统开机就将此值设为1
    timeout=5 指进入GRUB的界面后,会有5秒时间让使用者选择要启动的系统,如果未选择自动使用上面的default设定的值;
    splashimage=(hd0,0)/grub/splash.xpm.gz 开机时使用的背景图案,这里的(hd0,0)意思为(硬盘编号,分区编号
    hiddenmenu 隐藏开机的菜单
    (2)用于区分多个系统的设定,如果这台主机中还安装了其它系统并设定了多重启动,在这里还可以看到其它系统的设定;
    title Red Hat Enterprise Linux AS (2.6.9-11.EL) 在GRUB开机菜单中所显示的开机的系统名称
    root (hd0,0) 指定下面的档案位于哪个目录中,这个 hd0,0 同样指的是用于指引导的目录,通常指/boot目录
    kernel /vmlinuz-2.6.9-11.EL ro root=LABEL=/ rhgb quiet 设定kernel镜像的存放位置,这个位置相对于上面root 那一行所指定的位置的相对位置, ro root=LABEL=/ 是设定/在根目录的位置,ro是只读的意思,也就是以只读方式挂载根目录,也可以使用 root=/dev/hda2 类似于这种形式来挂载根目录;rhgb 意思是以图形界面显示开机过程,去掉则以文字界面显示;quiet 意思是设定开机过程中不显示错误信息;
    initrd /initrd-2.6.9-11.EL.img 将这个指定的文件载入到内存中,这个文件里都是存放一些驱动程序;
    3、如果我们修改完 grub.conf 这个配置文件后,设定为立即生效;
    4、另外,如果硬盘上的MBR被清除掉了,可使用下面的指令来重新安装 boot loader 到MBR中:
    /sbin/grub-install /dev/hda
    5、介绍进入GRUB的开机管理程式可以做哪些动作(开机前改Kernel的参数)
    (1)开机后在进入GRUB界面后,先选择要使用的系统(这里选择Linux)
    (2)按下a键,可以在开机修改Kernel的参数,也就是可以传一个参数给Kernel;这时可以看到下面这个界面
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mWfzQpE1vAht0eZfdR2DQVTBoCihKJiWZR_ZlddM_BsLswlF5I2x-pqg2FFaVqV00FFbAP042KMc2GAsr3LthE94O0AbEmkxaUGvCK68wFOGed1QdONMwNNF0FIxS7SvDKHg0skQf-AM/133_U2_4_5_22.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1mWfzQpE1vAht0eZfdR2DQVTBoCihKJiWZR_ZlddM_BsLswlF5I2x-pqg2FFaVqV00FFbAP042KMc2GAsr3LthE94O0AbEmkxaUGvCK68wFOGed1QdONMwNNF0FIxS7SvDKHg0skQf-AM/133_U2_4_5_22.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    (3)上图中 root=LABEL=/ 这部分不可以动,将后面的都去掉后,先输入一个空格再输入一个1,如下图:
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1m-p5tQYltLBhIbhAWtib2KrT5a47uDQmMTAs2u8ne3fT1RGk0BWBTGVxXWQOvChTc0TY19v-aKLLwSeULKiRRUS2sLL-1YTQ6cv-T92hsDATzhKklA8cSiqVjwjNxai1HGNlDkYhFy4I/133_U2_4_5_32.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1m-p5tQYltLBhIbhAWtib2KrT5a47uDQmMTAs2u8ne3fT1RGk0BWBTGVxXWQOvChTc0TY19v-aKLLwSeULKiRRUS2sLL-1YTQ6cv-T92hsDATzhKklA8cSiqVjwjNxai1HGNlDkYhFy4I/133_U2_4_5_32.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    这个1 就是附加的一个参数,表示要进入单用户模式,不需要输入root密码就可以以root身份登录;
    (4)当进入到#提示字元时,就可以设定root 密码了。
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1ms-0uN7P1nsAac8RuJi4pQ2zFMGknZwnMXUQgVh71TDJRzVLfLvnKYVnHQpljQWvrDUwcjfrNiv_LJJB1JHQPwnRufSGGCPn4dtJYqTAy38em0lfZaChh5U1c-ijoT-TVsNTRwG0U6ZQ/133_U2_4_5_42.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1ms-0uN7P1nsAac8RuJi4pQ2zFMGknZwnMXUQgVh71TDJRzVLfLvnKYVnHQpljQWvrDUwcjfrNiv_LJJB1JHQPwnRufSGGCPn4dtJYqTAy38em0lfZaChh5U1c-ijoT-TVsNTRwG0U6ZQ/133_U2_4_5_42.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    这时会发现一个问题任何人到主机前都可以通过这种方式修改ROOT密码是很不安全的。
    6、为GRUB进入单用户模式设定密码及加密方法:
    在GRUB的设定档中设定密码,以防止非法者以单用户模式进入。
    (1)编辑grub.conf配置文件,在基本设定的部分里,插入一行 password 123456 来设定密码,这里是将密码设定为 123456 。
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mmy_GYicX7o2HFY9QGuT4CWhktZVrSt4gVV4iNYkuPVz7m4xLq2uzyVpzB72H2zs8rvsS3t1FtgfigDNiMzeRpRe-8L_b_vhH87KVRprFqJt2rL1gCImw0VcZ6RrnRsiQar223mdVuXY/133_U2_4_6_12.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1mmy_GYicX7o2HFY9QGuT4CWhktZVrSt4gVV4iNYkuPVz7m4xLq2uzyVpzB72H2zs8rvsS3t1FtgfigDNiMzeRpRe-8L_b_vhH87KVRprFqJt2rL1gCImw0VcZ6RrnRsiQar223mdVuXY/133_U2_4_6_12.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    (2)当重新开机后,在GRUB的菜单中,需要输入 P ,再输入密码才可以进行下一步,选择其它的模式。
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mQSfgkFiEigjAL4EfZ4DrgtbNo_E8Dvn1VMVvBAeVUCm5h5dvn-pNSPHpTy_a1Uj4jiOppNIbuQNGoO0cfZrDHuTTxF3EOcbH-726OK8Fbdg9D32skPL3WopZNaC4TNiWxw29NuE9qs8/133_U2_4_6_22.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1mQSfgkFiEigjAL4EfZ4DrgtbNo_E8Dvn1VMVvBAeVUCm5h5dvn-pNSPHpTy_a1Uj4jiOppNIbuQNGoO0cfZrDHuTTxF3EOcbH-726OK8Fbdg9D32skPL3WopZNaC4TNiWxw29NuE9qs8/133_U2_4_6_22.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    (3)可以发现上面设定的密码是明文的,在GRUB中是可以对这个密码进行加密的,如下图:

    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mzG-Lq8r6joqjk1_UVdsUp2uPI93qTwv5W9TxN5jDe65ghuxV__MfJEr9te5jJKYCMQYlakF5UX9jk6VBUa9ZcjHRyZBEdOUx5q6ECGuENGqbvybmAuWJWVoJaQmZiwAxGDDLTtLVLek/133_U2_4_6_38.png‘);}” alt=”Click here to open new window CTRL+Mouse wheel to zoom in/out” src=”https://bo0iqw.blu.livefilestore.com/y1mzG-Lq8r6joqjk1_UVdsUp2uPI93qTwv5W9TxN5jDe65ghuxV__MfJEr9te5jJKYCMQYlakF5UX9jk6VBUa9ZcjHRyZBEdOUx5q6ECGuENGqbvybmAuWJWVoJaQmZiwAxGDDLTtLVLek/133_U2_4_6_38.png” width=”716” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” resized=”true” />

    注:grub-md5-crypt这个指令在设定一个加密的密码的时候,就算每次输入的密码相同经加密后也是不同的,所以上面的几组密码都不一样,grub-md5-crypt >> /boot/grub/grub.conf 这 行指令在执行后不会你上面那样会提示出输入两次密码,虽然没有提示但还是可以输入的,每输入一次密码按一次回车,等设定好密码后,再打开 grub.conf文件时,就会发现经过加密的密码就追加到了grub.conf文件中去了,将追加文件中的前二行去掉,第三行就是要使用的密码了,然后 就像上图中那样进行设定,等上面的设定好后,一定要删除掉最后三行的内容,不然会出错的。
    password –-md5 这里面的md5 表示后 面使用的密码是经过md5加密的。
    7、在进入系统前,按E键进入命令编辑模式,来修改引导配置文件
    在GRUB菜单选择时,按”e”键,就可以看到所对应系统的三行grub.conf中的配置参数,选择有错误的一行,再按”e”键,可修改这一行:
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mdio3eKdIgYbIkC3kCEm7erZunEBd3RPlsnmox64CwAIjwbdrjq6Kz5RWkKlqNnhxSAWWt8QE-qlCAs2p-6m_76IIhFRx2V0l64qtNI7KQu4F_u3RcbLMsjsKzi7_cFLbIormZtxKAko/133_U2_4_7_12.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1mdio3eKdIgYbIkC3kCEm7erZunEBd3RPlsnmox64CwAIjwbdrjq6Kz5RWkKlqNnhxSAWWt8QE-qlCAs2p-6m_76IIhFRx2V0l64qtNI7KQu4F_u3RcbLMsjsKzi7_cFLbIormZtxKAko/133_U2_4_7_12.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />
    如下图:选择了第二行,按E键,就可以修改这行内容了,这里只是未了举例子,将正常启动的一行改为了要使用单用户模式启动,修改完成后按回车,返回上一界面,再按”b”键,使用编辑后的设定开机。
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mVu13uFVhgVV1W8J0utKr5Bu3bXK_VeJv4bmZ2GO5L-LrNe4CL3W4o2UbILZLvOOwvf77ENq6IuaO-KjaVZBL5b6VAvR-_Z3Av14EWCuB_qy6Qtp0pZj9kqN8VXqIjePbsLZ9uNnC1xU/133_U2_4_7_22.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1mVu13uFVhgVV1W8J0utKr5Bu3bXK_VeJv4bmZ2GO5L-LrNe4CL3W4o2UbILZLvOOwvf77ENq6IuaO-KjaVZBL5b6VAvR-_Z3Av14EWCuB_qy6Qtp0pZj9kqN8VXqIjePbsLZ9uNnC1xU/133_U2_4_7_22.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    五、介绍Kernel初始化时所做的工作
    Kernel在开机时,有以下四项工作:
    1、检测电脑上的硬件设备;
    2、将检测到的硬件驱动程序载入Kernel;
    3、如果必要的驱动载入后 Kernel 将根目录以只读方式挂载进来;
    4、Kernel载入第一个程序 init 这个程序;
    六、介绍 init 这个程序在初始化时做了哪些工作
    init 程序读取的是 /etc/inittab 这个配置文件来决定要做哪些操作
    1、决定预设要使用哪个 Run Level 下面介绍几个常用的(Run Level 将在下节做详细介绍)
    Run Level 可以从 0 到 6 分为7种
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mvFouEoyqgTj50freUB9KO45AmdGnaPN3Dw0vhV8NZYAmpe4JYYJWzI5C7ZcII6YtqTEEFf73SdP1V6rC4UW4nUKPM2Uesiwbvi0BaD6BOWTuCn8VG2fxahiQcXp8eFVafTW4jwzQlpQ/133_U2_6_12.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1mvFouEoyqgTj50freUB9KO45AmdGnaPN3Dw0vhV8NZYAmpe4JYYJWzI5C7ZcII6YtqTEEFf73SdP1V6rC4UW4nUKPM2Uesiwbvi0BaD6BOWTuCn8VG2fxahiQcXp8eFVafTW4jwzQlpQ/133_U2_6_12.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    · run level 1 :单用户模式,主要用来维护系统,这在前面已经使用过了;
    · run level 3 :会启用完整的服务但登录后进入文字模式;
    · run level 5 :启用完整的服务登录后进入图形界面模式;
    注:在 inittab 的配置文件里 id:5:initdefault: 这项 initdefault 的前面设定为5 表示预设会用 run level 5,也就是默认启用完整服务并进入图形界面模式。
    2、init 会执行初始作业系统的程序
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1m21prSdhBYYv7XGJqIw8XkuZx5Wm8jb4QQ2qNzkw28JVQILx1Ri5FITb2-r2nWRI6JaneuXqIncOZ-ONn0k8WWTgio9N73pTMy5_kEiqxjacP-VYxt88umIP7JPRfhcvKFs2LRPa2a5s/133_U2_6_22.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1m21prSdhBYYv7XGJqIw8XkuZx5Wm8jb4QQ2qNzkw28JVQILx1Ri5FITb2-r2nWRI6JaneuXqIncOZ-ONn0k8WWTgio9N73pTMy5_kEiqxjacP-VYxt88umIP7JPRfhcvKFs2LRPa2a5s/133_U2_6_22.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    3、 init会根据执行的 run level 来执行 run level 对应目录里面的程序,如果 inittab 配置文件里预设的 run level 是5,那么就会把5的参数传给 /etc/rc.d/rc 这个程序执行,在/etc/rc.d目录下就可以看到 rc0.d 至 rc6.d 七个目录 run level 所对应的目录,所以init 程序会根据执行的 run level 来执行 run level 对应目录里面的程序,来决定要启用哪些服务。

    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mp4fyCsOknVjW_eDVwo4xBNW6GTyEDh-py5TsFYnf4_s-PQ4c_HI4NjAMnQo-Va1idJF1jo0HCBEVv3u047P23Ha6mnTB5D-zjm5ZCqbxtGY9jcQWD7T6VxwDmcnshwT2gBl_sXlhftM/133_U2_6_35.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1mp4fyCsOknVjW_eDVwo4xBNW6GTyEDh-py5TsFYnf4_s-PQ4c_HI4NjAMnQo-Va1idJF1jo0HCBEVv3u047P23Ha6mnTB5D-zjm5ZCqbxtGY9jcQWD7T6VxwDmcnshwT2gBl_sXlhftM/133_U2_6_35.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    4、设某个组合键,如下图:定义快捷键,按这三个组合键3秒后重启系统
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mT-__scd7AK6VHxNyd6eqEKILNZkkSp8XzYVqIUj3rp62KghJvbU4oq7IsREMmkVSjws3sA89EnQAcpJblWzHeED3FedkrDdKPGS5r_M-yf_eY69ysG1_jGub3SccuN7NSwjeKIEe_b4/133_U2_6_42.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1mT-__scd7AK6VHxNyd6eqEKILNZkkSp8XzYVqIUj3rp62KghJvbU4oq7IsREMmkVSjws3sA89EnQAcpJblWzHeED3FedkrDdKPGS5r_M-yf_eY69ysG1_jGub3SccuN7NSwjeKIEe_b4/133_U2_6_42.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    6、在定义UPS不断电系统,当电源发生问题时,以及电源恢复时都要执行哪些程序。
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1muwTZZFs-4lQmA3OUNc6c0G2AvHbVHRdOSv-lwK3e5pHRG4T0D5__hCxKNtbKRG6P7rud1nbCKDj11Ku_ApH4OQORXuFMv8qKDD7duB-B99BS1A8jXuMlex_rT7ROkqForDzrf0Tjvcg/133_U2_6_52.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1muwTZZFs-4lQmA3OUNc6c0G2AvHbVHRdOSv-lwK3e5pHRG4T0D5__hCxKNtbKRG6P7rud1nbCKDj11Ku_ApH4OQORXuFMv8qKDD7duB-B99BS1A8jXuMlex_rT7ROkqForDzrf0Tjvcg/133_U2_6_52.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    6、产生六个 virtual consoles (虚拟控制台)(tty1~tty6)
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mnEBtygCg_oqDLkH0Pz6_ssTatzUcW182UsW4H3ktCEOBMbAP_8EGu66PhmpCTVl-8i8qkN58sn7tAm3H_CXP9WPK0RpHASPJOp6J5xZyxaGUm9ibDW_QNrEYpZeKu6zI7htSjxUNWho/133_U2_6_62.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1mnEBtygCg_oqDLkH0Pz6_ssTatzUcW182UsW4H3ktCEOBMbAP_8EGu66PhmpCTVl-8i8qkN58sn7tAm3H_CXP9WPK0RpHASPJOp6J5xZyxaGUm9ibDW_QNrEYpZeKu6zI7htSjxUNWho/133_U2_6_62.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    7、如果启动的是 run level 5 ,初始化工作就会启动 X11(图形界面)
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1muT8Z1vYZmky87Z5OXckVN9j9-T8ATZsTNKhPnmi5ubvLYI8X36EbpPfn04q3UR6Kv0t0-g6JqVua1nds9BpUg-9i6NDDL8PFBFAvioCVQDklno4kmOfAxbsbEcgJYqtSLFYGMnvS8LI/133_U2_6_72.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1muT8Z1vYZmky87Z5OXckVN9j9-T8ATZsTNKhPnmi5ubvLYI8X36EbpPfn04q3UR6Kv0t0-g6JqVua1nds9BpUg-9i6NDDL8PFBFAvioCVQDklno4kmOfAxbsbEcgJYqtSLFYGMnvS8LI/133_U2_6_72.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    七、iniit初始化流程图
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mqO5ia68hUYXcn2rCaT6ivsozH1VOqKr6MMB0DOfoMZyCCRXoCxW6nFzap1ca7c_NsY4oAy7LCbTSyBLPgKDH5zefkTU1-EVEJwENrrb55hDKJ9YujSSvGm2-Y47CqBDLdVK4YBVLQF4/133_U2_6_7_12.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1mqO5ia68hUYXcn2rCaT6ivsozH1VOqKr6MMB0DOfoMZyCCRXoCxW6nFzap1ca7c_NsY4oAy7LCbTSyBLPgKDH5zefkTU1-EVEJwENrrb55hDKJ9YujSSvGm2-Y47CqBDLdVK4YBVLQF4/133_U2_6_7_12.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    以下小节将依据上面的流程图为准逐一介绍
    八、介绍 Run Level (init初始化流程第一步)其中在 Run Level 里除了0~6这七种外,还有 S 和 emergency 这两种
    Run Level
    功能
    0
    用来做关机用的(不可以设在initdefault里)
    1,S,emergency
    单用户模式(只允许root帐号登录,主要是用来做维护系统工作)
    2
    可以允许所有使用者登录,但不启用网络功能
    3
    允许所有使用者登录,拥有完整的功能,但是以文字模式进入系统
    4
    用户可自定义的,预设下与Run level 3是相同的
    5
    与 Run level 3 功能是一样的,允许所有使用者登录,拥有完整功能,以图形界面模式进入系统
    6
    用于重启主机(不可以设在initdefault里)
    Run Level 1,S,emergency 这三种执行时的主要差别在于执行程序的多少:
    · 1 :执行init程序后,会接着执行/etc/rc.sysinit程序来初始化系统,再执行 /etc/rc1.d/目录下的所有程序;
    · S:执行init程序后,只会执行/etc/rc.sysinit 程序来初始化系统;
    · emergency:执行init程序后,只会执行 /etc/rc.sysinit 程序中某些必要的程序,并不会全部执行;
    1、介绍一些Run level 的特性
    Run level 是使用 init 这个指令来定义要使用哪个 run level。
    2、下面有三种方式可以选择要使用哪个 Run level
    (1)在开机时,预设 run level会设定在 /etc/inittab 这个文件中,例如:initdefault 前面的值;
    (2)可以从 boot loader 传一个参数给 kernel (例如:在GRUB的引导菜单按“a”键,在开机前可以给kernel传一个参数以单用户模式登录系统)
    (3)在开机进入 Linux 系统后,可以使用 init 指令,再输入要进入哪个run level ;(例如:init 5 进入run level 5)
    3、使用 runlevel 指令执行后,就可以在下面显示当前在哪个级别下;
    /sbin/runlevel
    九、介绍 /etc/rc.d/rc.sysinit 这个程序主要做哪些工作(init初始化流程第二步)rc.sysinit 这个文件是一个脚本文件,主要是一些判断程序,还有一些设定变数的程式;
    rc.sysinit 这个文件的工作如下:
    1、启动 udev ,也就是启用热插拔的设备,例如:USB,并且也会启动SELinux;
    2、会把kernel的参数设定在/etc/sysctl.conf配置文件里;这个配置文件下下单元详细说明;
    3、设定系统时间;
    4、载入 keymaps 设定,keymap设定是在定义键盘,这样电脑开机时才能找到相对应的键盘设定;
    5、启用swap这个虚拟内存的分区;
    6、设定主机名称,主机名称设定在 /etc/sysconfig/network 配置文件中的 HOSTNAME= 项下;
    7、 检查根目录有没有问题,并且重新挂载成为可读可写的状态;
    8、启用RAID磁盘阵列,以及LVM的设备;
    9、启用磁盘配额的功能,就是限制使用者最多可以使用多少硬盘空间;
    10、检查其它的文件系统,并且把它们挂载进来;
    11、最后会清除被修改过的locks及PID files,其实就是清除一些开机时的缓存文件,以及一些没有用的信息及文件;
    十、介绍 /etc/rc.d/rc 这个程式的作用1、 这个步骤就是根据载入的 Run Level 来执行 Run Level 对应目当里面的程序来决定要启用哪些服务,例如,如果 Run level 的值是5,就会去执行 /etc/rc.d/rc5.d/* 这个目录下的所有程序,来停用或启动这个运行级别下应该有的服务,如下图:
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mc9stYWUABCY-wbScfDhj1V6Ot46ZuJgoGN2vkRpIi9YxLd_Wkc8jffYwlatVphAbiFripNVKCuEye3eKPSJgWFhTrkQTM6KM3eSc37mpYEnxL30d8E6w-wHF6hUjiT8K7tWz3nUUgkM/133_U2_10_1_12.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1mc9stYWUABCY-wbScfDhj1V6Ot46ZuJgoGN2vkRpIi9YxLd_Wkc8jffYwlatVphAbiFripNVKCuEye3eKPSJgWFhTrkQTM6KM3eSc37mpYEnxL30d8E6w-wHF6hUjiT8K7tWz3nUUgkM/133_U2_10_1_12.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    就用rc5.d这个目录来作说明,可以看到这个目录下都是一些链接文件,所有的链接文件都链接到了 ../init.d/* 这个目录下的某个执行文件,其实init.d和rc5.d后面的d是代表 Daemon(【unix】新进程;端口监督[控]程序) 的意思。
    十一、介绍 Daemon Processes (Process进程)1、 Daemon Processes就是在后台执行的程序,主要功能就是在提供一些系统的服务,所以在 init.d 目录里的所有程序全部都是在后台执行提供系统服务的程序,而这些在后台执行提供系统服务的程序都是在等待别人提出需求来提供服务,例如:httpd 这个程序就是提供 web 的服务,主要是会开启80端口,让别人可以通过80端口连接进来。
    2、Daemon 主要分为两种类型,主要差别在于提供服务的方式,说明如下:
    (1)Standalone(中文翻译为:独立):在Standalone的程序里,当使用者提出需求要求服务时,会自己提供服务组使用者;
    (2)Transient(中文翻译为:暂时程序,暂存区):当使用者提出需求时,会先跟xinetd(以称为:Supper Daemon)这个Daemon程序要求服务,然后xinetd程序再去呼叫 Transient 类型的程序,最后 Transient 类型的程序才能够提供服务给使用者;
    3、在Standalone的Daemon里分为两种:
    (1)在开机时,就由 init 这个程序直接启动的;
    例如:Virtual Console;
    (2)System V Daemon程式
    例如:httpd程序(提供web服务的);
    十二、介绍 System V 程式的特性1、其实 Run Level 是在定义电脑启动时,要提供哪些服务:
    · 在每个runlevel 里都有他相对应的目录;就像前面提到的 rc5.d 的目录;
    · 而用来初始化System V的程序都存放在 /etc/rc.d/init.d/ 这个目录里;
    2、介绍 runlevel 是如何定义要提供哪些服务的。
    因为在runlevel对应的目录里,都有一些连接,而这些链接就是用来呼叫init.d目录里的程序的,并夹代一个启动或停止服务的参数,所以根据 runlevel 对应目录里的链接,就可以设定系统在启动后要提供哪些服务。
    3、下面介绍前面提到的那个链接文件名称的格式:
    screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor=’hand’; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” οnclick=”if(!this.resized) {return true;} else {window.open(‘https://bo0iqw.blu.livefilestore.com/y1mtjUWFaez9i9uuJnaWhYve_EpVubLaCy4mDh5d1hGwP0eJGDv35liDTIsI119QsWDF-L9yCsENQomvQDfXzLjxyly6vALV6dBlF1x9B-TLyf5MC8bc_2b1CD4bN5UNgLVCYbRJCop278/133_U2_12_3_12.png‘);}” src=”https://bo0iqw.blu.livefilestore.com/y1mtjUWFaez9i9uuJnaWhYve_EpVubLaCy4mDh5d1hGwP0eJGDv35liDTIsI119QsWDF-L9yCsENQomvQDfXzLjxyly6vALV6dBlF1x9B-TLyf5MC8bc_2b1CD4bN5UNgLVCYbRJCop278/133_U2_12_3_12.png” οnlοad=”if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt=’Click here to open new windownCTRL+Mouse wheel to zoom in/out’;}” border=”0” />

    这个链接文件的名称主要分为三区:
    (1) 以K或S开头:K ( Kill 的缩写)开头,表示要停用链接的这个服务;S (start 的缩写)开头,表示要启用链接的这个服务;
    (2) 为两位的数字:表示执行的先后顺序,数字越小的越先执行,但是在 K 与 S 执行的先后顺序是先执行 K 停用链接的服务,再执行 S 启用链接的服务,这是因为要先将所有服务停用类似归零的意思,然后再启用服务,所以执行完这些链接的程序,就初始化了系统上的服务;
    (3) 链接的System V 程序名称:
    4、另外,System V 程序有种特性,就是启动和停止都用同一个程序,只是后面加上不同的参数:
    例:/etc/init.d/httpd start 启用web服务
    /etc/init.d/httpd stop 停用web服务
    这里的 start , stop 就是使用的参数
    十三、介绍 /etc/rc.d/rc.local 这个程式的作用(init初始化流程第三步)1、在执行完 run level 下相对应的那个目录里的链接后都会执行 rc.local 这个程式;如下图: run level2到5下都有这个程式:
    其中 S 表示启用,99表示执行的顺序最后才会执行,执行的程式就是 rc.local;
    [img]https://bo0iqw.blu.livefilestore.com/y1maiEcMGazGe0E40b5OlvNQZ9DNIEN1Sh5HV1WkPuRk4MBzdOVOrASKU_6bUSWl8QIM-o8rQVmYzIRrkORoofJquiAPFOD9XGOKX5VJCnmxtU3J-ypbkttOVGP9yitF7jf6j0aDPeHpWM/133_U2_13_1_1[2].png[/img]

    2、因此,可以修改 rc.local 这个文件,将 runlevel2-5都要执行的指令或程序设定在rc.local文件中。
    十四、介绍 Virtual Consoles 的特性(init初始化流程第四步)
    Virtual consoles,Virtual consoles具有以下几点特性:
    1、定义在 /etc/inittab 档案里,使用/sbin/mingetty 来产生 tty1 到 tty6 这六个Virtual consoles;
    [img]https://bo0iqw.blu.livefilestore.com/y1m0glZIJ8vcZJ9s-QhVNYvM78DxLY1LiKSAKkf0i8ew9_OdO9JRybz2cFvusQddFoudKryL4o0CBeHi9H8LJoeis8E2xo67JlZ_STBg9LRcCZY6bC9RMlDn8M_qdGIWiYpCpNZimo6ju4/133_U2_14_1_1[5].png[/img]

    2、如果要切换 Virtual consoles ,同时按下 ctrl-alt-F(1~6)
    3、Virtual consoles的档案是在 /dev/这个目录中,对应的文件是 tty1、tty2、tty3、tty4、tty5、tty6;但这个目录下有许多以tty开头的文件
    4、/dev/tty0 是代表当前使用的Virtual consoles
    5、在RHEL中有以下三个预设的Virtual consoles设定:
    · RHEL中共定义了12个Virtual consoles;
    · 在这12个Virtual consoles里,只有1~6的可以登录
    · 如果使用图形界面登录,刚会先使用Virtual consoles 7 登录(也就是tty7)
    注:当图形界面已启动时,才可以使用 ctrl-alt-F7 才能切换回到图形界面。
    十五、如何控制系统上服务的停止与启动
    在控制系统的服务停止与启动里,主要分为两种类型的工具
    1、控制系统预设是会自动启动的服务;
    有以下三种工具可以控制 Linux 作业系统,预设会自动启动的服务:
    (1)ntsysv: 这个工具在Virtual consoles下也可以使用,此命令执行后出现的界面,如下图:可以启动Services界面来设定系统预设要启动哪些服务,如果在ntsysv后面未 加参数,只会设定目前这个Run level ,如果要设定其它的 run level ,需要在后面加参数:
    例如: ntsysv –level 35 指定要修改 runlevel 3和5预设要启动的服务
    注:这个指令在文字模式下也是可以使用的。
    [img]https://bo0iqw.blu.livefilestore.com/y1mF6pWC1iHVTUGkMoYFtPGnclEKjSLt3HPrkdXHEWkYnpLyxWRjThCKchgKDPVwmcaU9knC_pDOE9lT0X9DHUWJBfneNPxnspEvFW5_uq9EHLcaL8hDxzMCjNjqDczvuTKj_1bwYiuLmo/133_U2_15_1_1[2].png[/img]

    (2)chkconfig:这个工具可以快速设定,并且适用在各种Linux下的命令行模式工具
    例如:如下图:查看预设自动启动的设定 注:下面的 gpm 的服务是在 Virtual consoles下可以使用鼠标的服务,通过下图可以看到gpm 服务在runlevel2~5下都以以S开头,也是是预设会自动启动的意思;
    [img]https://bo0iqw.blu.livefilestore.com/y1mG5NJFAIHcHHu_YuVLxbcXFQpPWTCFqmgCe5W2TCYf6BGokib2RjFi1bqYDUD_Qt36cSqsWXTRAdTh27T7Kq9QHNpJclNe-hBkFmolw4hfh9zvLlKW94Sh_rS17De_8v4_HhlkvU6jPs/133_U2_15_1_2[2].png[/img]

    执行下面的指令,可以让runlevel1~3预设不自动启动gpm的服务,如下图可以看到原来的2和3原来是以S开头的现在已经变成了以K开头,表示预设是停有的。

    [img]https://bo0iqw.blu.livefilestore.com/y1mEQvT0CvwHZVawmRyK26G6ZME18PfMU9B86nnJ6Pb1x3gxs-LMnlHigbEuBrXPCWrlsuxBhQPjpyky9K-TsGWNIaIItFO3zrhUm26kKkDJjJF3r1OXouyGKyEZYqqdCtvERP30GLKy3I/133_U2_15_1_2_1[5].png[/img]

    可以使用chkconfig –list 查看某个服务预设是否会自动启动,如下图:off 表示不启用,on表示启用,如果想查看所有的服务可以将gpm去掉,这时会看到许多服务的列表,
    [img]https://bo0iqw.blu.livefilestore.com/y1mgk3CDNePR7Di-xq6IBdLCgQ-IJB5_7XQs0ecYnP4BsKieLZnwCVq5Dl14Ji83qn4J1MjZA2KJ0T2mNojt70sySta71ugSGH7xJUJcnlfeVbcwQ5-dsVbqk07JDxUBK0FdYQH3CbyF8I/133_U2_15_1_2_2[2].png[/img]

    (3)system-config-services这个工具是图形界面的工具,只能在图形界面下执行,开启视窗后,左边窗口可以勾选预设要启动的服务;点选 Edit Runlevel 可以选择要修改哪个级别的预设服务,但只能设定3~5的,如下图:

    [img]https://bo0iqw.blu.livefilestore.com/y1mMoow157lc4QPX-v75Yh0m9Q0MqoVFvj0XJhux1yyCUHgVYH0TqjQHNUk6PVR_jjOn3GQyOs1vu4k7JTy1Kz_OHGFTT0iTiPhDDdJGz3tgRhJplFDEEKqfEVef-80aEpMi7Ui4nwN9_s/133_U2_15_1_3_1[6].png[/img]

    2、在系统开机后,可以手动控制服务的停止与启动,立即控制服务的启动状态;
    有以下三个工具可以手动控制服务的启动与停止:
    (1)service :这个工具可以立即启动或停用standalone类型的服务;
    [img]https://bo0iqw.blu.livefilestore.com/y1m5M_SXi7a3kU5cqpIwDM6L3rgmUDB-0MEIJU9EHZqYNq5PmMh29yYiE_ZQcWkINFGeGjoHMOL0F8coNr4EE9xH4z60ETjlviHk17H6hFstuamAFjonxIWtQMYAaNqF5ORKWkZnHih0do/133_U2_15_2_1[2].png[/img]
    在文字模式下如果启用了鼠标功能,使用鼠标选中文字点后,按鼠标的中键就可以将选中的文字粘贴到光标所在处,这样很方便选中一些文字,现在来停用 gpm 这个服务,指令如下:
    · service gpm stop 停用gpm服务 (这种方法不一定支持所有的Linux版本)
    · /etc/init.d/gpm stop 立即停用gpm服务 (推荐使用绝对路径的方法来执行这个指令:这种方法支持所有Linux版本)
    · /etc/init.d/gpm start 立即开启gpm服务
    · /etc/init.d/gpm reload 立即重启服务
    · /etc/init.d/gpm restart 立即重启服务
    · /etc/init.d/gpm status 显示服务启用状态
    (2)chkconfig:这个工具可以立即启动或停用xinetd程式所管理的服务
    例如:chkconfig telnet off 停用telnet服务;
    chkconfig telnet on 启用telnet服务;
    (3)system-config-services图形界面工具,选择服务,再点 start(启用) 或 stop(停止) 或 restart(重启)。
    十六、介绍使用指令关机有四个指令可以用来关机
    1、shutdown –h now h是halt(终止的意思),now 是参数表示立即,也可输入时间例如:13:22 表示下午1点22分关机
    2、halt
    3、power off
    4、init 0 进入runlevel 0级做关机动作;
    注:这四个指令在关机前都会执行 sync 这个指令,进行资料的同步,将内存中的数据写入硬盘中,以免将记忆体中的资料丢失。
    十七、介绍使用指令重启电脑
    1、shutdown –r now -r 就是reboot(重新启动)的意思,这里的now也可以换成时间
    2、reboot
    3、init 6
    6、ctrl-alt-del (在virtual Console环境中使用)
    转自:
    http://adairnet.spaces.live.com/blog/cns!F5DC2937B72C0783!450.entry

    展开全文
  • 一、简单介绍RHEL开机时的先后顺序...2、检测完后会进入MBR也就是boot loader(MBR位于硬盘的第一个扇区总共512bytes,其中前446bytes里面的编码是在选择引导分区也就是决定要由哪个分区来引导); 3、载入系统的Kerne

     

    一、简单介绍RHEL开机时的先后顺序
    BIOS —> MBR —> Kernel —> init
    1、当电脑一打开电源时电脑就会进入BIOSBIOS的工作主要是检测一些硬件设备);
    2
    、检测完后会进入MBR也就是boot loaderMBR位于硬盘的第一个扇区总共512bytes,其中前446bytes里面的编码是在选择引导分区也就是决定要由哪个分区来引导);
    3
    、载入系统的Kernel(核心),在Kernel里主要是载入电脑设备的驱动程序,以便可以控制电脑上的设备,并且以只读方式来挂载根目录,也就是一开始只能读取到根目录所对应的那个分区,所以/etc/bin/sbin/dev/lib这五个目录必须同根目录在一个分区中;
    4
    、最后启动init这个程序,所以init这个程序的进程编号为1,是Linux中第一个执行的程序;
    init
    这个程序会根据 Run level来执行以下这些程序:
    ·/etc/rc.d/rc.sysinit;
    ·/etc/rc.d/rc
    etc/rc.d/rc?.d/
    ·/etc/rc.d/rc.local
    ·
    如果有适当的图形界面管理程序

    二、BIOS初始化时主要的三个任务

    BIOS
    Basic Input/Output System
    1
    、电脑周边设备的检测,加电自检 POST Power on self test);
    2
    BIOS会选择要由哪一个设备来开机,例如:软盘启动、光盘启动、网络启动、最常见的从硬盘启动;
    3
    、选择好由哪个设备开机后,就开始读取这个设备的 MBR 引导扇区;
    三、介绍Boot Loader中的主要工作

    1Boot Loader可以安装在两个地方:
    ·
    安装在硬盘的MBR中;
    ·
    当有时候MBR中被其他开机管理程序占用就可以将 Boot Loader 安装在硬盘中的其中一个分区的引导扇区上,;
    2
    Boot Loader的程序码分为两个阶段:
       (1)Boot Loader
    第一阶段的程序码非常小,只有446bytes,可以存入在MBR或是某一个分区的引导扇区里,
       (2)Boot Loader
    第一阶段的程序码是从 boot 分区来载入的,就是说 Boot Loader 第二阶段程序码存放在 /boot 这个分区中;
    3
    、下面来看三个Boot Loader 的开机流程范例,如在一块硬盘中安装了两个系统分别为:windows 2003
    Red hat linux
    当电脑开机后,会先载入MBR通过第一阶段程序码来载入第二阶段程序码,进入GRUB开机菜单这里选择哪个系统就会载入相应的核心;

     

    四、介绍GRUBgrub.conf 这个配置文件的内容
    其实从MBR载入Boot Loader开始,载入Kernel,载入init这些程序之间都是由GRUB这个多重开机管理程序所负责的。
    1
    GRUB GRand Unified Bootloader)拥有以下特性:
    · GRUB
    的开机管理程序可以在开机提示字元的界面下输入指令;例如在GRUB界面下可以按C键就会来到以 grub> 开头的提示符来输入据指令;
    · GRUB
    的开机管理程序可以支持以下几种文件系统:ext2/ext3ReiserFSJFSFATminixFFS 等等;
    ·
    支持MD5的密码来保护GRUB的配置文件;
    2
    /boot/grub/grub.conf   这个配置文件是GRUB 的配置文件,在做修改前推荐先做好备份
       
    下面来介绍这个配置文件的内容以及里面的语法:
    ·
    #开头的行为注解执行时不会使用;
    ·
    可以以title开头的一行为准,分为上下两部分:
    1)基本设定:
    default=0      指预设使用第一组title的系统记录开机,如果有多个title表示有多重启动,如果预设要使用第二组系统开机就将此值设为
    1
    timeout=5     指进入GRUB的界面后,会有5秒时间让使用者选择要启动的系统,如果未选择自动使用上面的default设定的值;

    splashimage=(hd0,0)/grub/splash.xpm.gz   开机时使用的背景图案,这里的(hd0,0)意思为(硬盘编号,分区编号)
    hiddenmenu   隐藏开机的菜单
    2)用于区分多个系统的设定,如果这台主机中还安装了其它系统并设定了多重启动,在这里还可以看到其它系统的设定;
    title Red Hat Enterprise Linux AS (2.6.9-11.EL)     GRUB开机菜单中所显示的开机的系统名称

       
    root (hd0,0)    指定下面的档案位于哪个目录中,这个 hd0,0 同样指的是用于指引导的目录,通常指/boot目录
       
    kernel /vmlinuz-2.6.9-11.EL ro root=LABEL=/ rhgb quiet   设定kernel镜像的存放位置,这个位置相对于上面root 那一行所指定的位置的相对位置, ro root=LABEL=/ 是设定/在根目录的位置,ro是只读的意思,也就是以只读方式挂载根目录,也可以使用 root=/dev/hda2 类似于这种形式来挂载根目录;rhgb 意思是以图形界面显示开机过程,去掉则以文字界面显示;quiet 意思是设定开机过程中不显示错误信息;
       
    initrd /initrd-2.6.9-11.EL.img   将这个指定的文件载入到内存中,这个文件里都是存放一些驱动程序;
    3
    、如果我们修改完 grub.conf 这个配置文件后,设定为立即生效;
    4
    、另外,如果硬盘上的MBR被清除掉了,可使用下面的指令来重新安装 boot loader MBR中:
        /sbin/grub-install /dev/hda
    5
    、介绍进入GRUB的开机管理程式可以做哪些动作(开机前改Kernel的参数)
    1)开机后在进入GRUB界面后,先选择要使用的系统(这里选择Linux
    2)按下a键,可以在开机修改Kernel的参数,也就是可以传一个参数给Kernel;这时可以看到下面这个界面


    (3)上图中 root=LABEL=/  这部分不可以动,将后面的都去掉后,先输入一个空格再输入一个1,如下图:


    这个1 就是附加的一个参数,表示要进入单用户模式,不需要输入root密码就可以以root身份登录;
    (4)当进入到#提示字元时,就可以设定root 密码了。


    这时会发现一个问题任何人到主机前都可以通过这种方式修改ROOT密码是很不安全的。

    6、为GRUB进入单用户模式设定密码及加密方法:
    GRUB的设定档中设定密码,以防止非法者以单用户模式进入。
    1)编辑grub.conf配置文件,在基本设定的部分里,插入一行 password 123456 来设定密码,这里是将密码设定为 123456


    2)当重新开机后,在GRUB的菜单中,需要输入 P ,再输入密码才可以进行下一步,选择其它的模式。


    3)可以发现上面设定的密码是明文的,在GRUB中是可以对这个密码进行加密的,如下图:



    注:grub-md5-crypt这个指令在设定一个加密的密码的时候,就算每次输入的密码相同经加密后也是不同的,所以上面的几组密码都不一样,grub-md5-crypt >> /boot/grub/grub.conf  这行指令在执行后不会你上面那样会提示出输入两次密码,虽然没有提示但还是可以输入的,每输入一次密码按一次回车,等设定好密码后,再打开grub.conf文件时,就会发现经过加密的密码就追加到了grub.conf文件中去了,将追加文件中的前二行去掉,第三行就是要使用的密码了,然后就像上图中那样进行设定,等上面的设定好后,一定要删除掉最后三行的内容,不然会出错的。
    password –-md5
    这里面的md5 表示后面使用的密码是经过md5加密的。
    7
    、在进入系统前,按E键进入命令编辑模式,来修改引导配置文件

    GRUB菜单选择时,按"e"键,就可以看到所对应系统的三行grub.conf中的配置参数,选择有错误的一行,再按"e"键,可修改这一行:

     

    如下图:选择了第二行,按E键,就可以修改这行内容了,这里只是未了举例子,将正常启动的一行改为了要使用单用户模式启动,修改完成后按回车,返回上一界面,再按"b"键,使用编辑后的设定开机。

      
    五、介绍Kernel初始化时所做的工作
    Kernel
    在开机时,有以下四项工作:
    1
    、检测电脑上的硬件设备;
    2
    、将检测到的硬件驱动程序载入Kernel
    3
    、如果必要的驱动载入后 Kernel 将根目录以只读方式挂载进来;
    4
    Kernel载入第一个程序 init 这个程序;
    六、介绍 init 这个程序在初始化时做了哪些工作

    init
    程序读取的是 /etc/inittab 这个配置文件来决定要做哪些操作
    1
    、决定预设要使用哪个 Run Level  下面介绍几个常用的(Run Level 将在下节做详细介绍)
       Run Level
    可以从 0 6 分为7



    · run level 1 :单用户模式,主要用来维护系统,这在前面已经使用过了;
    · run level 3
    :会启用完整的服务但登录后进入文字模式;
    · run level 5
    :启用完整的服务登录后进入图形界面模式;
    注: inittab 的配置文件里id:5:initdefault:  这项 initdefault 的前面设定为5 表示预设会用 run level 5,也就是默认启用完整服务并进入图形界面模式。
    2
    init 会执行初始作业系统的程序


    3init会根据执行的 run level 来执行 run level 对应目录里面的程序,如果 inittab 配置文件里预设的 run level 5,那么就会把5的参数传给 /etc/rc.d/rc 这个程序执行,在/etc/rc.d目录下就可以看到 rc0.d rc6.d 七个目录 run level 所对应的目录,所以init 程序会根据执行的 run level 来执行 run level 对应目录里面的程序,来决定要启用哪些服务。



    4、设某个组合键,如下图:定义快捷键,按这三个组合键3秒后重启系统


    6、在定义UPS不断电系统,当电源发生问题时,以及电源恢复时都要执行哪些程序。


    6、产生六个 virtual consoles (虚拟控制台)(tty1~tty6)

    7、如果启动的是 run level 5 ,初始化工作就会启动 X11(图形界面)


    七、iniit初始化流程图


    以下小节将依据上面的流程图为准逐一介绍
    八、介绍 Run Level init初始化流程第一步)
    其中在 Run Level 里除了0~6这七种外,还有 S emergency 这两种
    Run Level
    功能
    0
    用来做关机用的(不可以设在initdefault里)
    1,S,emergency
    单用户模式(只允许root帐号登录,主要是用来做维护系统工作)
    2
    可以允许所有使用者登录,但不启用网络功能
    3
    允许所有使用者登录,拥有完整的功能,但是以文字模式进入系统
    4
    用户可自定义的,预设下与Run level 3是相同的
    5
    Run level 3 功能是一样的,允许所有使用者登录,拥有完整功能,以图形界面模式进入系统
    6
    用于重启主机(不可以设在initdefault里)
    Run Level 1,S,emergency
    这三种执行时的主要差别在于执行程序的多少:
    · 1
    :执行init程序后,会接着执行/etc/rc.sysinit程序来初始化系统,再执行 /etc/rc1.d/目录下的所有程序;
    · S
    :执行init程序后,只会执行/etc/rc.sysinit 程序来初始化系统;
    · emergency
    :执行init程序后,只会执行 /etc/rc.sysinit  程序中某些必要的程序,并不会全部执行;
    1
    、介绍一些Run level 的特性
    Run level
    是使用 init 这个指令来定义要使用哪个 run level
    2
    、下面有三种方式可以选择要使用哪个 Run level
    (1)
    在开机时,预设 run level会设定在 /etc/inittab 这个文件中,例如:initdefault 前面的值;
    (2)
    可以从 boot loader 传一个参数给 kernel (例如:在GRUB的引导菜单按“a”键,在开机前可以给kernel传一个参数以单用户模式登录系统)
    (3)
    在开机进入 Linux 系统后,可以使用 init 指令,再输入要进入哪个run level ;(例如:init 5 进入run level 5
    3
    、使用 runlevel 指令执行后,就可以在下面显示当前在哪个级别下;
        /sbin/runlevel
    九、介绍 /etc/rc.d/rc.sysinit 这个程序主要做哪些工作(init初始化流程第二步)
    rc.sysinit 这个文件是一个脚本文件,主要是一些判断程序,还有一些设定变数的程式;
    rc.sysinit
    这个文件的工作如下:
    1
    、启动 udev ,也就是启用热插拔的设备,例如:USB,并且也会启动SELinux
    2
    、会把kernel的参数设定在/etc/sysctl.conf配置文件里;这个配置文件下下单元详细说明;
    3
    、设定系统时间;
    4
    、载入 keymaps 设定,keymap设定是在定义键盘,这样电脑开机时才能找到相对应的键盘设定;
    5
    、启用swap这个虚拟内存的分区;
    6
    、设定主机名称,主机名称设定在 /etc/sysconfig/network 配置文件中的 HOSTNAME= 项下;
    7
    检查根目录有没有问题,并且重新挂载成为可读可写的状态;
    8
    、启用RAID磁盘阵列,以及LVM的设备;
    9
    、启用磁盘配额的功能,就是限制使用者最多可以使用多少硬盘空间;
    10
    、检查其它的文件系统,并且把它们挂载进来;
    11
    、最后会清除被修改过的locksPID files,其实就是清除一些开机时的缓存文件,以及一些没有用的信息及文件;
    十、介绍 /etc/rc.d/rc 这个程式的作用
    1、这个步骤就是根据载入的 Run Level 来执行 Run Level 对应目当里面的程序来决定要启用哪些服务,例如,如果 Run level 的值是5,就会去执行 /etc/rc.d/rc5.d/* 这个目录下的所有程序,来停用或启动这个运行级别下应该有的服务,如下图:


    就用rc5.d这个目录来作说明,可以看到这个目录下都是一些链接文件,所有的链接文件都链接到了 ../init.d/* 这个目录下的某个执行文件,其实init.drc5.d后面的d是代表 Daemon(unix】新进程;端口监督[]程序)的意思。
    十一、介绍 Daemon Processes  (Process进程)
    1Daemon Processes就是在后台执行的程序,主要功能就是在提供一些系统的服务,所以在 init.d 目录里的所有程序全部都是在后台执行提供系统服务的程序,而这些在后台执行提供系统服务的程序都是在等待别人提出需求来提供服务,例如:httpd 这个程序就是提供 web 的服务,主要是会开启80端口,让别人可以通过80端口连接进来。
    2
    Daemon 主要分为两种类型,主要差别在于提供服务的方式,说明如下:
    (1)Standalone(
    中文翻译为:独立):在Standalone的程序里,当使用者提出需求要求服务时,会自己提供服务组使用者;
    (2)Transient(
    中文翻译为:暂时程序,暂存区):当使用者提出需求时,会先跟xinetd(以称为:Supper Daemon这个Daemon程序要求服务,然后xinetd程序再去呼叫 Transient 类型的程序,最后 Transient 类型的程序才能够提供服务给使用者;
    3
    、在StandaloneDaemon里分为两种:
    (1)
    在开机时,就由 init 这个程序直接启动的;
    例如:Virtual Console
    (2)System V Daemon
    程式
    例如:httpd程序(提供web服务的);
    十二、介绍 System V 程式的特性
    1、其实 Run Level 是在定义电脑启动时,要提供哪些服务:
    ·
    在每个runlevel 里都有他相对应的目录;就像前面提到的 rc5.d 的目录;
    ·
    而用来初始化System V的程序都存放在 /etc/rc.d/init.d/ 这个目录里;
    2
    、介绍 runlevel 是如何定义要提供哪些服务的。
    因为在runlevel对应的目录里,都有一些连接,而这些链接就是用来呼叫init.d目录里的程序的,并夹代一个启动或停止服务的参数,所以根据 runlevel 对应目录里的链接,就可以设定系统在启动后要提供哪些服务。
    3
    、下面介绍前面提到的那个链接文件名称的格式:


    这个链接文件的名称主要分为三区:
    (1)
    KS开头:K ( Kill 的缩写)开头,表示要停用链接的这个服务;S (start 的缩写)开头,表示要启用链接的这个服务;
    (2)
    为两位的数字:表示执行的先后顺序,数字越小的越先执行,但是在 K S 执行的先后顺序是先执行 K 停用链接的服务,再执行 S 启用链接的服务,这是因为要先将所有服务停用类似归零的意思,然后再启用服务,所以执行完这些链接的程序,就初始化了系统上的服务;
    (3)
    链接的System V 程序名称:
    4
    、另外,System V 程序有种特性,就是启动和停止都用同一个程序,只是后面加上不同的参数:
    例:/etc/init.d/httpd start   启用web服务
         /etc/init.d/httpd stop   
    停用web服务
    这里的 start , stop 就是使用的参数
    十三、介绍 /etc/rc.d/rc.local 这个程式的作用(init初始化流程第三步)
    1、在执行完 run level 下相对应的那个目录里的链接后都会执行 rc.local 这个程式;如下图: run level25下都有这个程式:
    其中 S 表示启用,99表示执行的顺序最后才会执行,执行的程式就是 rc.local
    [img]https://bo0iqw.blu.livefilestore.com/y1maiEcMGazGe0E40b5OlvNQZ9DNIEN1Sh5HV1WkPuRk4MBzdOVOrASKU_6bUSWl8QIM-o8rQVmYzIRrkORoofJquiAPFOD9XGOKX5VJCnmxtU3J-ypbkttOVGP9yitF7jf6j0aDPeHpWM/133_U2_13_1_1[2].png[/img]

    2
    、因此,可以修改 rc.local 这个文件,将 runlevel2-5都要执行的指令或程序设定在rc.local文件中。
    十四、介绍 Virtual Consoles 的特性(init初始化流程第四步)
    Virtual consoles
    Virtual consoles具有以下几点特性:
    1
    、定义在 /etc/inittab 档案里,使用/sbin/mingetty 来产生 tty1 tty6 这六个Virtual consoles
    [img]https://bo0iqw.blu.livefilestore.com/y1m0glZIJ8vcZJ9s-QhVNYvM78DxLY1LiKSAKkf0i8ew9_OdO9JRybz2cFvusQddFoudKryL4o0CBeHi9H8LJoeis8E2xo67JlZ_STBg9LRcCZY6bC9RMlDn8M_qdGIWiYpCpNZimo6ju4/133_U2_14_1_1[5].png[/img]
      
    2
    、如果要切换 Virtual consoles ,同时按下 ctrl-alt-F(1~6)
    3
    Virtual consoles的档案是在 /dev/这个目录中,对应的文件是 tty1tty2tty3tty4tty5tty6;但这个目录下有许多以tty开头的文件
    4
    /dev/tty0 是代表当前使用的Virtual consoles
    5
    、在RHEL中有以下三个预设的Virtual consoles设定:
    · RHEL
    中共定义了12Virtual consoles
    ·
    在这12Virtual consoles里,只有1~6的可以登录
    ·
    如果使用图形界面登录,刚会先使用Virtual consoles 7 登录(也就是tty7
    注:当图形界面已启动时,才可以使用 ctrl-alt-F7 才能切换回到图形界面。
    十五、如何控制系统上服务的停止与启动
    在控制系统的服务停止与启动里,主要分为两种类型的工具
    1
    、控制系统预设是会自动启动的服务;
    有以下三种工具可以控制 Linux 作业系统,预设会自动启动的服务:
    1ntsysv:这个工具在Virtual consoles下也可以使用,此命令执行后出现的界面,如下图:可以启动Services界面来设定系统预设要启动哪些服务,如果在ntsysv后面未加参数,只会设定目前这个Run level ,如果要设定其它的 run level ,需要在后面加参数:
    例如: ntsysv –level 35   指定要修改 runlevel 35预设要启动的服务
    注:这个指令在文字模式下也是可以使用的。
    [img]https://bo0iqw.blu.livefilestore.com/y1mF6pWC1iHVTUGkMoYFtPGnclEKjSLt3HPrkdXHEWkYnpLyxWRjThCKchgKDPVwmcaU9knC_pDOE9lT0X9DHUWJBfneNPxnspEvFW5_uq9EHLcaL8hDxzMCjNjqDczvuTKj_1bwYiuLmo/133_U2_15_1_1[2].png[/img]

    2chkconfig:这个工具可以快速设定,并且适用在各种Linux下的命令行模式工具
    例如:如下图:查看预设自动启动的设定  注:下面的 gpm 的服务是在 Virtual consoles下可以使用鼠标的服务,通过下图可以看到gpm 服务在runlevel2~5下都以以S开头,也是是预设会自动启动的意思;
    [img]https://bo0iqw.blu.livefilestore.com/y1mG5NJFAIHcHHu_YuVLxbcXFQpPWTCFqmgCe5W2TCYf6BGokib2RjFi1bqYDUD_Qt36cSqsWXTRAdTh27T7Kq9QHNpJclNe-hBkFmolw4hfh9zvLlKW94Sh_rS17De_8v4_HhlkvU6jPs/133_U2_15_1_2[2].png[/img]

    执行下面的指令,可以让runlevel1~3预设不自动启动gpm的服务,如下图可以看到原来的23原来是以S开头的现在已经变成了以K开头,表示预设是停有的。

    [img]https://bo0iqw.blu.livefilestore.com/y1mEQvT0CvwHZVawmRyK26G6ZME18PfMU9B86nnJ6Pb1x3gxs-LMnlHigbEuBrXPCWrlsuxBhQPjpyky9K-TsGWNIaIItFO3zrhUm26kKkDJjJF3r1OXouyGKyEZYqqdCtvERP30GLKy3I/133_U2_15_1_2_1[5].png[/img]

    可以使用chkconfig –list 查看某个服务预设是否会自动启动,如下图:off 表示不启用,on表示启用,如果想查看所有的服务可以将gpm去掉,这时会看到许多服务的列表,
    [img]https://bo0iqw.blu.livefilestore.com/y1mgk3CDNePR7Di-xq6IBdLCgQ-IJB5_7XQs0ecYnP4BsKieLZnwCVq5Dl14Ji83qn4J1MjZA2KJ0T2mNojt70sySta71ugSGH7xJUJcnlfeVbcwQ5-dsVbqk07JDxUBK0FdYQH3CbyF8I/133_U2_15_1_2_2[2].png[/img]

    3system-config-services
    这个工具是图形界面的工具,只能在图形界面下执行,开启视窗后,左边窗口可以勾选预设要启动的服务;点选 Edit Runlevel 可以选择要修改哪个级别的预设服务,但只能设定3~5的,如下图:

    [img]https://bo0iqw.blu.livefilestore.com/y1mMoow157lc4QPX-v75Yh0m9Q0MqoVFvj0XJhux1yyCUHgVYH0TqjQHNUk6PVR_jjOn3GQyOs1vu4k7JTy1Kz_OHGFTT0iTiPhDDdJGz3tgRhJplFDEEKqfEVef-80aEpMi7Ui4nwN9_s/133_U2_15_1_3_1[6].png[/img]

    2
    、在系统开机后,可以手动控制服务的停止与启动,立即控制服务的启动状态;
    有以下三个工具可以手动控制服务的启动与停止:
    1service:这个工具可以立即启动或停用standalone类型的服务;
    [img]https://bo0iqw.blu.livefilestore.com/y1m5M_SXi7a3kU5cqpIwDM6L3rgmUDB-0MEIJU9EHZqYNq5PmMh29yYiE_ZQcWkINFGeGjoHMOL0F8coNr4EE9xH4z60ETjlviHk17H6hFstuamAFjonxIWtQMYAaNqF5ORKWkZnHih0do/133_U2_15_2_1[2].png[/img]
    在文字模式下如果启用了鼠标功能,使用鼠标选中文字点后,按鼠标的中键就可以将选中的文字粘贴到光标所在处,这样很方便选中一些文字,现在来停用 gpm 这个服务,指令如下:
    · service gpm stop      
    停用gpm服务(这种方法不一定支持所有的Linux版本)
    · /etc/init.d/gpm stop  
    立即停用gpm服务(推荐使用绝对路径的方法来执行这个指令:这种方法支持所有Linux版本)
    · /etc/init.d/gpm start  
    立即开启gpm服务
    · /etc/init.d/gpm reload
    立即重启服务
    · /etc/init.d/gpm restart
    立即重启服务
    · /etc/init.d/gpm status
    显示服务启用状态
    2chkconfig:这个工具可以立即启动或停用xinetd程式所管理的服务
    例如:chkconfig telnet off   停用telnet服务;
            chkconfig telnet on   
    启用telnet服务;
    3system-config-services
    图形界面工具,选择服务,再点 start(启用) stop(停止) restart(重启)。
    十六、介绍使用指令关机
    有四个指令可以用来关机
    1
    shutdown –h now     hhalt(终止的意思),now是参数表示立即,也可输入时间例如:13:22表示下午122分关机
    2
    halt
    3
    power off
    4
    init 0  进入runlevel 0级做关机动作;
    注:这四个指令在关机前都会执行 sync 这个指令,进行资料的同步,将内存中的数据写入硬盘中,以免将记忆体中的资料丢失。
    十七、介绍使用指令重启电脑
    1
    shutdown –r now     -r 就是reboot(重新启动)的意思,这里的now也可以换成时间
    2
    reboot
    3
    init 6
    6
    ctrl-alt-del (在virtual
    展开全文
  • 3.菜单按钮对应的模态框,可以选择游戏模式:玩家自由对战,和电脑对战,还可以指定谁先执子和哪个颜色先执子; 4.游戏结束显示的模态框; 模态框由modal.js插件实现 Js部分 模式1玩家对战电脑 模式2玩家自由...

    Html部分(界面):

    1.五子棋棋盘由canvas完成;

    2.两个按钮,样式由bootstrap完成;

    3.菜单按钮对应的模态框,可以选择游戏模式:玩家自由对战,和电脑对战,还可以指定谁先执子和哪个颜色先执子;

    4.游戏结束显示的模态框;

    模态框由modal.js插件实现

    Js部分

    模式1玩家对战电脑

    模式2玩家自由对战

    1游戏初始化,绘制棋盘

    1.1创建canvas,将canvas和span(小黄点)添加到html的div中,初始化一个二维数组defaultOptions.chessArray[i][j]使15*15的棋盘上每个点的默认值都是没有棋子。

    1.2接下来绘制棋盘,棋盘的三个参数(棋盘的外边距、内边距、每格的宽度)共同决定了棋盘的总宽度和高度,通过getContext('2d')确定2d上下文对象,设定ctx.fillStyle、ctx.font和ctx.textAlign(用于调整A-O及1-15的位置),开始画竖线,总共有15根横线,使用循环,ctx.beginPath(),画竖线通过ctx.moveTo和ctx.lineTo调整每根线的起点和终点(x坐标以间隔作为步进不断递增,y不变),然后利用ctx.stroke()??,然后利用ctx.fillText填充棋盘边缘的字母(A-O),横线的画法基本相同,不同之处是x保持不变,y递增。

    利用ctx.rect(起点x,起点y,宽度,高度)画大矩形框包围这些直线。

    为了美观,为棋盘添加4个小黑点(它们的位置类似于黄金分割点),同样需要提前为其制定样式(ctx.fillStyle),ctx.arc(圆心x坐标, 圆心y坐标, 半径, 起始角度, 最终角度)。

    1.3游戏初始化时就应该监听鼠标事件,chess_canvas.on('mousedown', function(event) {})

    1.3.1如果不是玩家下棋阶段,点鼠标没有任何效果;如果游戏已经结束,点鼠标也没有任何效果 ,这时候只有点重新开始才能清空棋盘;所有监听事件时首先判断是否处于这两种情形之一,若是直接返回;

    1.3.1.1玩家下棋阶段的判断:两种情况,玩家自由对战模式直接返回true,因为两个都是玩家;玩家对战电脑,只有当前要下的棋子颜色和设置的玩家执子的颜色相同时才返回true;

    1.3.1.2游戏是否结束的判断:若游戏结束则隐藏小黄点;

    1.3.2 如果不是上两种情况,则获取鼠标点击的位置(event.offsetX减去棋盘外边距、内边距),再将位置转换成左边(除以间隔,注意取整),准备绘制棋子,如果那个点没有棋子,则获取当前玩家或电脑要下棋的颜色getCurrentColor(),结合坐标和颜色下棋playChess(pointX, pointY, chessColor);每下一枚棋子,我们都要记录下来(白棋和黑棋分别是两个参数defaultOptions.blackLastChess = [pointX, pointY]、defaultOptions.whiteLastChess = [pointX, pointY]记录的用途??标记获胜棋子时会用);每下完一枚棋,就应该判断下棋方是否胜利;

    获取要下棋的颜色:开始的第一个棋子不是黑色就是白色,分成这两种情况,分别取模交替变换颜色defaultOptions.chessCount % 2 == 0、defaultOptions.chessCount % 2 == 1;

    下棋,其实就是绘制棋子(类似于前面的四个小点,不过效果不同),首先将棋子的小黄点显示,纪录棋子的数量和不同位置棋子的颜色(二维数组),棋子的半径为间隔的2/5,根据传入的坐标定位棋子,并ctx.arc画出棋子,为了更加逼真,为棋子添加径向渐变,ctx.createRadialGradient(1, 2, r,1, 2, 0)通过传入的颜色,添加颜色的渐变gradient.addColorStop(0, "#0A0A0A"); gradient.addColorStop(1, "#636766");最后为刚下的棋子添加小黄点作为标识,chessboardOptions.chessboard_container.find('span.indicator').css(..);

    CSS中添加top和left值定位该span元素,span是块元素,为了使其显示更美观需要倒圆角;

    判断下棋方是否胜利(该判定方法是针对玩家的判定是否胜利的方法)

    连续棋子的个数作为是否胜利的评判标准,当连续棋子的个数大于或等于5个时,取得胜利,而连续棋子可能会在以自己为中心的4条线上出现(x方向,y方向,左斜,右斜),这4条线在具体分析时要以自己为中心拆成8个方向(上,下,左,右,左上,左下,右上,右下),依次判断自己相邻的棋子(判断颜色是否相同),要满足连续,所以一旦有别的颜色或者空位出现,立即break,去反向(比如刚刚是上,现在应该接着判断下)在进行判断 ,连续棋子的个数仍然累加;如果个数大于等于5个,调用hasWin(chessColor),首先结束游戏(改变变量defaultOptions.isGameStart = false;defaultOptions.isGameOver = true;隐藏小黄点),再标记获胜的棋子

    要标记获胜的棋子,需要最后几个相连的棋子都找到,从最后一个棋子入手,每下一个棋子,都会在defaultOptions.blackLastChess或defaultOptions.whiteLastChess中记录下最后一个棋子的位置,这样下完棋如果游戏结束,取得胜利,我们从它入手就能找到其余几个棋子,同样,以这个棋子为中心,在4条线8个方向上去寻找相邻同色的棋子,并记录它们的位置,每个棋子的横坐标(lineChess[0][nums] = i;)和纵坐标(lineChess[1][nums] = m;)分别由二维数组记录,最后找完以后,通过循环遍历所有连续的棋子,给它们进行标记;

    markChess(根据坐标和颜色画圆)

    1.4五子棋AI

    由于是计算机自动下棋,所以要考虑权重问题,通过算法确定棋下在哪里最好。

    双重循环遍历15*15棋盘上的每个点,只要是没有放置棋子的点,都有可能作为下棋点,计算每个空闲点的权重,采用冒泡法,找到最大权重,并记录位置,然后在该位置下棋,下完棋后同样需要记录defaultOptions.blackLastChess,以便最后标识获胜棋子。下棋之后,可能出现两种情形,一是电脑获胜,根据不同的情况设定不同的权重,超过一定的权重值时电脑获胜;二是电脑没有获胜,则轮到下一个玩家;

    计算下棋至(i,j)的权重,首先基于该位置给一定的权重,棋盘的中心处,权重最高,向四周扩散的位置,权重逐渐减小。同样,权重的计算也要考虑4条线,每条线上要考虑两种情况(黑棋、白棋),即要把对手下在该点处的权重也作为总权重的一部分,最终将4条线上,每条线两种情况的权重都相加得到总权重,用于冒泡阶段比较;电脑的权重和玩家的权重可以这样理解,电脑的权重可以理解为电脑进攻,计算玩家的权重可以理解为电脑的防守,进攻和防守选一个为主,这里设置进攻为主,在设置权重时进攻的权重比防守多一位数(即大10倍左右);

    每个方向上权重的判定,要根据该方向连子的情况及连子两端的情况具体分析,每条线分为两个方向,每个方向判断是否有颜色相同且连续(不连续则判断两端或break)的棋子,如果有则num++,没有则判断该位置是否没有棋子,没有棋子side1 = true;反向写法相同;最后返回num,side1,side2存到一个对象中;

    根据棋子的分布具体计算某点的权重,从对象中取出对应方向的num,side1,side2作为函数参数,并增加isAI作为判定电脑和玩家的bool变量。在该函数中使用switch判断num(连子的个数1,2,3,4,5),针对不同的num又有不同的计算权重, 比如num=1和num=4相比,num=4设定的权重应该更高,这里设定权重,num=1为一级(两位数),num=2和num=3为一级(三位数),num=4为一级(4位数),num=5为一级(5位数);连子两端的情况也会影响权重,分为连子两端都没有棋子(side1 && side2)和连子一端有棋子一端没有棋子(side1 || side2),两端都没有棋子的情况权重肯定更高,这种情况设定的权重比第二种的权重高一级,由于考虑了玩家在该点处的权重,还要设置玩家对应的不同情况的权重,weight = isAI ? 15 : 10;由于以进攻为主,所以玩家的权重比电脑的权重稍小,但是都处于同一级。

     

    以上部分按照jQuery插件形式编写为闭包的形式

    以下部分根据菜单栏选中的不同结果,获取到这些结果并传进插件中,利用defaultOptions = $.extend(defaultOptions, options);可以将这些变化的参数传递进入jQuery插件,可以满足一个插件供两种模式的共用

     

    游戏结束时内容的动态显示

    通过callback_victory回调函数,在游戏取得胜利后调用,根据chesscolor分为两种显示情况,即白棋赢了和黑棋赢了,每种情况还应该把玩家执子的颜色提示出来,就是判断玩家颜色

    $('#showResult').find('.modal-title').text('提示【你执' + (playerColor == 1 ? "白子" : "黑子") + '】');

    菜单栏的动态显示

    分为几个部分的工作:

    1玩家自由对战什么时候禁用,什么时候不禁用;

    先行执子:对其设定监听事件$("[name='firstStart']").on("change", function(e) {})

    这里默认有两种模式可选:一是玩家自由对战,二是玩家对战电脑,当选择玩家先执子时,才有可能有玩家自由对战模式,此时玩家自由对战模式可选,而先行执子是电脑,则要使玩家自由对战模式处于禁用状态;

    2更新文本提示信息

    要及时更新显示的文本提示,首先通过start = $("[name='firstStart']").filter(":checked").val();获取到底选中的是哪个;

    3通过选中的先行执子和先行颜色,我们就能判断玩家是什么颜色,并最后动态设置传进闭包中

    4判断处于哪种模式,直接判读玩家自由对战模式是最方便的,看是否勾选了即可,剩下的就是另一种情况

    5监听新的游戏按钮,点击后就要重新设定模式,设定先行执子,先行颜色,将这些传进插件,开始新游戏;

    分为两种模式:玩家自由对战模式、玩家对战电脑,不管是哪种模式,都要设定对应的GameMode、playerColor、blackStart值和callback_victory回调函数

    6.还应该有默认的GameMode、playerColor、blackStart值和callback_victory回调函数,因为玩家可能进入游戏界面后直接开始游戏,没有通过菜单里设置这些参数,默认设置为玩家对战电脑模式,玩家先行,黑棋先行,对应的回调函数也得设定,以便胜利后显示。

    转载于:https://www.cnblogs.com/yujihang/p/7118477.html

    展开全文
  • 初步设置一个游戏窗口,调节窗口大小 游戏的主界面:开始游戏  重新开始游戏  游戏结束 游戏流程:开始游戏的时候,会根据提示来选择游模式 如果选的对手是电脑。...「初始化棋盘,加载棋盘图片...
  • 2)在option->configure interface里 在session file 选择 44b0.ini 这个文件是初始化44b0寄存器的,必须运行 3)Options->Configue Target里本来有两项,上面上是硬件调试,下面是软件仿真(在电脑上仿真) 用ARM7...
  • 然后再拖一个然后我们尝试用串行线Serial DTE连接两个路由器时发现,他们之间是不会正常连接的,原因是这两个设备初始化对然虽然都是模块化的,但是没有添加,比如多个串口等等。那么,这个Custom Made Devices设备...
  • 这个项目可选择当系统开机时先行对AGP或是PCI插槽来做初始化的动作。 [AGP]:当系统开机时,它将会先对AGP插槽来做初始化的动作。 [PCI Slot]:当系统开机时,它将会先对PCI插槽来做初始化的动作。 AGP Data ...
  • 计算机收发短信的OCX控件

    热门讨论 2011-04-15 15:03:26
    InitSIM300 --- 对手机盒初始化,一般在第一次使用时调用,返回设置手机盒的参数。 LoadComportParam --- 在程序启动时调用,读取手机盒与计算机的连接参数;这些参数是在 SetupPort时保存的。 GetComportCount...
  • 构造(__new__)和初始化(__init__) 属性的访问控制 对象的描述器 自定义容器(Container) 运算符相关的魔术方法 枚举类 枚举类的使用 Enum 的源码 自定义类型的枚举 枚举的比较 元类 Python 中类也是对象 ...
  • 多媒体教室

    2013-06-14 08:10:31
    绑定地址是指在学生机存在多个网卡时选择绑定哪个网卡的 IP 地址。检测周期可以指定学生机与教师机检测连接的最大时延,默认为 10 ,即在 10 秒内学生机与教师机未检测到有任何连接则认为该学生机断线。  3.3 ...
  • 12.21 为一个新TCB初始化窗口变量 197 12.22 小结 199 深入研究 199 习题 199 第13章 TCP:输出处理 200 13.1 引言 200 13.2 TCP输出控制的复杂性 200 13.3 TCP输出的四种状态 200 13.4 作为一个进程的TCP...
  • 六、网狐荣耀版游戏启动时出现“正在初始化组件”启动失败 【 2017-11-10 08:35:33 】[ 游戏 ] 房间参数加载成功 【 2017-11-10 08:35:35 】正在初始化组件... 【 2017-11-10 08:36:41 】服务启动失败 【 2017-11-...
  • Reversing:逆向工程揭密

    热门讨论 2010-06-21 17:27:22
    11.4.1 逆向Defender的初始化程序 377 11.4.2 分析解密后的代码 387 11.4.3 SoftICE的消失 396 11.4.4 逆向分析第二个线程 396 11.4.5 击败“杀手(Killer)”线程 399 11.4.6 加载KERNEL32.DLL 400 11.4.7 再加密...
  • 人力资源管理软件(完全免费)

    热门讨论 2011-03-08 11:36:20
    运行oclient.exe,初始化密码为空的 默认为演示库供学习练习,正式使用时使用右边的选择数据库切换到正式库 采用模板文件进行一次性导入或者按下面分别建立相关信息 建立部门信息,支持导入 建立岗位信息,支持...
  • 11.4.1 逆向Defender的初始化程序 377 11.4.2 分析解密后的代码 387 11.4.3 SoftICE的消失 396 11.4.4 逆向分析第二个线程 396 11.4.5 击败“杀手(Killer)”线程 399 11.4.6 加载KERNEL32.DLL 400 11.4.7 再加密...
  • 4.6 格式SQL*Plus的输出以及创建报告的命令 93 4.6.1 BREAK命令 93 4.6.2 COLUMN命令 94 4.6.3 COMPUTE命令 94 4.6.4 REPFOOTER命令 94 4.6.5 REPHEADER命令 94 4.6.6 BTITLE和TTITLE命令 94 4.7 ...
  • 什么是VLAN

    2013-10-23 09:59:12
    这种划分VLAN方法的最大优点就是当用户物理位置移动时,即从一个交换机换到其他的交换机时,VLAN不用重新配置,所以,可以认为这种根据MAC地址的划分方法是基于用户的VLAN,这种方法的缺点是初始化时,所有的用户都...
  • html入门到放弃笔记

    2018-05-15 15:06:12
    由若干台电脑、手机、平板 通过 网线(WIFI) 连接起来的结构 2、基于Internet上的程序 1、C / S 结构 Client / Server 特点:必须通过指定的客户端软件才能访问服务器端的一种程序 :如 :桌面版QQ,... ... 2...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    答:以现在MCU产品主力还是在8位领域,主要应用于汽车应用、消费性电子、电脑及PC周边、电信与通讯、办公室自动、工业控制等六大市场,其中车用市场多在欧、美地区,而亚太地区则以消费性电子为主, 并以量大...
  • 如果你的电脑满足要求但仍然显示检查失败,这时候直接忽略,勾选全部忽略 7. 步骤6/8:概要信息 核对将要安装数据的详细信息,并保存响应文件,以备以后查看。然后点击完成数据库安装 8. 步骤7/8:安装产品 ...
  • 可以在远程服务器上执行 Bit 的<code>bit init --bare</code> 命令初始化一个远程仓库,或者直接部署 Bit 官方提供的 Docker 镜像 <a href="https://github.com/teambit/bit-docker">bit-docker。 部署完远程...

空空如也

空空如也

1 2
收藏数 35
精华内容 14
关键字:

初始化电脑选择哪个