自制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.www58058.com/72347