runlevel (启动级别):    查看命令 :who -r 或 runlevel

        0:halt 关机

        1:单用户模式,直接以管理员身份登录,不需要密码

        2:多用户模式,但是不能挂载nfs

        3:多用户模式

        4:保留未用

        5:图形界面

        6:reboot重启

    默认运行级别在/etc/inittab:

    id:3:initdefault:    默认为3

    我们知道bootloader有lilo、grub、spfdisk等,目前最常用的就是grub;

    grub是放在MBR中,但是MBR总共只有512Bytes,分区表占64Bytes,grub只能用到446Bytes

    grub被分为2个阶段:

        stage 1 :存放grub主程序

        stage 2 :主要配置文件,一般为/boot/grub/menu.lst ————> 其实是链接/boot/grub/grub.conf

来看一下grub.conf:

	default=0			#设定默认启动的title编号,读秒时间结束后,就会启动第一个title
timeout=5 #设置默认读秒为5秒,给用户选择
splashimage=(hd0,0)/grub/splash.xpm.gz #grub背景图片在磁盘的位置
hiddenmenu #隐藏菜单
password --md5 $1$ImLrM$VqU.vu9UCq.M7M.Q0hN6c1 #给grub设定密码
title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64) #内核标题,系统名等,可以修改
root (hd0,0) #内核所在的磁盘,(hd0,0)表示第一块盘,第一个分区
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=e39a2639-0c77-4b7e-8c6b-bb34bd658eb4
#内核文件及路径
initrd /initramfs-2.6.32-431.el6.x86_64.img
#虚拟根文件系统

当root用户密码忘记时,我们可以选择单用户模式来修改密码,但是什么人都可以重启然后进入单用户模式

    再就轻易的修改root密码,那是绝对不行的。所以我们可以给grub设置一个密码,先生成密码,然后再加到title上面那一行

	[root@Linux ~]# grub-md5-crypt
Password:
Retype password:
$1$ImLrM$VqU.vu9UCq.M7M.Q0hN6c1

我们可以尝试修复和安装一个grub:

	[root@Linux ~]# grub
grub> root (hd0,0) #判断内核在磁盘的位置
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0) #检查并修复grub
setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"... 27 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+27 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.

我们也可以尝试模拟grub引导加载内核:

先创建两个分区:/dev/hda1、/dev/hda2
[root@Linux ~]# mkdir /mnt/{boot,root} #创建两个目录,boot做引导区,root为根目录
[root@Linux root]# mkdir bin dev home proc sbin tmp var etc lib mnt root selinux sys usr
[root@Linux ~]# mke2fs -j /dev/hda1 #初始化磁盘为ext3格式
[root@Linux ~]# mke2fs -j /dev/hda2
[root@Linux ~]# mount /dev/hda1 /mnt/boot #分别挂载
[root@Linux ~]# mount /dev/hda2 /mnt/root
[root@Linux ~]# grub-install --root-directory=/mnt /dev/hda #安装grub指定安装目录
[root@Linux ~]# cp /boot/vmlinuz-2.6.18-194.el5 /mnt/boot/vmlinuz #将内核和虚拟根目录直接复制过来
[root@Linux ~]# cp /boot/initrd-2.6.18-194.el5.img /mnt/boot/
[root@Linux boot]# mv initrd-2.6.18-194.el5.img initrd-2.6.18-194.el5.img.gz #用file查看initrd文件类型并修改,再解压
[root@Linux boot]# gzip -d initrd-2.6.18-194.el5.img.gz
[root@Linux boot]# cpio -id <initrd-2.6.18-194.el5.img #再用file查看,用 cpio 解压
[root@Linux boot]# vim init #修改init,指定真的根目录,这一步本来是启动过程中,执行程序的结果
mkrootdev -t ext3 -o defaults,ro /dev/VolGroup00/LogVol00 ——> /dev/hda2
[root@Linux boot]# find . | cpio -H newc --quiet -o | gzip -9 > /mnt/boot/initrd.gz #改完后再用cpio压缩为initrd.gz
[root@Linux boot]# vim grub/grub.conf #配置自己的grub.conf
default=0
timeout=5
title Linux (LFL Computer)
root (hd0,0)
kernel /vmlinuz
initrd /initrd.gz
[root@Linux root]# cp /sbin/init /mnt/root/sbin #复制系统init和bash
[root@Linux root]# cp /bin/bash /mnt/root/bin
并用ldd命令查看他们所依赖的库文件,然后复制到/mnt/root/lib里面
[root@Linux ~]# chroot /mnt/root #测试
[root@Linux root]# vim etc/inittab #设置init配置文件
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
[root@Linux root]# vim etc/rc.d/rc.sysinit #设置默认运行环境
echo -e "Welcome to LFLong Computer "
/bin/bash
[root@Linux root]# chmod +x etc/rc.d/rc.sysinit

续  cpio 命令的用法:

