CN102902563B - Linux操作系统及其启动过程中挂载文件系统的方法 - Google Patents
Linux操作系统及其启动过程中挂载文件系统的方法 Download PDFInfo
- Publication number
- CN102902563B CN102902563B CN201210359357.XA CN201210359357A CN102902563B CN 102902563 B CN102902563 B CN 102902563B CN 201210359357 A CN201210359357 A CN 201210359357A CN 102902563 B CN102902563 B CN 102902563B
- Authority
- CN
- China
- Prior art keywords
- file system
- file
- parameter
- root
- carry
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种Linux操作系统及其启动过程中挂载文件系统的方法,克服目前Linux操作系统启动过程中文件系统挂载失败时无法正常进入操作系统的缺陷,该方法包括:挂载根文件系统;根据内核引导参数中的文件系统挂载点来修复/etc/fstab文件的挂载点位置。本申请的实施例解决了Linux操作系统启动时因文件系统挂载失败而导致无法正常进入操作系统的问题,降低了操作系统的维护成本。
Description
技术领域
本发明涉及Linux操作系统,尤其涉及一种Linux操作系统及其启动过程中挂载文件系统的方法。
背景技术
Linux内核在启动的时候,能接收某些命令行选项或启动时参数。当内核不能识别某些硬件进而不能设置硬件参数,或为避免内核更改某些参数的值,可以通过这种方式手动将这些参数传递给内核。
如果不使用启动管理器,而直接从基本输入输出系统(BIOS)或者将内核文件用“cpzImage/dev/fd0”等方法来启动设备,就不能给内核传递参数或选项。
Linux的内核参数是以空格分开的一个字符串列表,通常具有如下形式:
name[=value_1][,value_2]...[,value_10]
“name”是关键字,内核用它来识别应该把“关键字”后面的值传递给谁,也就是如何处理这个值,是传递给处理例程还是作为环境变量或者抛给“init”。值的个数限制为10,可以通过再次使用该关键字使用超过10个的参数。
内核收到内核参数后,首先检查内核参数的关键字是不是'root=','nfsroot=','nfsaddrs=','ro','rw','debug'或'init',然后内核在bootsetups数组里搜索于该关键字相关联的已注册的处理函数,如果找到相关联的已注册的处理函数,则调用这些处理函数并把关键字后面的值作为参数传递给这些处理函数。
比如在启动时设置参数name=a,b,c,d,内核搜索bootsetups数组,如果发现“name”已注册,则调用“name”的设置函数如name_setup(),并把a,b,c,d传递给name_setup()执行。
ro参数通知内核以只读方式加载根文件系统,以便进行文件系统完整性检查,如运行fsck。
rw参数通知内核以读写方式加载根文件系统,这是默认值。
root=参数通知内核启动时使用哪个设备作为根文件系统。比如可以指定根文件为hda8:root=/dev/hda8。
但是,目前Linux操作系统启动过程中文件系统挂载失败时将无法正常启动操作系统。
发明内容
本发明所要解决的技术问题是克服目前Linux操作系统启动过程中文件系统挂载失败时无法正常进入操作系统的缺陷。
为了解决上述技术问题,本发明提供了一种Linux操作系统启动过程中挂载文件系统的方法,该方法包括:
挂载根文件系统;
根据内核引导参数中的文件系统挂载点来修复/etc/fstab文件的挂载点位置。
优选地,所述挂载根文件系统,包括:
采用读写方式挂载所述根文件系统。
优选地,所述根据内核引导参数中的文件系统挂载点来修复/etc/fstab文件的挂载点位置,包括:
获取所述内核引导参数中的root=参数;
根据所述root=参数来修复所述/etc/fstab文件中的文件系统的挂载点位置。
优选地,所述获取所述内核引导参数中的root=参数,包括:
根据/proc/cmdline文件获取所述内核引导参数中的所述root=参数。
优选地,所述根据所述root=参数来修复所述/etc/fstab文件中的文件系统的挂载点位置,包括:
根据所述root=参数获取内核启动时作为根文件系统的设备,将该设备对应的设备号替换到所述/etc/fstab文件中挂载文件系统的硬盘分区,修复所述/etc/fstab文件中的文件系统的挂载点位置。
优选地,该方法包括:
修复所述/etc/fstab文件的挂载点位置后,卸载所述根文件系统。
本申请还提供了一种Linux操作系统,该系统包括:
挂载模块,配置为挂载根文件系统;
修复模块,配置为根据内核引导参数中的文件系统挂载点来修复/etc/fstab文件的挂载点位置。
优选地,所述修复模块包括:
获取单元,配置为获取所述内核引导参数中的root=参数;
修复单元,配置为根据所述root=参数修复所述/etc/fstab文件中的文件系统的挂载点位置。
优选地,所述获取单元配置为根据/proc/cmdline文件获取所述内核引导参数中的所述root=参数。
优选地,所述修复单元包括:
获取子单元,配置为根据所述root=参数获取内核启动时作为根文件系统的设备;
替换子单元,配置为将该设备对应的设备号替换到所述/etc/fstab文件中挂载文件系统的硬盘分区,修复所述/etc/fstab文件中的文件系统的挂载点位置。
与现有技术相比,本申请的实施例解决了Linux操作系统启动时因文件系统挂载失败而导致无法正常进入操作系统的问题,降低了操作系统的维护成本。本申请的实施例不限于某种Linux,而是适用于各种Linux操作系统,因此本发明具有较好的通用性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本申请实施例的Linux操作系统启动过程中挂载文件系统的方法的流程示意图。
图2为本申请实施例的Linux操作系统的构造示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。本申请实施例以及实施例中的各个特征在不相冲突前提下的相互结合,均在本发明的保护范围之内。
目前,Linux操作系统在启动时,会根据/etc/fstab文件中挂载的文件系统来挂载硬盘分区。当/etc/fstab文件中挂载的文件系统与内核引导参数中的硬盘分区不一致时,就会造成系统无法启动的问题。
如图1所示,本申请实施例的Linux操作系统启动过程中挂载文件系统的方法,主要包括如下内容。
S110,挂载根文件系统。
本申请的实施例仅可以采用读写方式挂载根文件系统。
S120,根据内核引导参数中的文件系统挂载点来修复/etc/fstab文件的挂载点位置。
本申请的实施例,是获取内核引导参数中的root=参数,根据root=参数来修复/etc/fstab文件中的文件系统的挂载点位置。根据内核引导参数中的root=参数,获取内核启动时作为根文件系统的设备。将该设备对应的设备号拷贝替换到/etc/fstab文件中挂载文件系统的硬盘分区,即可修复/etc/fstab文件中的文件系统的挂载点位置。
内核引导参数中的root=参数,表示了内核启动时使用哪个硬盘分区作为根文件系统。该root=参数可以根据/proc/cmdline文件来获取。本申请的实施例通过内核引导参数中的root=参数来修复/etc/fstab文件的硬盘分区挂载点。
如图1所示,本申请的实施例还可以在修复/etc/fstab文件的挂载点位置后,卸载根文件系统(图中以步骤S130示出)。之后完成Linux操作系统后续的启动过程。
如图2所示,本申请实施例的Linux操作系统,主要包括挂载模块210以及与挂载模块210相连接的修复模块220。挂载模块210配置为挂载根文件系统。修复模块220配置为挂载模块210挂载根文件系统后,根据内核引导参数中的文件系统挂载点来修复/etc/fstab文件的挂载点位置。
本申请的实施例,还可以包括与修复模块220相连接的卸载模块230,配置为在修复模块220修复/etc/fstab文件的挂载点位置后,卸载根文件系统。
本申请的实施例,上述修复模块220包括获取单元221以及与获取单元221相连的修复单元222。获取单元221与挂载模块210相连,配置为挂载模块210挂载根文件系统后,获取所述内核引导参数中的root=参数。修复单元222配置为根据所述root=参数来修复所述/etc/fstab文件中的文件系统的挂载点位置。
上述获取单元221配置为根据/proc/cmdline文件获取所述内核引导参数中的所述root=参数。
上述修复单元222可以包括获取子单元22A和与获取子单元22A相连的替换子单元22B。获取子单元22A与获取单元221相连,配置为根据所述root=参数获取内核启动时作为根文件系统的设备。替换子单元22B配置为将该设备对应的设备号替换到所述/etc/fstab文件中挂载文件系统的硬盘分区,修复所述/etc/fstab文件中的文件系统的挂载点位置。
本申请的实施例采用内核引导参数中的root=参数来强制修复/etc/fstab文件的硬盘挂载分区的方式,来实现Linux操作系统时文件系统挂载失败的自动修复。从而即便文件系统挂载失败,也能够正常启动Linux操作系统。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (6)
1.一种Linux操作系统启动过程中挂载文件系统的方法,其特征在于,该方法包括:
当/etc/fstab文件中挂载的文件系统与内核引导参数中的硬盘分区不一致时,挂载根文件系统;
根据内核引导参数中的文件系统挂载点来修复/etc/fstab文件的挂载点位置;
其中,所述根据内核引导参数中的文件系统挂载点来修复/etc/fstab文件的挂载点位置,包括:
获取所述内核引导参数中的root=参数;
根据所述root=参数来修复所述/etc/fstab文件中的文件系统的挂载点位置;
其中,所述根据所述root=参数来修复所述/etc/fstab文件中的文件系统的挂载点位置,包括:
根据所述root=参数获取内核启动时作为根文件系统的设备,将该设备对应的设备号替换到所述/etc/fstab文件中挂载的文件系统的硬盘分区,修复所述/etc/fstab文件中的文件系统的挂载点位置。
2.根据权利要求1所述的方法,其特征在于,所述挂载根文件系统,包括:
采用读写方式挂载所述根文件系统。
3.根据权利要求1所述的方法,其特征在于,所述获取所述内核引导参数中的root=参数,包括:
根据/proc/cmdline文件获取所述内核引导参数中的所述root=参数。
4.根据权利要求1所述的方法,其特征在于,该方法包括:
修复所述/etc/fstab文件的挂载点位置后,卸载所述根文件系统。
5.一种Linux操作系统,其特征在于,该系统包括:
挂载模块,配置为当/etc/fstab文件中挂载的文件系统与内核引导参数中的硬盘分区不一致时,挂载根文件系统;
修复模块,配置为根据内核引导参数中的文件系统挂载点来修复/etc/fstab文件的挂载点位置;
其中,所述修复模块包括:
获取单元,配置为获取所述内核引导参数中的root=参数;
修复单元,配置为根据所述root=参数修复所述/etc/fstab文件中的文件系统的挂载点位置;
其中,所述修复单元包括:
获取子单元,配置为根据所述root=参数获取内核启动时作为根文件系统的设备;
替换子单元,配置为将该设备对应的设备号替换到所述/etc/fstab文件中挂载的文件系统的硬盘分区,修复所述/etc/fstab文件中的文件系统的挂载点位置。
6.根据权利要求5所述的系统,其特征在于:
所述获取单元配置为根据/proc/cmdline文件获取所述内核引导参数中的所述root=参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210359357.XA CN102902563B (zh) | 2012-09-24 | 2012-09-24 | Linux操作系统及其启动过程中挂载文件系统的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210359357.XA CN102902563B (zh) | 2012-09-24 | 2012-09-24 | Linux操作系统及其启动过程中挂载文件系统的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102902563A CN102902563A (zh) | 2013-01-30 |
CN102902563B true CN102902563B (zh) | 2016-07-13 |
Family
ID=47574809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210359357.XA Active CN102902563B (zh) | 2012-09-24 | 2012-09-24 | Linux操作系统及其启动过程中挂载文件系统的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102902563B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104049999A (zh) * | 2014-06-19 | 2014-09-17 | 福建星网视易信息系统有限公司 | 基于网络的存储设备自动修复系统及其方法 |
CN104123192A (zh) * | 2014-08-04 | 2014-10-29 | 浪潮电子信息产业股份有限公司 | 一种linux系统下基于内存子系统的性能调优方法 |
CN105094837A (zh) * | 2015-08-12 | 2015-11-25 | 上海爱数软件有限公司 | 引导计算机启动的方法、装置及启动引导介质的制作方法 |
CN106126382B (zh) * | 2016-06-29 | 2019-11-15 | 北京小米移动软件有限公司 | 识别文件系统错误的方法及装置 |
CN108197291B (zh) * | 2018-01-19 | 2022-01-11 | 北京小米移动软件有限公司 | 操作执行方法及装置 |
CN109032698B (zh) * | 2018-07-20 | 2021-07-13 | 郑州云海信息技术有限公司 | 一种Linux启动失败时Debug信息收集的方法及系统 |
CN110162429B (zh) * | 2019-05-27 | 2021-09-24 | 深圳市网心科技有限公司 | 系统修复方法、服务器及存储介质 |
CN112562774B (zh) * | 2020-12-14 | 2024-02-23 | 深圳市网心科技有限公司 | 存储设备挂载方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226477A (zh) * | 2007-01-16 | 2008-07-23 | 北京共创开源软件有限公司 | 一种适合移动应用的Linux操作系统的实现方法 |
CN101770386A (zh) * | 2010-03-08 | 2010-07-07 | 北京飞天诚信科技有限公司 | 一种Linux嵌入式系统的安全启动方法 |
US20100268927A1 (en) * | 2009-04-20 | 2010-10-21 | Adriaan Van De Ven | Booting An Operating System Of A System Using A Read Ahead Technique |
-
2012
- 2012-09-24 CN CN201210359357.XA patent/CN102902563B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101226477A (zh) * | 2007-01-16 | 2008-07-23 | 北京共创开源软件有限公司 | 一种适合移动应用的Linux操作系统的实现方法 |
US20100268927A1 (en) * | 2009-04-20 | 2010-10-21 | Adriaan Van De Ven | Booting An Operating System Of A System Using A Read Ahead Technique |
CN101770386A (zh) * | 2010-03-08 | 2010-07-07 | 北京飞天诚信科技有限公司 | 一种Linux嵌入式系统的安全启动方法 |
Non-Patent Citations (1)
Title |
---|
what"s the processing sequence for initramfs during boot;Andy Green;《https://lists.fedoraproject.org/pipermail/users/2007-september/000425.html》;20070908;第1页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102902563A (zh) | 2013-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102902563B (zh) | Linux操作系统及其启动过程中挂载文件系统的方法 | |
CN102637144B (zh) | 一种系统故障的处理方法和装置 | |
US8661418B2 (en) | Setting program, workflow creating method, and work flow creating apparatus | |
CN1858704A (zh) | 升级程序的方法 | |
CN103530162A (zh) | 一种虚拟机在线自动软件安装的方法及系统 | |
CN106776320A (zh) | 安卓智能终端自动化测试系统及方法 | |
CN104067226A (zh) | 代码变化的持续部署 | |
CN109739616A (zh) | 一种云平台容器镜像批量制作方法 | |
CN103970564A (zh) | 嵌入式操作系统自动修复升级功能的方法及其系统 | |
CN104536876A (zh) | 一种基于Android平台的自动升级测试方法及系统 | |
CN104536841B (zh) | 一种Android系统Data分区自修复方法及系统 | |
CN105824623A (zh) | 一种Android应用热修复的方法和装置 | |
CN101989220A (zh) | 压力测试方法 | |
CN103186400A (zh) | Web应用程序升级方法及系统 | |
CN105159718A (zh) | 固件升级方法及装置 | |
CN104391713A (zh) | 一种Windows系统自动安装方法 | |
CN104049999A (zh) | 基于网络的存储设备自动修复系统及其方法 | |
CN104182239A (zh) | 基于嵌入式Linux设备的文件系统升级方法及装置 | |
CN106897166A (zh) | 一种移动终端及其修复方法 | |
CN105426544B (zh) | 监控数据库状态的方法及装置 | |
CN106406962A (zh) | 基于arm的风力发电控制器远程升级失败可恢复的方法 | |
CN111949290B (zh) | 一种热补丁管理方法、装置、电子设备及存储介质 | |
CN107480061B (zh) | 一种基于Jenkins CI构建变化模块的自动化回归测试方法 | |
CN103177213B (zh) | 一种软件漏洞修复方法及系统 | |
CN103279334A (zh) | 一种android软件快速动态检测装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |