定制属于自己的 linux 内核(Step 1)

linux素来以富模化著称,这为linux的移植及改版工作来了巨大的好,

今天我先从裁一个linux kernel开始今后定制工作埋下伏笔,

裁的过程也是我们熟悉linux启动的过程,希望大家一起随我动手实验.将定

制化实现到底 :)


0)  在现有虚拟操作系统A上挂载一块20G磁盘,此磁盘在以后将作为简版

linux系统B的启动磁盘

wKiom1MVshTACLaOAAIcnmjx_tI148.jpg


1)  A操作系中将才添加的最后一盘进行分区格式化操作

wKioL1MVsimz7CRhAAP_awjY7do212.jpg


2)  将磁格式化二个分区,第一个分区100M,第二个分区19.9G,w保存退出

wKiom1MVsoDhBhrFAAJwUUy6EPw612.jpg


3) 将二个分区/dev/sdd1/dev/sdd2,文件系格式化ext4格式

wKioL1MVsneSvtXVAAMFSmmPbz8728.jpg


4)  mnt中建立目,将格式化后的磁分区挂到新建目

wKioL1MVssXxtfhDAAIP7hb-Rns168.jpg


5)  将系统磁盘引导grub安装到sdd磁盘目录中,这样我们的BIOS才能

道启动何种操作系统

wKiom1MVswmQAbyEAAMdH1YlXNo965.jpg


6) grub-install命令调用后在/mnt/boot/grub下就可以看到这些文件

并且拷贝A系统中的vmlinuz与initramfs文件到制作磁盘目录

wKioL1MVsv6TMiN7AAHj8k1FBag189.jpg


7)  vim编辑MBR(GRUB)启动配置信息

wKiom1MVs2WSCrYlAAE-jCjtbYs723.jpg


8)  在目标磁盘中建立linux常见的文件夹

wKiom1MVsz_TJzRHAANjGgB6NNk966.jpg


9)  B系统启动后可以用一些基本的命令,我们可以拷贝基本bash命令和共享库

wKioL1MaxfSTLuuTAAIn2AfjmWU881.jpg


10) 命令与共享库拷贝的源代码


#!/bin/bash
#
function main {
    while true; do
        read -p "Enter you option: " option
        [ "$option" == "quit" ] && exit
        which --skip-alias "$option" &> /dev/null && copycmd;copylib || echo "noting lib"; continue
    done
}
function copycmd {
    if [ $? -eq 0 ]; then
        local result=`which --skip-alias "$option"`
        mydirname=`dirname "$result"`
        [ ! -d "/mnt/sysroot$mydirname" ] && mkdir -p "/mnt/sysroot$mydirname"
        [ ! -e "/mnt/sysroot$result" ] && cp "$result" "/mnt/sysroot$result"
    fi
}
function copylib {
    if [ $? -eq 0 ]; then
        local result=`which --skip-alias "$option"`
        for i in `ldd "$result" | grep -o "/[^[:space:]]\{1,\}"`; do
            mylibname=`dirname "$i"`
            [ ! -d "/mnt/sysroot$mylibname" ] && mkdir -p "/mnt/sysroot$mylibname"
            [ ! -e "/mnt/sysroot$i" ] && cp "$i" "/mnt/sysroot$i"
        done
    fi
    echo "${option}  copy complete !"
}
main

11)  共享拷贝完毕后,基本制作过程完成,将目标磁盘卸下

wKiom1MVs6Ki4B9-AAEFxu9RuHQ819.jpg


12)  新建另一个虚拟机,将刚才制作好的磁盘挂载到此启动

wKiom1MVs-vjys58AAGVc9uEtuU199.jpg


13) OS X VMware的磁盘加载过程

wKiom1MVtCbAgHI0AAGIjCb0Tao291.jpg


14) 注意这里的选取磁盘过程

wKiom1MVtFfzo5eMAAMMJSB2GUQ972.jpg


15)  选择刚才制作好的磁盘4


wKiom1MVtMngtD9pAAEViNwyb0s955.jpg



16) 启动grub选择启动项,这些内容与第7部定制的配置文件相类似

wKioL1MVtKvgGIjeAAGyydmVoe4366.jpg

wKiom1MVtNfz0jKOAAIB6wYTj2w378.jpg


18)  在引导启动后进入基本的bash命令行模式,可以调用第10步拷贝

的命令来完成最简单的操作ls,cd什么的

wKioL1MVtMLjDv3zAANl2_i2Izk845.jpg



19)  在这里其实我们的系统还缺少最基本一些驱动程序,例如网卡驱动,我们可以尝试将网卡驱动添加到这个精简的操作系统之上


wKioL1M757zQVxUQAANpGXLX-yM360.jpg


20) 使用lsmod命令查找现系统网卡信息


wKiom1M75-WilHcTAAITDXNfRxk156.jpg


21) 在/lib/modules/内核版本号下我们可以找到e1000.ko的网卡驱动程序,将其拷贝至/mnt/sysroot/lib下(当然其他驱动程序也可类推)


wKiom1M75-bS9TCDAAK-zD4Gxmo611.jpg


22) 编辑grub文件,更改启动程序为/bin/init


wKioL1M757-jilNQAAFHa1Z8n40431.jpg


23 ) 在/bin/init 自定义的脚本文件中,我们使用insmod来加载刚才拷贝到lib中的驱动程序


wKioL1M758CCmZmcAAFWYir0P7k258.jpg


24) 重启系统,测试定制linux系统是否可以查看网络信息


wKiom1M75-mRFxs3AAKI1QxtfrM841.jpg




你可能感兴趣的:(新建,信息)