剪辑内核linux,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、***原有宿主机的第一块磁盘保留第二块磁盘启动系统测试效果。
剪辑内核linux,Linux01-Linux编辑内核定制属于自己的内核49相关推荐
- linux 内核学习2-使用笨叔叔定制的内核
linux 内核学习2-使用笨叔叔定制的内核 1. 目的 编译一个ARM版本的内核镜像,谁让我是做Android的呢!并且在QEMU上运行. 2. 准备工作 2.1 开发环境 ubuntu 18.4虚 ...
- 编译3.0的linux内核,1-3-编译Linux内核
1-3-编译Linux内核 1.将Linux源码包拷贝到共享文件夹. 2.进入共享文件夹. 3.解压,命令#tar xvfj Kernel_3.0.8_TQ210_for_Linux_v2.2.tar ...
- java虚拟机臃肿_同样的内核,为什么linux干净稳定,而android臃肿又乌烟瘴气?...
原标题:同样的内核,为什么linux干净稳定,而android臃肿又乌烟瘴气? Android是一套开源的手机操作系统,在全球范围内它的使用非常广泛,拥有全球最大的市场占有率.众所周知,Android ...
- 编译linux内核成vmlinuz,Linux内核编译与安装
原标题:Linux内核编译与安装 Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统,内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制.Linux内核的一 ...
- 2021-10-16python笔记(Linux内核简介与Linux基础命令)
前面的博文已经教会了大家如何下载和安装Linux操作系统,并且使用Xshell软件远程连接Linux服务器,这节课我们要进入真正的Linux基础学习中. 知识点概括: 1.Linux的心脏-Linux ...
- 编译linux内核生成.ko,Linux内核编译完整过程
通过网上的资料我自己的实际内核编译,我把对Linux内核编译的过程写在这里,也许对其他的Linux爱好者的编译学习有些帮助,其中很大部分是网上的资料,另外就是我在实际编译过程中的一些实际经验. 内核简 ...
- 【Linux】Linux添加系统调用以及内核编译过程
在想要替换原有系统内核或者需要在原来的系统中添加一些系统调用的时候就会涉及到Linux内核的编译.但是内核编译虽然步骤简单,但是需要注意的东西还是太多了.首先一点就是由于Linux的开源性导致的版本问 ...
- linux mint 18.3 内核,Linux Mint Linux用户可以升级到18.2 18.3”
Linux Mint Linux用户可以升级到18.2 18.3"现在应该在造币厂"的技术 Linux Mint的升级路径--从"索尼娅".现在的操作系统是一个 ...
- linux内核端口绑定,linux 多网卡bonding 绑定 端口聚合
将多个Linux网络端口绑定为一个,可以提升网络的性能,比如对于备份服务器,需要在一个晚上备份几个T的数据, 如果使用单个的千兆网口将会是很严重的瓶颈.其它的应用,比如ftp服务器,高负载的下载网站, ...
- 武汉linux内核好找吗,Linux内核入门
Linux内核入门 收藏 如何获取Linux内核源代码 下载Linux内核当然要去http://www.kernel.org/了,网站提供了两种文件下载,一种是完整的Linux内核,另一种是内核增量补 ...
最新文章
- linux 拿shell,linux下备份拿shell[渗透必备]
- 服务器部署多个tomcat方法
- 昇腾AI计算,无惧618冲动消费
- 移动端兼容性问题解决方案
- Oracle 11g Dataguard 物理备库配置(三)之Dataguard broker配置
- 解决微信调整字体大小导致Html5页面混乱
- [转] 数据挖掘 机器学习 模式识别的关系
- JSP EL表达式中11个隐藏对象file:///D:/SoftwareFile/qq file/MobileFile/34090016310074682(1).png
- charles抓包踩过的坑之一 ——手机开了代理,不能访问网络
- 子群的陪集-》群的拉格朗日定理
- HTML YouTube 视频
- 对话DeepMind创始人:建立通用人工智能
- 兼容win7桌面待办软件 美化桌面的待办小工具
- 2020蚂蚁森林自动收能量-保持更新
- VMware虚拟磁盘管理器用法帮助 用法:vmware-vdiskmanager.exe
- ionic 中的折线图与柱状图
- Android开发——查询/杀死手机里正在运行的进程
- 光纤接续为什么不建议一管多熔?
- java事件处理入门
- C语言库函数— qsort () 详解
热门文章
- C# 导出word文档及批量导出word文档(3)
- 配置IPsec on GRE Tunnel with IOS Firewall and NAT
- 通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行(转)
- jsonrpc aria2_抛弃迅雷,Aria2 新手入门
- python高维数据_t-SNE高维数据可视化(python)
- java main 命令行_java Main 命令行
- redis 关系数据库怎么转换 和_redis数据库设计(转)
- android 方法超时,android socket.io中的发出或确认超时处理?
- python二分法查找程序_Python程序查找最大EVEN数
- java中get接口示例_Java即时类| 带示例的get()方法