国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

如何制作Live CD

2010-03-22 11:48李晨光
關(guān)鍵詞:源碼拷貝內(nèi)核

李晨光

(中鐵工程設(shè)計(jì)咨詢集團(tuán)有限公司信息中心,北京100055)

LiveCD是一種無需安裝、完全從CDROM啟動(dòng)的瘦Linux版 。當(dāng)它運(yùn)行時(shí)所有的工具都存放在CDROM上或者內(nèi)存里,而不是硬盤上,這是和傳統(tǒng)的操作系統(tǒng)最大區(qū)別。各Live CD在功能上的區(qū)分并不是絕對(duì)的,因?yàn)榇蟛糠諰ive CD本身就是一個(gè)非常完整的Linux系統(tǒng),可以用它來實(shí)現(xiàn)各種功能 。

1 制作LiveCD

計(jì)算機(jī)加電以后, 由位于主板上的BIOS負(fù)責(zé)引導(dǎo)操作系統(tǒng)。Linux平臺(tái)上主要的引導(dǎo)程序(bootloader)是LILO(Linux Loader)和GRUB。這兩個(gè)引導(dǎo)程序分為2部分, 第1部分(Firststage)尺寸很小, 以便裝入MBR,它負(fù)責(zé)引導(dǎo)第2部分(Second stage)來完成主要的引導(dǎo)工作。當(dāng)?shù)?部分加載后,它根據(jù)預(yù)先的配置顯示選單界面,供用戶選擇引導(dǎo)的操作系統(tǒng)及啟動(dòng)參數(shù)。接下來,引導(dǎo)程序?qū)?nèi)核映像文件和初始Ramdisk(initrd)映像加載入內(nèi)存,initrd映像用于存放一些用于系統(tǒng)引導(dǎo)的關(guān)鍵驅(qū)動(dòng)模塊,而這些文件又無法從磁盤上的文件系統(tǒng)加載。映像加載完畢后,控制權(quán)就由引導(dǎo)程序交給Linux內(nèi)核。Linux內(nèi)核啟動(dòng)后,首先會(huì)初始化,并配置系統(tǒng)的可用內(nèi)存以及各種相關(guān)設(shè)備,解壓并掛載內(nèi)存中的initrd映像、加載其中的驅(qū)動(dòng)程序,初始化和文件系統(tǒng)相關(guān)的各種虛擬設(shè)備。最后, 內(nèi)核加載根(/)文件系統(tǒng)、釋放不再使用的內(nèi)存,執(zhí)行第1個(gè)程序/sbin/init。/sbin/init程序是系統(tǒng)啟動(dòng)后運(yùn)行的第1個(gè)進(jìn)程,它根據(jù)配置文件/etc/inittab依次執(zhí)行/etc/rcx.d目錄中的啟動(dòng)腳本,由這些腳本完成各種初始化,啟動(dòng)各種服務(wù)程序。至此,Linux系統(tǒng)已經(jīng)引導(dǎo)完成了。

2 準(zhǔn)備創(chuàng)建LiveCD

2.1 下載鏡像

從http://easynews.dl.sourceforge.net/sourceforge/souptonuts/cdrom_linux_boot_proj1.iso下載文件cdrom_linux_boot_proj1.iso,并將其刻錄至光盤之上。使用該光盤重新啟動(dòng)系統(tǒng)。目的是為了檢測內(nèi)核中是否編譯了所需的網(wǎng)絡(luò)、視頻和鍵盤(包含USB)驅(qū)動(dòng)器。如果有重要的設(shè)備沒有被識(shí)別,那么可以將其加到內(nèi)核之中。

2.2 下載項(xiàng)目環(huán)境

從http://prdownloads.sourceforge.net/souptonuts/proj1.tar.gz下載完整的項(xiàng)目環(huán)境 proj1.tar.gz。該軟件包中包含了所有用于創(chuàng)建和 定制cdrom_linux_boot_ proj1.iso所需的東西,這其中包括BusyBox源碼、各種庫和SSH。目錄 “_install”包含了用于SSH、init和tcpdump所需的庫。2.6.11內(nèi) 核 的 “.config”可以在文檔目錄中找到。此外,staginig_iso_image目錄包含了一份內(nèi)核bzImage以及isolinux啟動(dòng)加載器。proj1.tar.gz文件的大小是l1 MB,由于其包含了除源代碼以外用戶所需的所有東西,所以只需再下載內(nèi)核代碼即可。下 載地址為http://www.kernel.org/pub/linux/kernel/v2.6/。

在后面的步驟中,介紹配置和安裝最新內(nèi)核的方法。在解壓proj1.tar.gz文件時(shí),解壓該文件會(huì)創(chuàng)建所有必需的字符和塊設(shè)備,所以需要以root的身份使用“tar -xzf”命令進(jìn)行解壓縮。

用如下命令檢查下載完整性:$md5sum proj1.tar.gz

用如下命令解壓解包文件:#tar -xzf proj1.tar.gz

