菜鸟学Linux 第034篇笔记  vmlinuz, initrd, modules, script

内核两部分

核心 /boot/vmlinuz-version

内核模块 /lib/modules/version

内核设计风格

单内核

模块化设计

微内核

装载模块命令

insmod

modprobe

查看Linux内核最新版本

www.kernel.org

查询所安装的发行版linux的内核版本 uname -r

用户空间访问、监控内核的方式

/proc, /sys 伪文件系统

/proc/sys 此目录中的文件很多是可读写的

/sys/ 某些文件可写

设定内核参数值的方法

会立即生效,但无法永久有效

echo value > /proc/sys/TO/somefile

e.g. echo 1 > /proc/sys/vm/drop-caches

sysctl -w kernel.hostname=msky

configure kernel parameters at runtime

-p     Load   in   sysctl   settings   from  the  file  specified  or

/etc/sysctl.conf if none  given.   Specifying  -  as  filename

means reading data from standard input.

-a     Display all values currently available.

永久有效,但无法立即生效

修改/etc/sysctl.conf   使用sysctl -p 来让内核重读该配置文件

修改是否通话双网卡流量传送 net.ipv4.ip_forward = 0

0 is disabled, 1 is enabled.

内核模块管理

lsmod program to show the status of modules in the Linux Kernel

modinfo program to show information about a Linux Kernel module

modprobe program to add and remove modules from the Linux Kernel

modprobe MOD_NAME 装载模块(不需要指路径)

modprobe -r MOD_NAME 卸载模块

insmod /PATH/TO/MOD_NAME 需要指路径

rmmod MOD_NAME

depmod program to generate modules.dep and map files.

depmod /PATH/TO/MODULES_DIR

内核中的功能 除了核心功能之外,在编译时,大多功能都有三种选择

1、不使用此功能

2、编译成内核模块

3、编译进内核

如何手动编译内核

make gconfig 需要GNOME Desktop Environment

图形开发库 GNOME Software Development

make kconfig 需要KDE (K Desktop Environment)

图形开发库 KDE Software Development

make menuconfig

下载Linux内核后解压

1. tar xf linux-4.8.11.tar -C /usr/src/

2. ln -sv linux-4.8.11 linux

3. make menuconfig 选择特性注意远程连接的需要显示的窗口够大才可以显示

如不知道要删除或配置某个模块可以导入先前的配置文件

即/boot/config-2.6.18-308.el5  将该文件mv到编译的文件夹下改为.config

4.  make  注意可能会需要非常长的时间0.5-2小时不等,不建议远程操作

因为时间长可能连接中断,会导致编译中断

如果非要远程,建议安装软件screen yum install screen

编译执行前使用screen

然后执行make

screen命令

不加任何参数建立screen

-ls 显示已经建立的屏幕

Ctrl+a 放开 按d 拆除屏幕

-r ID 还原回某屏幕

6. make modules_install

7.  make install

二次编译时清理 清理之前如果有需要请备份.config文件

make clean

make mrproper

grub-->kernel-->initrd-->ROOTFS(/sbin/init, /bin/bash)

克隆迷你小linux  (目录未测试成功,老报错,目前正在研究中。。。)

建立硬盘分区sdc1 sdc2

创建两个目录/mnt/boot /mnt/sysroot

将sdb1做成grub分区, 前章节有介绍,这里不作详细介绍

拷贝内核到/mnt/boot目录下

cp /boot/vmlinuz-2.6.18-308.el5 /mnt/boot/vmlinuz-2.6.18

做initrd

cp /boot/initrd-2.6.18-308.el5.img /root/

file initrd-2.6.18-308.el5.img

mv initrd-2.6.18-308.el5.img initrd-2.6.18-308.el5.img.gz

mkdir initrd

cd initrd

cpio -id < ../initrd-2.6.18-308.el5.img

此上命令可以用zcat /boot/initrd-2.6.18-308.el5.img | cpio -id

vim init

切换到最后一行找到

mkrootdev -t ext3 -o defaults,ro /dev/sda1 将sda1 更改为sdc2

打包成init放到/mnt/boot目录里 只可以解压的那个目录里执行该命令并

find . | cpio -H newc --quiet -o | gzip -9 > /mnt/boot/initrd.gz

最后创建grub.conf上一章也讲过了,这里不再重复

挂载sdc2到 /mnt/sysroot目录下创建基本的linux 根目录

/bin /boot /dev /etc /home /lib /proc /sys /root /sbin /tmp

/usr /var/log

cp /sbin/init /mnt/sysroot/sbin/

cp /bin/bash /mnt/sysroot/bin/

将以上两个文件所依赖的库文件拷贝到lib目录下

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/

cp /lib/ld-linux.so.2 /mnt/sysroot/lib/

ld /bin/bash

cp /lib/libtermcap.so.2 /mnt/sysroot/

在/mnt/sysroot/etc/创建inittab文件添加如下两行

id:3:initdefault:

si::sysinit:/etc/rc.d/rc.sysinit

在/mnt/sysroot/etc/rc.d/创建rc.sysinit文件添加如下两行

#!/bin/bash

#

echo -e "\tWelcome to \033[31mMySky lab\033[0m Linux."

/bin/bash

编写脚本自动拷贝某命令的库到某个目录下

学习两个bash 参数扩展

FILE=/usr/local/src

