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

(1)
sheweishewei
上一篇 2017-04-02 22:32
下一篇 2017-04-03 17:12

相關推薦

  • keepalived+lvs-dr實現高可用負載均衡

    keepalived+lvs-dr實現高可用負載均衡 實驗拓撲 實驗要求 RS1與RS2地址為172.18.27.201/202 VS1和VS2地址為172.18.27.103/200,VIP為172.18.27.254 VS1和VS2實現lvs-dr負載均衡及高可用性,且vs為sorry sever。 keepalived是單主模式。 實驗步驟 各個主機安…

    2017-05-14
  • linux文件權限詳解

    基本命令 1.cut :?cat /etc/passwd | cut -d’:’ -f7| uniq -c| sort -nr 2.authconfig 修改加密方式 –passalgo=sha256 — update 3.scp 上傳文件 -r dir ip:path 傳目錄 file ip:path傳文件 …

    Linux干貨 2017-04-03
  • 壓縮及解壓工具

    通過算法壓縮數據,時間換空間。文本文件的壓縮比更大,二進制文件的壓縮比較小。 壓縮工具占用cpu時鐘。 compress/uncompress .Z gzip/gunzip .gz bzip2/bunzip2 .bz2 壓縮比比gz大但是也沒取代gz xz/unxz .xz 壓縮比大,現在較流行。 zip/unzip .zip 歸檔工具,既能歸檔又能壓縮 t…

    Linux干貨 2016-08-21
  • linux中的磁盤陣列(RAID)

    RAID: Redundant Arrays of Inexpensive Disks  Independent 提高IO能力: 通過磁盤并行讀寫實現 提高耐用性能: 磁盤冗余來實現 級別: 多塊磁盤組織在一起的工作方式有所不同: RAID是的方式: 外接式磁盤陣列: 通過擴展卡提供適配能力 內接式RAID: 主板集成RAID控制器 Softwar…

    Linux干貨 2016-08-29
  • Linux基礎

    計算機組成和功能 按照Von Neumann的理解 [1],計算機分為以下幾部分:     輸入 (Input Device, 用于提供給計算機待處理的數據)         e.g. 鍵盤,…    &nbs…

    Linux干貨 2016-09-27
  • 計算機硬件及Linux簡介

    計算機的組成 計算機主要分成五大部分:輸入單元、控制單元、運算單元、存儲器、輸出單元。 其中,中央處理器(CPU)是一個具有特定功能的芯片,含有微指令集。包括控制單元與運算單元。 控制單元對程序進行控制,調度程序、數據、地址。運算單元負責對數據的各種邏輯運算和數字運算。 計算機的功能 包括但不限于 驅動程序:字面意思。 進程管理:計算機內部能夠通過分配資源,…

    Linux干貨 2016-10-30
欧美性久久久久