为pc编译配置安装当前最新的内核
搜索公眾號:itxxgh??(IT學習干貨),全公益。免費。定期,提供,《IT學習教程》。不會騷擾大家,僅僅需輕點關注,也會傳播《中華傳統文化》傳播正能量。
?或掃描二維碼 1:下載內核源代碼包
內核源代碼樹文件夾:
arch:包括和硬件體系結構相關的代碼。每種平臺占一個對應的文件夾。
和32位PC相關的代碼存放在i386文件夾下,當中比較重要的包括kernel(內核核心部分)、mm(內存管理)、math-emu(浮點單元仿真)、lib(硬件相關工具函數)、boot(引導程序)、pci(PCI總線)和power(CPU相關狀態)。
block:部分塊設備驅動程序。
crypto:經常使用加密和散列算法(如AES、SHA等),另一些壓縮和CRC校驗算法。
Documentation:關于內核各部分的通用解釋和凝視。
drivers:設備驅動程序,每一個不同的驅動占用一個子文件夾。
fs:各種支持的文件系統。如ext、fat、ntfs等。
include:頭文件。
當中,和系統相關的頭文件被放置在linux子文件夾下。
init:內核初始化代碼(注意不是系統引導代碼)。
ipc:進程間通信的代碼。
kernel:內核的最核心部分,包含進程調度、定時器等,和平臺相關的一部分代碼放在arch/*/kernel文件夾下。
lib:庫文件代碼。
mm:內存管理代碼,和平臺相關的一部分代碼放在arch/*/mm文件夾下。
net:網絡相關代碼,實現了各種常見的網絡協議。
scripts:用于配置內核文件的腳本文件。
security:主要是一個SELinux的模塊。
sound:經常使用音頻設備的驅動程序等。
usr:實現了一個cpio。
在i386體系下。系統引導將從arch/i386/kernel/head.s開始運行。并進而轉移到init/main.c中的main()函數初始化內核。
、
1.arch文件夾 arch子文件夾包含了全部和體系結構相關的核心代碼。它的每個子文件夾都代表一種支持的體系結構。比如arm子文件夾是關于ARM平臺下各種芯片兼容的代碼。
2.include文件夾 include子文件夾包含內核編譯時所須要的大部分頭文件。與平臺無關的頭文件在include/linux子文件夾下,include/scsi文件夾則是有關scsi設備的頭文件文件夾,與arm相關的頭文件在include/asm-arm子文件夾下。
3.drivers文件夾 drivers子文件夾放置系統全部的設備驅動程序。
有些驅動是與硬件無關的,而有些驅動是與硬件平臺相關。比如。在USB驅動中,主機控制器有3種規格: * OHCI主要為非PC系統上及帶有SiShe ALi芯片組的PC主板上的USB芯片,嵌入式系統一般使用該驅動。* UHCI大多為Intel和Via主板上的USB控制器芯片。相對OHCI而言UHCI的硬件電路比較簡單,同一時候其成本也比較低,但驅動復雜,但它們都是在USB 1.1規范同一時候提出的。
* EHCI由USB 2.0規范所提出,它兼容OHCI和UHCI。
4.fs文件夾 fs子文件夾列出了Linux支持的全部文件系統,眼下Linux支持ext2、vfat、ntfs、yaffs2、ramfs、cramfs和romfs等多種文件系統。在嵌入式系統中經常使用的閃存設備的文件系統有cramfs、romfs、ramfs、jffs2、yaffs等文件系統。
5.init文件夾 init子文件夾包括核心的初始化代碼(注意,不是系統的引導代碼)。它包括兩個文件main.c和version.c,這是研究核心怎樣工作的一個很好的起點。
6.ipc文件夾 ipc子文件夾包括核心進程間的通信代碼。Linux下進程間通信機制主要包括管道、信號、消息隊列、共享內存、信號量、套接口。 7.kernel文件夾 kernel子文件夾包括內核管理的核心代碼。與處理器結構相關代碼都放在archmm文件夾下。
8.scripts文件夾 scripts子文件夾包括用于配置核心的腳本文件。
9.lib文件夾 lib子文件夾包括了核心的庫代碼,與處理器結構相關的庫代碼被放在arch/*/lib/文件夾下。
?
內核配置選項
內核配置一般是對內核支持的各個功能進行取舍配置,將配置的方案保存到configure文件里。
在編譯內核的時候。就會依據此配置對內核進行取舍編譯。在源代碼文件夾下通過make menuconfig命令進入內核的配置界面。在對內核功能進行配置時,使用鍵盤的方向鍵移動光標位置,使用Enter鍵選擇菜單。使用空格鍵改動配置選項。
2:解壓并配置內核:
內核配置方法有三種:
(1)命令行:? make? config
(2)菜單模式的配置界面:? make menuconfig
? (3) X window:make xconfig
?? Linux的內核配置程序提供了一系列配置選項。
對于每個配置選項。用戶能夠回答"y"、"m"或"n"。
當中"y"表示將對應特性的支持或設備驅動程序編譯進內核;"m"表示將對應特性的支持或設備驅動程序編譯成可載入模塊。在須要時。可由系統或用戶自行增加到內核中去。"n"表示內核不提供對應特性或驅動程序的支持。因為內核的配置選項許多。本文僅僅介紹一些比較重要的選項。
?
1、Code maturity level options(代碼成熟度選項)?
Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [N/y/?
] 假設用戶想要使用還處于測試階段的代碼或驅動,能夠選擇“y”。假設想編譯出一個穩定的內核。則要選擇“n”。
?
?? 2、Processor type and features(處理器類型和特色)
(1)、Processor family (386, 486/Cx486, 586/K5/5x86/6x86, Pentium/K6/TSC, PPro/6x86MX) [PPro/6x86MX] 選擇處理器類型,缺省為Ppro/6x86MX。?
(2)、Maximum Physical Memory (1GB, 2GB) [1GB] 內核支持的最大內存數,缺省為1G。
?
(3)、Math emulation (CONFIG_MATH_EMULATION) [N/y/?] 協處理器仿真,缺省為不仿真。
?
(4)、MTRR (Memory Type Range Register) support (CONFIG_MTRR) [N/y/?]?
選擇該選項,系統將生成/proc/mtrr文件對MTRR進行管理。供X server使用。?
(5)、Symmetric multi-processing support (CONFIG_SMP) [Y/n/?] 選擇“y”,內核將支持對稱多處理器。
?
3、 Loadable module support(可載入模塊支持)?
(1)、Enable loadable module support (CONFIG_MODULES) [Y/n/?] 選擇“y”,內核將支持載入模塊。?
(2)、Kernel module loader (CONFIG_KMOD) [N/y/?
] 選擇“y”,內核將自己主動載入那些可載入模塊。否則須要用戶手工載入。
?
4、 General setup(一般設置)?
(1)、Networking support (CONFIG_NET) [Y/n/?
] 該選項設置是否在內核中提供網絡支持。
?
(2)、PCI support (CONFIG_PCI) [Y/n/?
] 該選項設置是否在內核中提供PCI支持。?
(3)、PCI access mode (BIOS, Direct, Any) [Any] 該選項設置Linux探測PCI設備的方式。
選擇“BIOS”,Linux將使用BIOS。選擇“Direct”,Linux將不通過BIOS。選擇??? “Any”,Linux將直接探測PCI設備,假設失敗,再使用BIOS。?
(4)Parallel port support (CONFIG_PARPORT) [N/y/m/?] 選擇“y”,內核將支持平行口。
?
5、 Plug and Play configuration(即插即用設備支持)?
(1)、Plug and Play support (CONFIG_PNP) [Y/m/n/?
] 選擇“y”,內核將自己主動配置即插即用設備。
?
(2)、ISA Plug and Play support (CONFIG_ISAPNP) [Y/m/n/?
] 選擇“y”,內核將自己主動配置基于ISA總線的即插即用設備。
?
6、 Block devices(塊設備)?
(1)、Normal PC floppy disk support (CONFIG_BLK_DEV_FD) [Y/m/n/?] 選擇“y”。內核將提供對軟盤的支持。?
(2)、Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (CONFIG_BLK_DEV_IDE) [Y/m/n/?] 選擇“y”,內核將提供對增強IDE硬盤、CDROM和磁帶機的支持。?
7、 Networking options(網絡選項)?
(1)、Packet socket (CONFIG_PACKET) [Y/m/n/?] 選擇“y”。一些應用程序將使用Packet協議直接同網絡設備通訊。而不通過內核中的其他中介協議。?
(2)、Network firewalls (CONFIG_FIREWALL) [N/y/?] 選擇“y”,內核將支持防火墻。
?
(3)、TCP/IP networking (CONFIG_INET) [Y/n/?
] 選擇“y”。內核將支持TCP/IP協議。?
(4)The IPX protocol (CONFIG_IPX) [N/y/m/?
] 選擇“y”,內核將支持IPX協議。?
(5)、Appletalk DDP (CONFIG_ATALK) [N/y/m/?] 選擇“y”,內核將支持Appletalk DDP協議。?
8、SCSI support(SCSI支持)?
假設用戶要使用SCSI設備,可配置對應選項。?
9、Network device support(網絡設備支持)?
Network device support (CONFIG_NETDEVICES) [Y/n/?] 選擇“y”。內核將提供對網絡驅動程序的支持。
?
10、Ethernet (10 or 100Mbit)(10M或100M以太網)?
在該項設置中。系統提供了很多網卡驅動程序。用戶僅僅要選擇自己的網卡驅動就能夠了。此外,用戶還能夠依據須要,在內核中增加對FDDI、PPP、SLIP和無線LAN(Wireless LAN)的支持。?
11、Character devices(字符設備)?
(1)、Virtual terminal (CONFIG_VT) [Y/n/?] 選擇“y”。內核將支持虛擬終端。?
(2)、Support for console on virtual terminal (CONFIG_VT_CONSOLE) [Y/n/?]?
選擇“y”。內核可將一個虛擬終端用作系統控制臺。?
(3)、Standard/generic (dumb) serial support (CONFIG_SERIAL) [Y/m/n/?
]?
選擇“y”,內核將支持串行口。?
(4)、Support for console on serial port (CONFIG_SERIAL_CONSOLE) [N/y/?]?
選擇“y”,內核可將一個串行口用作系統控制臺。?
12、Mice(鼠標)?
PS/2 mouse (aka "auxiliary device") support (CONFIG_PSMOUSE) [Y/n/?
] 假設用戶使用的是PS/2鼠標。則該選項應該選擇“y”。
?
13、Filesystems(文件系統)?
(1)、Quota support (CONFIG_QUOTA) [N/y/?] 選擇“y”,內核將支持磁盤限額。?
(2)、Kernel automounter support (CONFIG_AUTOFS_FS) [Y/m/n/?] 選擇“y”,內核將提供對automounter的支持,使系統在啟動時自己主動 mount遠程文件系統。?
(3)、DOS FAT fs support (CONFIG_FAT_FS) [N/y/m/?
] 選擇“y”,內核將支持DOS FAT文件系統。?
(4)、ISO 9660 CDROM filesystem support (CONFIG_ISO9660_FS) [Y/m/n/?
]?
選擇“y”,內核將支持ISO 9660 CDROM文件系統。?
(5)、NTFS filesystem support (read only) (CONFIG_NTFS_FS) [N/y/m/?]?
選擇“y”,用戶就能夠以僅僅讀方式訪問NTFS文件系統。?
(6)、/proc filesystem support (CONFIG_PROC_FS) [Y/n/?] /proc是存放Linux系統執行狀態的虛擬文件系統,該項必須選擇“y”。
?
(7)、Second extended fs support (CONFIG_EXT2_FS) [Y/m/n/?
] EXT2是Linux的標準文件系統,該項也必須選擇“y”。?
14、Network File Systems(網絡文件系統)?
(1)、NFS filesystem support (CONFIG_NFS_FS) [Y/m/n/?] 選擇“y”。內核將支持NFS文件系統。
?
(2)、SMB filesystem support (to mount WfW shares etc.) (CONFIG_SMB_FS)?
選擇“y”。內核將支持SMB文件系統。?
(3)、NCP filesystem support (to mount NetWare volumes) (CONFIG_NCP_FS)?
選擇“y”。內核將支持NCP文件系統。?
15、Partition Types(分區類型)?
該選項支持一些不太經常使用的分區類型。用戶假設須要。在對應的選項上選擇“y”就可以。?
16、Console drivers(控制臺驅動)?
VGA text console (CONFIG_VGA_CONSOLE) [Y/n/?
] 選擇“y”,用戶就能夠在標準的VGA顯示方式下使用Linux了。?
17、Sound(聲音)?
Sound card support (CONFIG_SOUND) [N/y/m/?] 選擇“y”,內核就可提供對聲卡的支持。
?
18、Kernel hacking(內核監視)?
Magic SysRq key (CONFIG_MAGIC_SYSRQ) [N/y/?] 選擇“y”,用戶就能夠對系統進行部分控制。
普通情況下選擇“n”。
?
用make menuconfig配置內核時有時會出現報錯信息:------>沒用安裝
Curses library
用yum命令安裝庫就攻克了---> #?yum install ncurses-devel3:進行內核的裁剪:
?這部分內容就不是一章能講完的了,這個會另外寫一篇名為《按需優化自己的內核》文章4:?編譯內核?
(一)、建立編譯時所需的從屬文件?# cd /usr/src/linux?
# make dep?
(二)、清除內核編譯的目標文件?
# make clean?
(三)、編譯內核?
# make zImage?
內核編譯成功后。會在/usr/src/linux/arch/i386/boot文件夾中生成一個新內核的映像文件zImage。假設編譯的內核非常大的話,系統會提示你使用make bzImage命令來編譯。
這時,編譯程序就會生成一個名叫bzImage的內核映像文件。?
(四)、編譯可載入模塊?
假設用戶在配置內核時設置了可載入模塊,則須要對這些模塊進行編譯,以便將來使用insmod命令進行載入。?
# make modules?
# make modelus_install?
編譯成功后。系統會在/lib/modules文件夾下生成一個2.3.14子文件夾。里面存放著新內核的全部可載入模塊。
?
5:啟動新內核?
(一)、將新內核和System.map文件復制到/boot文件夾下?
# cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.3.14?
# cp /usr/src/linux/System.map /boot/System.map-2.3.14?
# cd /boot?
# rm -f System.map?
# ln -s System.map-2.3.14 System.map?
(二)、配置/etc/lilo.conf文件。在該文件里增加以下幾行:?
default=linux-2.3.14?
image=/boot/vmlinuz-2.3.14?
label=linux-2.3.14?
root=/dev/hda1?
read-only?
(三)、使新配置生效?
# /sbin/lilo?
(四)、又一次啟動系統?
# /sbin/reboot?
新內核假設不能正常啟動。用戶能夠在LILO:提示符下啟動舊內核。然后查出故障原因,又一次編譯新內核就可以。
6、(可選)安裝模塊:
make modules_install
7、放置新內核基本文件
cp System.map /boot/
cparch/x86_64/boot/bz* /boot/kernel
8、(可選)安裝新內核頭文件:
make headers_install
9、(可選)生成新內核的initramfs:
dracut -v /boot/initramfs.img $(uname -r)
10、改動bootloader配置文件,grub.cfg或是syslinux.cfg/extlinux.conf。加入新內核引導項;
轉載于:https://www.cnblogs.com/yfceshi/p/7301431.html
總結
以上是生活随笔為你收集整理的为pc编译配置安装当前最新的内核的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Json-server 创建模拟API服
- 下一篇: 图的遍历、最小生成树、最短路径