Linux启动

2024-05-09

Linux启动(精选五篇)

Linux启动 篇1

关键词:GRUB,Linux,引导,操作系统

0 引言

Linux操作系统是免费使用和自由传播的操作系统, 是具有多用户、多任务、支持多线程和多CPU等特点的操作系统。在Linux操作系统启动过程中, 我们能看到大量的检测语句和检测结果。这些检测过程使我们对Linux操作系统的启动充满了好奇。Linux操作系统的启动经历了BIOS自检、GRUB引导、加载Linux内核、执行/sbin/init和执行脚本等一系列过程。在这个过程的第一个步骤BIOS自检是任何一个操作系统启动必须经历的过程, 也是机器启动时必要的自我检查的过程。下面我们来详细研究一下每个步骤。

1 BIOS检测

当启动电源时, 计算机会从CMOS (互补金属氧化物半导体, 保存了计算机运行最基本的程序和参数) 加载BIOS (基本输入输出程序, 完成机器自检等步骤后将主控权交给引导程序) , 开始检测基本的硬件信息。

1.1 post系统检查

BIOS首先要对系统进行全面检查, 确保每个核心组件, 例如:cpu、内存等存在, 并且正常运行。这一检测经常被称为post或power on selftest (加电自检) 。

1.2 设备初始化

系统的BIOS初始化串行端口、视频设备、键盘等核心设备驱动程序, 分配合适的系统资源, 例如IRQ和I/O端口。目前的BIOS也执行即插即用协议 (检测并驱动即插即用设备的协议) , 此协议用来探测PCI设备所支持的设备资源设置, 并且为每一个PCI设备分配一个不同与其他设备冲突的配置。

1.3 引导设备选择

BIOS完成设备初始化工作之后, 会搜索机器中合适的引导设备, 这个过程可能因为机器本身的情况而有所不同, 这些参数也可以在CMOS中修改。通常引导设备按以下选项选择。

第一, 软盘驱动器;

第二, CD光驱;

第三, SCSI硬盘或IDE;

第四, PXE兼容网卡。

说明:预启动执行环境PXE兼容网卡通常情况下执行DHCP IP配置协议和TFTP文件传输协议, 允许网卡在网络中发现和下载内核映像。

1.4 移交执行区域

在选择了合适的引导盘后, BIOS会把磁盘的第一个数据块载入内存中, 并把执行传递到这个区域。任何引导盘的第一个数据块都含有一个小的可执行文件, 即引导程序。引导程序会因为所使用操作系统的不同而不同, 即使同一类操作系统, 也会因为版本不同而不同。Linux的引导程序由最初的LILO发展到现在的GRUB, 我们这篇文章主要介绍GRUB的相关内容。

2 GRUB引导程序

GRUB是一个来自GNU项目的多操作系统启动程序, 是将引导装载程序安装到主引导记录的一个程序, 主引导记录位于硬盘开始的扇区。是计算机在启动过程中运行的第一个程序, 一般情况下在计算机启动时, 通过BIOS自检后读取并且运行硬盘主引导扇区中的启动引导器程序, 启动引导再负责加载启动硬盘分区中的操作系统。

Linux系统中的引导程序有以下3个作用:

1) 编写合适的内核命令行;

2) 装载合适的初始虚拟磁盘 (简称initrd) ;

3) 装载合适的linux内核并移交控制权给他。

BIOS通过装载并执行磁盘的第一个数据块的方式把控制权传递给引导程序。所以, 引导程序在设计上通常执行两个阶段:

第一阶段, 第一阶段的引导程序通常很小, 适合主引导记录。第一阶段引导程序的任务是:定位、装载并把控制权传递给第二个阶段的引导程序, 这个文件在文件系统中是看不到的;

第二阶段, 第二阶段的引导程序通常就是引导程序自身, 它在启动时就运行了某种形式的应用程序, 能够读取有关默认设置的配置信息。第二阶段引导程序通常是文件系统中可以识别的二进制文件。

3 加载Linux内核

在GRUB引导阶段, 系统开始加载内核程序, 可以说是此时以正式进入Linux的控制阶段。Linux首先会检索系统上所有硬设备, 并且驱动它们, 同时, 这些硬设备的信息也会在屏幕上显示, 用户可以通过显示信息了解硬设备是否成功驱动。也可以在开机后, 打开/var/log/dmesg文件来检查所有的开机信息。

4执行/sbin/init

在系统加载内核后, 系统会调用/sbin/init程序, 在init程序执行完毕后, init程序会成为所有启动程序的父程序。

5执行脚本