${parameter#word} echo ${FILE#*/} usr/local/src

${parameter##word} echo ${FILE##*/} src

${parameter%word} echo ${FILE%/*} /usr/local

${parameter%%word} echo ${FILE%%/*} 空

#!/bin/bash

#This scrip is used to copy lib to other directory.

DESTDIR=/mnt/sysroot

cplib() {

LIBPATH=${1%/*}

[ ! -d $DESTDIR$LIBPATH ] && mkdir -p $DESTDIR$LIBPATH

[ ! -e $DESTDIR${1} ] && cp $1 $DESTDIR$LIBPATH && echo "copy $DESTDIR${1} done"

}

cpbin() {

CMDPATH=${1%/*}

[ ! -d $DESTDIR$CMDPATH ] && mkdir -p $DESTDIR$CMDPATH

[ ! -e $DESTDIR${1} ] && cp $1 $DESTDIR$CMDPATH && echo "copy $DESTDIR${1} done"

for LIB in `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`; do

cplib $LIB

done

}

read -p "Input 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,\}"`

cpbin $COMMAND

echo "copy $COMMAND finished."

read -p "Continue command:" CMD

done

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1878450如需转载请自行联系原作者

Winthcloud

菜鸟学Linux 第034篇笔记 vmlinuz, initrd, modules, script相关推荐

  1. windows pxe 安装linux,菜鸟学Linux 第103篇笔记 pxe自动化安装linux

    菜鸟学Linux 第103篇笔记 pxe自动化安装linux 内容总览 linux的系统安装 kickstart文件的组成部分 DHCP (Dynamic Host Configuration Pro ...

  2. 菜鸟学Linux 第044篇笔记 算法和私有CA

    菜鸟学Linux 第044篇笔记 算法和私有CA 证书吊销列表CRL(Certificate Revocation List ) 如何解决私钥丢失 PKI: Public Key Infrastruc ...

  3. 菜鸟学Linux 第050篇笔记 dhcp

    菜鸟学Linux 第050篇笔记 dhcp DHCP (Dynamic Host Configuration Protocol) 早期bootp (boot protocol) lease Clien ...

  4. 菜鸟学Linux 第090篇笔记 corosync+drbd+mysql

    菜鸟学Linux 第090篇笔记 corosync+drbd+mysql 内容总览 上节回顾 DRBD (Distributed Replicated Block Device) 分布式复制块设备 配 ...

  5. 菜鸟学Linux 第033篇笔记 bootloader,inittab

    菜鸟学Linux 第033篇笔记 bootloader,inittab Linux 系统自启动流程 PC OS (Linux) POST-->BIOS(Boot Sequence)-->M ...

  6. 菜鸟学Linux 第052篇笔记 httpd-install and section2

    菜鸟学Linux 第052篇笔记  httpd-install and section2 apache 17years NCSA, httpd A Patchey Server = Apache FS ...

  7. Linux 日志 klogd,菜鸟学Linux 第038篇笔记 日志系统 syslogd,klogd

    菜鸟学Linux 第038篇笔记 日志系统 syslogd,klogd Linux上的日志系统 syslog开源 syslog-ng  商业版 日志系统 syslog syslog 服务 syslog ...

  8. 菜鸟学Linux 第031篇笔记 script,控制,while,function

    菜鸟学Linux 第031篇笔记 script,控制,while,function 一.脚本需求: 说明:此脚本能于同一个repo文件中创建之个yum源的指向: 1.接受一个文件名作为参数,此文件存放 ...

  9. 菜鸟学Linux 第093篇笔记 keepalived

    菜鸟学Linux 第093篇笔记 keepalived 内容总览 keepalived介绍 配置keepalived的ipvs功能 keepalived的几个问题解决方法 keepalived 它可以 ...

最新文章

  1. preparedStatement平台:
  2. 8.0 C++远征:对象数组
  3. redux模块化demo
  4. xshell连不上虚拟机linux的解决办法(用的默认NAT模式)
  5. c#中的23种设计模式
  6. yolov5论文_YOLOv5的妙用:学习手语,帮助听力障碍群体
  7. eclipse编译java项目class文件_动态编译 Java 代码以及生成 Jar 文件
  8. 实践解析可视化开发平台FlinkSever优势
  9. POJ 3080 Blue Jeans (KMP)
  10. LeetCode 458. 可怜的小猪(信息论方法)
  11. L3-001 凑零钱 (30 分)—团体程序设计天梯赛
  12. mysql btree面试_java面试题:你了解mysql的B+TREE索引吗?
  13. c语言程序设计答案 第五版 谭浩强
  14. Android TCP客户端调试助手
  15. JDK8新特性知识点总结
  16. android mic切换_android手机的Mic对声音的感知 .
  17. 了解认识微服务——助力小白成长
  18. redis:redis介绍和安装、普通连接和连接池、redis 5大数据类型之字符串、Hash、列表、其他操作(通用)、管道、django使用redis、接口缓存
  19. php漏洞检测修复,PHPStudy漏洞自查与修复指导
  20. vijos 搭建双塔

热门文章

  1. Cocos2D研究院之CCNode详解(三)
  2. openerp child_of操作符深度解析
  3. SQL Server安装文件挂起错误解决办法【转帖】
  4. 第一个express app 详细步骤
  5. android的图片缩放,Android图片缩放总结及比较
  6. n分频器 verilog_时钟分频系列——分数分频电路的Verilog实现
  7. VM Ware 虚拟机centos 时间与本地时间不一致
  8. springcloud 服务网关Zuul实战(一)基本路由配置
  9. 互联网晚报 | 4月12日 星期二 | ​A股三大指数集体收涨;国产游戏版号时隔8月重启核发;央行开展200亿元7天期逆回购操作...
  10. 如何为你的数据选择最佳图表?