日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

为pc编译配置安装当前最新的内核

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为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-devel

3:進行內核的裁剪:

?這部分內容就不是一章能講完的了,這個會另外寫一篇名為《按需優化自己的內核》文章

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编译配置安装当前最新的内核的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。