一、编译内核相关命令

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

  1. 剪辑内核linux,Linux01-Linux编辑内核定制属于自己的内核49

    一.编译内核相关命令 1.重装initrd文件命令: mkinitrd:creates initial ramdisk p_w_picpaths for preloading modules 格式:m ...

  2. linux c内核开发,嵌入式uClinux的内核结构和开发环境

    1 引言 嵌入式操作系统是嵌入式系统的灵魂,而且在同一个硬件平台上可以嵌入不同的嵌入式操作系统.比如ARM7TDMI内核,可以嵌入Nucleus.VxWorks.uClinux等操作系统.在此主要对u ...

  3. linux网络保存退出,linux编辑文件后如何保存退出

    linux编辑文件后如何保存退出? 命令是wq 保存并退出. 首先按ESC进入Command模式,然后输入":wq",回车就可以保存并退出了. 推荐:<Linux教程> ...

  4. linux安装定制添加输入,Arch Linux--定制自己的Linux操作系統(乙-國際化桌面安裝篇)...

    Arch Linux--定制自己的Linux操作系統 ----乙-國際化&桌面安裝篇 相信大家看了<甲-安裝篇>之後,Arch Linux系統已經可以正常運行了吧?不過,Arch ...

  5. linux中initrd的含义,Linux2.6 内核的 Initrd 机制解析

    1.什么是 Initrdinitrd 的英文含义是 boot loaderinitialized RAM disk,就是由 boot loader 初始化的内存盘.在 linux内核启动前, boot ...

  6. Linux 升级到指定内核(Centos7 yum升级内核、centos系统中kernel-devel)

    文章目录 一.Linux 升级内核 Centos7 yum/rpm升级到最新内核 Centos 7 rpm升级到指定内核 关于Linux依赖包资源下载 二.Linux内核源码的编译及安装 三.设置 g ...

  7. 面具busybox模块_使用 linux kernel +busybox 定制linux系统

    目的: 了解linux的启动过程 主要内容: 1.grub 是启动程序的bootloader 2.linux-kernel 是linux的开源内核 3.busybox 是linux的工具集合 启动顺序 ...

  8. 内核定制与编译准备工作

    1   CentOS5.X/6.X平台内核定制与编译 1.1 为什么选择centos centos是redhat红帽公司企业发行版rhel系列的开源发行版本,它也是面向企业服务器架构的,由于紧跟red ...

  9. linux操作系统定制的目的是,Linux操作系统在定制PMP DM320的应用解析

    linux Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议. ...

最新文章

  1. 微生物组学研究的可再现性、可重现性、稳定性与普适性
  2. 安卓天天练练(十一)用list绑数据
  3. 在Eclipse中的Android项目里实现代码“.NET研究”复用
  4. 拥抱大家庭,nodejs走thrift
  5. BS版代码生成器 简介
  6. Java8 lambda支持
  7. uniapp开发实例github_跨端开发痛点?送你一款Vue最流行的跨端框架——uni-app
  8. 7套干货,Python常用技术学习知识图谱!!(史上最全,建议收藏)
  9. 【堆内存】动态图+代码五分钟轻松理解学会
  10. 无法启用插件,因为它引起了一个致命错误(fatal error)。
  11. mysql的%rowtype_Oracle %TYPE 和 %ROWTYPE 使用
  12. Q81:“三角形网格”之“PLY文件”
  13. mysql 聚集函数 count 使用详解
  14. CS224N笔记——机器翻译和GRU以及LSTM
  15. C#语法基础(三)----窗体设计
  16. 科蓝ichat泡分机器人 官网
  17. OBS 录制黑屏的解决方法
  18. CSS设计模式读书笔记
  19. ios手机添加frida软件源
  20. APICloud教程

热门文章

  1. git merge git pull时候遇到冲突解决办法git stash
  2. NetCore入门篇:(二)Net Core项目创建
  3. vi/vim 中批量在行插入或删除指定字符
  4. Android nomedia 避免图片等资源泄露在系统图库其中
  5. Merge into的使用详解-你Merge了没有
  6. SQL Server 文件路径
  7. BitLocker Partition Recovery
  8. java哪个软件编程好学吗_java好学吗?java是不是最难学的语言?
  9. 【Hibernate步步为营】--多对多映射详解
  10. Hibernate中自动生成数据库表的两种方式