第一, 系统执行/etc/rc.d/rc.sysint Script脚本, 通过执行此脚本, 完成以下功能:1) 用来设置环境变量的内容;2) 通过读取/etc/sysconfig/network文件来设置网络参数等内容;3) 启动Swapping, 检查root文件系统是否正, 检查系统参数及设置PNP、消除/etc/mtab;4) 加载root及/proc文件系统, 决定是否使用模块并加载模块;5) 使用fsck检查文件系统;6) 加载其他文件系统;7) 设置平台字符;8) 打开配置 (quota) , 清除不必要的文件;9) 使用/etc/sysconfig/clock文件以初始化clock;10) 执行rc.serial以将串行端口进行初始化。将开机信息经由dmesg存入/var/log/dmesg中。第二, 执行/etc/inittab Script。第三, 执行/etc/rc.d/rc.local。第四、执行/bin/login程序, 提示用户输入帐号和密码, 对帐号和密码进行编码, 确认密码的正确性, 若正确, 则开始为用户进行环境的

(下转第191页) 将电力系统的各个管理规范进统一的管理, 才能有效的增强电力行业对风险的承受能力, 为电力行业的可持续发展道路的目标更有效的实现。

3.2 电力系统信息安全问题的对策有组织管理

1) 组织管理的安全策略主要是针对电力系统内部的人员管理组织进行调节, 组织管理的有效实施, 可以加强责任信息安全人员的安全培训, 提高安全意识, 提升处理安全问题的能力;

2) 在组织管理的安全策略中必须要充分的把人为因素有效的考虑进去, 然后建立一个完善的、有效的组织管理制度, 并且在这个组织管理制度中要明确的规定好不断提高电力系统信息安全的有关工作人员对电力系统信息安全意识的对策;

3) 把电力系统信息安全的重要性告诉每个工作人员, 并且让这方面的负责人对工作人员的电力系统信息安全意识进行时段的、有效的抽查。

3.3 电力系统信息安全问题的对策有电力系统信息安全技术的完善

1) 不断完善电力系统防火墙技术。防火墙是一种用来加强网络之间访问控制、防止外部网络用户以非法的手段通过外部网络进入内部网络、访问内部网络资源, 保护内部网络操作环境的特殊网络互连设备。因此, 想要保证电力系统信息的安全, 就应该设立一个有效的防火墙, 这样如果有入侵者想要入侵电力系统信息资源, 则就要先通过防火墙的安全防线, 才能接触目标;

2) 利用信息加密技术对电力系统信息安全进行保护。信息加密技术是利用数学或者物理的手段对电子信息在传输过程中存储体内进行保护, 以防止泄露的技术。因此, 有效的将信息加密技术应用在电力系统信息中, 可以有效的对电力系统信息安全进行

(上接第164页)

般不出现突水现象。由于开采煤层距含水层都有较远距离, 开采后, 顶板冒落不会破坏上覆含水层。

2004年以来, 共取井下涌水点及地表溪沟水样5个, 不同水样但水质变化不大, 水质类型为SO4HCO3-Ca, 矿化度较低, 老空水为SO4HCO3-Ca Na, 主要为基岩裂隙水和地表水的混合物, 最大特点是SO4-较高。

长河矿井涌水量主要是大气降水, 随降雨量大小而变化, 1月~5月涌水量较小, 一般稳定在150m3/h以内, 5月份开始增大, 7月份~8月份达到最大值, 一直持续到10月份, 甚至11月份, 12月份涌水量明显减少。

3水文地质工作的几点建议

1) +200m水平以上为采空区, 大大增加了积水空间, 降低了阻隔地表水渗透的能力, 地表水通过各种透水通道进入采空区, 再进入矿井, 导致矿井涌水量增大, 因此防止采空区水是长河水文地质工作的重点;

2) 矿井涌水量主要是补给的大气降水和地表水, 雨季涌水量是枯季的3倍~5倍, 要加强矿井南北翼河床以及断层切割地带地表防治水工作, 堵塞水源通道, 疏通渠道, 在煤层露头附近禁止

(上接第184页)

初始化, 然后将控制权交给shell。至此系统启动成功。

6 结论

Linux操作系统与windows操作系统的启动过程有相近之处。在操作系统获得系统控制权之前都是由BIOS完成机器启动、自检等步骤, 在此之后就有些不同, Linux引导程序是GRUB, 而windows2003/xp使用的引导程序是NTLDR, windows vista/7使用的则是bootmgr, 因此在启动过程中有很大的区别, 不过最终都完成了从BIOS到OS的启动过程。

及时的保护。

4电力系统信息安全问题的对策有完善设备管理制度

