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的二个小系统

根本的安顿性流派
  • 单内核设计
    • 把富有作用集成于同二个顺序中,其中linux就是以单内核设计
  • 微内核设计
    • 种种作用利用叁个独自的子系统完结,各样子系统通信需有特殊的机制来贯彻,个中winodows、solaris的基石设计艺术就为微内核。

下一场运维sudo modprobe usb-storage品味装载usb-storage模块,结果报错:

详解运行进程

  1. 硬件自检(POST)
    计算机通电后自检硬件是不是满意运营的为主条件(有未有梗塞大概配备故障等漏洞非常多),那名称为“硬件自检(Power-On
    Self-Test),缩写为POST”,如硬件出现难点会时有产生滴滴声,如若没至极将显示主板或硬件商家新闻

  2. BIOS 引导
    自检完结后POST将调节权交由BIOS,BIOS读取固化在主板上ROM芯片上的主次,它能够从CMOS中读写系统的安装和用户自定义的起步新闻运营有一项正是开发银行顺序(Boot
    Sequence)

  3. MBR(bootloader)
    BIOS依照运行程序加载第一个运维项(要是第3个运维项运维败北不会自动运行第二个),接着加载多个硬盘的MB福特Explorer上的bootloader,各类硬盘的前5十两个字节是MB陆风X8消息(第3个扇区),前44四个字节是主指点记录,后陆15个字节是分区表音信

  4. kernel & initrd(加载内核)
    MBRAV四依据主引导记录携带分区后加载内核,内核在加载的时候恐怕须要加载当前硬盘的驱动,然则驱动却在文件系统中存放,要是要加载文件系统又要先挂载驱动(有点绕),正是在转圈圈。这年就要求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(MBKoleos)—>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/[1、起始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目录下存放

澳门金沙国际 1

centos6.jpg

Redhat5:init配置都存放这一文书中,运维脚本

澳门金沙国际 2

centos5.jpg

一.
在宿主机上增多一块硬盘,那里丰裕的是sde那块硬盘。

Bios : Baisc input and output system

澳门金沙国际 3

init文件及布局文件

/sbin/init:(/etc/inittab)只是3个程序,八个集体布置开拓

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

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

澳门金沙国际 4

init5 配置文件格式.jpg

冒号隔断的八个段
idrunlevelsactionprocess

  • id:标记符,只要不跟其余行一样就行
  • runlevels:在哪些等第运营
  • action:在怎样情状下实践
    • initdefault:设置暗中认可运转品级
    • sysinit:系统初叶化
    • wait:等待品级切换至此品级时实行
    • powerfail:断电时实行
    • powerokwait:来电时施行
    • respawn:1旦程序终止重新起动
  • process: 要运营的顺序

二.
运用fdisk为sde分八个区,sde一 (十0M)  sde二(二G)

2、BootSequence

  • 按bootsequence的启航列表,查找MB智跑或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

  • 找到MB帕杰罗后查找引导加载器(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的劳作规律
  • stage1: 加载mbr中的全体分区音讯
  • stage1.伍:
    mbr之后的扇区,让stage第11中学的bootloader能识别stage贰所在的公文分区上的文件系统
  • stage二: 磁盘分区之上(/boot/grub/)

为了运维时使用4.14.52-1本子的基础,运维sudo update-grub来更新grub,重启后再运维uname -r来得内核版本为4.14.52-1-MANJARO,U盘也能自动挂载,运维lsmod | grep usb也有usb-storage模块,难点化解。

因势利导程序

bootloader(MB瑞虎) 指导程序:

  • LILO:LInux LOader (自行百度)
  • GRUB:GRand Unified Bootloader
    • Stage1: MBR
      将率先片段设置日MB汉兰达中 首要为了引导第②阶段
    • Stage1_伍: 识别文件系统
      爱抚识别操作系统安装实现后文件系统类型
    • Stage2: /boot/grub/
      施行init程序伪根初阶化,内核参数映射,小编下面提及的initrd程序

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

瞩目:MB奥迪Q伍能分辨基本的硬盘设备,但不可能识别高等的文件系统,如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 一定扶助参数

服务类脚特特性
各类脚本文本起底部分都有

澳门金沙国际 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} :
设置级别(假设简单品级钦命,默感觉234五等第)

伍.
当剪裁成功后sde贰分区会作为新系统的跟分区,所以要给您sde二那个分区也正是/mnt/sysroot
这么些目录成立linux系统常用的多少个目录

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

  • 产生虚根ramfs的起先化,以此来辨别硬盘上的文件系统。

Linux 运转最终试行脚本

/etc/rc.d/rc.local: 系统最后运营的二个服务,精确说,应该施行的2个剧本

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肆5等第)
  7. 开发银行图形终端(五品级)