轉(zhuǎn)換成root身份,以確??梢詣?chuàng)建所有/dev設(shè)備。完成上述步驟后,這時(shí)可以使用如下命令查看全部的設(shè)備:[root@third-fl-71_install] #lS -l dev。

如果使用普通賬號(hào)進(jìn)行上述步驟 ,會(huì)發(fā)現(xiàn)很多文件都沒有被創(chuàng)建 。執(zhí)行createiso腳本:#./createiso該腳本會(huì)執(zhí)行很多操作,它會(huì)以 ./cdrom為掛載點(diǎn)創(chuàng)建一個(gè)loop back設(shè)備,會(huì)拷貝_install的內(nèi)容。之后,它會(huì)卸載./cdrom。接下來,它會(huì)拷貝staging目錄中的內(nèi)容 。并且會(huì)創(chuàng)建一個(gè)可啟動(dòng)的CD映像 ,還會(huì)創(chuàng)建一個(gè)虛擬的文件系統(tǒng)。

3 編譯LiveCD源碼

3.1 下載 BusyBox

從http://www.busybox.net/downloads/busybox-1.00.tar.gz下載BusyBox

$wget http://www.busybox.net/downloads/busybox-1.00.tar.gz

$wget https://www.busybox.net/downloads/busybox-1.00.tar.gz.sign

$md5sum busybox-1.00.tar.gz

fa62459e098fc00b22772aaf2e75bc98 busybox-1.00.tar.gz

接下來解壓文件 :

$tar --xzf busybox-1.00.tar.gz

3.2 配置BusyBox

如果用戶不想自己寫配置文件 ,可以從以下網(wǎng)址:http://prdownloads.sourceforge.net/souptonuts/chiricobusybox.config下載一個(gè)樣例文件。注意下載完成后,將其文件名更改為 “.config”。具體命令如下 :

$cd busybox-1.00

$wget http://osdn.dl.soureceforge.net/sourceforget/souptonuts/chiricobusybox.onfig

$cp chiricobusybox.config .config

可以運(yùn)行“make”和 “make install”來編譯安裝。在上述命令執(zhí)行完成的最后階段,會(huì)顯示如下信息“work properly.”,將BusyBox的權(quán)限改為root:$chmod 4755 ./_install/bin/busybox

3.3 創(chuàng)建所需目錄

需要在_install下創(chuàng)建一些目錄。首先查看當(dāng)前目錄的內(nèi)容,創(chuàng)建 dev、etc、lib、proc、tmp、var和 sys:

$mkdirp dev sys etc/init.d lib proc tmp var/lib/misc var/lock var/log var/run var/tmp

3.4 創(chuàng)建設(shè)備目錄

/dev目錄中是必須的設(shè)備文件,這些文件可從現(xiàn)有的系統(tǒng)中拷貝,也可以使用mknod -m命令來創(chuàng)建 。要注意下述操作需要以root的身份進(jìn)行 。由于有太多的文件,并且可能需要編譯 _install,所以建議將這些文件做成一個(gè)文件 。使用如下命令在_install中轉(zhuǎn)換成 root用戶。

# chmod 700 createdev

當(dāng)然,這些文件也可以使用mknod命令創(chuàng)建。

3.5 創(chuàng)建所須文件和目錄

在/etc目錄中創(chuàng)建所需的文件。使用“Exit out of root” 模式,就不會(huì)出現(xiàn)覆蓋/etc的情況。如果目錄“/”出現(xiàn)問題,則/etc也不會(huì)幸免,所以不要拷貝東西至“/”,因?yàn)樗钱?dāng)前正在運(yùn)行的系統(tǒng)。由于要運(yùn)行SSH后臺(tái)程序,所以要為其在/etc/passwd中創(chuàng)建賬號(hào)。在/etc/group文件中 ,root和sshd被加入到了組中。

注意,這里的root賬號(hào)已經(jīng)有一個(gè)密碼 是root。如 果 想 要?jiǎng)?chuàng)建自己的密碼 ,可以從/etc/shadow和/etc/shadow文件中拷貝一個(gè)現(xiàn)有賬號(hào)的密碼,相關(guān)文件請(qǐng)參考Live CD_ Output。

3.6 與庫相關(guān)的操作

這個(gè)配置使用的是G N U Libc(glibc)。與之相反,“uClibc”更小,易于使用,也更加易于配置SSH。如果沒有拷貝合適的NSS(Name Service Switch),那么SSH 或任何其它需要C語言調(diào)用getpwname的程序都將無法在glibc下正常執(zhí)行 。

在大部分情況下,可以通過“l(fā)dd”命令來發(fā)現(xiàn)哪一個(gè)庫和某一個(gè)應(yīng)用程序具有動(dòng)態(tài)鏈接關(guān)系。

3.7 編譯和配置SSH

使用如下命令下載 openssh:$wget http://mirror.mcs.anl.gov/openssh/portable/openssh-3.9p1.tar.gz

接下來檢查簽名密鑰:

$ wget http://mirror.mcs.anl.gov/openssh/portable/openssh-3.9p.tar.gz.sin

