系统简单启动过程

BIOS(启动顺序)--》读取硬盘mbr--》加载grub--》加载vmlinuz和initramfs--》读inittab--》读fstab---》启动各个服务(按照inittab里定义的级别)--》rc.local--》如果是5级别,启动图形--->系统登录(passwd,shadow)

具体排错实例(mbr丢失如何排错):

mbr(master boot loader主引导记录,在硬盘最前面的512字节)446(启动设备)+64(分区信息)+2(结束位)

mbr丢失,现象:启动时候黑屏,左上角一个光标在闪(或者直接就进入到了第二或第三的启动顺序,由光驱或网络进入了系统安装界面)

最好使用一个虚拟机来做此实验

第一步:

dd if=/dev/sda of=/mbr.bak bs=1 count=512 --备份mbr

第二步:

把备份scp拷到别的机器或者移动存储设备(我这里使用scp拷贝到我的宿主机,过程省略)

第三步:

模拟干掉mbr

dd if=/dev/zero of=/dev/sda bs=1 count=512 --干掉mbr

做完第三步后的现象

fdisk -l 查看不到分区信息

reboot后,系统进不了,黑屏,并且一个光标在闪(BIOS里只有硬盘启动,没有光驱,网络启动的情况下才会这样。否则就进入了第二启动顺序引导)

第四步:

按前面总结的方法:先尝试单用户模式,再使用rescue模式.但现在mbr丢失的现象是grub都看不到,所以也不可能进入单用户模式了,只能使用rescue模式

第五步:

--按完continue后,这里出现了“分区表不可访问,是否重新擦除所有硬盘上的信息"的提示;所以这里按no,进入到了挽救模式;但是这里原系统没有挂载到/mnt/sysimage上,并且fdisk -l查看不到分区,ls /dev/可以看到分区名,但挂载不了;也就是说找不到以前的mbr备份,无法恢复

--注意:rhel6.5里如果按continue,会报找不到disk(因为mbr丢失的原因,其它的错误,选择continue是正常的),无法进入到挽救模式的命令行模式;可以按skip,就可以进入到命令行模式

--所以,mbr备份到U盘这种外接设备,现在就可以挂载进行恢复

dd if=/path/mbr.bak of=/dev/sda

--或者进入带网络的挽救模式,通过网络拷过来进行恢复;但要在临时系统使用scp远程拷过来,因为它本身没有ssh服务,但可以使用scp使用别人的ssh服务。

============================================================================

实践练习:

使用一个硬盘12G以上大小的虚拟机安装排错系统,桥接网络(基于rhel6.5版本):

获取服务器IP:172.16.2.9

安装名:troubleshooting

最终实现登录进系统,安装图形,无错误,还要要求能够上外网,并能被ssh连接

文件/etc/securetty

如果一个os,没有yum,没有rpm,连gcc这种都没有(表示你没办法源码编译),那么你怎么装包上去?

答案:

rpm --root=/xxx

yum --installroot=/xxx

rm -rf /root/anaconda-ks.cfg

rm -rf /bin/mount

rm -rf /usr/bin/yum

rm -rf /boot/grub/grub.conf

rm -rf /etc/fstab

rm -rf /usr/bin/nautilus

rpm -e --nodeps rpm-4.8.0-37.el6.x86_64

echo "echo 123 |passwd --stdin root &> /dev/null" >> /root/.bash_profile

echo "export PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/root/bin" >> /root/.bashrc

sed -i ‘s/sda/sdb/‘ /boot/grub/device.map

sed -i ‘/^export/d‘ /etc/profile

sed -i ‘/^host/s/dns//‘ /etc/nsswitch.conf

chmod o-t /tmp

chmod 000 /

echo "* * * * * root wall ‘haha‘" >> /etc/crontab

echo "01 * * * * /sbin/init 0" >> /var/spool/cron/root

sed -i ‘12aport 222‘ /etc/ssh/sshd_config

echo "TMOUT=30" >> /root/.bashrc

echo "find me @[email protected]" >> /etc/motd

sed -i ‘/^root/s/bin/in/g‘ /etc/passwd

sed -i ‘5asleep 100‘ /etc/rc.d/init.d/network

sed -i ‘1s/yes/no/‘ /etc/sysconfig/network

sed -i ‘20s/fi/hahahaha/‘ /etc/profile

mv /lib64/libselinux.so.1 /lib64/libselinux.so.1.bak

echo "/sbin/init 6" >> /etc/rc.local

chattr +i /etc/rc.d/rc.local

chattr +i /etc/passwd

chattr +i /etc/shadow

chmod u-s /usr/bin/passwd

echo "tty2" > /etc/securetty

echo "sshd: all" > /etc/hosts.deny

rm -rf /etc/sysconfig/network-scripts/ifcfg-eth0

dd if=/dev/zero of=/dev/sda1 bs=1 count=1024 seek=1024

rm -rf /root/cobbler.ks

