一、编译内核相关命令

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相关推荐

  1. linux 内核学习2-使用笨叔叔定制的内核

    linux 内核学习2-使用笨叔叔定制的内核 1. 目的 编译一个ARM版本的内核镜像,谁让我是做Android的呢!并且在QEMU上运行. 2. 准备工作 2.1 开发环境 ubuntu 18.4虚 ...

  2. 编译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 ...

  3. java虚拟机臃肿_同样的内核,为什么linux干净稳定,而android臃肿又乌烟瘴气?...

    原标题:同样的内核,为什么linux干净稳定,而android臃肿又乌烟瘴气? Android是一套开源的手机操作系统,在全球范围内它的使用非常广泛,拥有全球最大的市场占有率.众所周知,Android ...

  4. 编译linux内核成vmlinuz,Linux内核编译与安装

    原标题:Linux内核编译与安装 Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统,内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制.Linux内核的一 ...

  5. 2021-10-16python笔记(Linux内核简介与Linux基础命令)

    前面的博文已经教会了大家如何下载和安装Linux操作系统,并且使用Xshell软件远程连接Linux服务器,这节课我们要进入真正的Linux基础学习中. 知识点概括: 1.Linux的心脏-Linux ...

  6. 编译linux内核生成.ko,Linux内核编译完整过程

    通过网上的资料我自己的实际内核编译,我把对Linux内核编译的过程写在这里,也许对其他的Linux爱好者的编译学习有些帮助,其中很大部分是网上的资料,另外就是我在实际编译过程中的一些实际经验. 内核简 ...

  7. 【Linux】Linux添加系统调用以及内核编译过程

    在想要替换原有系统内核或者需要在原来的系统中添加一些系统调用的时候就会涉及到Linux内核的编译.但是内核编译虽然步骤简单,但是需要注意的东西还是太多了.首先一点就是由于Linux的开源性导致的版本问 ...

  8. linux mint 18.3 内核,Linux Mint Linux用户可以升级到18.2 18.3”

    Linux Mint Linux用户可以升级到18.2 18.3"现在应该在造币厂"的技术 Linux Mint的升级路径--从"索尼娅".现在的操作系统是一个 ...

  9. linux内核端口绑定,linux 多网卡bonding 绑定 端口聚合

    将多个Linux网络端口绑定为一个,可以提升网络的性能,比如对于备份服务器,需要在一个晚上备份几个T的数据, 如果使用单个的千兆网口将会是很严重的瓶颈.其它的应用,比如ftp服务器,高负载的下载网站, ...

  10. 武汉linux内核好找吗,Linux内核入门

    Linux内核入门 收藏 如何获取Linux内核源代码 下载Linux内核当然要去http://www.kernel.org/了,网站提供了两种文件下载,一种是完整的Linux内核,另一种是内核增量补 ...

最新文章

  1. linux 拿shell,linux下备份拿shell[渗透必备]
  2. 服务器部署多个tomcat方法
  3. 昇腾AI计算,无惧618冲动消费
  4. 移动端兼容性问题解决方案
  5. Oracle 11g Dataguard 物理备库配置(三)之Dataguard broker配置
  6. 解决微信调整字体大小导致Html5页面混乱
  7. [转] 数据挖掘 机器学习 模式识别的关系
  8. JSP EL表达式中11个隐藏对象file:///D:/SoftwareFile/qq file/MobileFile/34090016310074682(1).png
  9. charles抓包踩过的坑之一 ——手机开了代理,不能访问网络
  10. 子群的陪集-》群的拉格朗日定理
  11. HTML YouTube 视频
  12. 对话DeepMind创始人:建立通用人工智能
  13. 兼容win7桌面待办软件 美化桌面的待办小工具
  14. 2020蚂蚁森林自动收能量-保持更新
  15. VMware虚拟磁盘管理器用法帮助 用法:vmware-vdiskmanager.exe
  16. ionic 中的折线图与柱状图
  17. Android开发——查询/杀死手机里正在运行的进程
  18. 光纤接续为什么不建议一管多熔?
  19. java事件处理入门
  20. C语言库函数— qsort () 详解

热门文章

  1. C# 导出word文档及批量导出word文档(3)
  2. 配置IPsec on GRE Tunnel with IOS Firewall and NAT
  3. 通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行(转)
  4. jsonrpc aria2_抛弃迅雷,Aria2 新手入门
  5. python高维数据_t-SNE高维数据可视化(python)
  6. java main 命令行_java Main 命令行
  7. redis 关系数据库怎么转换 和_redis数据库设计(转)
  8. android 方法超时,android socket.io中的发出或确认超时处理?
  9. python二分法查找程序_Python程序查找最大EVEN数
  10. java中get接口示例_Java即时类| 带示例的get()方法