Linux01-Linux编辑内核定制属于自己的内核49
一、编译内核相关命令
1、重装initrd文件命令:
mkinitrd:creates initial ramdisk p_w_picpaths for preloading modules
格式:mkinitrd initrd文件路径 内核版本号,如:mkinitrd /boot/initrd-`uname -r`.img `uname -r`
2、I/O处理命令
a、命令格式说明2
${parameter#*word}
${parameter##*word}
The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches the beginning of the value of
parameter, then the result of the expansion is the expanded value of parameter with the shortest matching pattern (the ?..?.
case) or the longest matching pattern (the ?..#?..case) deleted. If parameter is @ or *, the pattern removal operation is
applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable sub-
scripted with @ or *, the pattern removal operation is applied to each member of the array in turn, and the expansion is the
resultant list.
${parameter%word*}
${parameter%%word*}
The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches a trailing portion of the
expanded value of parameter, then the result of the expansion is the expanded value of parameter with the shortest matching
pattern (the ?..?..case) or the longest matching pattern (the ?..%?..case) deleted. If parameter is @ or *, the pattern
removal operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is
an array variable subscripted with @ or *, the pattern removal operation is applied to each member of the array in turn, and
the expansion is the resultant list.
b、命令格式
# FILE=/usr/local/src
# echo ${FILE#*/}: usr/local/src
# echo ${FILE##*/}: src
# ${FILE%/*}: /usr/local
# ${FILE%%/*}:
二、编译系统内核、grub和文件系统到新的磁盘
1、在原有CentOS5.9中添加一块IDE硬盘分2个磁盘并格式化为ext3文件系统
2、挂载分区
mkdir /mnt/boot
mkdir /mnt/sysroot
mount /dev/hda1 /mnt/boot
moutn /dev/hda2 /mnt/sysroot
3、创建grub
grub-install --root-directory=/mnt /dev/hda
4、复制系统内核到/mnt/boot下cp /boot/vmlinuz-2.6.18-348.el5 /mnt/boot/vmlinuz
5、重装initrd文件:mkinitrd /boot/initrd-`uname -r`.img `uname -r`
6、重新编译根文件系统文件
cp /boot/initrd-2.6.18-348.el5.img /root
mv initrd-2.6.18-348.el5.img initrd-2.6.18-348.el5.img.gz
gzip -d initrd-2.6.18-348.el5.img.gz
mkdir test
cd test
cpio -id < ../initrd-2.6.18-348.el5.img或zcat /boot/initrd-2.6.18-348.el5.img | cpio -id
vim init(修改其中一行为mkrootdev -t ext3 -o defaults,ro /dev/hda2注释掉#resume LABEL=SWAP-sda5)
7、封装新的根文件系统
find . | cpio -H newc --quiet -o | gzip -9 > /mnt/boot/initrd.gz
8、编辑新的grub文件vim /mnt/boot/grub/grub.conf
default=0
timeout=5
title Test Linux (Magedu Team)
root (hd0,0)
kernel /vmlinuz
initrd /initrd.gz
9、创建根文件系统中必要的文件
cd /mnt/sysroot
mkdir -pv proc sys dev etc/rc.d lib bin sbin boot home var/log usr/{bin,sbin} root tmp
10、复制文件系统的bash环境
cp /sbin/init /mnt/sysroot/sbin/
cp /bin/bash /mnt/sysroot/bin
11、复制系统共享库文件
ldd /sbin/init
cp /lib/libsepol.so.1 /mnt/sysroot/lib
cp /lib/libselinux.so.1 /mnt/sysroot/lib
cp /lib/libc.so.6 /mnt/sysroot/lib
cp /lib/libdl.so.2 /mnt/sysroot/lib
ldd /bin/bash
cp /lib/libtermcap.so.2 /mnt/sysroot/lib
12、编辑inittab为linux初始化文件系统时init初始化程序用到的配置文件
vim /mnt/sysroot/etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
chmod +x /mnt/sysroot/etc/inittab
13、编辑vim /mnt/sysroot/etc/rc.d/rc.sysinit
#!/bin/bash
#
echo -e "\tWelcome to \033[31mMageEdu Team\033[0m Linux."
/bin/bash
chmod +x /mnt/sysroot/etc/rc.d/rc.sysinit
14、编辑脚本用于复制二进制程序及其依赖的库文件的脚本可复制所有要用到的系统命令
#!/bin/bash
#
DEST=/mnt/sysroot
libcp() {
LIBPATH=${1%/*}
[ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH
[ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished."
}
bincp() {
CMDPATH=${1%/*}
[ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH
[ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH
for LIB in `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`; do
libcp $LIB
done
}
read -p "Your command: " CMD
until [ $CMD == 'q' ]; do
! which $CMD &> /dev/null && echo "Wrong command" && read -p "Input again:" CMD && continue
COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`
bincp $COMMAND
echo "copy $COMMAND finished."
read -p "Continue: " CMD
done
15、复制系统的网卡模块
mkdir /mnt/sysroot/lib/modules
cp /lib/modules/2.6.18-348.el5/kernel/drivers/net/mii.ko /mnt/sysroot/lib/modules
cp /lib/modules/2.6.18-348.el5/kernel/drivers/net/pcnet32.ko /mnt/sysroot/lib/modules
16、编辑/mnt/sysroot/etc/inittab文件加载网卡模块添加
insmod /lib/modules/mii.ko
insmod /lib/modules/pcnet32.ko
ifconfig eth0 172.16.100.13/16
ifconfig lo 127.0.0.1/8
/bin/bash
17、切入到定制的系统内核进行测试chroot /mnt/sysroot
18、***原有宿主机的第一块磁盘保留第二块磁盘启动系统测试效果。
转载于:https://blog.51cto.com/zkhylt/1417785
Linux01-Linux编辑内核定制属于自己的内核49相关推荐
- 剪辑内核linux,Linux01-Linux编辑内核定制属于自己的内核49
一.编译内核相关命令 1.重装initrd文件命令: mkinitrd:creates initial ramdisk p_w_picpaths for preloading modules 格式:m ...
- linux c内核开发,嵌入式uClinux的内核结构和开发环境
1 引言 嵌入式操作系统是嵌入式系统的灵魂,而且在同一个硬件平台上可以嵌入不同的嵌入式操作系统.比如ARM7TDMI内核,可以嵌入Nucleus.VxWorks.uClinux等操作系统.在此主要对u ...
- linux网络保存退出,linux编辑文件后如何保存退出
linux编辑文件后如何保存退出? 命令是wq 保存并退出. 首先按ESC进入Command模式,然后输入":wq",回车就可以保存并退出了. 推荐:<Linux教程> ...
- linux安装定制添加输入,Arch Linux--定制自己的Linux操作系統(乙-國際化桌面安裝篇)...
Arch Linux--定制自己的Linux操作系統 ----乙-國際化&桌面安裝篇 相信大家看了<甲-安裝篇>之後,Arch Linux系統已經可以正常運行了吧?不過,Arch ...
- linux中initrd的含义,Linux2.6 内核的 Initrd 机制解析
1.什么是 Initrdinitrd 的英文含义是 boot loaderinitialized RAM disk,就是由 boot loader 初始化的内存盘.在 linux内核启动前, boot ...
- Linux 升级到指定内核(Centos7 yum升级内核、centos系统中kernel-devel)
文章目录 一.Linux 升级内核 Centos7 yum/rpm升级到最新内核 Centos 7 rpm升级到指定内核 关于Linux依赖包资源下载 二.Linux内核源码的编译及安装 三.设置 g ...
- 面具busybox模块_使用 linux kernel +busybox 定制linux系统
目的: 了解linux的启动过程 主要内容: 1.grub 是启动程序的bootloader 2.linux-kernel 是linux的开源内核 3.busybox 是linux的工具集合 启动顺序 ...
- 内核定制与编译准备工作
1 CentOS5.X/6.X平台内核定制与编译 1.1 为什么选择centos centos是redhat红帽公司企业发行版rhel系列的开源发行版本,它也是面向企业服务器架构的,由于紧跟red ...
- linux操作系统定制的目的是,Linux操作系统在定制PMP DM320的应用解析
linux Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议. ...
最新文章
- 微生物组学研究的可再现性、可重现性、稳定性与普适性
- 安卓天天练练(十一)用list绑数据
- 在Eclipse中的Android项目里实现代码“.NET研究”复用
- 拥抱大家庭,nodejs走thrift
- BS版代码生成器 简介
- Java8 lambda支持
- uniapp开发实例github_跨端开发痛点?送你一款Vue最流行的跨端框架——uni-app
- 7套干货,Python常用技术学习知识图谱!!(史上最全,建议收藏)
- 【堆内存】动态图+代码五分钟轻松理解学会
- 无法启用插件,因为它引起了一个致命错误(fatal error)。
- mysql的%rowtype_Oracle %TYPE 和 %ROWTYPE 使用
- Q81:“三角形网格”之“PLY文件”
- mysql 聚集函数 count 使用详解
- CS224N笔记——机器翻译和GRU以及LSTM
- C#语法基础(三)----窗体设计
- 科蓝ichat泡分机器人 官网
- OBS 录制黑屏的解决方法
- CSS设计模式读书笔记
- ios手机添加frida软件源
- APICloud教程