$ gpg -import DJM-GPG-KEY.asc

$gpg -verify openssh-3.9p1.tar.gzsig openssh-3.9p1.tar.gz

如果是在proj1目錄下,那么需要清除所有現(xiàn)有的SSH文件:

$cd proj1

$find _install/usr/ -iname `ssh*` -exec rm –f {} ;

在proj1/_install目錄中以root身份執(zhí)行以下命令 :

$tar --xzf openssh-3.9131.tar.gz

$cd openssh-3.9p1

$./configure –prefix= #

如果一切正常 ,那么退出chroot

3.8 編譯內(nèi)核

下載內(nèi) 核 ,命令如下:

$wget http://www.kernet.org/pub/linuxkernet/v2.6/linux-2.6.11.tar.gz

$wget http://ww.kernet.org/pub/linux/kernet/v2.6/liinux-2.6.11.tar.gz.sign

獲取正確的鑰匙 ,然后驗(yàn)證簽名 :

$pgp -keyserverwwwkeys.pgp.net -recv-keys 0x517D0F0E

$pgp -verify linux-2.6.11.tar.gz.sign linux-2.6.11.tar.gz

確認(rèn)所獲取的源碼沒問題,解開該源碼包:$tar -xzf linux-2.6.11.tar.gz

3.9 ISOLINUX啟動(dòng)加載器

啟動(dòng)加載器是第1個(gè)從光盤上運(yùn)行的程序。下面的目錄位于:

“proj1/staging_iso_image/” 目錄中:

$ cd proj1/staging_iso_image

對(duì)各個(gè)文件的描述如下 :

Boot.cat啟動(dòng)目錄 。

Isolinux.bin ISOLINUX啟動(dòng)加載器程序 。

Isolinux.cfg —個(gè)配置文件,用于配置加載內(nèi)核所需的指令。

Linux2.6是內(nèi)核文件,在內(nèi)核加載后,壓縮的映像文件“initrd.bin”被掛載至/Dev/ram0。而后,/sbin/init程序開始運(yùn)行 。 Linux 2.6是內(nèi)核映像,或是通過命令“make bzImage”生成的文件。

3.10 完成打包、創(chuàng)建光盤映像

配置好軟件后,將重新將系統(tǒng)目錄樹打包壓縮,并制作成最終的ISo映像。在打包以前,需要對(duì)定制過程中生成的臨時(shí)文件進(jìn)行清理,避免浪費(fèi)空間、使最終生成文件大于刻錄盤容量大小而無法刻錄。下面命令是從proj1目錄中執(zhí)行的。如果需要,用戶可查看createiso文件了解整個(gè)過程:

$mkisofs -R -b isolinux/isolinux.bin -c iso linux/boot.cat -no-emul-boot -boot-load-size 4 -bootinfo-table -o iso /cdrom_linux_boot_proj1.iso staging_iso_image/bot

LiveCD創(chuàng)建完成 ?,F(xiàn)在用戶就可以將上述文件刻錄至光盤了。另外,還可以將它裁減至一個(gè)U盤所在的容量內(nèi), 就方便隨身攜帶了。

4 結(jié)束語

一個(gè)實(shí)用、方便的個(gè)人化LiveCD就制作好了,本文只介紹了制作一個(gè)基本的LiveCD,其實(shí)還可以根據(jù)自己的需要自行添加各種程序和功能,希望本文能起到拋磚引玉的作用。

[1] (美)拉芙(Love,R.). Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)[M] . 北京:機(jī)械工業(yè)出版社,2006.

[2] 邱世華. Linux操作系統(tǒng)之奧秘[M] . 北京:電子工業(yè)出版社,2008.

[3] (美)博韋,西斯特. 深入理解LINUX內(nèi)核[M] . 北京:中國電力出版社,2007.

猜你喜歡
源碼拷貝內(nèi)核
多內(nèi)核操作系統(tǒng)綜述①
面向數(shù)據(jù)可靠傳輸?shù)母咦g碼率帶反饋的LT碼
強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
國內(nèi)一站式工程設(shè)備租賃平臺(tái)眾能聯(lián)合完成C2、C3兩輪融資
淺談開源操作系統(tǒng)的歷史
企業(yè)如何保護(hù)源碼
基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
Linux內(nèi)核mmap保護(hù)機(jī)制研究
中國生殖健康(2018年1期)2018-11-06
文化拷貝應(yīng)該如何“拷”
南宫市| 靖安县| 新建县| 新田县| 通榆县| 玉门市| 阿荣旗| 金沙县| 三河市| 寻乌县| 类乌齐县| 安福县| 大渡口区| 阿鲁科尔沁旗| 西林县| 吉隆县| 柯坪县| 西吉县| 阿荣旗| 和龙市| 勃利县| 广丰县| 徐州市| 阳城县| 庄浪县| 禹城市| 昌黎县| 蓝田县| 太仓市| 江口县| 磐石市| 湄潭县| 尚义县| 莆田市| 会理县| 玉龙| 青神县| 马边| 广宗县| 洛隆县| 聂拉木县|