设备管理是以设备为研究对象, 追求设备综合效率, 应用一系列理论、方法, 通过一系列技术、经济、组织措施, 对设备的物质运动和价值运动进行全过程 (从规划、设计、选型、购置、安装、验收、使用、保养、维修、改造、更新、报废) 的科学型管理。将设备管理制度实施到各个负责人的身上, 将责任明确的分配好;将设备管理制度中的有关设备的维修、保养、更新、报废、购置、安装、验收等各方面的责任落实到每个电力系统信息安全的工作人员中, 并且制定一个合理的、公平的奖惩制度, 以此来激发工作人员的工作兴趣和责任感, 以及严格监督每个工作人员的工作态度和工作效果。由此得知, 对电力系统信息设备进行完善设备管理制度, 是保证电力系统信息安全的重要措施, 也是基础。

参考文献

[1]李文武, 游文霞, 王先培.电力系统信息安全研究综述[J].电力系统保护与控制, 2011, 39 (10) .

[2]杨尚瑾, 董超.浅谈电力系统信息安全策略[J].中国电力教育, 2009 (9) .

[3]刘劲风, 王述洋.电力系统信息安全关键技术的研究[J].森林工程, 2007, 23 (4) .

[4]王建永.电力系统信息安全应用研究[J].硅谷, 2008 (12) .

[5]翟绍思.电力系统信息安全关键技术的研究[J].中国科技信息, 2008 (15) .

[6]陈其, 陈铁, 姚林, 吕小红.电力系统信息安全风险评估策略研究[J].计算机安全, 2007 (6) .

[7]叶杰宏.由冰灾造成的停电看电力信息安全的重要性[J].电力信息化, 2008 (4) .

修建水池等人为水体, 另外还要制止小煤矿开采露头煤柱, 防止涌水量继续增大, 威胁矿井安全;

3) 虽然断层导水性差, 但在接近断层时, 仍要采取措施, 特别是落差较大的断层, 在断层切割煤层露头和含水层地段, 要按设计要求留足断层保护煤柱, 确保开采后不引起断层活化, 增大导通地表水的能力。

4结论

通过以上分析, 矿井涌水量大小与水源、补给条件、补给通道以及煤层顶底板岩性有直接的关系。长河公司矿井涌水量大小随季节和气候变化而变化, 雨季涌水量增大, 枯季涌水量减少, 为提高水文地质预测预报准确性以及雨季三防工作提供了技术依据。

参考文献

[1]张光德, 李栋臣.矿井水害防治[M].徐州:中国矿业大学出版社, 2003.

[2]王强, 李振林, 王计堂, 矿井地质.北京:煤炭工业出版社, 2008, 1.

参考文献

[1]奈米斯.Linux系统管理技术手册[M].2版.北京:人民邮电出版社, 2008:45-72.

[2]余柏山.Linux系统管理与网络管理[M].北京.清华大学出版社, 2010:55-84.

Linux启动 篇2

1.安装好Oracle数据库后: 执行 dbstart和dbshut会提示:

代码如下复制代码[oracle@oracle11g ~]$ dbstart

ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener

Usage: /u01/app/oracle/oracle/product/10.2.0/db_1/bin/dbstart ORACLE_HOME

错误原因是:dbstart和dbshut脚本文件中ORACLE_HOME_LISTNER的设置有问题,分别打开两个文件找到:ORACLE_HOME_LISTNER=$1,修改为

ORACLE_HOME_LISTNER=$ORACLE_HOME,命令如下:

代码如下复制代码

[oracle@oracle11g ~]$ vi $ORACLE_HOME/bin/dbstart

[oracle@oracle11g ~]$ vi $ORACLE_HOME/bin/dbshut

修改后保存退出,第一个问题已解决;

2.如何在Linux启动时自动启动Oracle监听和实例

首先要解决上面的问题,才能继续哟!

第一步:修改/etc/oratab文件,命令如下:

[oracle@oracle11g ~]$ vi /etc/oratab

找到:accp:/u01/oracle:N修改为: accp:/u01/oracle:Y

第二步:把lsnrctl start和dbstart添加到rc.local文件中,命令如下:

代码如下复制代码

[oracle@oracle11g ~]$ vi /etc/rc.d/rc.local

添加:

su oracle -lc “/u01/oracle/bin/lsnrctl start”

su oracle -lc/u01/oracle/bin/dbstart

注意:第一个命令有空格,所以要用引号的

重启试试吧!

我曾经按按照网上的改法修改后,仍然不能解决此问题,最后只能参照网上的改法,以及 $ORACLE_HOME/network/admin/samples/listener.ora文件的语法规则进行更改后才得以解决此问题)

代码如下复制代码

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = orcl)

#(SID_NAME = PLSExtProc)

(ORACLE_HOME = /usr/oracle_db/product/10.2.0/)

(SID_NAME = orcl)

#(PROGRAM = extproc)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))

)

)

