定制属于自己的 linux 内核(Step 1) 推荐
2014-03-04 19:11
375 查看
linux素来以富模块化著称,这为linux的移植及改版工作带来了巨大的好处,
今天我们先从删裁一个linux kernel开始为今后定制工作埋下伏笔,这个删
裁的过程也是我们熟悉linux启动的过程,希望大家一起随我动手实验.将定
制化实现到底 :)
0) 在现有虚拟操作系统A上挂载一块20G磁盘,此磁盘在以后将作为简版
linux系统B的启动磁盘
1) 在A操作系统中将刚才添加的最后一块磁盘进行分区格式化操作
2) 将磁盘格式化为二个分区,第一个分区100M,第二个分区19.9G,w保存退出
3) 将二个分区/dev/sdd1与/dev/sdd2,文件系统格式化为ext4格式
4) 在mnt中建立目录,将格式化后的磁盘分区挂载到新建目录
5) 将系统磁盘引导grub安装到sdd磁盘目录中,这样我们的BIOS才能知道启动何种操作系统
6) grub-install命令调用后在/mnt/boot/grub下就可以看到这些文件
并且拷贝A系统中的vmlinuz与initramfs文件到制作磁盘目录
7) vim编辑MBR(GRUB)启动配置信息
8) 在目标磁盘中建立linux常见的文件夹
9) B系统启动后可以用一些基本的命令,我们可以拷贝基本bash命令和共享库
10) 命令与共享库拷贝的源代码
12) 新建另一个虚拟机,将刚才制作好的磁盘挂载到此启动
13) OS X VMware的磁盘加载过程
14) 注意这里的选取磁盘过程
15) 选择刚才制作好的磁盘4
16) 启动grub选择启动项,这些内容与第7部定制的配置文件相类似
18) 在引导启动后进入基本的bash命令行模式,可以调用第10步拷贝
的命令来完成最简单的操作ls,cd什么的
19) 在这里其实我们的系统还缺少最基本一些驱动程序,例如网卡驱动,我们可以尝试将网卡驱动添加到这个精简的操作系统之上
20) 使用lsmod命令查找现系统网卡信息
21) 在/lib/modules/内核版本号下我们可以找到e1000.ko的网卡驱动程序,将其拷贝至/mnt/sysroot/lib下(当然其他驱动程序也可类推)
22) 编辑grub文件,更改启动程序为/bin/init
23 ) 在/bin/init 自定义的脚本文件中,我们使用insmod来加载刚才拷贝到lib中的驱动程序
24) 重启系统,测试定制linux系统是否可以查看网络信息
今天我们先从删裁一个linux kernel开始为今后定制工作埋下伏笔,这个删
裁的过程也是我们熟悉linux启动的过程,希望大家一起随我动手实验.将定
制化实现到底 :)
0) 在现有虚拟操作系统A上挂载一块20G磁盘,此磁盘在以后将作为简版
linux系统B的启动磁盘
1) 在A操作系统中将刚才添加的最后一块磁盘进行分区格式化操作
2) 将磁盘格式化为二个分区,第一个分区100M,第二个分区19.9G,w保存退出
3) 将二个分区/dev/sdd1与/dev/sdd2,文件系统格式化为ext4格式
4) 在mnt中建立目录,将格式化后的磁盘分区挂载到新建目录
5) 将系统磁盘引导grub安装到sdd磁盘目录中,这样我们的BIOS才能知道启动何种操作系统
6) grub-install命令调用后在/mnt/boot/grub下就可以看到这些文件
并且拷贝A系统中的vmlinuz与initramfs文件到制作磁盘目录
7) vim编辑MBR(GRUB)启动配置信息
8) 在目标磁盘中建立linux常见的文件夹
9) B系统启动后可以用一些基本的命令,我们可以拷贝基本bash命令和共享库
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 !" } main11) 共享拷贝完毕后,基本制作过程完成,将目标磁盘卸下
12) 新建另一个虚拟机,将刚才制作好的磁盘挂载到此启动
13) OS X VMware的磁盘加载过程
14) 注意这里的选取磁盘过程
15) 选择刚才制作好的磁盘4
16) 启动grub选择启动项,这些内容与第7部定制的配置文件相类似
18) 在引导启动后进入基本的bash命令行模式,可以调用第10步拷贝
的命令来完成最简单的操作ls,cd什么的
19) 在这里其实我们的系统还缺少最基本一些驱动程序,例如网卡驱动,我们可以尝试将网卡驱动添加到这个精简的操作系统之上
20) 使用lsmod命令查找现系统网卡信息
21) 在/lib/modules/内核版本号下我们可以找到e1000.ko的网卡驱动程序,将其拷贝至/mnt/sysroot/lib下(当然其他驱动程序也可类推)
22) 编辑grub文件,更改启动程序为/bin/init
23 ) 在/bin/init 自定义的脚本文件中,我们使用insmod来加载刚才拷贝到lib中的驱动程序
24) 重启系统,测试定制linux系统是否可以查看网络信息
相关文章推荐
- 定制属于自己的 linux 内核(Step 2) 推荐
- 定制属于自己的 linux 内核(Step 3)
- 编译内核+BusyBox定制一个Linux提供ssh和web服务 推荐
- Linux之手动编译属于自己的微型内核 推荐
- Linux01-Linux编辑内核定制属于自己的内核49
- Linux01-Linux编译内核定制属于自己的内核48
- 私人定制---打造属于自己的linux小系统 推荐
- [个人推荐] Linux poll机制分析(基于内核3.10.0)
- 【原创分享】嵌入式linux应用之内核移植定制篇-前篇(linux-3.8.12 mini2440)--20130824
- Linux芯片级移植与底层驱动(基于3.7.4内核) --内核节拍 推荐
- Linux上定制内核
- 定制属于自己的自动化安装的linux系统镜像
- Linux内核开发进阶书籍推荐(不适合初学者)
- Linux驱动编程 step-by-step (十) Linux 内核链表
- Linux芯片级移植与底层驱动(基于3.7.4内核) --中断控制器 推荐
- bash自动化 定制属于自己的~Centos~ 推荐
- Linux—定制内核
- Linux 内核学习 书籍 推荐
- 基于Linux内核定制X86平台的微操作系统
- linux系统定制-LFS-( 一 ) 推荐