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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

3、核代碼或者內(nèi)核配置進(jìn)行優(yōu)化時(shí),就需要去重新編譯Linux內(nèi)核,然后重新發(fā)布自己的Linux內(nèi)核版本。本次實(shí)驗(yàn)是對(duì)下載的內(nèi)核源碼進(jìn)行配置并編譯,用編譯出的內(nèi)核重新引導(dǎo)系統(tǒng)。 </p><p><b>  實(shí)驗(yàn)原理</b></p><p>  2.1 Linux內(nèi)核的配置系統(tǒng)由三個(gè)部分組成,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、戶界面。其中配置命令解釋器負(fù)責(zé)對(duì)配置腳本中使用的配置命令進(jìn)行解釋;配置用戶界面為用戶提供配置內(nèi)核選項(xiàng)的用戶界面,它有三種:Make config提供基于字符界面;Make menuconfig提供基于Ncurses 圖形界面。 </p><p>  運(yùn)行工作環(huán)境和配置說明</p><p>  本實(shí)驗(yàn)采用的內(nèi)核版本是3.3.3,配置工具采用3.3版本提供的makeg

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

7、.安裝 make menuconfig 時(shí)必須的庫(kù)文件:NCurses (libncurses5-dev 或 ncurses-devel) ,這是當(dāng)make menuconfig 時(shí)用作生成菜單窗口的程序庫(kù):</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)核時(shí),一般還需要以下工具(這些工具一般是可選的):&

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

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

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

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

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

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

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

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

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

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

19、readme文件,它是對(duì)相應(yīng)的目錄下的文件的一些說明,同樣有利于內(nèi)核的理解。</p><p>  內(nèi)核配置過程和配置清單</p><p><b>  5.1內(nèi)核配置過程</b></p><p>  5.1.1. 進(jìn)入內(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 # 以此標(biāo)識(shí)內(nèi)核</p><p>  5.1.3. 運(yùn)行命令 make mrproper ,以確保源文件處于一致、干凈的狀態(tài)。這個(gè)命令 </p><p>

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

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

23、  選擇相應(yīng)的配置時(shí),有三種選擇:   “Y”- 將該功能編譯進(jìn)內(nèi)核 “N”- 不將該功能編譯進(jìn)內(nèi)核 “M”- 將該功能編譯成可以在需要時(shí)動(dòng)態(tài)插入到內(nèi)核中的模塊。</p><p>  設(shè)置完選項(xiàng)后,保存更改。上述配置工具會(huì)生成配置文件 /usr/src/linux-3.3.26/.config 。如果要使用現(xiàn)有的配置文件(比如默認(rè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 代碼成熟等級(jí)。</p><p>  2. Loadable module support 對(duì)模塊的支持。這里面有三項(xiàng): 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這里是對(duì)最普通的一些屬性進(jìn)行設(shè)置</p>

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

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

29、 1394 防火墻設(shè)備支持  14. I2O device support I2O 設(shè)備支持 15. Network device support 網(wǎng)絡(luò)設(shè)備支持  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設(shè)備 20. Character devices 字符設(shè)備</p><p>  22. Console drivers 控制臺(tái)驅(qū)動(dòng)  23. Sound 聲卡驅(qū)動(dòng)  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)建對(duì)應(yīng)于配置的依賴關(guān)系樹,從而決定哪些需要編譯而那些不需要。3.3內(nèi)核不需要執(zhí)行此步驟。</p><p>  6.3. make

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

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

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

35、配置文件; (3)調(diào)用mkinitrd程序創(chuàng)建內(nèi)核的initrd映象. 對(duì)于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>  安裝引導(dǎo)配置</b></p><p>  7.1 創(chuàng)建initramfs</p><p>  為了在initramfs中添加指定kernel的驅(qū)動(dòng)模塊,內(nèi)核模塊3.3.30是需要?jiǎng)?chuàng)建initramfs 的kernel版本號(hào),如果是給當(dāng)前kernel制作initramfs,可以使用uname -r查看當(dāng)前的版本號(hào)。mkin

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

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

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 進(jìn)入boot目錄</p><p>  ⑷輸入* rm –rf System.map (刪除原來的連接) </p><p> ?、奢斎? ln –s System.map-3.3.18 System.map (重新建立連接) <

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

42、;<p> ?、戚斎? df 查看根目錄在那個(gè)分區(qū),下一步要用到。</p><p> ?、禽斎? vi /etc/grub.conf</p><p>  進(jìn)入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>  修改后的結(jié)果

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)核編譯完成,重新啟動(dòng)計(jì)算機(jī)。 </p><p><b>  總結(jié)</b></p><p&

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論