3.建立一个启动的脚本

代码如下复制代码

#!/bin/bash

#

###############Description##########

#

# AutoStart Oracle and listener

# AutoStop Oracle and listener

#

#####################################

#

#

#

. /etc/rc.status

case “$1” in

start)

echo “Starting Oracle Databases ... ”

echo “[ $(date +%D-%T) ] Start Oracle Database” >>/var/log/oracle

su - oracle -c “dbstart” >>/var/log/oracle

rc_status -v

echo “Starting Oracle Listeners ... ”

echo “[ $(date +%D-%T) ] Start Oracle Listener” >>/var/log/oracle

su - oracle -c “lsnrctl start” >>/var/log/oracle

rc_status -v

touch /var/lock/subsys/oracle

;;

stop)

echo “Stoping Oracle Listeners ... ”

echo “[ $(date +%D-%T) ] Stop Oracle Listener” >>/var/log/oracle

su - oracle -c “lsnrctl stop” >>/var/log/oracle

rc_status -v

rm -f /var/lock/subsys/oracle

echo “Stoping Oracle Databases ... ”

echo “[ $(date +%D-%T) ] Stop Oracle Database” >>/var/log/oracle

su - oracle -c “dbshut” >>/var/log/oracle

rc_status -v

;;

restart)

$0 stop

$0 start

;;

*)

echo “Usage: oracle {start|stop|restart}”

exit 1

esac

改变权限.放到/etc/init.d/oracle

代码如下复制代码

Linux系统启动安全分析及对策 篇3

我们将从按下电源按钮到用户成功登录过程称为系统的一个完整的启动过程,以带有GRUB系统引导器的Red Hat Linux 9为例,在启动过程中,分析可能存在的安全隐患并采取针对性的防范策略。

1 与root用户登录有关的安全问题

Linux系统下的超级用户是root,root用户对系统具有绝对的控制权,能够对系统进行一切操作,所以保证root用户的口令安全是十分重要的,root口令安全几乎可以等同系统的安全[1]。因此,root登录系统的时候,就必须保证输入口令安全,要特别防范非法手段获取口令。为了防止root登录时遭受特洛伊木马攻击,就必须关注/bin目录的安全问题。

/bin目录保存包含一般用户使用的命令,是一些常用的二进制的可执行命令,如复制、移动和删除文件,登录、创建和打开文件、识别系统名称,查看文本文件等[2]。出于安全考虑,该目录只允许超级用户进行修改,但同时也应该把该目录设置在系统PATH环境变量的最前面,否则就有可能导致root口令被窃取。例如进行如下设置:

把/bin目录设置在PATH环境变量的后面,则系统有可能受到特洛伊木马的攻击,例如PATH变量的设置如下:

如果用户Htom在他自己的目录/home/Htom//bin内放置一个程序名为su的“特洛伊木马”程序,那么如果系统管理员要使用su命令从普通用户身份升级为超级用户,将会首先使用/home/hacker/bin下的su命令,而不是/bin下的su命令。这样用户hacker就可以轻松地窃取到超级用户的口令。因此对/bin目录安全的设置方式是:

这样可以避免root登录时特洛伊木马盗取口令。

2 丢失root口令的问题

如果root口令不慎丢失,就不仅会造成root无法登陆的情况,也会失去了对系统的管理和控制,那么就会造成系统安全隐患。为了能够重新登录和掌控系统,可以在GRUB引导系统时重新设置root用户的口令[3],操作过程如下:

首先在GRUB的菜单操作界面中,按a键进入GRUB的append模式,如图1所示。

然后在光标处添加一个空格然后输入1(表示启动Linux后进入单用户模式)并回车;

接着在#提示符下输入passwd命令为root重新设置口令,设置完毕后输入init 3或init 5命令切换为多用户模式即可。

系统管理员可以使用这种方法可以重新设置root口令,当然其他任何人也可以使用这种方法,即在GRUB启动还未进入系统登陆界面就直接篡改root口令,就可以root的身份登录系统,这样就会给系统带来灾难性的后果!这种方法是绝对不能被系统管理员以外的其他人使用的,因而,为了防止在引导菜单启动时随意修改root口令,就必须对引导菜单加密。

3 加密引导菜单

给引导菜单加密,GRUB有两种加密方式:一种是Lock加锁,另一种是利用非明文加密,也就是MD5 128位加密[4]。这两种方法都可在启动某个菜单项时被要求输入口令,做法是在GRUB配置文件/boot/grub/grub.conf下添加一些关键字段。

3.1 Lock加锁

Lock命令用于设定某启动菜单项使用口令进行锁定,该命令没有参数,一般在grub.conf文件中紧接Title命令使用,锁定该菜单项中Lock命令之后的所有命令,直到输入正确的口令后,该菜单项才会正常启动。使用Lock方式加密的具体做法是grub.conf文件中加入password和lock两行,示例如下:

