2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計報告</b></p><p>  課程名稱: Linux原理與設計 </p><p>  設計題目: Linux裁剪內(nèi)核 </p><p>  專 業(yè): 計算機科學與技術專業(yè) </p><p>

2、;  姓 名: </p><p>  學 號: </p><p><b>  引言</b></p><p>  當Linux操作系統(tǒng)發(fā)布以后,一般是不需要編譯內(nèi)核的。但是在實際應用中,當需要增加操作系統(tǒng)對新的硬件設備的支持或者增加內(nèi)核新的功能、對內(nèi)

3、核代碼或者內(nèi)核配置進行優(yōu)化時,就需要去重新編譯Linux內(nèi)核,然后重新發(fā)布自己的Linux內(nèi)核版本。本次實驗是對下載的內(nèi)核源碼進行配置并編譯,用編譯出的內(nèi)核重新引導系統(tǒng)。 </p><p><b>  實驗原理</b></p><p>  2.1 Linux內(nèi)核的配置系統(tǒng)由三個部分組成,Makefile、配置文件盒配置工 具。</p><p>

4、  2.1.1 Makefile:分布在 Linux 內(nèi)核源代碼中,定義 Linux 內(nèi)核的編譯規(guī) 則。</p><p>  2.1.2 配置文件(config.in/Kconfig):給用戶提供配置選擇的功能,在linux2.4版本以前文件名是config.in,在Linux3.3版以后文件名改為Kconfig。</p><p>  2.1.3 配置工具:包括配置命令解釋器和配置用

5、戶界面。其中配置命令解釋器負責對配置腳本中使用的配置命令進行解釋;配置用戶界面為用戶提供配置內(nèi)核選項的用戶界面,它有三種:Make config提供基于字符界面;Make menuconfig提供基于Ncurses 圖形界面。 </p><p>  運行工作環(huán)境和配置說明</p><p>  本實驗采用的內(nèi)核版本是3.3.3,配置工具采用3.3版本提供的makeg

6、config。首先去官網(wǎng)下載最新的3.3.3版本的Linux,將下載的內(nèi)核源代碼放到Linux系統(tǒng)目錄文件/usr/src/中,然后下載補丁。要想順利完成內(nèi)核編譯,首先需要檢查或者安裝必要的工具。</p><p>  1.安裝 gcc, make 等編譯工具:</p><p>  apt-get install build-essential</p><p>  2

7、.安裝 make menuconfig 時必須的庫文件:NCurses (libncurses5-dev 或 ncurses-devel) ,這是當make menuconfig 時用作生成菜單窗口的程序庫:</p><p>  apt-get install libncurses-dev apt-get install kernel-package</p><p>  3

8、.安裝Linux系統(tǒng)生成 kernel-image 的一些配置文件和工具</p><p>  apt-get install fakeroot</p><p>  apt-get install initramfs-tools, module-init-tools</p><p>  4.一般在編譯 Linux 內(nèi)核時,一般還需要以下工具(這些工具一般是可選的):&

9、lt;/p><p>  GNU C++ Compiler (g++ 或 gcc-c++) - 編譯 make xconfig 使用的 Qt 窗口時需 要</p><p>  Qt 3 (qt-devel 或 qt3-devel) - make xconfig 時用作 Qt 窗口的程序庫</p><p>  GTK+ (gtk+-devel) - make gcon

10、fig 時用作 GTK+ 窗口的程序庫</p><p>  Glade (libglade2-devel) - 要編譯 make gconfig 時的 GTK+ 窗口時需要</p><p>  在Ubuntu系統(tǒng)中,我們可以使用下面的命令來獲得相關的軟件包:</p><p>  apt-get update</p><p>  apt-get

11、 install libncurses5-dev wget bzip2</p><p>  文件系統(tǒng)中設計的文件夾及其中文件的清單</p><p>  Linux內(nèi)核源碼主目錄下主要包括以下目錄: </p><p><b>  arch</b></p><p>  arch子目錄包括所有與體系結構相關的內(nèi)核代碼。

12、它的每一個子目錄都代表一個支持的體系結構。例如:arm下面就是arm體系架構的處理器目錄,包含我們使用的PXA處理器。</p><p><b>  include</b></p><p>  include子目錄包括編譯內(nèi)核所需要的大部分頭文件。與ARM相關的頭文件在include/asm-arm子目錄下。</p><p><b> 

