自制linux和编译内核

自制linux:
(1)  分区并创建文件系统
  fdisk /dev/sdb
分两个必要的分区
  /dev/sdb1 对应/boot /dev/sdb2 对应根  /
mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2
  挂载boot
mkdir /mnt/boot 子目录必须为boot
mount /dev/sdb1 /mnt/boot
  安装grub
grub-install –root-directory=/mnt /dev/sdb    #boot目录的上一级目录  
                                                对应的硬盘sdb而不是分区

(2)恢复内核和initramfs 文件
cp /boot/vmlinuz-2.6.32-642.el6.x86_64 /mnt/boot/
cp /boot/initramfs-2.6.32-642.el6.x86_64.img /mnt/boot
  建立grub.conf:
vim /mnt/boot/grub.conf
title wanglinux
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2 selinux=0 init=/bin/bash
initrd /initramfs-2.6.32-642.el6.x86_64.img
 chroot /mnt/sysroot          #使用此命令查看是否能切跟

(3)创建一级目录
mkdir /mnt/sysroot
mount /dev/sdb2 /mnt/sysroot
mkdir –pv
/mnt/sysroot/{etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc
,opt,home,root,boot,dev,mnt,media}
  复制bash 和相关库文件
  复制相关命令及相关库文件
如:ls,cat,vim,reboot,hostname等

 /proc 目录:
内核把自己内部状态信息及统计信息,以及可配置参数通过proc 伪文件系统加以输出
  参数:只读:输出信息
可写:可接受用户指定“新值”来实现对内核某功能或特性的配置
/proc/sys
(1) sysctl 命令用于查看或设定此目录中诸多参数
sysctl -w path.to.parameter=VALUE
sysctl -w kernel.hostname=mail.magedu.com
(2) echo 命令通过重定向方式也可以修改大多数参数的值
echo “VALUE” > /proc/sys/path/to/parameter
echo “websrv” > /proc/sys/kernel/hostname

sysctl 命令:            
默认配置文件:/etc/sysctl.conf
(1)  设置某参数
sysctl -w parameter=VALUE
(2)  通过读取配置文件设置参数
sysctl -p [/path/to/conf_file]
(3)  查看所有生效参数
sysctl -a
  常用的几个参数:
net.ipv4.ip_forward
net.ipv4.icmp_echo_ignore_all
vm.drop_caches   

注意 :这些更改都存不了盘的,重启就没了,所以知道有这个命令就行
想一直生效;写入目录: /etc/sysctl.conf 
写人完成后 sysctl -p   #重新读入配置
作用:优化内存一些使用的   尤其是数据库使用  有时默认数据库内存需要加大

编译内核:
单内核体系设计、但充分借鉴了微内核设计体系的优点,为内核引入模块化机制
  内核组成部分:
kernel:  内核核心,一般为bzImage ,通常在/boot 目录
下,名称为vmlinuz-VERSION-RELEASE;
kernel object:  内核对象,一般放置于/lib/modules/VERSION-RELEASE/
[ ]: N       #
[M]: M       #偶尔使用的模块加载到modules下
[]: Y       #菜单功能中表示加载到核心文件vmlinuxz
辅助文件:ramdisk
initrd
initramfs

modprobe 命令:
装载或卸载内核模块
 modprobe [ -C config-file ] [ modulename ] [ module
parame-ters… ]
  配置文件:/etc/modprobe.conf,