当选择启动被锁定的菜单项时,用户被提示输入口令,如口令验证通过则启动该菜单项的操作系统,如口令验证失败屏幕返回启动菜单。

Lock加锁方式可以防止在引导菜单启动时随意修改root口令,但随之又带来一个安全问题:这种加锁方法是一种明文的设置加密菜单方式。从系统安全的角度来看,这样加密引导菜单是不安全的,因为任何人不管采用何种方式只要打开grub.conf文件,就会看到这个口令,就会利用这一点入侵系统。为了防止出现这种情况,就必须对口令进行加密,以免出现明文。

3.2 使用MD5加密口令

MD5是一种采用单向加密的不可逆加密算法,MD5算法的应用主要是针对用户的注册录,用户在注册时所提交的信息(密码)是利用MD5算法加密之后再保存到数据库中,这样可以防止用户密码的泄露,既使是黑客非法获得加密密文也没有办法查看到用户的密码,有效地保护了系统的安全。在用户进行登录时,为了身份验证,必须对输入的密码重新进行MD5加密,然后再与数据库中的信息进行比对,相同便可进入系统。

为了改变加锁方法中出现明文的情况,GRUB提供了MD5加密口令功能,可以有效保护引导菜单口令,实现方法如下:

首先利用Grub自带的grub-md5-crypt命令获得加密口令

使用MD5加密口令使得对口令的破解变得非常困难,有效的保护了系统安全,但一旦出错了话,就有可能造成系统无法启动的情况,因此必须小心使用。

4 其它安全问题

当然给引导菜单加密可以防止一些安全漏洞,但是如果不是通过硬盘使用GRUB或LILO引导系统,而是从其它设备如光驱、软驱或USB设备引导系统,造成安全问题。所以就必须为计算机的BIOS设置口令,并禁止从软驱和光驱等移动设备启动系统,防止绕过GRUB或LILO启动系统,然后访问硬盘。给BIOS设置密码就与操作系统无关了。如果再往上一级追溯,那就是物理安全了,如果硬盘被拿走了,即使BIOS设置了口令也没有用。因此,从技术手段保证系统安全的前提,是首先要保证系统的物理安全,否则毫无意义。

5 结论

在Linux系统启动阶段,从root开始用户登录起,逆向分析系统可能存在的安全隐患及问题,论文实现了防范root口令特洛伊木马攻击、获取root口令、加密引导菜单等功能。

参考文献

[1]中科红旗软件技术有限公司[M].红旗Linux系统管理教程,2001.

[2]梁如军.Red Hat Linux9系统管理应用基础教程[M].北京:机械工业出版社,2005.

[3]王红.操作系统原理及应用[M].北京:中国水利水电出版社,2005.

Linux启动 篇4

没有操作系统能够确保100%可靠,终有一天,即使Linux也会无法启动。本文为你提供一些在Linux工作站无法正常启动时所采用的策略。

不管你多么喜爱你的Linux机器,有时候你都必须恢复你的系统。是的,即使一台Linux机器也可能遭受系统崩溃:不管是由于视频配置错误、内核更新出错、或是由于init脚本配置错误,这种情况都是必然的。我看到过大量这种情况——即使在我自己的机器上,大多数是由于X配置出错——这确实令人沮丧。

在我看来,重新安装系统并不是最佳救援计划。有时候,最佳救援计划甚至不需要从救援磁盘启动。本文将为如何避免系统崩溃提供一些提示和诀窍,帮助你建立恢复崩溃的Linux机器所需的工具。

使用正确的运行级别

安装好一个新的Linux系统后,我立即采取措施以确保灾难不会轻易发生。其中一个措施就是编辑系统的运行级别。运行级别告诉系统离采用引导过程还有多远。运行级别分为六个等级:

0级:停止(不设置initdefault)

1级:单用户模式

2级:多用户模式,没有NFS(与3级相同,如果你没有建立网络)

3级:完整的多用户模式

4级:不使用

5级:X11

6级:重新启动(不设置initdefault)

新型的Linux系统几乎总是默认使用运行级5(X11),表示系统在引导完成后,将会在图形登录界面处停止。在某物(或某人)使用X配置前,系统一切正常。

然后你必须找到一个登录方法。你可以按下[Ctrl][Alt][F7]进入一个基于文本的虚拟窗口,但为什么要这么麻烦呢?相反,我总是在/etc/inittab文件中将运行级更改为3级。你更改的代码为:

id:5:initdefault:

它被更改为:

id:3:initdefault:

当X出错时,这是一个非常简单的系统恢复方法。

