记因内核版本错误形成U盘不可能辨识的主题材料化解,Linux之系统运营流程

By admin in 美高梅手机版4858 on 2019年4月21日

U盘插上计算机,开采未有自动挂载。然后运转sudo fdisk -l一看,开采并从未U盘所对应的设备,也正是U盘不能够分辨了!在此以前未有在Linux上蒙受那种难点,通过查资料得知,要甄别U盘,供给装载usb-storage模块。

自己说的不显著是不利的,却是那样精晓的

Linux系统运转流程、grub修复、模块管理及基本参数设定

runlevel, who -r , chkconfig ,grub ,grub-install , mkinitrd , dracut ,sysctl ,lsmod ,modinfo , modprobe , depmod , insmod ,rmmod

于是,运行lsmod | grep usb意识真正未有usb-storage模块。

基本的基本功能

  • 经过管理
  • 内存管理
  • 文件系统
  • 互连网管理
  • 平安治本
  • 驱动程序
  • ……

l
要求:

Linux系统的组成都部队分
  • ###### kernel

    • /boot/vmlinuz-VERSION-RELEASE
  • ###### initrd

    • Centos 5 : /boot/initrd-VERSION-RELEASE.img
    • Centos 6/7 : /boot/initramfs-VERSION-RELEASE.img
  • ###### filesystem

  • ###### 模块文件

    • 一般存放于/lib/modules/$(uname -r)/目录下

为了认清U盘是还是不是物理磨损导致系统无法“感知”U盘的存在,运维命令sudo udevadm monitor --udev,发掘U盘插拔时有反应。

计算机的起步流程

POST –> BIOS –> MBR –> kernel –> initrd –>
(ROOTFS)/sbin/init

剪裁一个装载有网卡驱动能够上网并且利用到init的2个小系统

水源的宏图流派
  • 单内核设计
    • 把持有机能集成于同2个程序中,当中linux就是以单内核设计
  • 微内核设计
    • 每种作用接纳3个独门的子系统达成,种种子系统通讯需有特殊的建制来兑现,个中winodows、solaris的基础设计方法就为微内核。

下一场运营sudo modprobe usb-storage尝试装载usb-storage模块,结果报错:

详解运行进度

  1. 硬件自检(POST)
    Computer通电后自检硬件是或不是满意运维的主干条件(有未有不通或许道具故障等张冠李戴),那叫做“硬件自检(Power-On
    Self-Test),缩写为POST”,如硬件现身难点会产生滴滴声,借使没反常将展现主板或硬件商家音讯

  2. BIOS 引导
    自检实现后POST将调整权交由BIOS,BIOS读取固化在主板上ROM芯片上的主次,它能够从CMOS中读写系统的安装和用户自定义的启航消息运转有1项正是开发银行顺序(Boot
    Sequence)

  3. MBR(bootloader)
    BIOS依据运营程序加载第3个运维项(假若第二个运营项运维退步不会自动运转第二个),接着加载三个硬盘的MB逍客上的bootloader,每一个硬盘的前516个字节是MB索罗德音讯(第三个扇区),前4四四个字节是主指点记录,后6十八个字节是分区表音信

  4. kernel & initrd(加载内核)
    MB帕杰罗依照主指点记录指点分区后加载内核,内核在加载的时候只怕要求加载当前硬盘的驱动,但是驱动却在文件系统中存放,假若要加载文件系统又要先挂载驱动(有点绕),正是在转圈圈。这年就须要initrd了,他是二个运作在内部存款和储蓄器中的文件系统(那种毫无驱动吧),系统在设置落成后决然知道当前文件系统类型,之后生成initrd,内核运营,硬件探测完成,内核参数隐射文件达成,加载驱动,切换来实在的文件系统

  5. 执行init 程序
    基本初叶化完毕,推行系统服务,用户自定义脚本,配置情状变量,自此操作系统运行完结

l
准备;

Linux内核的风味
  • 单内核设计
  • 扶助模块化(.ko的文书,[]kernel object])
  • 扶助模块运维时动态装载或卸载
  • 基本能够将使得模块恐怕功效模块编写翻译进基本,由基本开端化直接加载成功
modprobe: FATAL: Module usb-storage not found in directory /lib/modules/4.14.48-2-MANJARO

Linux 内核

虚拟机,centos6.4

