linux基础之Mini Linux制作

一、编译一个简单的linux步骤如下:

# yum groupinstall ""Development Tools" "Server Platform Development" -y    //安装开发包组
# tar xf linux-3.10.65.tar.xz  //下载内核这里就不介绍了
# cd /usr/src
# ln -sv linux-3.10.15 linux  
# cd linux

# make help# make allnoconfig
# make menuconfig
这里简单介绍下这次编译到的选项:内核核心模块相关的:    
[*]64-bit kernel  //内核编译成64位的
[*]enable loadable module support --> [*]Module uploading   //允许装卸载模块,这里都是编译进内核的,不借助ramdisk装载模块,先选中吧
   Processor type and features  --->  [*]Symmetric multi-processing support   //支持多处理器,linux上多处理器和多核心是一个意思
                                      Processor family (Generic-x86-64)  ---> (X) Generic-x86-64  //选通用的就可以
   Bus options (PCI etc.)  --->  [*] PCI support    //PCI相关的
   Device Drivers  --->   SCSI device support  ----> [*]SCSI device support  //SCSI设备的支持
                                                     [*]SCSI disk support  //SCSI硬盘支持
                          [*] Fusion MPT device support  --->  [*] Fusion MPT ScsiHost drivers for SPI  //lspci命令可以查看到本机pci的信息   
                                                               (*) Fusion MPT misc device (ioctl) drivers 
文件系统相关的:
File systems  ---> <*> Second extended fs support    
                   <*> Ext3 journalling file system support
                             [*]   Default to ‘data=ordered‘ in ext3 (NEW)
                             [*]   Ext3 extended attributes (NEW)
                             <*> The Extended 4 (ext4) filesystem         

Executable file formats / Emulations  ---> [*] Kernel support for ELF binaries
                                           [*] Write ELF core dumps with partial segments (NEW)
                                           <*> Kernel support for scripts starting with #!

键盘鼠标usb相关的:

Device Drivers  ---> Input device support  --->  [*]Keyboards  --->
                                                 [*]   Mice  --->
                                                 <*>   Mouse interface
                     [*] USB support  ---> <*>   Support for Host-side USB
                                                 <*>     xHCI HCD (USB 3.0) support
                                                 <*>     EHCI HCD (USB 2.0) support
                                                 <*>     OHCI HCD support
                                                 <*>     UHCI HCD (most Intel and VIA) Support

udev相关的:

Device Drivers --> Generic Driver Options --> Mintain a devtmpfs filesystem to mount at /dev  //识别到的设备都挂载到/dev目录
# make -j 4 bzImage //只编译内核文件
# fdisk /dev/sdb  //在现有系统上添加一块盘,分两个区,一个用来做boot,一个用来做根目录

# mke2fs -t ext4 /dev/sdb1
# mke2fs -t ext4 /dev/sdb2
# mkdir /mnt/{boot,sysroot}# mkdir -pv etc dev proc sys bin usr/{lib,bin,sbin,lin64} lib64 lib/modules home var/{log,run,lock} tmp mnt media root   
# mount /dev/sdb1 /mnt/boot/
# mount /dev/sdb2 /mnt/sysroot
# grub-install --root-directory=/mnt /dev/sdb
# cd /usr/src/linux
# cp arch/x86/boot/bzImage /mnt/boot/bzImage
# file /mnt/boot/bzImage
# vim /mnt/boot/grub/grub.conf
    default=0
    timeout=5
    title Mini Linux (3.10.67)
    root (hd0,0)
    kernel /bzImage ro root=/dev/sda2 init=/bin/bash
写一个脚本bincp复制命令及依赖库到sysroot下
    #!/bin/bash
    #
    target=/mnt/sysroot
    [ -d $target ] || mkdir /mnt/sysroot

    read -p "A command:" command

    libcp(){
      for lib in $(ldd $1 | grep -o "[^[:space:]]*/lib[^[:space:]]*"); do
        libdir=$(dirname $lib)
        [ -d $target$libdir ] || mkdir -p $target$libdir
        [ -f $target$lib ] || cp $lib $target$lib
      done
    }

    while [ "$command" != ‘q‘ -a "$command" != ‘quit‘ ]; do
      if !which $command &> /dev/null;then
        read -p "No such command,enter again:" command
        continue
      fi
      command=$(which --skip-alias $command)
      cmnddir=$(dirname $command)

       [ -d $cmnddir ] || mkdir -p $target$cmnddir
       [ -f $target$command ] || cp $command $target$command
        libcp $command
        read -p "Another command(quit):" command
      done

新建虚拟机Mini Linux使用上面的sdb硬盘
重启Mini Linux,可以在bash命令行进行一些命令的操作,比如cd,ls,mount等

也可以新建init程序让系统开机运行