多内核

另一个明显的磁盘恢复方法是总是安装一个正常运转的内核。我通常在一个通过yum更新的内核上工作。有时候,内核会出现一些错误,使得我的一台或几台机器无法启动。

为避免这种情况,我一直保证在机器上使用至少一个正常运行的内核。要解决这个问题,首先应在/etc/yum.conf文件中添加plugins=1,然后应用这段脚本(由RedHat的Jeremy Katz编写),并将它命名为n-installonly.py,保存在/usr/lib/yum-plugins文件中。你可以通过修改tookeep变量(默认为2)的方法更新系统所使用内核的数量。

知道系统上有一个正常运转的内核,你就可以进行安全升级。如果新内核出错,只需启动旧内核就可以解决新内核上的问题(不管是删除、重新编译还是升级)。

救援模式

如果你在使用Red Hat和LILO引导加载器,你就可以插入产品光盘1,并在引导提示符下输入Linuxrescue进入救援模式。启动机器后,你就会看到bash#提示符。在这个模式下,你可以使用许多工具。

如你所见,有检查硬盘完整性、修复硬盘、检查内核模块、装配设备、以及创建文件系统等的工具。此时是进行救援尝试的最佳时机(如果你使用的是一个Red Hat,或基于Red Hat的系统)。

另一个救援方法是进入单用户模式,这里你的计算机引导进入运行级1。系统装配你的本地文件系统,但不激活网络。你得到一个可用的系统维护外壳。要进入单用户模式,在LILO提示符下输入:

Linuxsingle

Linuxemergency

建立一张救援CD

如果你正在使用LILO引入加载器,可以使用一个叫做mkrescue的强大工具。这个工具一般用于创建引导软盘,但也可用来创建ISO。其用法如下,

如果你使用Mandriva:

mkrescue --iso --initrd /boot/initrd-KERNEL-NUMBER.img --

kernel /boot/vmlinuz-KERNEL-NUMBER

注意:这里的KERNEL-NUMBER指内核的版本号。

如果你不能确定内核的版本,可以用以下命令找到intrd和vmlinuz的号码:

uname –r

运行这个命令后,你就会在运行mkrescue命令的目录中发现一个rescue.iso文件。现在你可以用以下命令建立镜像:

首先,检查建立CD的设备号码:

cdrecord –scanbus

然后用以下命令建立镜像:

cdrecord dev=0,0,0 rescue.iso

注意:这里的dev=0,0,0是用上面的scanbus命令查出的号码。

如果你使用Slackware,使用这些步骤建立一张引导CD:

mkrescue –iso

注意:Slackware自动获知在ISO中放入何种内核。

然后,你可以用建立Mandriva镜像同样的方法建立镜像。

SystemRescueCD

SystemRescueCD是一个保存在可引导光盘上的Linux系统,用于在系统崩溃后修复系统和数据。它还可在计算机上方便地执行管理任务,如建立和编辑硬盘分区。它由许多系统实用工具(parted、partimage、fstools)和基本实用工具(编辑器、midnight commander文件管理器和网络工具)构成。

它使用起来非常简单。只需要从光盘启动你就可以执行一切操作,就像从硬盘启动一样。系统内核支持大多数重要的文件系统(ext2/ext3, reiserfs, reiser4, xfs, jfs, vfat, ntfs, iso9660)和网络(samba和nfs)。

SystemRescueCD可能是市面上最优秀的救援系统。你不仅可以从光盘上使用这种救援方法,还可以将这个救援系统放在U盘上使用。

要在一个U盘上建立一个SystemRescueCD,你需要大于256MB的磁盘空间。从Sourceforge下载iso镜像并把它烧制到光盘上。现在你必须在U盘上创建文件系统。使用dmesg命令找出U盘名称,然后用以下代码擦写U盘:

dd if=/dev/zero f=/dev/sda

这里的/dev/sda是U盘的名称。

现在在U盘上安装主引导记录:

install-mbr /dev/sda

install-mbr --force /dev/sda(如果命令出错)

现在建立分散分区:

parted /dev/sda

(parted) mkpartfs primary fat32 0 100% // use help or help mkpartfs command to see help

(parted) print // check if the write was ok

(parted) quit

现在已经建立好文件系统,然后将用SystemRescueCD镜像烧制的CD中的文件复制到U盘中。保证你复制的文件等级和CD上的相同。

现在,使得U盘可以用sysLinux命令启动: www.dnzg.cn

sysLinux/dev/sda1

这里的/dev/sda1是磁盘的名称。

Linux启动 篇5