6.
安装gurb

6、初始化init进程

  • 运作进度ID为一的Init进度,利用init运维流程落成用户空间的起步步骤

水源参数映射

 
 注意此处的“–root-directory=/mnt”选项,sde一是挂载在/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命令调用施行甘休或关闭操作。
    • tty陆:2345:respawn:/usr/sbin/mingetty
      tty陆,运转登六窗口,并打字与印刷招待分界面

      • 其是mingetty调用login程序,达成密码验证进程
    • 加载/etc/rc.d/rc.local文件
      • 此文件是系统末段运维的二个文书,能够将不必要写在服务保证脚本的下令放置在此处,它将会随系统一起运转达成。
设定基本参数的情势

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

柒.
因为我的宿主机上有伍块硬盘,所以那边列出了hd1–hd4.。大家的sde对应的硬盘是hd4,可是那一个号码四仅仅对次主机有效,换成二个独立的主机上的时候就算hd0了。所从前面出来了(hd0,0)这样的硬盘标号。第三个0代表硬盘编号,第一个象征分区

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

内核、模块

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

那种措施能及时有效,但无能为力永恒有效
世世代代有效,但不能够永恒有效: /etc/sysctl.conf 配置使之永远有效

八.
此时硬盘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_DI奥迪Q三: 自动呈现1栏

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

手动编写翻译内核

  • make gconfig:Gnome桌面景况使用,供给设置图形开采库
  • make kconfig:KDE桌面情形使用,必要安装图形开采库
  • make menuconfig: 文本张开
    • make
    • make modules_install: 先编写翻译模块
    • make install:再编写翻译内核

screen命令: 直接张开2个新:
-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:呈现3个二进制文件重视的共享库

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: 2个职务的标志
    • runlevel: 在什么品级下运维此任务,可感到空,即意味着全体品级
    • action:在什么样条件下运营此职责
      • wait : 等待切换至此职务所在的品级时实践2次
      • 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昂Cora中,为了引导二nd stage

运作等级:

  • 0:关机,shutdown
  • 一: 单用户形式,(single user) root用户,无须验证登录
  • 2:多用户格局(multi user),会运转网络成效,但不会运转NFS;维护方式
  • 3:多用户格局(multi user),完全意义形式,文本分界面
  • 4:预留等第:近来无特别利用目的。但习于旧贯与同三等级功效使用
  • 五: 多用户方式:(multi user),完全意义方式,图形分界面。
  • 6: 重启,reboot

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

翻看系统运行等级

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

=========

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

系统服务类脚本的丰硕和治本

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

丰裕2个本子格式
    #!/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
    • 丰盛2个服务脚本
  • chkconfig –del service_name
    • 删去3个服务脚本
  • chkconfig –list
    • 查看全部服务的运行状态
  • chkconfig 2345 service_name on
    • 在23四伍运作等第启用此服务
  • chkconfig 2345 service_name off
    • 在2345运转等第下关闭此服务

grub安装完结了若是不加多配置文件,那么每一回运营都要手动写内核文件vmlinuz-和驱动相关的initramfs多少个公文的门径,而且还要定义跟的职责,很不便于,于是将要用到gurb的配备文件grub.conf