13、 init</b></p><p>  這個目錄包含內(nèi)核的初始化代碼,但不是系統(tǒng)的引導代碼,包含main.c和Version.c文件。這是研究Linux內(nèi)核的起點。</p><p><b>  mm</b></p><p>  這里包含所有獨立于CPU體系結構的內(nèi)存管理代碼,如頁式存儲管理內(nèi)存的分配和釋放等。而與體系結構相關的代碼在

14、arch/arm/mm中。</p><p><b>  Kernel</b></p><p>  這里包括主要的內(nèi)核代碼,此目錄寫的文件實現(xiàn)大多數(shù)Linux系統(tǒng)的內(nèi)核函數(shù),其中最重要的文件是sched.c。與Xscale體系結構相關的代碼</p><p>  在arch/arm-pxa/kernel。</p><p>&

15、lt;b>  Drives</b></p><p>  此目錄用于放置系統(tǒng)所有的設備驅動程序,每種驅動程序個占一個子目錄。</p><p><b>  /block:</b></p><p>  塊設備驅動程序。塊設備包括IDE和scsi設備。其初始化過程參加drivers/block/genhd.c中的device_setu

16、p()函數(shù),該函數(shù)不僅初始化硬盤還初始化了網(wǎng)絡。</p><p>  /char:字符設備驅動程序。如串口、鼠標等。</p><p>  /cdrom:包含Linux所有的CD-ROM代碼。</p><p>  /pci:PCI卡驅動程序代碼,包含PCI子系統(tǒng)映射和初始化代碼等。</p><p>  scsi:包含所有的SCSI代碼已經(jīng)Lin

17、ux所支持的所有的SCSI設備驅動程序代碼。</p><p>  net:網(wǎng)絡設備驅動程序。</p><p>  sound:聲卡設備驅動程序。</p><p>  lib目錄放置內(nèi)核的庫代碼;</p><p>  net目錄包含內(nèi)核與網(wǎng)絡的相關的代碼;</p><p>  ipc目錄包含內(nèi)核進程通信的代碼;</

18、p><p>  fs目錄是所有的文件系統(tǒng)代碼和各種類型的文件操作代碼,它的每一個子目錄支持一個文件系統(tǒng),如JFFS2;</p><p>  scripts目錄包含用于配置內(nèi)核的腳本文件等。</p><p>  每個目錄下一般都有depend文件和一個makefile文件,它們是編譯時使用的輔助文件,仔細閱讀這兩個文件對弄清各個文件之間的相互依托關系很有幫助。有的目錄下有

19、readme文件,它是對相應的目錄下的文件的一些說明,同樣有利于內(nèi)核的理解。</p><p>  內(nèi)核配置過程和配置清單</p><p><b>  5.1內(nèi)核配置過程</b></p><p>  5.1.1. 進入內(nèi)核文件所在目錄 # cd /usr/src/linux-3.3</p><p> 

20、 5.1.2. 編輯 /usr/src/linux-3.3/Makefile 文件的 EXTRAVERSION 的值。 EXTRAVERSION = No_Power_Management_Support # 以此標識內(nèi)核</p><p>  5.1.3. 運行命令 make mrproper ,以確保源文件處于一致、干凈的狀態(tài)。這個命令 </p><p>

21、  刪除內(nèi)核配置文件.config(如果有的話)。</p><p>  5.1.4. 保存默認的配置文件(/usr/src/linux-3.3/arch/x86/i386_defconfig)到 </p><p>  安全位置,比如軟盤,以便必要時恢復默認配置。</p><p>  5.1.5. 使用配置工具設置內(nèi)核選項。</p><p>

22、  # make config (基于文本的最為傳統(tǒng)的配置界面,由于有幾百個問題要回答, </p><p>  一般使用其它的配置工具。) # make menuconfig (基于文本選單的配置界面) # make xconfig (基于圖形窗口模式的配置界面) # make oldconfig (使用已有的內(nèi)核配置文件,僅提示一些新的特性。)</p><p>