嵌入式系统大多是专用的计算机系统,以应用为中心,需要在系统的尺寸、启动速度、运行实时性以及电源管理诸方面进行优化。与PC机相比,嵌入式系统具有不同的硬件结构和软件要求,很多信息设备甚至要求系统即开即用,这就对嵌入式系统的启动速度提出了要求。Linux系统源代码开放,具有内核小、效率高、性能稳定等优点,在嵌入式领域得到了广泛的应用,但启动过程稍显繁琐,因此,Linux应用于嵌入式系统,不仅仅要求在某些功能上的"删减",加快启动速度也是应用时需要解决的一个重要问题。

1 嵌入式Linux的启动过程

PC机中的启动加载任务由BIOS(本质上是一段固件程序)和位于硬盘MBR中的OS Boot Loader(如GRUB、LILO等)一起完成。与之不同的是,嵌入式系统一般出于系统尺寸和实际存储容量需求,一般不使用大容量的IDE或SATA硬盘,而是使用Flash进行数据存储,同时没有像B I O S那样的固件程序,系统加载任务由引导程序Bootloader来完成。如在一个基于ARM9的嵌入式系统中,系统在上电和复位时通常都从地址0x00000000处开始执行,而在这个地址处放置着系统的Boot Loader程序。

嵌入式Linux的正常启动过程可定义为从用户进行上电/复位操作,到系统开始提供用户可接收的服务所需要的一段过程,需要做的工作按照由硬件到软件,可以分为四个阶段:

(1)上电/复位:片内固件运行,进行启动方式选择;当选择从Flash启动时,加载并开始执行Bootloader;

(2)Bootloader的引导装载过程:硬件设备初始化,建立内存空间映射,将系统的软硬件环境带到一个合适的状态后,加载内核开始系统引导;

(3)内核:内核初始化,搜索设备和安装驱动,挂载根文件系统;

(4)用户空间:执行RCScript基本服务初始化和启动图形界面,应用程序初始化等。

出于成本和系统消耗的考虑,研究者们通常针对Linux正常启动过程中比较耗时的部分做出必要的修改、折衷和优化,以达到提高启动速度的目的,研究也集中在(2)、(3)、(4)几个阶段,而阶段(1),是由硬件的运行速度决定的。

2 基于XIP的嵌入式Linux启动优化实现

2.1 设计基础

程序运行时在内存的映像分为两类:一类是只读的,如代码段;另一类是可写的,如数据段和堆栈段。Flash虽然是可写的,但比不上普通RAM的高速度;因此,当程序在Flash中运行时,我们仍然需要把部分可写的数据段放在RAM中。XIP是就地执行(e Xecute In Place)的简称,是一种能够直接在Flash中执行代码而无须装载到RAM中执行的代码执行机制,在系统启动时,不将代码复制到RAM,而是直接在非易失性存储位置执行。

XIP可以分为应用程序XIP和内核XIP,前者直接从应用程序代码的存储位置执行,而不用将它加载到RAM中,会使应用程序的首次执行速度比较快。后者直接在Flash/ROM中运行内核,可以节省复制和映像解压的时间。Linux 2.6.10内核已经包含了XIP支持,修改内核代码或打补丁,使之能在发生缺页中断时,直接映射Nor Flash上的代码页到虚拟地址空间上,而不是拷贝到RAM,再映射到虚拟地址空间(见图1)。

经过多人的研究,嵌入式Linux的启动中向RAM的装载时间和在RAM的执行时间耗时较长,若能想办法把这段时间降下来,整个系统的启动时间必会大大减少。与个人计算机相比,嵌入式系统运行的任务比较单一,变化很少,启动的大多数时间被消耗在内核驱动和应用程序的初始化上,如果能加速或"跳过"这些重复的工作,对启动速度的加速改进是可观的,而休眠技术就可以实现它们。我们研究休眠的工作过程,而分析嵌入式设备的构成,根据需要精简一些功能如ACPI支持、硬盘支持等,将之应用于嵌入式系统。

我们综合休眠和内核XIP的特点,提出一种方案:在系统运行状态完好时制作系统运行状态镜像,适当地修改Bootloader,使之支持在Flash中就地执行,实现将已保存镜像恢复的操作,这样,系统很快就可以进入可操作状态。以空间换取时间,在当前硬件速度增加和成本降低的大趋势下,此方案是经济且可行的。

2.2 过程实现

经过分析和研究,我们需要解决三个问题:a.Bootloader对XIP的支持;b.系统状态镜像的制作;c.已保存状态的恢复。我们在设计方案时还要考虑硬件的特点,Nor Flash读操作较快,但写操作速度较慢,Nand Flash可以达到高存储密度,并且写入和擦除的速度也很快,在Nor器件上运行代码不需要任何的软件支持,在Nand器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),Nand和Nor器件在进行写入和擦除操作时都需要MTD。由于XIP还需要硬件的支持,因此我们选择使用Nor Flash作为Bootloader和Linux内核的存储介质;使用Nand Flash实现文件系统,作为应用程序的存储介质,对ROM和Flash统一编址。镜像可以保存到Nor Flash中加快速度,但大多数人选择保存到Nand Flash中,这样便于修改,灵活性较高,由于现有条件限制,Nor Flash容量较小,我们选择后者。