/etc/modprobe.d/*.conf
 modprobe [ -r ] modulename..

执行lsmod指令,会列出所有已载入系统的模块:通过grep 可以过滤需要的模块
modinfo mokuai  :查看模块信息
remod mokuai    : 卸载指定模块
modprobe        :安装驱动模块

编译内核
(1)  准备好开发环境组   yum grouplist   groupinstall  下载内核源码包
(2)  获取目标主机上硬件设备的相关信息    
(3)  获取目标主机系统功能的相关信息   lscpu  uname -r
例如: 需要启用相应的文件系统
(4)  获取内核源代码包
www.kernel.org

1安装包组:centos7
yum groupinstall Development Tools
yum -y install ncurses-devel
yum -y install openssl-devel
2 download 内核源码包
3解包
tar xvf linux-4.10.7.tar.xz -C /usr/local/    #必须解压到此目录  
      一般不写都解压到当前目录,所以也可以复制到 cd /usr/local直接解压
ln -s linux-4.10.7/ linux          #需要给此目录创建个软链接linux
4复制模版文件
cp /boot/config-3.10.0-514.el7.x86_64  /usr/local/linux/.config   
      #手动创建模板不现实建议复制模板   必须命名成 .config  隐藏文件
5 定制功能      #字符界面的图形窗口
 make menuconfig   配置内核选项       #可能会缺包组,缺什么装什么
6
]#pwd
/usr/local/linux

make -j 8       #一定要在此目录下编译,-j 指定几颗cpu一起编译

7
make modules_install       #把定义的模块复制到/lib/modules下
8 make install            
安装内核相关文件
安装bzImage 为/boot/vmlinuz-VERSION-RELEASE
生成initramfs 文件
编辑grub
9 reboot
  
编译内核安装示例:
 tar xf linux-3.10.67.tar.xz -C /usr/src
 cd /usr/src
 ln -sv linux-3.10.67 linux
 cd /usr/src/linux
 cp /boot/config-$(uname -r) ./.config
 make help
 make menuconfig
 make -j 2
 make modules_install
 make install
 reboot

卸载内核:
  删除/lib/modules/ 目录下不需要的内核库文件
  删除/usr/src/linux/ 目录下不需要的内核源码
  删除/boot 目录下启动的内核和内核映像文件
  更改grub

原创文章,作者:shewei,如若转载,请注明出处:http://www.178linux.com/72347

(1)
sheweishewei
上一篇 2017-04-02
下一篇 2017-04-03

相关推荐

  • LVS产生背景、原理及LVS-DR应用实例(一)

    一、什么是lvs? 它产生的背景,使用场景是什么?      LVS(Linux Virtual Server) 可以理解为一个虚拟服务器系统。       Internet的飞速发展,网络带宽的增长,Web服务中越来越多地使用CGI、动态主页等CPU密集型应用,这对服务器的性能…

    Linux干货 2016-10-29
  • 0811linux基础小记(shell编程基础)

    1.编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 #!/bin/bash echo "hostname: `hostname`" echo "OS VERSION: `cat /etc/issue`" e…

    Linux干货 2016-08-15
  • 文件查看和正则表达式

    文件查看工具         cat,tac,rev,more,less,head,tail cat:查看文本          cat [OPTION]… [FILE]… &…

    Linux干货 2016-08-07
  • 控制字体颜色的输出echo[转载]

    http://onlyzq.blog.51cto.com/1228/546459 echo显示带颜色,需要使用参数-e格式如下:echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"例如: echo -e "\033[41;37m TonyZhang \033[0m"其中41的位置…

    Linux干货 2017-02-01
  • 马哥教育网络班21期-第一周课程练习

    第一周课程练习 1、描述计算机的组成及其功能?         1.1 现代主流的计算机(冯·诺依曼体系)主要由五部分组成,分别是控制器、运算器、存储器、输入和输出设备。控制器和运算器对应我们现实计算机看到的CPU,存储器对应内存和硬盘等存储设备,输入设备对应鼠标键盘等其它外设,输出设备对应显示器、音响、打印机等其它外…

    Linux干货 2016-06-26
  • 网络知识点

    1. 实现异地搭建局域网的方法1>. 让运行商拉专线,这是相当昂贵的。2>.  VPN (Virtual PrivateNetwork)  虚拟专用网络 2. VPN的隧道协议主要有三种:PPTP、L2TP和IPSec。其中PPTP和L2TP协议工作在OSI模型的第二层,又称为二层隧道协议;IPSec是第三层隧道协议。 2. …

    Linux干货 2016-09-01