『壹』 Linux內核配置與編譯相關流程
linux內核配置與編譯相關流程1、清除臨時文件、中間文件和配置文件
make
clean
不刪除配置文件。
make
mrproper
make
distclean
刪除編輯的backup文件、補丁文件等2、確定目標系統的軟硬體配置情況,比如CPU的類型,網卡的型號,所需要支持的網路協議。3、使用命令配置內核
make
config
基於文本模式的交互配置。
make
menuconfig
基於文本模式的菜單配置。
make
oldconfig
使用已有的配置文件(.config),但是會詢問新增的配置選項。
make
xconfig
圖形化的配置(需要安裝圖形化系統)。4、編譯內核
make
zImage
make
bzImage
區別:在X86平台上,zImage只能用於小雨512k內核。如果需要獲取詳細編譯信息,則在後面加上V=1.
編譯好的內核位於arch/<cpu>/boot/目錄下。
5、編譯內核模塊
make
moes
6、安裝內核模塊
make
moes_install
將編譯好的內核模塊從內核源代碼目錄到/lib/moes下。7、製作
init
ramdisk
mkinitrd
$initrd-$version
-$version內核安裝(X86)1、cp
arch/X86/boot/bzImage
/boot/vmliuz
-$version2、cp
$initrd
/boot/3、修改etc/grub.conf
或
/etc/lilo.conf$version為所編譯的內核版本號。
『貳』 如何配置linux 內核最小系統
下載內核下載熱點內核標准配置文件編譯內核makemenuconfig選中,然後選擇剛下載的。config另外,要特別選中:1)、通過makemenuconfig選中以下對應的選項Generalsetup–>[*])、修改。config文件修改。config文件中CONFIG_SYSFS_DEPRECATED_V2,將原本被注釋掉的CONFIG_SYSFS_DEPRECATED_V2改成CONFIG_SYSFS_DEPRECATED_V2=y註:修改這項是因為舊版的mkinitrd及其nash在內核沒有CONFIG_SYSFS_DEPRECATED_V2參數時默認使用舊版sysfs路徑格式,從而在新內核下無法正確訪問/sys內的硬碟信息節點。主要是解決"mount:couldnotfindfilesystem'/dev/root'"這樣的錯誤makebzImagemakemolesmakemoles_installmakeinstall解壓修改內核cp/boot/initrd-2.6.38.img/tmpcd/tmp/mkdirnewinitrdcdnewinitrd/zcat/initrd-2.6.38.imgcpio-irm-rf/tmp/initrd-2.6.38.imgviinit找到這2行一樣的,去掉1行echo"Loadingdm-region-hash.komole"insmod/lib/dm-region-hash.koecho"Loadingdm-region-hash.komole"insmod/lib/dm-region-hash.ko這主要是解決:"insmod:errorinserting'/lib/dm-region-hash.ko':-1Fileexists"這樣的錯誤從新打包內核find.cpio-c-o>/initrdcd/gzip-9initrd-2.6.38imgrm-rf/boot/initrd-2.6.38.imgcpinitrd-2.6.38.img/bootrm-rf/cd/usr/src/linux-2.6.38.tar.gzrm-rf/cd/usr/src/linux-2.6.38設置從新內核啟動,重啟系統vi/boot/grub/grub.conf把default=1改為default=0reboot(重啟系統)
『叄』 linux內核配置哪些是必須的
由於Linux系統是一個比較復雜的操作系統,內核配置的選項也特別多,如果不是內核級別的開發人員的話,不要隨便設置內核。
因為Linux內核,本身就帶有不同廠家晶元的框架與驅動,所以內核配置最好的辦法就是使用默認配置的基礎之上,只配置與自己設備相關的選項。
進入主機的相關文件夾後,make menuconfig打開內核配置,然後保存。使用命令make uImage編譯內核,最後下載到自己的設備中,看看設置結果。
『肆』 如何配置linux內核具有nfs的功能
1、使用的技術
NFS
2、測試環境
NFS伺服器:192.168.255.18
NFS客戶端:192.168.255.11
操作系統:REDHAT4
3、NFS伺服器配置
(1)配置 /etc/hosts.deny
禁止任何客戶端能和你的NFS伺服器進行NFS連接:
### NFS DAEMONS
portmap:ALL
lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL
(2)配置/etc/hosts.allow
允許那些你想要的客戶端和你的NFS伺服器建立連接。下列步驟將允許任何IP地址
以192.168.2開頭的主機(連接到NFS伺服器上),也可以指定特定的IP地址。
### NFS DAEMONS
portmap: 192.168.255.
lockd: 192.168.255.
rquotad: 192.168.255.
mountd: 192.168.255.
statd: 192.168.255.
(3)重啟portmap
運行 $ /etc/init.d/portmap restart 重啟portmap daemon。
(4)配置/etc/exports
NFS掛載目錄及許可權由/etc/exports文件定義。比如要將我的/tmp目錄讓
192.168.255.*的IP共享, 則在該文件末尾添加下列語句:
/tmp 192.168.255.*(rw,sync,no_root_squash)
192.168.255.* 網段內的NFS客戶端能夠共享NFS伺服器/tmp目錄內容,且有讀,寫
許可權,並且該用戶進入/home/zp/share目錄後的身份為root,最好加上sync,否則
$ sudo exportfs -r 時會給出警告, sync是NFS的默認選項。
(5)重啟NFS服務
運行 $ /etc/init.d/nfs-kernel-server restart 重啟nfs服務)
(6)NFS伺服器查看共享是否成功
$ Showmount –e 192.168.255.18
/tmp 192.168.255.*
(6)NFS客戶端啟動NFS服務
service nfs start
(7)NFS客戶端查看伺服器共享目錄
Showmount –e 192.168.255.18
(8)掛載NFS伺服器共享目錄
mount –t nfs -o tcp192.168.255.18:/tmp /tmp
4、錯誤排查
當/etc/exports設置的許可權,不符合client端的來源時,則會出現以下錯誤信息:
mount: hostname:/dir failed, reason given by server: Permission denied
『伍』 如何看linux內核的配置選項
你要在目標文件夾(一般是/usr/src/kernels)下先解壓內核源代碼:tar jxvf linux-2.6.xx.xx.tar.bz2,然後cd到解壓後的源代碼目錄樹的根目錄下運行make指令。 make clean應該是支持的。如果還不行可以試試 make mrproper,這個清除得更徹底。
『陸』 Linux中為什麼要配置內核,怎樣重新配置內核
新的內核修訂了舊內核的bug,並增加了許多新的特性。如果用戶想要使用這些新特性,或想根據自己的系統度身定製一個更高效,更穩定的內核,就需要重新編譯Linux內核。
為了正確的合理地設置內核編譯配置選項,從而只編譯系統需要的功能的代碼,一般主要有下面四個考慮:
(1)自己定製編譯的內核運行更快(具有更少的代碼)
(2)系統將擁有更多的內存(內核部分將不會被交換到虛擬內存中)
(3)不需要的功能編譯進入內核可能會增加被系統攻擊者利用的漏洞
(4)
將某種功能編譯為模塊方式會比編譯到內核內的方式速度要慢一些
『柒』 如何給linux安裝新內核
清除垃圾(這一步:一般是在就內核重新編譯時使用,在編譯新的內核是不需要);
make clean及make mrproper;
進行內核裁減配置;
內核裁減配置的原則:
從實際出發。
如:根據支持的硬體設備來決定需要選擇的驅動模塊,根據需要選擇所支持的文件系統格式等;
具體配置命令為:
make config :通過命令介面,依次要求你設定每個選項,如果.config文件存在,會根據該文件來設置默認值;
make menuconfig :顯示以curses為基礎的、終端式的配置菜單。
make xconfig :圖形界面,顯示以Tk為基礎X Window配置菜單。
最常用的為:make menuconfig(註:需要ncurses的rpm包)。
說明:這一步中選擇為M模式的,編譯到/lib/moles/下相關目錄文件中;選擇為*模式的,編譯到內核中即/boot/vmlinuz中,啟動時載入到內核中。
具體內核裁減配置參閱其它資料。
第四步:生成依賴關系(make dep)
內核源碼樹中大多數文件都會與一些頭文件有依存關系,要想編譯內核順利,在正式編譯前必須讓內核源碼樹中的各個Makefile文件知道這些依存關系。
依存關系建立期間會在內核源碼樹中每個子目錄里產生一個隱藏的.depend文件,此文件內含子目錄里各個文件所依存的頭文件清單。
第五步:建立內核映像和模塊
2.4內核:make bzImage :在arch/YOUR_ARCH/boot/中生成在在zImage內核映像文件;
make moles :在相應目錄下生成內核模塊(即驅動模塊)
2.6內核:make :作用相當於make bzImage與make moles
第六步:安裝模塊(make moles_install)
讓make moles或make 過程中產生的.o驅動模塊拷入/lib/moles/下相應目錄中;
第七步:安裝內核
第一種情況:直接使用make install命令即可。
第二中情況:先採用cp arch/i386/boot/bzImage /boot/×××(×××表示自己隨意的命名)
mkinitrd /boot/×××.img 2.6.12.6(內核版本號)
『捌』 如何定製自己的linux內核
一 前言
為什麼要編譯自己的內核?這可能會有各種不同的答案,列舉如下:
1 為了研究,學習內核源碼。
2 為了支持新的硬體或者打開某項內核功能。
3 升級內核到更新版本。
4 按自己的要求定製和優化內核功能。
如此種種...
折騰不需要理由,這里我就不在多說,下面直接進入主題。
編譯方式
編譯內核有多種方式,從kernel.org下載選擇下載需要的版本的內核源碼,
如:linux-2.6.32-rc1.tar.bz2,下載內核源碼到/home/user/目錄,進入下載目錄,解壓壓縮包。
#cd /home/user/
#tar -xjvf linux-2.6.32-rc1.tar.bz2
二 准備編譯環境
開始之前,首先確認下面軟體包已經安裝(編譯中標普華4.0時,直接全部安裝CD3可保證此條件)。
* rpmdevtools
* yum-utils
fedora系統可以使用如下命令安裝:
#yum install yum-utils rpmdevtools
1. 生成一個rpmbuild命令工作所需的目錄樹,下面命令可以完成該操作,也可以手動建立目錄樹。
命令建立:
#rpmdev-setuptree
此命令將會在/usr/src/rpmbuild/目錄下生成如下目錄結構(如果此位置沒有,則可能在當前用戶目錄下).
# tree /usr/src/rpmbuild/
rpmbuild/
|-- BUILD
|-- RPMS
|-- SOURCES
|-- SPECS
`-- SRPMS
上面部分是rpmbuild的環境建立。rpm
3. 安裝內核源碼包需要的依賴組件(在此可以跳過此步操作)
su -c 'yum-builddep kernel-<version>.src.rpm'
4.安裝內核源碼到系統,默認目錄在/usr/src/neoshine:
rpm -Uvh kernel-<version>.src.rpm
三 配置內核(生成config配置文件)
下面將介紹如何解開源碼包,並修改,配置和重新打包源碼
1. 解開源碼包並打上所有的補丁到BUILD目錄
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=`uname -m` kernel.spec
kernel源碼將在這里找到:
/usr/src/neoshine/rpmbuild/BUILD/kernel-<version>/linux-<version>.<arch> directory
配置內核源碼
1. 進入內核源碼:
cd ~/rpmbuild/BUILD/kernel-2.6.$ver/linux-2.6.$ver.$arch/
2. 復制/boot/config*配置文件到源碼目錄下,此config文件也可以是已經配好或者其他地方備份的kernel配置文件:
cp /boot/config2.6- 2.6.$ver.$arch .config
3. 先檢查kernel配置中新增的選項:
make oldconfig
4. 定製內核功能,關閉initrd支持選項,執行圖形化內核配置工具:
make menuconfig
註:在generic setup選項下找到initial RAM system and RAM disk(initramfs and initrd) support 項,取消編譯。同時確保跟文件系統對應的驅動和系統所在存儲器對應的驅動都已經編譯到內核(否則會無法啟動系統).
5. 在.config文件第一行改為下面內容(注意:沒有此行時,後面的編譯會報錯)
# i386
6. 拷貝.config到SOURCES/:
cp .config ../SOURCES/config-$arch
四 編譯新內核
1. 下面開始准備編譯新的內核包
打開SPEC/kernel.spec
vim SPEC/kernel.spec
改變下面行內容,可以定製自己的內核擴展名(如fc10之類):
%define buildid .<自己內核的小版本名>
下一步將生成一個新內核的rpm包,此過程需要編譯內核源碼包
使用下面命令生成新的內核源碼包
rpmbuild -bb --with baseonly --without debuginfo --target=`uname -m` kernel.spec
參數說明:bb表示只編譯二進制包,即不生成源碼包,without debuginfo 表示沒有調試信息,
target=`uname -r`表示生成對應當前平台的內核包
如果上面的命令成功執行完成,那麼會在BUILD/i686目錄下生成新的內核安裝包
五 安裝新內核
rpm -ivh kernel-$ver-$arch.rpm
此步操作會自動安裝內核到boot目錄下,安裝對應內核模塊到/lib/moles/目錄下,並且生成新內核對應的grub引導菜單。
修改grub引導菜單為以下格式
title new kernel
kernel /boot/vmlinuz-$ver-$arch root=/dev/sdax(hdax)
注意,此處不要使用uuid指定跟文件系統(可能會無法掛載根分區而導致內核死機),也不要再加和顯示相關的參數(內核不支持對應設置時,只會看到一個黑黑的屏幕)。
至此一個禁用initrd的新內核配置安裝完畢!
『玖』 如何配置linux內核支持sata
(1)首先,用內核的 allnoconfig 配置目標,得到一個最最基本的內核配置。即,執行下面的命令:
make allnoconfig
內核的 allnoconfig 配置目標會把所有的內核選項都設置為no,也就是把它們既不編譯進內核,也不編譯成模塊。
有了這個最基本的配置,我們再添加必須的配置項:再執行
make menuconfig
命令,按下面的步驟添加其他的配置——
(2)把 Executable file formats 下的ELF 和 emulations for 32bit ELF 選項編譯進內核。
(3)在 Processor type and features 下面,選擇合適的CPU類型。
(4)選擇PCI/PCI-Express支持,位於Bus options (PCI, PCMCIA, EISA, MCA, ISA) 配置目錄下。
(5)加入對根文件系統所在磁碟控制器的驅動:
Device Driver
|---->SCSI device support
|---->SCSI disk support
|----->SCSI low-level drivers
|---->Serial ATA (SATA) support
|---->intel PIIX/ICH SATA support
(6)加入Ext2文件系統的支持:在 File systems 配置目錄下,選擇 Second extended fs support。如果根文件系統是Ext3,則選擇 Ext3 journalling file system support。
(7)為了是 Udev 正常工作,需要內核支持 Unix domain sockets。此配置選項位於 Networking 配置目錄中的 Networking support ---> Networking options 下。
(8)使內核支持 /proc 虛擬文件系統和 tmpfs 文件系統:
File systems ---> Pseudo filesystems ---> /proc file system support / Virtual memory file system support (former shm fs)
(9)支持 swap 分區:
General setup ---> Support for paging of anonymous memory (swap)
(10)支持 RTC 設備:
Device Drivers ---> Character devices ---> Enhanced Real Time Clock Support
(11)為了充分發揮我的雙核CPU的能力,我又加入了對SMP的支持:
Processor type and features ---> Symmetric multi-processing support。
『拾』 如何給linux安裝新內核
第二步:清除垃圾(這一步:一般是在就內核重新編譯時使用,在編譯新的內核是不需要); make clean及make mrproper; 第三步:進行內核裁減配置; 內核裁減配置的原則: 從實際出發。 如:根據支持的硬體設備來決定需要選擇的驅動模塊,根據需要選擇所支持的文件系統格式等; 具體配置命令為: make config :通過命令介面,依次要求你設定每個選項,如果.config文件存在,會根據該文件來設置默認值; make menuconfig :顯示以curses為基礎的、終端式的配置菜單。 make xconfig :圖形界面,顯示以Tk為基礎X Window配置菜單。 最常用的為:make menuconfig(註:需要ncurses的rpm包)。 說明:這一步中選擇為M模式的,編譯到/lib/moles/下相關目錄文件中;選擇為*模式的,編譯到內核中即/boot/vmlinuz中,啟動時載入到內核中。 具體內核裁減配置參閱其它資料。 第四步:生成依賴關系(make dep) 內核源碼樹中大多數文件都會與一些頭文件有依存關系,要想編譯內核順利,在正式編譯前必須讓內核源碼樹中的各個Makefile文件知道這些依存關系。 依存關系建立期間會在內核源碼樹中每個子目錄里產生一個隱藏的.depend文件,此文件內含子目錄里各個文件所依存的頭文件清單。 第五步:建立內核映像和模塊 2.4內核:make bzImage :在arch/YOUR_ARCH/boot/中生成在在zImage內核映像文件; make moles :在相應目錄下生成內核模塊(即驅動模塊) 2.6內核:make :作用相當於make bzImage與make moles 第六步:安裝模塊(make moles_install) 讓make moles或make 過程中產生的.o驅動模塊拷入/lib/moles/下相應目錄中; 第七步:安裝內核 第一種情況:直接使用make install命令即可。 第二中情況:先採用cp arch/i386/boot/bzImage /boot/×××(×××表示自己隨意的命名) mkinitrd /boot/×××.img 2.6.12.6(內核版本號)