linux运营流程暗暗表示(内核空间—用户空间)
  • ###### 内核空间

    • POST—>BootSequence(BIOS)—>bootloader(MBPRADO)—>kernel(ramdisk)
      —>rootfs(只读情势挂载)—> /sbin/init
  • ###### 用户空间:

    • /sbin/init(/etc/inittab) –> { id:#:initdefault: –>
      si::sysinit:/etc/rc.d/rc.sysinit –> l#:#:wait:/etc/rc.d/rc
      # –>
      /etc/rc.d/rc#.d/[一、起初S早先的劳动;2、甘休K开始的劳动]}–>/etc/rc.d/rc.local

      • 在意:以上{}中,表示在/etc/inittab文件中成就的手续。

查看/lib/modules/目录:

基本的宏图风格
  • 单内核:将广大模块服务作用于内核中,内核大(自行检索性情)
    linux属于单内核,不过她却又有微内核的性状,他将需求编写翻译的模块成效编写翻译进基本,将非必须求的模块运营后动态加载进基本

内核模块地点/lib/modules/"内核版本号命名的目录"

  • linux 单内核(十二线程帮忙较差)

    • 核心 + ko(kernel object)内核模块
  • 微内核:各样劳动动态加载插入,内核小

    • windows是微内核
    • solaris 微内核

l
步骤;

根本空间开发银行步骤

$ ls /lib/modules 
4.14.40-rt30-MANJARO  extramodules-4.14-MANJARO
4.14.52-1-MANJARO     extramodules-4.14-rt-MANJARO
基础的整合
  • 核心:/boot/vmlinuz-version
  • 内核模块(ko;kernel object):/lib/modules/version

一、在宿主机上加多壹块硬盘,并为其设置grub

壹、POST加电自检

  • 当按主机电源键,Computer主板通电,并完结已下操作:
    • 加载Bios中的ROM中的程序,来检查实验各样硬件装置

发觉并未4.14.48-2-MANJARO。在Manjaro设置管理器里查看内核:

Kernel起头的历程
  • 设施探测
  • 使得早先化(或者会用initrd(initramfs)文件中装载驱动模块)
  • 以只读格局挂载根文件系统
  • 装载第贰个进度(PID:一)

init程序(/etc/inittab安排文件)

Redhat六:init程序唯有一行,别的的文本以*.conf在/etc/init目录下存放

美高梅手机版4858 1

centos6.jpg

Redhat伍:init配置都存放这一文书中,运行脚本

美高梅手机版4858 2

centos5.jpg

一.
在宿主机上增添一块硬盘,那里丰盛的是sde这块硬盘。

Bios : Baisc input and output system

美高梅手机版4858 3

init文件及布局文件

/sbin/init:(/etc/inittab)只是一个程序,两个公司计划开采

  • upstart:有ubuntu开发,d-bus,event-driven
  • systemd:多道并行运维

upstart运营init程序配置文件格式

美高梅手机版4858 4

init伍 配置文件格式.jpg

冒号隔绝的多少个段
idrunlevelsactionprocess

  • id:标记符,只要不跟别的行同样就行
  • runlevels:在哪个等第运维
  • action:在如何情形下实践
    • initdefault:设置暗中认可运营品级
    • sysinit:系统开始化
    • wait:等待等第切换至此品级时实行
    • powerfail:断电时施行
    • powerokwait:来电时试行
    • respawn:一旦程序终止重新开动
  • process: 要运维的主次

2.
施用fdisk为sde分四个区,sde一 (拾0M)  sde2(二G)

2、BootSequence

  • 按bootsequence的起步列表,查找MBLacrosse或UEFI的运动设施。

意识目前基础版本为4.14.52-1。但是,运行uname -r却显得内核版本为4.14.48-2-MANJARO。那也难怪modprobe会到/lib/modules/4.14.48-2-MANJARO目录下来找usb-storage模块。

系统初叶化脚本/etc/rc.d/rc.sysinit大概
  1. 激活udev和selinux
  2. 根据/etc/sysctl.conf文件,来设定基本参数
  3. 设定系统机械钟
  4. 装载键盘映射
  5. 起头交换分区
  6. 设置主机名
  7. 根文件系统一检查测,并以读写格局重新挂载
  8. 激活RAID和LVM设备
  9. 运转磁盘配额
  10. 根据/etc/fstab,检查并挂载其文件系统
  11. 理清超时的锁和PID文件

三.
开立目录/mnt/boot  
 /mnt/sysroot

3、Bootloader

  • 找到MBRAV4后查找携带加载器(bootloader程序),读取mbr中的bootloader,加载boootloader中的grub程序

透过查询modprobe的manpage,开采能够钦定版本。运转sudo modprobe --set-version=4.14.52-1-MANJARO usb-storage,U盘终于自动挂载了!

运作品级(0-陆)

起始服务区别

  • 0:halt
    关机
  • 1:single user mode
    直接以管理员身份切入,类似windows安全形式(单用户格局)
  • 2:multi user mode
    不加载 NFS,类似 windows不加载网络光彩夺目
  • 3:multi user mode
    text mode CLI,文本字符分界面
  • 4:reseved
    封存等第
  • 5:multi user mode
    graphic mode X windows图形
  • 6:reboot
    重启

查阅运营品级

runlevel
who -r

翻开内核release号

uname -r

1
mkdir -pv /mnt/{boot,sysroot}
Grub的工作规律
  • stage一: 加载mbr中的全体分区新闻
  • stage1.五:
    mbr之后的扇区,让stage1中的bootloader能识别stage二所在的文本分区上的文件系统
  • stage二: 磁盘分区之上(/boot/grub/)

为了运转时使用4.14.52-1本子的木本,运转sudo update-grub来更新grub,重启后再运维uname -r记因内核版本错误形成U盘不可能辨识的主题材料化解,Linux之系统运营流程。呈现内核版本为4.14.52-1-MANJARO,U盘也能自行挂载,运营lsmod | grep usb也有usb-storage模块,难点一蹴即至。

因势利导程序

bootloader(MB逍客) 教导程序:

  • LILO:LInux LOader (自行百度)
  • GRUB:GRand Unified Bootloader
    • Stage1: MBR
      将第二部分设置日MBEscort中 首要为了教导第1等级
    • Stage1_伍: 识别文件系统
      最主要识别操作系统安装达成后文件系统类型
    • Stage2: /boot/grub/
      施行init程序伪根开始化,内核参数映射,小编上边谈到的initrd程序

4.
将/dev/sde1挂载到/mnt/boot
,/dev/sde2挂载到/mnt/sysroot

留意:MBCRUISER能识别基本的硬盘设备,但不可能鉴定分别高档的文件系统,如lvm , raid等

脚本

1
2
3
4
5
6
7
mount /dev/sde1 /mnt/boot/
mount /dev/sde2 /mnt/sysroot/
[root@station57 mnt]# mount
......
......
/dev/sde1 on /mnt/boot type ext4 (rw)
/dev/sde2 on /mnt/sysroot type ext4 (rw)
Bootloader的系列及应用情况
  • ntloader
    • windows
  • LILO(linux loader)
    • 早期的Linux系统
    • 安卓手提式无线话机设备
  • grub(Grand Uniform bootloader)
    • Centos 5/6 (grub 0.X)
    • Centos 7 (grub 1.X)

Linux 服务类脚本

linux服务类脚本都遵守SysV风格,服务脚本位于/etc/rc.d/init.d
目录中脚本支持参数start|stop|restart|status 一定帮衬参数

服务类脚性子格
各样脚本文本起底部分都有

美高梅手机版4858 5

劳务脚性情子.jpg

chkconfig: runlevels SS KK
当chkconfig命令来为此脚本在rcN.d目录创制链接时,runlevels代表暗中同意成立S起首的链接,除却的品级暗中同意创造为K先河的链接S前面包车型客车开发银行先期级SS所代表的数字;K前边的关闭有限次序为KK所表示的数字
description:用户表明此脚本的简练意义 \ 表示续行

chkconfig 命令
–list: 查看全数独立守护服务运营设定;独立守护进程
–add SERVICE_NAME: 以SysV风格成立链接文件
–del SERVICE_NAME: 删除链接
[–level RUNLEVELS] SERVICE_NAME {on|off} :
设置品级(要是轻巧品级内定,默以为2345等级)

五.
当剪裁成功后sde二分区会作为新系统的跟分区,所以要给你sde2那些分区也便是/mnt/sysroot
这一个目录创设linux系统常用的多少个目录

四、加载虚根文件系统(ramfs)

  • 产生虚根ramfs的伊始化,以此来甄别硬盘上的文件系统。

Linux 运营最后实施脚本

/etc/rc.d/rc.local: 系统最后运转的一个劳动,正确说,应该实行的三个本子

1
[root@station57 sysroot]# mkdir -pv mnt proc root home cat sys lib lib64 dev media sbin tmp var

5、挂载rootfs

  • 以只读格局挂载根文件系统
inittab定义作用概述
  1. 设定暗中同意运营等级
  2. 运行类别开端化脚本
  3. 运作钦赐运行等第对应的目录下的脚本
  4. 设定ctrl+alt+del组合键的操作
  5. 定义ups电源在电源故障/苏醒时实行的操作
  6. 起首虚拟终端(23四五等第)
  7. 启航图形终端(伍等级)

6.
安装gurb

6、初始化init进程

  • 运维进程ID为壹的Init进度,利用init运营流程完毕用户空间的启航步骤

基本参数映射

 
 注意此处的“–root-directory=/mnt”选项,sde1是挂载在/mnt/boot上面包车型地铁,不要写成–root-directory=/mnt/boot
了。

用户空间开发银行步骤

用户控件访问,监察和控制内核的点子

查看/proc,/sys

/proc/sys: 此目录中的文件过多是能够读写的,/proc下此外文件为只读的
/sys/:某个文件是可写的

1
2
3
4
5
6
7
8
9
10
11
[root@station57 mnt]# grub-install --root-directory=/mnt  /dev/sde
Installation finished. No error reported.
This is the contents of the device map /mnt/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(fd0)/dev/fd0
(hd0)/dev/sda
(hd1)/dev/sdb
(hd2)/dev/sdc
(hd3)/dev/sdd
(hd4)/dev/sde

SysVinit进程的开头化

  • ###### 读取/etc/inittab,需形成如下加载步骤:

    • 系统运维等第加载:id:#initdefault:
    • si::sysinit:/etc/rc.d/rc.sysinit :
      加载运行/etc/rc.d/rc.sysinit文件,完毕如下动作:

      • 激动Udev和selinux
      • 依照/etc/sysctl.conf文件,来安装基础参数
      • 设定系统时钟
      • 装载键映射
      • 启用交流分区
      • 设置主机名
      • 要文件系统一检查测,并以读写情势再一次挂载
      • 激活raid和lvm设备
      • 启用磁盘分配的定额
      • 依赖/etc/fstab检查测试并挂载全数文件系统
      • 理清超时的锁和PID文件
    • l0:0:wait:/etc/rc.d/rc 0 —> /etc/rc.d/rcX.d/*
      对应系统运维等级,开启或关闭系统各服务,如下:

      • 停止K*的服务
      • 启动S*起来的劳动
        • 上述服务都由chkconfig命令管理,并由service命令调用推行结束或关闭操作。
    • tty6:2345:respawn:/usr/sbin/mingetty
      tty陆,运营登陆窗口,并打字与印刷招待分界面

      • 其是mingetty调用login程序,实现密码验证进程
    • 加载/etc/rc.d/rc.local文件
      • 此文件是系统最后运行的1个文书,能够将不须要写在劳动保险脚本的指令放置在那里,它将会随系统一起运转达成。
设定基本参数的办法

echo VALUE > /proc/sys/TO/SOMEFILE
sysctl -w PROPERTY.PROPERTY=VALUE ==>/proc/sys目录下文件
-p:文告内核重读配置文件
-a:显示全体内核参数及其值

7.
因为本人的宿主机上有5块硬盘,所以那里列出了hd壹–hd4.。大家的sde对应的硬盘是hd四,不过那个编号四仅仅对次主机有效,换成二个独自的主机上的时候即使hd0了。所从前边出来了(hd0,0)那样的硬盘标号。第3个0代表硬盘编号,第1个代表分区

注意:
  • Centos7的init程序为systemd,其配备文件存放于:/usr/lib/systemd/system/*
    ; /etc/systemd/system/*
  • Centos六的init为upstart,但为了包容SysV风格,名称也为Init,其配备文件放置于/etc/init/*.conf

内核、模块

内核模块一般放于/lib/modules/LINUX_VERSION/ 目录下

那种艺术能立刻有效,但无能为力永远有效
世代有效,但不能够永久有效: /etc/sysctl.conf 配置使之长久有效

8.
那儿硬盘sde的grub纵然安装成功了,大家看一下内部的始末

upstart的开端化流程

/etc/inittab(定义了暗许的运转等第)–>/etc/init/rc.conf(在那之中定义了相应的运行品级所要实施对应等第下的服务/etc/rc.d/rcX.d/*
,依据指令exec /etc/rc.d/rc $RUNLEVEL
来调用/etc/rc.d/rcX.d/*)–>/etc/rc.d/rc.local

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

内核模块管理

lsmod:装载模块

modprobe MOD_NAME:装载模块
modprobe -r MOD_NAME:卸载模块

modinfo MOD_NAME:查看模块具体消息

insmod /PATH/TO/MODULES_NAME:装载模块
rmmod MOD_NAME:卸载模块

depmod /PATH/TO/MODULES_DIBMWX三: 自动呈现1栏

  • 根本中的功效除了主导效率以外,在编写翻译时,繁多功效都有二种选取
    1. 不适用此效能(不编写翻译进基本或动态模块)
    2. 编写翻译成内核模块
    3. 编排进内核

手动编写翻译内核

  • make gconfig:Gnome桌面境况使用,需求设置图形开拓库
  • make kconfig:KDE桌面意况使用,须求设置图形开拓库
  • make menuconfig: 文本展开
    • make
    • make modules_install: 先编写翻译模块
    • make install:再编写翻译内核

screen命令: 直接展开八个新:
-ls: 显示已经创制的荧屏
-r ID:还原回某显示屏
ctrl+a放手后按d: 拆除荧屏
exit:退出

二次编写翻译时清理,清理前,如若有亟待,请备份配置文件.config

make clean
make mrproper:连带清理配置文件
mkinitrd initrd文件路线 内核版本号
mkinitrd /boot/initrd-uname -r.img uname -r

chroot: chroot /path/to/temproot 切换根
ldd /path/to/binary_file:展现八个二进制文件信赖的共享库

1
2
3
4
5
  [root@station57 mnt]# ls /mnt/boot/grub/
device.map     iso9660_stage1_5   stage1           xfs_stage1_5
e2fs_stage1_5  jfs_stage1_5       stage2
fat_stage1_5   minix_stage1_5     ufs2_stage1_5
ffs_stage1_5   reiserfs_stage1_5  vstafs_stage1_5
/etc/inittab文件格式表明
  • id:runlevel:action:process
    • id: 二个职务的标志
    • runlevel: 在怎么样品级下运维此职分,可感觉空,即表示具有等级
    • action:在怎么规范下运行此职分
      • wait : 等待切换至此职责所在的等级时实行1遍
      • respawn : 设定私下认可运营给别,此时process省略
      • sysinit:
        设定系统初步化情势,此处一般为内定/etc/rc.d/rc.sysinit脚本
    • process:任务

       
Grub有3个stage,

示例
    0:0:wait:/etc/rc.d/rc 0 : 意味着去启动或者关闭/etc/rc.d/rc3.d/目录下的服务脚本所控制的服务,所有K开头的要停止的服务,所有S开头的启动。 其中表示优先级,K中数值越小,表示越先关闭,S中数据越小表示越先开启。一般依赖的服务先关闭,然后再关闭被依赖的。或者一般被依赖的服务先启动,依赖的服务后启动    

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

      一st
stage: 位于MB途乐中,为了引导二nd stage

运维等级:

  • 0:关机,shutdown
  • 一: 单用户情势,(single user) root用户,无须验证登入
  • 贰:多用户形式(multi user),会运维互连网作用,但不会运转NFS;维护方式
  • 3:多用户形式(multi user),完全意义形式,文本分界面
  • 4:预留品级:目前无特别利用目的。但习于旧贯与同三品级作用利用
  • 伍: 多用户情势:(multi user),完全意义方式,图形分界面。
  • 6: 重启,reboot

      一.五stage: 位于boot基本磁盘分区中,为识别内核文件所在的文件系统提供文件系统识别扩充

翻看系统运作等级

  • runlevel
  • who -r
  • systemctl get-default(Centos 7)

=========

      二nd
stage: 位于boot基本磁盘分区中,GRUB的指导程序

系统服务类脚本的拉长和管理

2、复制内核vmlinuz和水源加载部分硬件所依附的initramfs

加上二个剧本格式
    #!/bin/bash
    #
    #chkconfig: 2345 50 60 #表示2345开启,其他关闭
    #description XXXXX
    下面是脚本正文,需要接受至少如下四个参数:
    {start|stop|restart|status}
1
2
1. [root@station57 mnt]# cp /boot/vmlinuz-2.6.32-358.el6.x86_64 /mnt/boot/
2. [root@station57 mnt]# cp /boot/initramfs-2.6.32-358.el6.x86_64.img /mnt/boot/
选拔chkconfig命令增添服务及保管
  • 第二须要将脚本复制至/etc/init.d/中。
  • 再利用chkocnfig –add 脚本名称(服务名称)
  • 再利用service 脚本服务 start

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

三、加多gurb的配置文件

chkconfig命令

  • chkconfig –add service_name
    • 增进多个劳务脚本
  • chkconfig –del service_name
    • 去除三个劳动脚本
  • chkconfig –list
    • 翻开全数服务的启航状态
  • chkconfig 2345 service_name on
    • 在2345运营等级启用此服务
  • chkconfig 2345 service_name off
    • 在2345周转等级下关闭此服务

grub安装完结了1旦不增加配置文件,那么每便运转都要手动写内核文件vmlinuz-和驱动相关的initramfs五个文本的路线,而且还要定义跟的岗位,很不方便人民群众,于是将在用到gurb的配置文件grub.conf

grub怎样识别设备

  • 一、Boot需单独分区
    • grub的地点应该为/grub/vmlinz
  • 2、识别磁盘都为hd
    • (hd#,#) :
      第一个象征磁盘分区,首个#代表分区,都用数字代表,从零起始编号
1
2
3
4
5
6
7
[root@station57 mnt]# vim /mnt/boot/grub/grub.conf
 default=0
 timeout=5
   title CentOS (author:xuqimin)
         root (hd0,0)
         kernel /vmlinuz-2.6.32-358.el6.x86_64 ro selinux=0 root=/dev/sda2 init=/bin/bash
        initrd /initramfs-2.6.32-358.el6.x86_64.img

grub的通令行接口

  • help:获取支持列表

  • help KEYWO猎豹CS六D : 详细帮忙新闻

  • find (hd#,#)/PATH/TOSOMFILE

  • find (hd0,0)/vmlinuz-2.6.32

  • root(hd0,0) :把格外设备安装为根设备

  • kernel /path/to/kernel_file:
    设定此番运营时用到的木本文件,额外还足以增加繁多根本使用的command参数

          例如:init=/path/to/init, selinux=0,quiet
    
  • initrd /path/to/initramfs_file | initrd_美高梅手机版4858,file :
    设定为选定的基本提供额外文件的ramfs(必须与内核版本号完全相配)

  • boot:指引运转选定的木本

       在grub中,硬盘以hd起初紧跟二个数字做各磁盘设备的记号,从0开首编号

手动在grub命令行接口运营系统:

grub> root(hd0,0)
grub> kernel /vmlinuz-version-release ro root=/dev/DEVICE 
grub> initrd /initramfs-version-release.img
grub> boot

注意:ro : 表示以只读方式挂载根文件系统
     root=/dev/DEVICE : 应该写根文件系统所在的磁盘分区

     
 Part代表方法:代表分区,从0开头编号

grub的文件的安插格式

安插文件表示的含义

/etc/grub/grub.conf
default=0  # 设置默认启动的tile,0表示第一个tile
timeout=5   # 在启动时选择tile时的超时时间
hiddenmenu #是否隐藏启动界面
password --md5 密码串(使用grub-md5-crypt工具加密的密码串)#如果加密,编辑grub时会要求输入密码
title (Centos 6.6)  #启动时的菜单名称
    root (hd0,0) # 表示kernel的存放位置,hd统一表示为所有硬盘,第一个0表示第一块硬盘,第二个0表示一个分区
    kernel /vmlinuz.VERSION.release #kerenl文件的存放路径
    initrd /initramfs.VERSION.release.img #initramfs的存放路径
    password --md5 密码串 #这个密码加密后,启动相应的内核时,会要求输入密码


    #注意:title中的每一行都必须要缩进一个空白字符,当grub损坏时,可以使用"find (h0,0)/"查找目录下的文件,使用TAB键补全,如果有就会列出所有的文件,如果没有,表示(hd0,0)指定有错误,需再查找其他的分区中是否有。

  1、default=#:
钦赐私下认可运维的基石或OS;

进入单用户方式:

  • 一、编辑grub菜单(选定要编写制定的title ,e命令)
  • 二、在选定的kernel后附加壹,S,s 可能single都能够
  • 3、在kernel所在行,键入b命令

  2、timeout=#:
等待用户挑选要运转的内核或OS的时间长度,单位为秒;

手动安装grub的主意

  • ###### 1、grub-install –root-directory=/mnt /dev/sdb

      注意:--root-directory=/mnt : 这个位置必须指定为boot目录所在的父目录,grub会自行在父目录中找到boot目录,然后把grub程序安装到对应的目录中,一般情况在挂载新预备安装gurb的硬盘时,需要在文件系统上建立一个boot目录,再把对应的磁盘挂到boot目录中,这样grub才会找到boot目录,在下面建立所需的文件,如果挂载时不创建boot目录,那和以grub会在目录下创建boot目录,启动时需要将kernel和initrd的位置就应该为/boot/vmliunz格式
    
  • ###### ②、分步骤安装

      grub
      grub> root (hd0,0)
      grub> setup (h0,0)
    

  三、Kernel 后面给的参数为传送给基础的参数

手动修复grub指点程序

  四、Ro  代表以只读的办法挂载

依傍损坏mbr
  • dd if=/dev/zero of=/dev/sda bs=200 count=1
    • 急需先备份好mbr,使用dd if=/dev/sda of=/root/sda bs=512 count=1

  5、Seliunx=0 表示不启用selinux ,因大家那边的小系统壹旦内核和几个大致的吩咐,运营不了selinux ,而gurb默许是展开selinux的,那样我们开机的时候会油可是生难点而望尘莫及起动系统

修复进度
  • 壹、挂载安装光盘,施行linux rescue 进行抢救和治疗方式
  • 2、chroot /mnt/sysimage
  • 3、执行grub-install --root-directory=/ /dev/sda
    /dev/sda :
    这是对磁盘的mbr修复钦赐地点,必须是磁盘,不可能是分区,便是mbr所存放的地方

  陆、Root=/dev/sda2表示等系统系统的时候会以sda二 ,也等于刚刚大家挂载的sde二来当作系统的根目录。

新加硬盘,提供第1手单独运转bash系统

####创建文件系统并挂载
mke2fs -t ext4 /dev/sdb1
mke2fs -t ext4 /dev/sdb2
mkdir /media/boot
mount /dev/sdb1  /media/boot/
grub-install --root-directory=/media /dev/sdb
cp /boot/vmlinuz-2.6.32-573.el6.x86_64 /media/boot/vmlinuz
cp /boot/initramfs-2.6.32-573.el6.x86_64.img /media/boot/initramfs.img
####grub配置文件信息
vim /media/boot/grub/grub.conf
    default=0
    timeout=5
    hiddenmenu
    title (Centos6.6)
        root (hd0,0)
        kernel /vmlinuz ro root=/dev/sda2 selinux=0 init=/bin/bash
        initrd /initramfs.img
####给根文件系统提供bash和相应的库文件
mount /dev/sdb2 /mnt/
cd /mnt/
mkdir $(ls /) -pv
cp /bin/bash /mnt/bin/bash
ldd /bin/bash
cp /lib64/libtinfo.so.5 /mnt/lib64/
cp /lib64/libdl.so.2 /mnt/lib64/
cp /lib64/libc.so.6 /mnt/lib64/
cp /lib64/ld-linux-x86-64.so.2 /mnt/lib64/
chroot /mnt/ 

四、编写复制命令及其相应的库的剧本,并成功命令迁移

ramfs文件的田管

   
gurb和根本文件及驱动文件都已就绪,然而系统还只是2个唯有基本的空壳而已,鲜明大家还不能用它做任何事情。由此大家就须求把linux中常用到的一声令下复制到大家创建的小系统中,以让它专业起来。

1、mkinitfs 命令(Centos5)
  • synopsis: mkinitrd [OPTION…] [<initrd-image>]
    <kernel-version>

   
大家知晓命令是由贰进制文件,极其重视的库文件,再拉长有个别赞助文书档案组成的。而且三个限令的库文件不仅仅唯有二个。所以大家只是手动复制起来的话势必会很麻烦。因而此时就需求把大家眼下学到的台本知识发挥一下,用shell脚本落成命令的复制,迁移。上边是本身前几天做的复制命令的本子。

示例:
  • mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

   
(脚本只怕有不完善的地点,也大概在大神眼中显得很臃肿,不喜勿喷)。

2、dracut 命令(Centos 6\7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash
  2
  3 function EnterCommand {
  4 read -p "Enter a command:" command
  5 while true;do
  6    [[ "$command" == "quit" ]] && exit 2
  7    if which $command &> /dev/null ;then
  8          break
  9      else
 10          echo -e "\n\033[31mno such command,please try agiain.and quit to quit:\n\033[0m"
 11          read -p "Enter a command:" command
 12    fi
 13 done
 14 }
 15
 16
 17 function bincp {
 18    commandDir=`which --skip-alias $command`
 19    distintion="/mnt/sysroot$commandDir"
 20    if  [ -e $distintion ];then
 21          echo "bin of $command is already exist."
 22     else
 23       [ -d /mnt/sysroot`dirname $commandDir` ] || mkdir -p /mnt/sysroot`dirname $commandDir`
 24       cp $commandDir /mnt/sysroot`dirname $commandDir` &&  echo "the bin cp ok.." || echo "cp bin error"
 25    fi
 26 }
 27
 28
 29 function Libcp {
 30     commandLib=`ldd $commandDir | grep -o "/lib.*[[:space:]]"`
 31
 32        for i in $commandLib ;do
 33           distintionlib="/mnt/sysroot$i"
 34            if [ -e $distintionlib ];then
5                echo "$i is exist."
 36
 37            else
 38
 39            [ -d /mnt/sysroot`dirname $i` ] || mkdir -p /mnt/sysroot`dirname $i`
 40            cp $i /mnt/sysroot`dirname $i` && echo "lib co ok.." || echo "cp lib erro "
 41            fi
 42        done
 43  }
 44
 45
 46
 47
 48 EnterCommand
 49
 50 while true;do
 51     bincp
 52     Libcp
 53     EnterCommand
 54 done
示例:
  • dracut /boot/initramfs-$(uname -r).img $(uname -r)

实践那一个剧本,分别将bash,ls,cd ,vi ,cat,tree,fdisk,mv,touch,这么些常用的一声令下复制到/mnt/sysroot中对用的门道下。

水源消息输出的伪文件系统:

  • ###### 1、/proc目录

  • 基本状态及计算音信的输出接口,同时还提供了一个布署接口:/proc/sys,能够行使sysctl命令修改其根本参数,其此目录下的大部文书都可承受用户钦定的1个”新值“,来得以完毕对内核某成效或特色的安插

  • ###### 2、/sys目录

  • 输出内核识别出的种种配置设施的有关音信,也有基本对硬件特性的可安装参数,可定制硬件的特征

那时候将sde那块硬盘放到一个其他的计算机上就早已足以运营了,只但是有点简陋。只可以在bash shell中施行cp过去的多少个小命令。也从没网络功能,倘若急需采用互连网功用,就供给通过上面包车型地铁多少个步骤继续迁移网卡驱动模块了。

udev功能

  • 通过读取sys目录下的硬件器物音讯,按需为各硬件道具创设设备文件。当系统开始化的长河中,会探测Computer种种硬件设备消息,此记录会保存至/sys目录下,当系统运营落成后,udev会依照/sys目录下的各器具文件,创造相应的硬件消息。udev为设备创设设备文件时,会读取其优先定义好的规则文件,一般在其专门的职业目录下。

  • udev的行事目录

    • /etc/udev/rules.d : 自定义的条条框框目录
    • /lib/udev/rules.d/ : 私下认可的平整目录
    • /dev/.udev/rules.d : 目前规则目录存放地方(Centos 柒才有)
  • udev目录下的文本

      root@zhenping rules.d]# ls /lib/udev/rules.d/
      01-log-block.rules           60-persistent-storage-tape.rules  75-cd-aliases-generator.rules          81-kvm-rhel.rules
      10-console.rules             60-persistent-v4l.rules           75-net-description.rules               88-clock.rules
      10-dm.rules                  60-wacom.rules                    75-persistent-net-generator.rules      90-pulseaudio.rules
      11-dm-lvm.rules              61-mobile-action.rules            75-tty-description.rules               91-drm-modeset.rules
      13-dm-disk.rules             61-option-modem-modeswitch.rules  77-mm-ericsson-mbm.rules               95-devkit-power-battery-recall-dell.rules
    

     
新建虚拟机,把sde那块硬盘放到新虚拟机中当运营盘。(注意:使用sde那看硬盘的时候要讲原宿主机挂载)  
   

基础参数调节措施

         
 无图无真像,贴个图给我们看看啊。

1、配置文件修改(长久有效,但需另行启航后)
  • 修改/etc/sysctl.conf 或者/etc/sysctl.d/*.conf

      net.ipv4.ip_forward = 0
    

美高梅手机版4858 6

在意:假若急需修改后的参数即刻有效,需使用sysctl -p 命令重读其安插消息加载到根本中。

美高梅手机版4858 7

二、使用命令举行修改(一时有效,下次重启后不见)

5、迁移e一千 网卡驱动内核模块

sysctl命令

系统要想上网得须要有网卡驱动。而linux中网卡驱动不是在基础中自带的,而是以模块的诀要在根本中装载的,所以大家要想让我们迁移的小linu能够有互连网功用还非得为其装载网卡驱动模块。

sysctl -sysctl – configure kernel parameters at runtime
  • synopsis : sysctl [options] [variable[=value]] […]

  • [options]

    • -a : 显示当前可布署的有所参数
    • -w VAR=VLUE : 改造参数值
    • -p : 从/etc/sysctl.conf文件中再次加载内核设定值

下边列出有关管理内核模块所用到的多少个指令,当然大家在做上面操作之前还须要经过上边的不胜cp二进制的脚本来将多少个指令cp过去,其它别忘了复制ifconfig,ping这么些大家等会或然会用到命令了。

示例
  • sysctl net.ipv4.ip_forward : 查看其值
  • sysctl -w kernel.hostname=zhenping.mac :
    设置其计算机名字为zhenping.mac
  • sysctl -a : 查看全部可配置的木本参数

一.
搜寻大家必要的模块在宿主机上的职位

利用文件系统命令catecho设置和查阅

  • cat /proc/sys/kernetl/hostname
  • echo “VALUE” > /proc/sys/kernel/hostname

Lsmod:查看内核转发的模块

科学普及通内科核参数
  • net.ipv4.ip_forward : 宗旨转载功效
  • vm.drop_caches : 释放buff/cache空间,值有0\1\2
  • kernel.hostname : 主机名
  • net.ipv4.icmp_echo_ignore_all : 忽略全体发往团结的ping操作

Lspci:查看pci插口相关信息

模块管理

Modproc:转发相应模块

lsmod命令

Modproc -r
:卸载模块

lsmod – 查看全体系统棉被服装载的模块
  • lsmod
    • 体现系统棉被服装载的具备模块

Insmod:装载模块

只顾:其是提取/proc/modules文件消息

=========

劲客mmod:卸载模块

modinfo命令

有了这一个命令接下去让大家找找网卡模块在哪吧。

modinfo – Show information about a Linux Kernel module
1
2
3
4
5
6
7
8
9
10
11
[root@station57 sysroot]# lsmod
Module                  Size  Used by
autofs4                26513  3
8021q                  25317  0
ipv6                  321422  96
e1000                 170646  0
sg                     29350  0
......
......
dm_log                  9930  2 dm_mirror,dm_region_hash
dm_mod                 82839  14 dm_mirror,dm_log
其通过/lib/modules/[KERNEL-VERSION]/modules/下的享有文件实行辨析并出示的,暗中认可境况下在根本modules编写翻译安装的时候,会在其目录下转移全数modules的依赖性关系等,建立相应的目录音讯
  • synopsis : modinfo [-0] [-F field] [-k kernel]
    [modulename|filename…]

  • [options]

    • -k MODULE : 查看钦命的模块音信
    • -F FIELD : 只突显钦命字段的新闻
    • -n MODULE 显示钦定模块的存放路线

=====

上边的e一千便是我们要找的网卡模块,你是或不是该问,那仍旧尚未消除难点啊,e一千在哪吧。大家别忘了还有叁个modinfo命令呢。

modprobe命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@station57 sysroot]# modinfo e1000
filename:       /lib/modules/2.6.32-358.el6.x86_64/kernel/drivers/net/e1000/e1000.ko
version:        7.3.21-k8-NAPI
license:        GPL
description:    Intel(R) PRO/1000 Network Driver
author:         Intel Corporation, <linux.nics@intel.com>
srcversion:     1D4F1E82BB99EA36D320B1B
alias:          pci:v00008086d00001000sv*sd*bc*sc*i*
........
depends:    
vermagic:       2.6.32-358.el6.x86_64 SMP mod_unload modversions
parm:           TxDescriptors:Number of transmit descriptors (array of int)
.....
......
modprobe – Add and remove modules from the Linux Kernel
  • synopsis: modprobe [-r] module_name

好大学一年级串数据呀,反正大多数自个儿是不懂干嘛的。一时先不关心别的的内容吗,大家只关注那些渠道在哪、还有下面的depends是此模块所重视的别的模块。这里的e1000不借助其余模块。

示例:
  • modprobe MODULE : 装载钦点的模块文件
  • modprobe -r MODULE : 卸载内定的模块文件

filename:  
   
/lib/modules/2.6.32-358.el6.x86_64/kernel/drivers/net/e1000/e1000.ko

modprobe能够自行消除模块与模块的依据关系,并将依附的模块也共同启用

====

2.
复制该模块到我们的小型linux中安装

depmod命令
1
2
3
  [root@station57 sysroot]# cp /lib/modules/2.6.32-358.el6.x86_64/kernel/drivers/net/e1000/e1000.ko  /mnt/sysroot/lib/modules/
[root@station57 sysroot]# ls /mnt/sysroot/lib/modules/
e1000.ko
内核模块正视关系文件的变动工具,系统模块的变动文书路径为:/lib/modules/KERNEL-VERSION/

======

3.
挂起宿主机,开启目标主机,并用刚刚使用的sde来做运维盘开启主机。

模块装载和卸载的另1组命令:

选用insmod 装载模块,然后就足以采取ifconfig配置ip地址了。那样大家的包罗互连网效用的小linux系统就做好了。

insmod命令
  • insmod /lib/modules/3.10.0-229.el7.x86_64/kernel/fs/btrfs/btrfs.ko
    (模块一定要为完整路线)

美高梅手机版4858 8

rmmod命令
  • rmmod MODULE : 卸载内定的模块

美高梅手机版4858 9

l
使用init自运营服务脚本实现系统起始化

       
大家的带有互联网功效的小系统已经办好,不过你有未有察觉每一趟重启后大家的网络模块都要重启装载,而且ip地址也要重新配置。这真是1件高烧的事体,有未有三个本子能够自动化的帮我们成功那些模块的自动装载和ip的机动分配呢,当然有,init正是为着产生这几个任务,不过init这么些顺序太过复杂,须要依赖的东西也太多,我们也不需要。那么就让大家来自个儿写三个脚本来替代init完结我们的小系统伊始化吧。

1
2
3
4
5
6
7
8
9
[root@station57 mnt]# vim /mnt/sysroot/sbin/init
1 #!/bin/bash
  2 #
  3 echo -e "\t\033[31;5mI am a simple Linux, but I'll grow up soon\033[0m"
  4
  5 insmod /lib/modules/e1000.ko && echo -e "Moduless e1000 loding\033[60G\033[32m[ ok ]\033[0m "     || echo  "Moduless e1000 loging error"
  6 ifconfig lo 127.0.0.0/16 && echo -e "The ip lo add ...\033[60G\033[32m[ ok ]\033[0m " || echo      "ip of lo add error"
  7 ifconfig eth0 172.16.20.11/16 && echo -e "The ip eth0 add ...\033[60G\033[32m[ ok ]\033[0m "     || echo  "ip of eth0 add error"
  8   /bin/bash :::::别忘了最后启动shel呀!

本条本子落成了对模块e一千的机关挂载,并且自动配置ip的职能。

不过须求专注的是,借使想让她开机自动生效,需求在grub.conf中定义,让init指向此脚本所在的门径。

美高梅手机版4858 10

美高梅手机版4858 11

ok,那样多少个轻巧的通过剪裁的小linux已经站在了咱们的先头。当然,他有待提高做实的效率还有太多。让我们在随着的光景持续深造来填补提升它吗~!!

本文出自 “Sysinit”
博客,请务必保留此出处

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有