❶ 如何編譯內核及製作RPM包
前言
要編譯自內核能各種同答案列舉:
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-.src.rpm'
4.安裝內核源碼系統默認目錄/usr/src/neoshine:
rpm -Uvh kernel-.src.rpm
三 配置內核(config配置文件)
面介紹何解源碼包並修改配置重新打包源碼
1. 解源碼包並打所補丁BUILD目錄
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=`uname -m` kernel.spec
kernel源碼找:
/usr/src/neoshine/rpmbuild/BUILD/kernel-/linux-. 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. 拷貝.configSOURCES/:
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內核編譯詳細教程及開發Linux系統
摘錄linuxaid
一步一步編譯安裝Linux內核
摘要
文章將為你詳細並逐步的描述如何編譯、配置、安裝一個定製的RedHat Linux內核。我們知道,一個定製的內核從很多方面來看都是必需的,在此我不再討論這個問題。我只向大家展示如何編譯、配置和安裝一個定製的內核。雖然下面所列步驟主要是針對RedHat Linux用戶,但它也同樣適用於其它Linux發行版的使用者。當然,一些較小的改動是必須的(例如,並不是所有的系統都使用initrd)
(2002-09-02 12:38:46)
By Wing, 出處:藍風
摘要
文章將為你詳細並逐步的描述如何編譯、配置、安裝一個定製的RedHat Linux內核。我們知道,一個定製的內核從很多方面來看都是必需的,在此我不再討論這個問題。我只向大家展示如何編譯、配置和安裝一個定製的內核。雖然下面所列步驟主要是針對RedHat Linux用戶,但它也同樣適用於其它Linux發行版的使用者。當然,一些較小的改動是必須的(例如,並不是所有的系統都使用initrd)
硬體配置
下列步驟需在一個下列配置的計算機系統中演示:Compaq Presatio 4010 Series cinorter system,15.5GB硬碟,96 MB內存,400 MHz Intel Celeron Processorm ,Red Hat Linux 7.0(內核版本為2.2.16-22)
目標
我們的目標是在進行完下列步驟後得到一個完全運行的定製過的內核,例如,我有一個 定製過的內核2.2.16-22ghosh在我的系統中運行(我的名字叫Subhasish Ghosh,你也可以命名為其它名稱,事實上在系統中有兩個內核是同時運行的)下面,搜索並編譯Linux內核。
編譯、配置並安裝一個定製的RedHat Linux內核的步驟:
整個步驟如下:
步驟1:以「root"身份登錄,然後執行下列步驟
步驟2:在命令提示中鍵入 "rpm-q kernel-headers kernel-source make dev86"
步驟3:如果這些rpm包已經裝好,直接進入步驟4。否則,掛載上RedHat Linux 7.0 光碟並執行rpm-Uvh以便安裝這些必須的rpm包。
步驟4:如果你已有一個完全運行的X window System,那麼在命令提示中鍵入「startx」。如果沒有配置X window System,那麼在命令提示中鍵入「make config」或者「make menuconfig」。
步驟5:進入GNOME環境,打開GNOME終端並鍵入「cd /usr/src/linux」然後回車。
步驟6:在/usr/src/linux 目錄下,鍵入「make xconfig」。
步驟7:屏幕上將出現GUI版本的「make config",它將提供給你不同選項使你獲得一個定製的內核。
步驟8:現在,我建議你盡量使用預設設置。請注意不要輕易改變選項,因為許多選項非常敏感,需要專業處理,你僅需要做以下改動:
1.處理器型號和特徵:選擇正確的處理器取決於你是否使用Pentium Ⅱ或者Pentium Ⅲ,或像我一樣使用Intel Celeron.例如,我操作如下:
Processor Family:PPro/686MXMaximum Physical Memory:1 GBMath Emulation:YesMTRR:YesSMP:Yes
2.打開文件系統對話框並做以下改動:
例如我是如下選擇的:
DOS FAT fs support:Yes(y)MSDOD fs support:Yes(y)UMSDOS:mVFAT(Window 95) support:Yes(y)NTFS filesystem support (read-only):Yes(y)NTFS read-write support(DANGEROUS):NO(n)
完成以上選擇後,請確認你沒有改變其它選項。以上所有改動是無害的, 不會對你的Linux內核產生壞作用。
3.保存並從主對話框中退出
步驟9:在/usr/src/Linux目錄下執行"ls -al".
步驟10:你將看到一個名為"Makefile"的文件,它對整個編譯過程非常重要。因此,一定要先使用「cp Makefile Makefile.bak」命令對該文件進行備份。
步驟11:在usr/src/linux 中執行"vi Makefile"。
步驟12:找到EXTRAVERSION並改變它.例如:我將EXTRAVERSION=-22改為EXTRAVERSION="-22grosh".當然,你完全可以任意命名它。
步驟13:保存並退出文件。
步驟14:下列步驟在/usr/src/Linux 目錄下執行。鍵入「make dep clean」回車。
步驟15:鍵入:「make bzImage moles」。這需要花費一些時間。你可以在這段時間休息一會。
步驟16:以上步驟完成後,在/usr/src/Linux/arch/i386/boot目錄下將產生一個「bzlmage」文件。找到這個目錄並檢查「bzlmage」文件是否已經產生.如果上述步驟得到了正確的執行並且在「make xconfig」中的所有選項都選擇正確的話,你一定會看到這個文件。如果沒有這個文件,那麼很遺憾,你得從頭開始。
步驟17:在/usr/src/linux目錄下鍵入「cp ./arch/i386/boot/bzlmage /boot/vmlinuz-2.2.16.22ghosh」並回車。
步驟18:鍵入:「cp System.map /boot/System.map-2.2.16-22ghosh」。
步驟19:鍵入:「make moles install」,回車。你將看見所有的模塊將在一個新的指定目錄下被安裝。
步驟20:鍵入:「mkinitrd /boot/initrd-2.2.16-22ghosh.img2.2.16-22ghosh」。
步驟21:鍵入:「vi /etc/lilo.conf」且隨後加入以下條目
image=/boot/vmlinuz-2.2.16-22ghoshlabel=GhoshKernelinitrd=/boot/initrd-2/2/16-22ghosh.imgroot=/dev/hdc5read-only
步驟22:保存並退出。請注意:在lilo.conf文件中已經按你的要求改變了相應的條目,但重要的一點是根目錄必須是你的系統的根目錄。例如:在我的系統中是在/dev/hde5中。插入你的系統的有關信息。
步驟23:鍵入:「/sbin/lilo -v -v」。
步驟24:閱讀屏幕上的所有信息。假如沒有顯示錯誤,那麼所有的工作就已完成了。Congratulations!
步驟25:鍵入:「/sbin/reboot」或「/sbin/shutdowm-r now」重新開機。
步驟26:在啟動屏中,按Tab鍵(如果你使用的是LILO啟動屏,可按 ctrl-X 鍵),你可以看見與其它選項一同出現的「GhoshKernel」選項。
步驟27:鍵入:GhoshKernel,回車。完全運行的定製內核就被引導裝入系統中了。
終曲
以「root」身份登錄,鍵入「uname -r」然後回車。你會在屏幕上看到2.2.16-22ghosh條目,它表示你正在運行定製過的內核,而不是2.2.16-22的內核版本。記住你可以在一個計算機中運行多個不同版本的內核。如果你遇到了問題,發E-mail給我,郵箱是:[email protected]。
資源
在許多Web站點里都有關於如何編譯和運行最優化的定製內核的信息。例如http://www.vmlinuz.nu/。還有一些其它的關於Linux內核的使用和編譯的站點。
❸ 如何實現LINUX內核編譯
1.到網上下載linux內核源碼 大概70M左右
2.進入內核源碼目錄
3.執行menuconfig程序 啟動內核驅動、模塊裁剪的圖形化界面
4.make
❹ 如何使用自己編譯的linux內核
內核,是一個操作系統的核心。它負責管理系統的進程、內存、設備驅動程序、文件和網路系統,決定著系統的性能和穩定性。Linux作為一個自由軟體, 在廣大愛好者的支持下,內核版本不斷更新。新的內核修訂了舊內核的bug,並增加了許多新的特性。
❺ 如何重新編譯linux內核
因為一般電腦安裝的系統都是Windows,而整個編譯過程都需要在Linux環境下實現,所以最好是在虛擬機里安裝Linux系統來完成這一過程。我使用的虛擬機是VMware-workstation-full-v7.1.4。
然後,我們需要下載一個較高版本的Linux系統的鏡像文件,安裝在虛擬機上,作為編譯環境。我使用的是ubuntu-11.04-desktop-i386。之所以選擇較高版本,是因為它的界面比較方便用戶操作。
然後下載一個Linux內核源代碼文件,將它保存到虛擬機上新安裝的系統中去。並解壓到/usr/src目錄。我使用的是linux-2.6.36,下載低版本的原因是,小巧輕便,易於編譯。
解壓命令如下:
bzip2 -d linux-2.6.36.tar.bz2
tar -xvf linux-2.6.36.ta
修改/usr/src/linux-2.6.36/kernel/sys.c文件,在文件末尾增加一個系統調用函數。自行編寫一個簡單的程序即可,只為測試用。
修改/usr/src/linux-2.6.36/arch/x86/kernel/syscall_table_32.S,為新添加的程序配置系統調用號。
在/usr/src/linux-2.6.36/arch/x86/include/asm/unistd_32.h中配置系統調用表。
下面就是最重要的內核編譯與安裝:
首先配置編譯信息,使其生成適合當前機器的Makefile,輸入make oldconf ig。
接著還要輸入make menuconfig,在字元界面下進行必要的細微的修改。
然後要經過四步編譯過程(直接輸入命令即可):
(1)make bzImage
將內核編譯為壓縮映像,存儲在源碼根目錄下的「System.map」文件中。
(2)make moles
編譯各個模塊。
(3)sudo make moles_install
安裝模塊
(4)sudo make install
安裝內核
第(2)(3)步等待時間較長,可能需要數個小時,請耐心等待。
無報錯的話重啟進入GRUB界面,就可以看到新編譯的內核了。
按回車鍵進入我們編譯的目標內核中,用關鍵詞搜索查看新增加的系統調用「my call」是否已在內核中:
編寫測試程序,調用新添加的系統調用:
測試成功,說明系統調用添加成功,進而說明內核編譯成功!
以上的辦法你可以試一下,希望對你有所幫助。
❻ Linux內核源碼如何編譯Ubuntu源代碼在哪裡呢
編譯linux內核步驟:
1、安裝內核
如果內核已經安裝(/usr/src/目錄有linux子目錄),跳過。如果沒有安裝,在光碟機中放入linux安裝光碟,找到kernel-source-2.xx.xx.rpm文件(xx代表數字,表示內核的版本號),比如RedHat linux的RPMS目錄是/RedHat/RPMS/目錄,然後使用命令rpm -ivh kernel-source-2.xx.xx.rpm安裝內核。如果沒有安裝盤,可以去各linux廠家站點或者www.kernel.org下載。
2、清除從前編譯內核時殘留的.o 文件和不必要的關聯
cd /usr/src/linux
make mrproper
3、配置內核,修改相關參數,請參考其他資料
在圖形界面下,make xconfig;字元界面下,make menuconfig。在內核配置菜單中正確設置個內核選項,保存退出
4、正確設置關聯文件
make dep
5、編譯內核
對於大內核(比如需要SCSI支持),make bzImage
對於小內核,make zImage
6、編譯模塊
make moles
7、安裝模塊
make moles_install
8、使用新內核
把/usr/src/linux/arch/i386/boot/目錄內新生成的內核文件bzImage/zImage拷貝到/boot目錄,然後修改/etc/lilo.conf文件,加一個啟動選項,使用新內核bzImage/zImage啟動。格式如下:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
linear
default=linux-new ### 告訴lilo預設使用新內核啟動linux ###
append="mem=256M"
image=/boot/vmlinuz-2.2.14-5.0
label=linux
read-only
root=/dev/hda5
image=/boot/bzImage(zImage)
label=linux-new
read-only
root=/dev/hda5
保留舊有的啟動選項可以保證新內核不能引導的情況,還可以進入linux進行其他操作。保存退出後,不要忘記了最重要的一步,運行/sbin/lilo,使修改生效。
9、重新生成ram磁碟
如果您的系統中的/etc/lilo.conf沒有使用了ram磁碟選項initrd,略過。如果您的系統中的/etc/lilo.conf使用了ram磁碟選項initrd,使用mkinitrd initrd-內核版本號,內核版本號命令重新生成ram磁碟文件,例如我的Redhat 6.2:
mkinitrd initrd-2.2.14-5.0 2.2.14-5.0
之後把/etc/lilo.conf中的initrd指向新生成的initrd-2.2.14-5.0文件:
initrd=/boot/initrd-2.2.14-5.0
ram磁碟能使系統性能盡可能的優化,具體參考/usr/src/linux/Documents/initrd.txt文件
10、重新啟動,OK!
❼ Linux內核源碼如何編譯
首先uname -r看一下你當前的linux內核版本
1、linux的源碼是在/usr/src這個目錄下,此目錄有你電腦上各個版本的linux內核源代碼,用uname -r命令可以查看你當前使用的是哪套內核,你把你下載的內核源碼也保存到這個目錄之下。
2、配置內核 make menuconfig,根據你的需要來進行選擇,設置完保存之後會在當前目錄下生成.config配置文件,以後的編譯會根據這個來有選擇的編譯。
3、編譯,依次執行make、make bzImage、make moles、make moles
4、安裝,make install
5、.創建系統啟動映像,到 /boot 目錄下,執行 mkinitramfs -o initrd.img-2.6.36 2.6.36
6、修改啟動項,因為你在啟動的時候會出現多個內核供你選擇,此事要選擇你剛編譯的那個版本,如果你的電腦沒有等待時間,就會進入默認的,默認的那個取決於 /boot/grub/grub.cfg 文件的設置,找到if [ "${linux_gfx_mode}" != "text" ]這行,他的第一個就是你默認啟動的那個內核,如果你剛編譯的內核是在下面,就把代表這個內核的幾行代碼移到第一位如:
menuentry 'Ubuntu, with Linux 3.2.0-35-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 9961c170-2566-41ac-8155-18f231c1bea5
linux/boot/vmlinuz-3.2.0-35-generic root=UUID=9961c170-2566-41ac-8155-18f231c1bea5 ro quiet splash $vt_handoff
initrd/boot/initrd.img-3.2.0-35-generic
}
當然你也可以修改 set default="0"來決定用哪個,看看你的內核在第幾位,default就填幾,不過我用過這種方法,貌似不好用。
重啟過後你編譯的內核源碼就成功地運行了,如果出現問題,比如滑鼠不能用,usb不識別等問題就好好查查你的make menuconfig這一步,改好後就萬事ok了。
最後再用uname -r看看你的linux內核版本。是不是你剛下的那個呢!有沒有成就感?
打字不易,如滿意,望採納。
❽ 拿到了linux的內核 應該用什麼軟體 怎麼去編譯
1、你可以把linux內核代碼放到你的ubuntu或redhat之類的具有linux內核的操作系統裡面,然後在你指定的目錄裡面解壓你的內核源碼;
2、在主目錄裡面找到Makefile文件,修改裡面的「ARCH = 」和「CROSS_COMPILE」,也就是你的編輯器路徑,保存退出;
3、輸入make menuconfig配置你的內核參數,保存退出;
4、執行make zImage,你會看見屏幕嘩啦嘩啦的在運行,這是在生成內核zImage文件;
5、進入你的arch/(cpu型號)/root/裡面,你會看到zImage文件,這個就是你要的。
以上是最簡單的步驟,若想詳細了解,在網路裡面搜索「linux內核編譯」,會得到一大堆結果,記得一般只看文庫或者博客裡面的文章,因為質量比較好。
若需幫助,請追問!
❾ 請簡述嵌入式linux內核的編譯過程
編譯及安裝簡要步驟:
編輯Makefile版本信息
定義內核特性,生成配置文件.config,用於編譯:make xconfig
編譯內核:make
安裝內核:make install
安裝模塊:make moles_install
具體步驟如下:
內核配置
先定義內核需要什麼特性,並進行配置。內核構建系統(The kernel build system)遠不是簡單用來構建整個內核和模塊,想了解更多的高級內核構建選項,你可以查看 Documentation/kbuild 目錄內的內核文檔。
可用的配置命令和方式:
make menuconfig
命令:make menuconfig
編譯內核
編譯和安裝內核
編譯步驟:
$ cd /usr/src/linux2.6
$ make
安裝步驟 (logged as
$ make install
$ make moles_install
提升編譯速度
多花一些時間在內核配置上,並且只編譯那些你硬體需要的模塊。這樣可以把編譯時間縮短為原來的1/30,並且節省數百MB的空間。另外,你還可以並行編譯多個文件:
$ make -j <number>
make 可以並行執行多個目標(target)(KEMIN:前提是目標規則間沒有交叉依賴項,這個怎麼做到的?)
$ make -j 4
即便是在單處理器的工作站上也會很快,讀寫文件的時間被節省下來了。多線程讓CPU保持忙碌。
number大於4不見得有效了,因為上下文切換過多反而降低的工作的速度。
make -j <4*number_of_processors>
內核編譯tips
查看完整的 (gcc, ld)命令行: $ make V=1
清理所有的生成文件 (to create patches...): $ make mrproper
部分編譯:$ make M=drivers/usb/serial
單獨模塊編譯:$ make drivers/usb/serial/visor.ko
最終生成的文件
vmlinux 原始內核鏡像,非壓縮的
arch/<arch>/boot/zImage zlib壓縮的內核鏡像(Default image on arm)
arch/<arch>/boot/bzImage bzip2壓縮的內核鏡像。通常很小,足夠放入一張軟盤(Default image on i386)
❿ linux內核編譯和根文件系統製作過程
內核編譯:
make menuconfig配置相應的平台,然後保存退出直接make命令就可以編譯了。
文件系統製作:
一般都用busybox開源軟體來做,下載,解壓,然後make menuconfig配置你想要的屬性,然後保存退出,make就可以了,然後make install就會在目錄下看到__install的目錄就是你要的根文件系統目錄了。