启动流程排错,自制linux内核,编译内核

CentOS 6启动流程:

POST –> Boot Sequence(BIOS) –> Boot Loader –> Kernel(ramdisk) –> rootfs–> switchroot–> /sbin/init–>(/etc/inittab, /etc/init/*.conf) –> 设定默认运行级别–> 系统初始化脚本rc.sysinit–> 关闭或启动对应级别的服务–> 启动终端

grub legacy

配置文件:/boot/grub/grub.conf<–/etc/grub.conf

ls /dev/loop* loop设备可以通过内核参数可以修改

blob.png

rhgb  quiet 删除了可以跳过图形界面直接看到启动信息

blob.pngloop设备数目可以增加

grub-md5-crypt

centos 需要输入两遍

blob.png可以为grub生成一个md5的加密密码

password –md5

blob.png可以生成一个启动口令

openssl passwd -1 1表示md5加密

blob.png也一样可以生成一个MD5加密密码

openssl passwd -salt "盐" -1  指定盐加密

blob.png可以发现只要指定一样的盐加密,一样的密码会显示一样。

cat /proc/cmdline 查看生效的内核参数

blob.png

/boot/grub/grub.conf 如果开机配置文件损坏了,或者没有,可以通过自己配置路径开机

kernel (hd0,0)/vmlinuz-2.6.32-642.216.x86_64 root=/dev/sda2   内核

initrd (hd0,0)/initramfs-2.6.32.e16.x86_64.img  配置文件

boot

blob.png跟/etc/grub.conf的文档一样

更改开机菜单背景

yum -y insyall ImageMagick

convert -resize 640×480 -colors 14 win.jpg win.xpm

gzip win.xpm

cp win.xpm /boot/grub

cim /boot/grub/grub.conf

破坏了系统启动文件 1到1.5阶段

方法一:

grub-install

chroot /mnt/sysimage/

grub-install /dev/sda 可以修复1与1.5阶段

分区表信息grub修复不了

dd if=/dev/zero of=/dev/sda bs=1 count=446 破坏1阶段

blob.png

hexdump -C -n 512 /dev/sda

blob.png可以发现数据已经被破坏

QQ图片20160913193500.png重启之后发现已经进入不了系统,选择救援模式

启动流程排错,自制linux内核,编译内核chroot /mnt/sysimage/

blob.png切换回主目录操作

grub-install /dev/sda 可以修复1与1.5阶段

注意:分区表信息grub修复不能

blob.png

方法二:

dd if=/dev/zero of=/dev/sda bs=512 count=2 seek=1 破坏1.5阶段

hexdump -C -n 1024 /dev/sda

只能手动光盘引导,救援模式

grub

grub> root (hd0,0)

grup> steup (hd0) 使用交互模式救援

如果备份文件被破坏了就只能用方法一 grub-install 。因为方法二是依赖与备份文件修复。

blob.png因为我上面就已经将错误修复了,所以第二部检查出没问题

在进单用户模式 : 在读条页面按Esc 跟住a 进入后输入1

单一服务出错,可以跳过该服务启动  

ll -Z /sbin/init

blob.png

seliux=0

chkconfig –list certmonger

blob.png

chkconfig certmonger off 启动就不会再加载这个服务

blob.png

如果内核和配置文件损坏了

光盘挂载修复

blob.png

mount /dev/cdrom /mnt/cdrom

blob.png

cd /mnt/cdrom/isolinxu/

blob.png

cp vmlinuz /mnt/sysimage/boot

blob.png

chroot /mnt/sysimage

mkinitrd /boot/initromfs-`uname`.img `uname -r`

blob.png

网络救援

chroot /mnt/sysimage/  

scp 10.1.0.1:/boot/vmlinuz* /boot/  利用scp去其它源拷贝回来一份相同的文件

scp 10.1.0.1:/boot/initramfs* /boot/

前提时候版本号一样,将目标的文件拷贝到目录下

reboot

删除/boot

rm -rf /boot/

dd if=/dev/zero of=/dev/sda bs=1 count=446 破坏1阶段

rescue 进入救援模式

mount /dev/cdrom /mnt/cdrom

QQ图片20160912200857.png

rpm -ivh /mnt/cdrom/Packages/kernel-2.6..rpm –root=/mnt/sysimage –replacepkgs 安装回内核

QQ图片20160912201057.png

chroot /mnt/sysyimage

grub-insyall /dev/sda

QQ图片20160912201212.png

删除了/ect/fstab,/boot/,

blkid;fdisk -l

mkdir /mnt/sda2

mount /dev/sda2 /mnt/sda2

vi /mnt/sda2/ect/fstab  重写一个分区表信息,可以暂时先写主分区信息,等进入系统再进行保全。

/dev/sad1 /boot ext4 defaults 1 1

/dev/sda2 /     ext4 defaults 1 2

reboot 等系统自己挂载

mkdir /mnt/cdrom

mount /dev/cdrom /mnt/cdrom

QQ图片20160912200857.png

chroot /mnt/sysyimage

rpm -ivh /mnt/cdrom/Packages/kernel-2*.rpm –replacepkgs | force   重新安装回内核

QQ图片20160912201057.png

grub-install /dev/sda

QQ图片20160912201212.png修复回1到1.5段的引导信息

vim /boot/grub/grub.conf

default=0

timeout=3

title zczxlinux

root (hd0,0)

kernel /vmlinuz-2.6.32-642.e16.x86_64  root=/dev/sda2

initrd /initramfs-2.6.32-642.e16.x86_64

blob.png重写引导信息

逻辑卷需要

lvscan 扫描磁盘

vgs

vgchange -ay 激活所有逻辑卷

mount /dev/vg0/root /mnt/sysimage

vi /mnt/sysimage/etc/fstab

/dev/sad1 /boot ext4 defaults 1 1

/dev/vg0/root / ext4 defaults 1 2

/dev/vg0/usr /usr ext4 defaults 0 0

/dev/vg0/var /var ext4 defaults 0 0      重写引导信息,因为逻辑分区所以需要写上/usr,/var,/root等

QQ图片20160912200556.png

reboot 还是等系统自己挂载

下面过程差不多

rpm -ivh     安装回内核

grub-install /dev/sda    修复1到1.5段引导信息

vim /boot/grub/grub.conf   添加回引导信息,root=路径要加上逻辑卷

root=/dev/vg0/root

自制Linux系统

lsblk

blob.png新添加一个硬盘来做实验,发现系统还没有检出

echo "- – -"> /sys/class/scsi_host/host0/scan 

echo "- – -"> /sys/class/scsi_host/host2/scan  生产环境注意使用

blob.png

fidsk /dev/sdb 分两区 boot /

blob.png

mkfs.ext4 /dev/sdb* 

blob.png

mount /dev/sdb1 /mnt/boot

blob.png

cp /boot/vmliuz-2… /boot/initramfs-2.6…img /mnt/boot

blob.png

grub-install /dev/sdb –root-directory=/mnt  

blob.png将引导信息写入/dev/sdb中

hexdump -C -n 512 -v /dev/sdb

blob.png可以查看到已经有数据写入了

cd grub

vim grub.conf

default=0

timeout=3

title zczxlinux

root (hd0,0)

kernel /vmlinuz….  root=/dev/sda2 selinux=0 init=/bin/bash

initrd /initramfs..

blob.png

mkdir /mnt/sysroot

mount /dev/sdb2 /mnt/sysroot

blob.png

cd /mnt/sysroot/

mkdir -pv {bin,etc,sbin,dev,lib,lib64,proc,sys,tmp,root,home,usr,var,mnt,media}

blob.png

vim /mnt/sysroot/etc/fstab

/dev/sda1  /boot  ext4 defaults 1 1

/dev/sda2   /     ext4 defaults 1 2

blob.png

/root/copycmd.sh

bash,vim,cat,ls,ifconfig,poweroff,df,rpm,mount,umount,hostanme,reboot.

blob.png

chroot /mnt/sysroot

blob.png切换进去,

blob.png要使用的时候只需将文件拷贝过去读取就可以使用

编译内核

编译内核 (可以添加未开启的功能板块)

rpm -qi kernel

ntsysv  可以打开关闭指定功能模块

/boot/kernel  

/lib/modules

实现完全定制的内核功能

cd /boot

config-3.1…. 里面有服务配置

www.kernel.org  下载内核

yum grouplist

yum -y groupinstall "Development Tools"

uname -r  查看内核版本

lscpu 查看CPU

tar xvf linux-3.18..tar.xz -C /usr/src  将内核解压到/usr/src

ls /sur/src

ln -s linux-3.18.41/ linux 创建软连接,方便下次进入

cd linux

du -sh

cp /boor/config-3.10.0.. /usr/src/linux/.config  将原本的模板拷贝到指定的目录,而且需要命名为.config  因为编译的时候会默认读取这个文件

ll /usr/src/linux/.config

cd /usr/src/linux  菜单打开需要进入这个路径

yum -y install "*curses*"

make menuconfig  打开菜单等于修改.config 

默认64内核

通用设置

Local version  版本号

回车

-1.0-zczxlinux  加入版本号

名字带箭头的表示有子项目

make -j 4 (4核心)开始编译

du -sh /usr/src/linux-3.18

cd /lib/modules

cd /usr/src/linux

make modules_install  拷贝内核模块文件

make install

lsmod 查看已经安装的模块

blob.png

lsmod |grep ext4

blob.png

locate ext4.ko 查找模块路径

blob.png

rmmod e1000 卸载模块

modprobe usb-strage 启动模块

modinfo -n usb-storage.ko 显示模块路径

lsmod |grep -i ext4 可以看到ext4依赖的文件

blob.png

depmod命令:

内核模块依赖关系文件及系统信息映射文件的生成工具(容易破坏其他文件的依赖性,使用时候要注意使用)

做路由器时候开启

cat /proc/sys/net/ipv4/ip_forward

blob.png0表示未启用

vim /etc/sysctl.conf 

格式用.代替/

可以直接修改上述文件: echo 1 > /proc/sys/net/ipv4/ip_forward

把文件的内容由0修改为1。禁用IP转发则把1改为0。

上面的命令并没有保存对IP转发配置的更改,下次系统启动时仍会使用原来的值,要想永久修改IP转发,需要修改/etc/sysctl.conf文件,修 改下面一行的值: net.ipv4.ip_forward = 1 

sysctl -p 重读配置文件

sysctl -w net.ipv4.ip_forward=0 相当于改内存

sysctl -a 可以看所有启用的

blob.png

原创文章,作者:swzczx,如若转载,请注明出处:http://www.178linux.com/46112

(0)
上一篇 2016-09-20 19:03
下一篇 2016-09-20 21:14

相关推荐

  • 一张图认识开源世界

    开源精神:自由,创新,团结,互助,友爱,积极,进取。在开源环境下也产生了很多优秀的软件,让我们通过一幅图认识一下开源世界里的大咖们! 看图识物     墙上挂的牛头:伟大的开源计划GNU Wiki:http://zh.wikipedia.org/zh-cn/GNU     墙上日历上的信封标志:经典的linux下的邮件…

    Linux干货 2015-03-20
  • Shell脚本编程3

    Shell脚本编程3  一、杂项知识整理 1、select与case select是个无限循环,因此要记住用break命令退出循环,或用exit命令终止脚本。也可以按ctrl+c退出循环,自动生成数字的选择项,适合创建菜单。 select经常和case联合使用。与for循环类似,可以省略in LIST,此时使用位置参量$1、$2等传递参数。 cas…

    Linux干货 2016-08-19
  • 网络23期心得

    1、描述计算机的组成及其功能 计算机系统是由五大部分组成:运算器、控制器、存储器、输入设备、输出设备   运算器(Datapath):运算器的功能是对数据进行各种算术去处和逻辑运算,即对数据进行加工处理。   控制器(Control):控制器是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、…

    Linux干货 2016-09-19
  • 磁盘管理的补充及扩展

    磁盘管理的补充及扩展 挂载点和/etc/fstab(配置文件) 使用mount命令挂载为临时挂载开机重启后就会自动卸载,为了永久挂载必须写在配置文件中! 配置文件系统体系  被mount、fsck和其它程序使用  系统重启时保留文件系统体系  可以在设备栏使用文件系统卷标  使用mount  -a 命令挂载/etc/fstab中的所有文件系…

    Linux干货 2016-08-30
  • Linux 别名与二进制的使用。

    二进制 一般二进制这个名词听上去高深莫测,然而当你了解它之后其实并不复杂,在计算机里处理数据一般都是由二进制处理。 平时我们计数都是以10为进制,比如平时数数:1、2、3、4、5、6、7、8、9,数到10时就会导致个位变成0,十位变成了1,因为9+1要向十位进一,十进制意味着数字的每一位最小为0,最大为9。同理,二进制意味着数字的每一位最小为0,最大为1,十…

    Linux干货 2017-05-20
  • Linux磁盘和文件系统管理进阶(swap、磁盘配额、RAID、LVM、btrfs)

    概述:     上篇已经介绍了一些磁盘和文件系统管理的基础概念,对磁盘的硬件构造,文件系统的基础概念部分有了一个大致的了解。本篇就分享一些关于磁盘和文件系统管理的一些高级应用,具体包含:     1、swap交换分区的管理     2、挂载…

    Linux干货 2016-08-30

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-23 12:04

    写的很细哦,每张图片都有说明,很用心,赞一个。