由于Boot Loader的实现依赖于CPU的体系结构,因此Boot Loader大多分为stage 1和stage 2两大部分。Stage 1用来实现依赖于CPU体系结构的代码,如设备初始化代码等,而且通常都用汇编语言来实现,以达到短小精悍的目的;而stage 2则实现更复杂的功能,通常用C语言来实现,这样可以获得更好的可读性和可移植性[2]。

U-boot是一个开源的固件程序,它能实现对CPU及主板的初始化,加载操作系统及其他的boot image等功能,并提供了命令行工作下的丰富功能。我们以U-boot为蓝本,对Bootloader进行改造,把向RAM中拷贝自身和Linux内核的部分修改为直接在Nor Flash上执行。这样就解决了第一个问题,把后两个问题留给Linux内核解决。

在最新的Linux2.6内核支持休眠和待机机制,PC系统中的实现有swsusp、suspend2、uswsusp和Tux On Ice等,现在既可以将镜像保存到交换分区,也可以保存到一个文件。Linux中这些休眠具体实现方式有内核方式和软件方式的不同,但相同的是休眠过程都分为两个阶段,一是SUSPEND阶段,保存当前系统各种状态到非易失性存储设备并关机;二是RESUME阶段,系统重新启动,引导后恢复已保存的状态。我们为了加速嵌入式设备的启动,需要在内核中支持休眠状态的保存和恢复,因而,在内核中有两个执行方向,设定一个状态选择标志,正常情况下按部就班,按序执行启动过程(3)(4)两步的工作,在需要状态恢复时直接把已保存的系统状态恢复。

SUSPEND完整过程包含下面一系列的操作:a.用户请求系统休眠;b.向所有正在运行的进程发生休眠信号,防止进程死锁,为休眠做准备;c.为了保证系统状态在制作系统快照时不被修改,设备都被冻结;d.禁止中断,页缓存被原子地复制;e.系统驱动被中止,保存CPU的状态;f.其余内存被原子地复制保存;g.系统关掉电源。RESUME阶段所做的工作与之方向是相反的,保存状态时一般的外部设备都关闭了,它们的启动留到系统状态恢复后由内核控制完成。

2.3 测试与分析

我们采用的博创科技的UP-TECHPXA270-S开发板具有16MB Nor Flash、64MB Nand Flash和64MB SDRAM,进行实验验证得到数据如表1所示。

经过实验比较,优化后的启动时间比优化前有显著缩短,尤其在图形界面下,这说明改进方案是有效的。实验中休眠后恢复的状态文本方式很正常,但图形显示不很稳定,有待以后解决。

3 结束语

快速启动对于普及嵌入式Linux系统具有重要意义,本文通过分析嵌入式系统的引导过程,提出了综合XIP和Linux休眠机制,通过改造bootloader和利用休眠的状态信息,软硬件结合,加速启动的方案。经验证此方案在加快嵌入式Linux启动速度方面效果明显,这对研究和简化嵌入式Linux的引导过程,缩短嵌入式设备的启动时间具有十分重要的研究和借鉴意义。

摘要:在配置较低的嵌入式设备上提高系统启动速度,对Linux的应用和推广具有重要的意义。本文在分析嵌入式Linux启动各个阶段的基础上,结合相关的研究,提出了在嵌入式设备上综合XIP机制和休眠机制,利用休眠的状态信息以加速启动的方案。

关键词:嵌入式Linux,直接执行,启动加速

参考文献

[1]史永宏,耿增涛,等.基于状态恢复的嵌入式Linux快速引导[J].计算机工程与设计,2008,29(2):23-24,37.

[2]左大全,吴刚.嵌入式Linux快速启动与XIP应用[J].计算机工程与科学,2006(12):136-139.

[3]赵炯.Linux内核完全剖析[M].北京:机械工业出版社,2006.

[4]Bird T M.Methods to improve bootup time in Linux[C].Proceedings of the Ottawa Linux Symposium.2004.

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【Linux启动】相关文章:

启动主体05-05

汽车启动05-08

启动速度05-10

启动方式05-23

整套启动措施04-27

银行启动范文04-30

启动仪式新闻05-10

启动仪式流程05-20

变频启动装置05-30

启动仪式老师讲稿05-24

上一篇:可变控制参数下一篇:创新教学的开放性