23、  選擇相應的配置時,有三種選擇:   “Y”- 將該功能編譯進內(nèi)核 “N”- 不將該功能編譯進內(nèi)核 “M”- 將該功能編譯成可以在需要時動態(tài)插入到內(nèi)核中的模塊。</p><p>  設置完選項后,保存更改。上述配置工具會生成配置文件 /usr/src/linux-3.3.26/.config 。如果要使用現(xiàn)有的配置文件(比如默認的配置文件),首先將該配置文件拷貝為/usr/s

24、rc/linux-3.3/.config,然后執(zhí)行命令 make oldconfig。</p><p>  安裝 make-kpkg 命令sudo apt-get install kernel-package </p><p>  安裝 gcc 命令sudo apt-get install build-essential

25、 </p><p><b>  5.2 配置清單</b></p><p>  1. Code maturity level options 代碼成熟等級。</p><p>  2. Loadable module support 對模塊的支持。這里面有三項: Enable loadable module suppor

26、t</p><p>  Set version information on all module symbols  </p><p>  Kernel module loader 3. Processor type and features CPU類型</p><p>  4. General setup這里是對最普通的一些屬性進行設置</p>

27、;<p>  5. Memory Technology Device(MTD) MTD設備支持。</p><p>  6. Parallel port support 串口支持。</p><p>  7. Plug and Play configuration 即插即用支持</p><p>  8. Block device 塊

28、設備支持</p><p>  9. Networking options  網(wǎng)絡選項 10. Telephony Support 電話支持 11. ATA/IDE/MFM/RLL support 各種接口的硬盤/光驅/磁帶/軟盤支持  12. SCSI support SCSI設備的支持  13. IEEE 1394(FireWire)support IEEE

29、 1394 防火墻設備支持  14. I2O device support I2O 設備支持 15. Network device support 網(wǎng)絡設備支持  16. Amateur Radio support 配置業(yè)余無線廣播  17. IrDA(infrared)support 紅外支持 18. ISDN subsystem ISDN子系統(tǒng)  19. Old CD-

30、ROM drivers(not SCSI、not IDE) 非SCSI/IDE接口的CD-ROM設備 20. Character devices 字符設備</p><p>  22. Console drivers 控制臺驅動  23. Sound 聲卡驅動  24. USB supprot USB支持</p><p><b>

31、  編譯與安裝內(nèi)核</b></p><p>  6.1. make clean 清除前面過程中make后遺留下的文件。</p><p>  6.2. make dep 讀取配置過程生成的配置文件,來創(chuàng)建對應于配置的依賴關系樹,從而決定哪些需要編譯而那些不需要。3.3內(nèi)核不需要執(zhí)行此步驟。</p><p>  6.3. make

32、zImage make bzImage</p><p>  這兩個命令會在/usr/src/linux-3.3下創(chuàng)建文件vmlinux,這是未壓縮的內(nèi)核。</p><p>  make zImage 和 make bzImage 會各自在/usr/src/linux/arch/i386/boot/下創(chuàng)建文件zImage和bzImage,這是已經(jīng)壓縮的內(nèi)核。zImage是用g

33、zip壓縮的,適合存儲在軟盤上的內(nèi)核。bzImage是更大的超過軟盤空間限制的壓縮內(nèi)核。</p><p>  6.4. make modules 編譯生成相應的模塊。</p><p>  6.5. make modules_install 一旦模塊被編譯,它們須被拷貝到相應的子目錄/lib/modules下,make modules_install 命令執(zhí)行這一任務。模塊

34、在系統(tǒng)中的標準目錄位于/lib/modules/x.y.z,后面的x.y.z是版本號,為安全起見,在運行make modules_install之前最好對/lib/modules進行備份。</p><p>  6.6. make install 通過執(zhí)行以下步驟完成安裝。 (1)把壓縮內(nèi)核映象拷貝到/boot目錄下, 并創(chuàng)建相應的System.map符號鏈 (2)修改bootloader的

35、配置文件; (3)調用mkinitrd程序創(chuàng)建內(nèi)核的initrd映象. 對于GRUB而言, 將在/boot/grub/grub.conf配置文件增加如下類似的配置行: title Red Hat Linux (3.***) root(hd0, 1) kernel /boot/vmlinuz-3.*** ro root=LABEL=/ initrd /boot/initrd-3.***.img</p

