美文网首页
Linux小系统(一)-小系统制作

Linux小系统(一)-小系统制作

作者: delta1037 | 来源:发表于2019-05-21 10:34 被阅读0次

制作Linux小系统-外围文件系统定制

环境:

</br>


一、Linux启动过程分析

  1. BIOS

  2. MBR/GPT

    • Master Boot Record and Disk partitions
    • Globally Unique Identifier Parttion Table Format
  3. OS Loader

    • Window:NTLDR/BootMgr
    • Linux:GRUB/GRUB2
  4. OS Kernel

    • DOS:IO.SYS MSDOS.SYS
    • Window:ntoskrnl.exe
    • Linux:vmlinuz
  5. Application Manager

    • DOS:command.com
    • Window:explorer.exe
    • Linux:init
  6. Applications...

二、启动bash

/boot中的init*.img文件

  • 一个由OS loader载入的镜像文件
  • 临时“根文件系统”
# /boot/grub/grub.conf文件
title Linux 2.4
    root (hd0,1)
    kernel /boot/vmlinuz ramdisk_size=8192 root=LABEL=/
    initrd /boot/initrd.img

制作根文件系统

使用原来的kernel,initd自己的init*.img

  • 如何生成img文件
# . 表示当前目录
$ find . | cpio -H newc -o | gzip > /boot/initrd.img
  • 解压生成的img(不小心删掉了自己的系统文件夹,可以用这个方法恢复)
$ mv initramfs.img  initramfs.img.gz # 添加gz后缀
$ gunzip initramfs.img.gz # 解压
$ mkdir temp # 创建目录并将解压后的文件丢进去
$ cpio -i -F ../initramfs.img # 解压刚刚丢进temp的文件

制作init

Application Manager

init是开机后grub引导进入系统后执行的,所以想要开机进去之后得到一个bash,就得在这个里面定制过程

bash是一个命令,所以只要执行这个命令,就可以得到一个bash,

# 查找命令find,可使用通配符*
$ find / -name "bash"

可执行文件&动态库

随意创建一个目录作为我们小系统的根目录,创建必要的文件夹(拷入小系统的路径与大系统路径一致,例如bash在bin目录中,就要在小系统根目录下创建bin目录然后将bash拷入)

bash执行还需要有其依赖的动态库,我们的小系统启动起来是独立于大系统的,所以我们要将其依赖的动态库也拷进我们的小系统

# 查新指令依赖的动态库
$ ldd /可执行文件路径
$ ldd /bin/bash
  • 拷贝可执行文件依赖动态库脚本
#!/bin/bash
# use : ./script.sh /可执行文件  /动态库目录
dependList=$( ldd $1 | awk '{if (match($3,"/")){ print $3}}' )
echo $dependList
cp $dependList $2
  • 拷贝目录下的所有可执行文件依赖的动态库脚本
#!/bin/bash
# use : ./script.sh /可执行文件目录  /动态库目录
for m in $(ls $1)
do
    dependList=$( ldd $1/$m | awk '{if (match($3,"/")){ print $3}}' )
    cp $dependList $2
done

三、管理设备

  • udev : 管理、监控主机设备的服务程序

    • 依赖与sysfs文件系统(挂载于/sys)
    • 规则文件/lib/udev
    • 配置文件/etc/udev
    • 自动在/dev目录下创建设备节点
  • /proc目录:通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制

  • /sys目录:硬件设备的驱动程序信息

通过执行/sbin/start_udev,就可以检测到所有的设备

# 查看当前机器所有设备
$ ls /dev

四、挂载磁盘

磁盘也是一种设备

在linux上挂载磁盘,磁盘一般是在dev目录里的,但是在上面的管理设备部分,当列出当前机器设备时,并没有看到有关sd之类的,这是因为缺少驱动程序*

Linux的驱动在/lib/modules目录,可以看到有不同的版本号

$ lsmod # 列出当前机器所使用的所有驱动
$ modinfo # 查看驱动具体介绍,包括驱动依赖关系
$ insmod # 加载指定的驱动
$ modprobe # 载入制定模块或者载入一组相依的模块,需要有依赖关系moudules.dep
  • 磁盘所需驱动
    • scsi_transport_spi.ko
    • mptbase.ko
    • mptscsih.ko
    • mptspi.ko
    • crc-t10dif.ko
    • sd_mod.ko
  • etx4文件系统驱动
    • mbcache.ko
    • jbd2.ko
    • ext4.ko

当加载完磁盘和文件系统驱动,就可以挂载和读写原来的文件系统了

五、登录login

  • login认证体系(PAM)
    • /etc/pam.d
    • /lib/security

六、使用/sbin/init启动系统

/sbin/init的工作:

  • /etc/rc.sysinit
    • probe devices:udevd
    • fsck
    • remount
  • /etc/rc
    • service
  • /sbin/mingetty
    • login prompt = mingetty+/bin/login

七、联网

  • 网卡驱动:

    • e1000.ko
  • ping:查看网络是否连通

  • ethtool:查看网卡信息

  • ifup、ifdown:启动,关闭网卡

  • mentohust:连接校园网的工具

  • ssh:连接到远程主机,或者被远程主机连接

  • scp:基于ssh在两台主机之间拷贝文件

相关文章

  • Linux小系统(一)-小系统制作

    制作Linux小系统-外围文件系统定制 环境: window10 vmvare pro 14 centos6.10...

  • AVR单片机烧写BOOTLOADER

    在自制PCB中,制作arduino最小系统时,利用USBASP给最小系统下载BOOTLOADER时,应使芯片保持上电状态

  • 单片机小系统介绍

    什么是单片机小系统? 单片机小系统,或者称为小应用系统,是指用少的元件组成的单片机可以工作的系统。 单片机小系统的...

  • 我的小系统们

    上周六,老大开启了让我们做小系统的任务。经过一周的尝试,我真的做了几个非常小的小系统。具体的如下: 时间管理小系统...

  • 双拼练习小系统

    关于搭建一个小系统的练习 一、关于小系统及搭建小系统的相关知识 1、如何从0开始搭建一个自我管理小系统? http...

  • 系统

    如果搞不成一个大的系统,那就搞一个小的系统,用小系统的灵活性与大系统的专业性进行抗衡,小系统谨记的一点是不与大系统...

  • CentOS7上安装Python3

    Linux(CentOS7)上面安装Python3 安装Python3 环境 安装CentOS 7.2最小系统(C...

  • [Linux学习第5笔记] 3月12日 - Linux发展史

    Linux诞生在1991年之前,经历了以下的事件: 1:Unix 是Ken Thompson 写的一个小系统,是以...

  • 制定周计划的小系统(17年3月更新)

    制定周计划的小系统 文档信息 制作人:by 萝卜狼 制作日期:2017年3月13日 更新日期:15:15 2017...

  • 2018-07-31

    事故小系统

网友评论

      本文标题:Linux小系统(一)-小系统制作

      本文链接:https://www.haomeiwen.com/subject/tlnlzqtx.html