rm -rf /root/*

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

rhel6下vnc基本配置

方法一:

# vino-preferences --此命令打开图形界面进行配置(但这个需要公网网络稳定才能运行稳定)

方法二:

# vncpasswd --设置密码,默认保存到/root/.vnc/passwd

Password:

Verify:

# x0vncserver --PasswordFile=/root/.vnc/passwd --AlwaysShared=on --AcceptKeyEvents=off --AcceptPointerEvents=off &

原文地址:https://www.cnblogs.com/skyzy/p/9201256.html

时间: 2024-11-08 00:54:25

系统简单启动过程的相关文章

Android内核开发:图解Android系统的启动过程

本文是<Android内核开发>系列的第六篇文章,前面的几篇文章介绍了Android内核开发相关的基础知识,包括:Android源码的下载.版本和分支介绍.编译和烧写等等,从本文起就要开始真正地进行Android内核的学习及实战了. 学习任何软硬件系统,研究系统启动过程都是一种非常有效地起步手段,搞Android内核开发也不例外.网上有很多文章对Android启动相关代码进行分析和走读,大家可以先搜索阅读一下,我个人更喜欢更加直观的方式去理解未知的东西,包括图.表.系统输出的log信息等等,因

Android系统的启动过程

当我们拿到一台Android的智能手机,从打开开关,到我们可以使用其中的app时,这个启动过程到底是怎么样的? 系统上电 当给Android系统上电,CPU复位之后,程序指针会指向启动地址,从该地址读取启动程序的可执行代码直接运行,或者将可执行代码与数据载入CPU内置的RAM中再运行. CPU复位,其实就是在电源接通的瞬间,CPU内的寄存器和各引脚均会被置为初始状态,并将程序指针指向引导程序的位置. 这一段代码,放在PC中,叫做BIOS,而在Android等嵌入式系统中就叫做Bootloader

Linux 系统的启动过程

阅读目录 Linux 系统启动过程 内核的引导 运行init 运行级别 系统初始化 建立终端 用户登录系统 图像模式与文字模式的切换 Linux的关机 当我们在启动Linux操作系统时,会显示出硬件自检以及很多的启动信息,包括启动失败的我们都一目了然! 在Centos 5.x版本上是可以完全可以看见硬件自检以及启动信息的 在Centos 6.x版本上只显示进度条,只需要按F4 或者 root用户修改 /boot/grub/grub.conf 文件 vim /boot/grub/grub.conf

003---Linux系统的启动过程

Linux系统的启动过程 按下电源 开机自检(BIOS):检查cpu.内存.硬盘是否有问题 MBR引导 GRUB菜单 加载内核(kernel) 运行 INIT 进程(linux系统里面的第一个进程) 读取/etc/inittab配置文件(运行级别) 执行初始化脚本/etc/rc.d/rc.sysinit,设置主机名.设置IP地址 根据系统的运行级别,在开机的时候启动不同的软件 启动 mingetty 进程 原文地址:https://www.cnblogs.com/xjmlove/p/103526

LinuxL:系统的启动过程

Linux系统的启动过程 过程 通电-> BIOS-> LILO/GRUB-> Kernel Boot-> init->rc.sysinit init->rc ->mingetty->login-> shell-> 完成开机 Linux系统的运行级别 运行级别 Linux 为了适应不同用户对服务的启动配置要求,设置了七种不同的运行级别: 运行级别 0:关机模式.poweroff.target 运行级别 1:单用户模式,仅用于 root 用户对系统

详解linux系统的启动过程及系统初始化

一.linux系统的启动流程 关于linux系统的启动流程我们可以按步进行划分为如下: POST加电自检 -->BIOS(Boot Sequence)-->加载对应引导上的MBR(bootloader)-->主引导设置加载其 BootLoader-->Kernel初始化-->initrd—>/etc/init进程加载/etc/inittab,其进程流 程图如下: 二.剖析详细启动过程 ⑴. POST开机自检:电脑主机打开电源的时候,随后会听到滴的一声,系统启动开始了开机

linux系统的启动过程简要分析

接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程:一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下几步:1)开机BIOS自检,加载硬盘.2)读取MBR,进行MBR引导.3)grub引导菜单(Boot Loader).4)加载内核kernel.5)启动init进程,依据inittab文件设定运行级别6)init进程,执行rc.sysinit文件.7)启动内核模块,执行不同级别的脚本程序.8)执行/

Linux系统在启动过程中启动级别发生错误的解决办法

一.系统启动级别一共有六个: 0:系统停机模式,系统不可以正常启动 1:单用户模式, root权限,用于系统的维护,禁止远程登陆 2:多用户模式,没有NFS网络支持 3:完整的多用户文本模式,有NFS,登陆后进入控制台命令行模式 4:系统未使用,作为保留一般不用 5:图形化模式,登陆后进入GUI模式 6:重启模式,默认级别不能为6,否则不能正常启动 示例:若我们设置默认模式为poweroff.target,则在开机的时候会出现启动关机死循环状态 使用reboot命令后,会出现如下情况:(停在该位

系统开机启动过程

legacy boot启动方式,也叫旧的老的启动方式,那么Legacy BIOS Boot是如何启动或引导的? 当系统首次引导时,或系统被重置时,处理器会执行一个位于已知位置处的代码.这个位置在基本输入/输出系统(BIOS)中.CPU会调用这个重置向量来启动一个位于闪存/ROM中的已知地址处的程序.通常,它执行一个启动自测(POST)来检查机器.最后,它从引导驱动器上的主引导记录(MBR)加载第一个扇区. 引导程序就位于MBR第一个扇区里面.此时引导程序就被装入RAM并执行.这个引导加载程序在大