cpio(copy in/out)主要是用来建立或者还原备份档的工具

        -i或--extract  执行copy-in模式,还原备份档。
        -d或--make-directories  如有需要cpio会自行建立目录
        -H<备份格式>  指定备份时欲使用的文件格式。
        --quiet  不显示复制了多少区块。
        -o或--create  执行copy-out模式,建立备份档。
        -c:使用旧ASCII备份格式;
            cpio -id < initrd-2.6.18-194.el5.img    #将该文件(输入重定向)还原
            find . | cpio -H newc --quiet -o | gzip -9 > /mnt/boot/initrd.gz    #将当前目录下所有文件已newc格式建立备份并压缩为.gz格式

将这个配置好的磁盘拿下来,装在别的没有系统的主机上,开机就会出现自己配置的界面了,这就是基本的开机过程。这只是一个简单的模拟,而真正的启动过程会比这个复杂很多值得我们去学习和研究。

参考:鸟哥Linux私房菜,马哥Linux教学视频。

Linux启动(续)的更多相关文章

  1. Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)

    启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬 ...

  2. Linux启动过程详解

    Linux启动过程详解 附上两张图,加深记忆 图1: 图2: 第一张图比较简洁明了,下面对第一张图的步骤进行详解: 加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的 ...

  3. Linux启动过程详述

    http://www.ibm.com/developerworks/cn/linux/kernel/startup/index.html Linux启动第1步:引导内核 Linux启动第2步:内核部分 ...

  4. linux启动流程及自定义gurb

    linux 启动流程 POST BIOS(boot sequence) 所选择的启动设备次序的MBR中是否有引导程序, ----> MBR(bootloader) 提供内核列表 -------& ...

  5. Linux启动与登陆环境

    linux启动流程 参考:http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html 加载内核,首先读入/boot 目录下的内核文件. ...

  6. linux启动流程

    看了深入理解linux内核一书的最后对linux启动流程的介绍,下面就把我能理解的写一下吧: bios(硬件加电自检POST,寻找第一个启动设备) the boot loader(可以从硬盘启动也可以 ...

  7. Linux 启动过程分析

    本文仅简单介绍Linux的启动过程,在此基础上做简要的分析.对于Linux启动过程中内部详细的函数调用不做介绍,只是希望本文能给新手起到一个抛砖引玉的作用,以便深入研究Linux的启动过程.下图基本展 ...

  8. [转载] Linux启动过程详解-《别怕Linux编程》之八

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket.为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. = ...

  9. python实现Linux启动守护进程

    python实现Linux启动守护进程 DaemonClass.py代码: #/usr/bin/env python # -*- coding: utf-8 -*- import sys import ...

  10. Linux启动盘制作

    1.下载Universal-USB-Installer软件,在电脑上插入空U盘,打开软件,依下列所示步骤进行 2.点击同意 3.点击版本选择框,会出现它支持的系统镜像文件的版本,包括win7.win8 ...

随机推荐

  1. 使用Java8提供的Duration类制作字幕时间轴调整工具

    网上下载的字幕有时和片源的时间轴不一致.我们能够自己写一个工具来调整,也就是总体向前移动几秒,或者向后移动几秒.Java8中提供的Duration类使得这样的时间计算极其方便.以下就以最简单的srt字 ...

  2. html5的代码验证

    http://html5.validator.nu/ http://validator.w3.org/#validate_by_uri

  3. 在VPS上用Outline Manager 建立*** 增强版服务器

    在VPS上用Outline Manager 建立*** 增强版服务器 原文 https://free.com.tw/google-outline/ Outline 是Google Jigsaw的一款开 ...

  4. HDU 5358 First One 数学+尺取法

    多校的题,摆明了数学题,但是没想出来,蠢爆了,之前算了半天的s[i][j]的和,其实是积.其实比赛的时候我连log(s[i][j])+1是s[i][j]的位数都没看出来,说出来都丢人. 知道了这个之后 ...

  5. azkaban(安装配置加实战)

    为什么需要工作流调度系统 一个完整的数据分析系统通常都是由大量任务单元组成:shell 脚本程序,java 程序,mapreduce 程序.hive 脚本等 各任务单元之间存在时间先后及前后依赖关 ...

  6. 轻松掌握Ubuntu Linux的3D桌面快捷键使用

    视频下载地址: http://115.com/file/be4n23v6#linux3d.rar 轻松掌握Ubuntu Linux的3D桌面快捷键使用 高级3D桌面展示 本文出自 "李晨光原 ...

  7. Linux下Rootkit的另类检测

     Linux下Rootkit的另类检测 当黑客获取管理员权限时,首先是抹掉入侵系统的相关记录,并且隐藏自己的行踪,要实现这一目的最常用的方法就是使用Rootkits,简单的说,Rootkits是一种经 ...

  8. sqlserver自定义函数(标量值函数,表值函数)

    用户自定义的函数有两类:表值函数.标量值函数. 表值函数:返回值是数据表的函数 调用方式 select  b.*  from tableA a accross apply Fun_BiaoZhiFun ...

  9. React开发实时聊天招聘工具 -第一章

    第一章 课程道学 6个页面 弱化css Antd-mobile作为组件库 Redux 状态管理 React-Router 路由 Axios异步请求 后端Express框架 Socket.io 数据库: ...

  10. javaScript 预编译过程浅尝

    javaScript 预编译过程 1.创建AO对象(Activation Object) AO{ a: } 2.找形参和变量声明,将变量和形参作为AO属性名,值为undefined AO{ a:und ...