新建脚本init: /mnt/sysroot/sbin/init
                #!/bin/bash
                #
                echo -e "\twelcome to \033[32mMini\033[0m linux"
                mount -n -t proc proc /proc
                mount -n -t sysfs /sys
                mount -n -o remount,rw /dev/sda2 /
                /bin/bash
        # chmod +x /mnt/sysroot/sbin/init

二、

原文地址:https://www.cnblogs.com/ckh2014/p/10823127.html

时间: 2024-08-07 10:54:06

linux基础之Mini Linux制作的相关文章

linux基础知识学习-linux架构

硬盘分区: 第一扇区(512bytes): MSR:master boot record (446bytes)主引导分区 partion table:(64bytes)分区表,四个.可以是主分区(primary)或者扩展分区(Extended), 每个表指向磁盘某段区间.最多只有一个扩展分区,扩展分区里面可以扩展多个逻辑分区.其余扇区(柱面(cylinder)):实际存储的地方 linux 中(\etc/fstab):IDE  总线形式不同 (a~d)/dev/hda SATA,SCSI,USB

[Linux基础环境/软件]Linux下安装mysql

我是使用免安装的包mysql-5.5.28-linux2.6-x86_64.tar.gz(在http://dev.mysql.com/downloads/可以下载到最新的包)的.直接解压,然后配置,初始化数据库,启动即可. 安装步骤有: 解压和建立软链: 配置文件和配置参数: 初始化数据库: 启动和关闭: 建立数据库用户和授权. 1. 解压和建立软链: #tar xzvf mysql-5.5.28-linux2.6-x86_64.tar.gz #在/usr/local目录下 #ln -s mys

Linux基础系列之---Linux的常见发行版

Linux的常见发行版有几大分支: Linux发行版有数百种之多,我们只列举常见的几种发行版有:RedHat.Debian.Slackware.Gentoo等几大分支,除介绍的几大分支外,还有基于以上分支的二次发行版,如:基于RedHat的二次发行版CentOS.基于Debian的二次发行版Ubutu.knopix等.还有基于二次发行版再此封装发行的版本,如基于Ubutu发行的mint等. 1.RedHat分支 Redhat 9.0(个人版.9.0后交给了Fedora进行维护) RedHat E

Coding之路——掌握Linux基础(1):Linux如何使用主机与磁盘

1.磁盘规划与主机划分 (1)硬件在Linux中文档名: ——IDE硬盘:/dev/hd[a-d] ——SCSI/SATA/USB硬盘:/dev/sd[a-p] ——USB闪存:/dev/sd[a-p] ——软盘驱动器:/dev/fd[0-1] ——打印机:/dev/lp[0-2](25针),/dev/usb/lp[0-15](USB) ——鼠标:/dev/usb/mouse[0-15](USB),/dev/psaux(PS2) ——当前CDROM/DVDROM:/dev/cdrom ——当前鼠

【Linux基础 07】Linux远程管理常用命令

目标 关机/重启 shutdown 查看或配置网卡信息 ifconfig ping 远程登录和复制文件 ssh scp 01. 关机/重启 序号 命令 对应英文 作用 01 shutdown 选项 时间 shutdown 关机/重新启动 1.1 shutdown shutdown 命令可以 安全 关闭 或者 重新启动系统 选项 含义 -r 重新启动 提示: 不指定选项和参数,默认表示 1 分钟之后 关闭电脑 远程维护服务器时,最好不要关闭系统,而应该重新启动系统 常用命令示例 # 重新启动操作系

Linux基础系列之--Linux基础入门

1.Linux相关的开源协定有: GPL:General Public License(通用公共许可证) LGPL GPLv2 BSD: Apache (1).GPL: DPL是GNU General Public License的缩写,是GNU通用公共授权非正式的中文翻译.它并非由自由软件基金会所发表,亦非使用GNU通用公共授权的软件的法定发布条款─只有GNU通用公共授权英文原文的版本始具有此等效力. 详细信息参见链接:https://baike.baidu.com/item/GPL/2357

Linux基础教程 linux下cat 命令使用详解

cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 1.命令格式: cat [选项] [文件]... 2.命令功能: 兄弟连Linux培训 小编,来讲一下cat主要的三大功能: 1.一次显示整个文件:cat filename 2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件. 3.将几个文件合并为一个文件:cat file1 file2 > file

linux基础-附件1 linux系统启动流程

附件1 linux系统启动流程 最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主板上的硬件(硬盘,网络接口,键盘,串口,并口).现在大部分的BIOS允许你从软盘.光盘或者硬盘中选择一个来启动计算机.下一步,计算机将从你所选择的存储设备中读取起始的512 bytes(比如光盘一开是的512 bytes,如果我们从光盘启动的话).这512 bytes叫做主引导记录MBR (mast

【Linux基础】常用Linux命令

常用Linux命令:cd, cp, ls, mv, rm cd命令:切换当前工作目录至 dirName(目录参数) 其中 dirName 可为绝对路径或相对路径.若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录). 另外,"~" 也表示为 home 目录的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录. cd [dirName] 参数: dirName:要切换的目标目录. 实例