36、><p><b>  安裝引導配置</b></p><p>  7.1 創(chuàng)建initramfs</p><p>  為了在initramfs中添加指定kernel的驅動模塊,內(nèi)核模塊3.3.30是需要創(chuàng)建initramfs 的kernel版本號,如果是給當前kernel制作initramfs,可以使用uname -r查看當前的版本號。mkin

37、itramfs會把/lib/modules/${kernel_version}/ 目錄下的一些啟動時需要使用的模塊添加到initramfs中。本實例中執(zhí)行以下命令:</p><p>  mkinitramfs -o /boot/initrd.img-3.3.30 /lib/modules/3.3.30</p><p>  7.2 設置grub</p><p>  在

38、/boot/grub文件夾中的menu.list中添加項 </p><p>  uuid 2c683e9a-ec59-471b-8bf8-27af7d56ec21</p><p><b>  啟動選項</b></p><p>  重新啟動系統(tǒng)后,進入啟動選項目錄. </p><p><b>  啟動新

39、內(nèi)核</b></p><p>  1. 將新內(nèi)核和System.map文件拷貝到/boot目錄下,依次執(zhí)行以下命令: </p><p> ?、泡斎? cp /usr/src/linux-3.3.18/arch/i386/boot/bzImage /boot/vmlinuz-3.3.18 </p><p> ?、戚斎? cp /usr/src/linux

40、-3.3.18/System.map /boot/System.map-3.3.18 </p><p>  ⑶輸入* cd /boot 進入boot目錄</p><p> ?、容斎? rm –rf System.map (刪除原來的連接) </p><p> ?、奢斎? ln –s System.map-3.3.18 System.map (重新建立連接) <

41、/p><p>  2. 修改Grub啟動管理器</p><p>  在/boot目錄下,執(zhí)行以下命令:</p><p> ?、泡斎? new-kernel-pkg --mkinitrd --depmod --install 3.3.18 (這時候你的/boot下會生成一個initrd-3.3.18.img,并且你的grub.conf文件也作了相應更改)</p>

42、;<p>  ⑵輸入* df 查看根目錄在那個分區(qū),下一步要用到。</p><p>  ⑶輸入* vi /etc/grub.conf</p><p>  進入grub.conf文件,找到如下信息:</p><p><b>  default=1</b></p><p>  timeout=10</p&

43、gt;<p>  splashimage=(hd0,0)/grub/splash.xpm.gz</p><p>  title Red Hat Linux (3.3.18)</p><p>  root (hd0,0)</p><p>  kernel /vmlinuz-3.3.18 ro root= LABEL=/</p><p&

44、gt;  initrd /initrd-3.3.18.img</p><p><b>  做兩處修改:</b></p><p>  (1) 將default=1改為default=0 </p><p>  (2) 將kernel行的“LABEL=/”換成根目錄所在的分區(qū)</p><p><b>  修改后的結果

45、為:</b></p><p><b>  default=0</b></p><p>  timeout=10</p><p>  splashimage=(hd0,0)/grub/splash.xpm.gz</p><p>  title Red Hat Linux (3.3.18)</p>

46、<p>  root (hd0,0)</p><p>  kernel /vmlinuz-3.3.18 ro root=/boot/grub</p><p>  initrd /initrd-3.3.18.img</p><p>  title Red Hat Linux (3.4.20-8)</p><p>  root (hd0

47、,0)</p><p>  kernel /vmlinuz-3.4.20-8 ro root=LABEL=/</p><p>  initrd /initrd-3.4.20-8.img</p><p>  到此處內(nèi)核編譯完成,重新啟動計算機。 </p><p><b>  總結</b></p><p&

48、gt;  通過本次課程設計,讓我們熟悉了Linux源代碼的獲取方式,同時也熟悉和了解了Linux內(nèi)核的配置方法。在剛開始接觸Linux的時候,感覺是那么的遙不可及。通過實驗的過程中,不斷的查閱資料,解決了不少問題,同時也算復習了上學期學的操作系統(tǒng)的很多知識。不過現(xiàn)在所了解的都是很淺層的,還需要以后深入的了解學習。相信這次linux課程設計不是我們學習linux的結束,而只是一個開始。這個實驗也讓我們學會了如何去自主在網(wǎng)上學習linux。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論