grub怎么样识别设备

  • 一、Boot需单独分区
    • grub的岗位应该为/grub/vmlinz
  • 二、识别磁盘都为hd
    • (hd#,#) :
      第3个象征磁盘分区,第四个#代表分区,都用数字代表,从零开始编号
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奥迪Q7D : 详细扶助音讯

  • 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_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指点程序

  4、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

  五、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/sda二表示等连串系统的时候会以sda2 ,约等于刚刚大家挂载的sde2来当作系统的根目录。

新加硬盘,提供第一手单独运营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/ 

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

ramfs文件的治本

   
gurb和水源文件及驱动文件都已就绪,不过系统还只是一个唯有基本的空壳而已,明显大家还不可能用它做其余业务。因此我们就需求把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命令修改其基本参数,其此目录下的大部文书都可接受用户钦赐的2个”新值“,来贯彻对内核某成效或特色的安插

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

  • 输出内核识别出的各个配置设施的相干音信,也有基本对硬件天性的可安装参数,可定制硬件的风味

此刻将sde那块硬盘放到1个任何的微管理器上就曾经得以运行了,只可是有点简陋。只可以在bash shell中实施cp过去的多少个小命令。也未曾互联网功用,倘若供给利用网络功能,就需求经过上面包车型地铁多少个步骤继续迁移网卡驱动模块了。

udev功能

  • 由此读取sys目录下的硬件设备音信,按需为各硬件装置创造设备文件。当系统开首化的经过中,会探测Computer各样硬件配备信息,此记录会保存至/sys目录下,当系统运维达成后,udev会遵照/sys目录下的各器物文件,创造相应的硬件音信。udev为设备创造设备文件时,会读取其优先定义好的规则文件,一般在其职业目录下。

  • udev的做事目录

    • /etc/udev/rules.d : 自定义的规则目录
    • /lib/udev/rules.d/ : 暗中认可的条条框框目录
    • /dev/.udev/rules.d : 目前规则目录存放地方(Centos 7才有)
  • 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那看硬盘的时候要讲原宿主机挂载)  
   

基础参数调解措施

         
 无图无真像,贴个图给大家看看啊。

一、配置文件修改(永恒有效,但需再一次开动后)
  • 修改/etc/sysctl.conf 或者/etc/sysctl.d/*.conf

      net.ipv4.ip_forward = 0
    

澳门金沙国际 6

在意:即使急需修改后的参数马上有效,需使用sysctl -p 命令重读其布署新闻加载到根本中。

澳门金沙国际 7

2、使用命令实行改造(一时有效,下次重启后遗失)

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文件中再一次加载内核设定值

上面列出关于管理内核模块所用到的多少个指令,当然大家在做上面操作在此之前还须要通过上面的万分cp2进制的脚本来将多少个指令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一千在哪吧。我们别忘了还有3个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是此模块所依赖的其他模块。那里的e一千不借助于其余模块。

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

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

modprobe能够自行消除模块与模块的借助关系,并将借助的模块也壹头启用

====

贰.
复制该模块到大家的小型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/

======

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

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

运用insmod 装载模块,然后就足以行使ifconfig配置ip地址了。那样大家的涵盖网络作用的小linux系统就搞好了。

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

澳门金沙国际 8

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

澳门金沙国际 9

l
使用init自运转服务脚本落成系统开头化

       
咱们的涵盖互连网成效的小系统现已做好,可是你有未有觉察每一遍重启后大家的网络模块都要重启装载,而且ip地址也要重新配置。那真是一件头疼的事务,有未有一个本子能够自动化的帮大家落成那一个模块的电动装载和ip的电动分配呢,当然有,init正是为了做到这一个任务,可是init那几个程序太过复杂,须要注重的东西也太多,大家也不要求。那么就让大家来和睦写2个脚本来取代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指向此脚本所在的门道。

澳门金沙国际 10

澳门金沙国际 11

ok,那样二个简便的通过剪裁的小linux已经站在了我们的先头。当然,他有待提高抓好的作用还有太多。让大家在紧接着的光阴持续深造来填补进步它吗~!!

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

相关文章