動手製做自己的一張軟盤大小的Linux(1) (轉)
動手製做自己的一張大小的(1)
不詳〖〗〖轉發〗
凡是接觸久的朋友肯定都使用過DOS啟動軟盤,至於啟動軟盤的重要性大家肯定也都清楚。在Linux底下啟動軟盤同樣重要,它不僅能測試新核心、恢復錯誤,而且能升級重要的系統。但是在L inux下製做啟動盤不象在DOS下那麼容易,下面我就一步一步的教大家制做自己系統的啟動軟盤。
1. Linux啟動過程簡介
一個啟動盤實際上是一個完整系統的縮影,它能夠一個完整系統的大部分功能。因此,如果想製做Linux啟動盤,你必須瞭解Linux系統啟動的基本過程。接下來我就先簡要介紹一下L inux的啟動過程。
所有的PC機都是透過執行ROM中的程式碼載入啟動盤的0柱面0扇區中的程式碼來啟動整個系統。在Linux系統中啟動盤的0柱面0扇區中含有的是啟動裝載器L ILO,它定位核心,裝載它,最後執行它。一旦核心裝載後,它先是進行基本裝置初始化,接著試圖載入並登陸中根檔案系統,如果核心找不到可裝載的根檔案系統,啟動過程會就此停止。如果根檔案系統裝載完畢並登陸成功後,你會看到一行資訊:
VFS: Mounted (ext2 filesystem) readonly.
之後,系統發現init並執行它,init程式尋找它的檔案/etc/inittab,並開始執行其中的指令碼,這些指令碼是一些命令的組合,用來執行如下命令,如載入所需模組、裝載S 、初始化、裝載fstab中列出的所有器等。最後啟動一個叫getty的程式,它負責console和ttys之間的通訊,它在顯示器上列印l ogin提示符並啟用login程式,login處理登陸的有效性並建立與的對話。至此,啟動過程完畢。
2. 製做啟動盤
建立一個啟動盤首先必須建立根檔案系統,由於軟盤容量有限,因此常採用的根檔案系統。下面我就詳細的介紹怎樣建立壓縮格式根檔案系統。
2.1 準備
一個根檔案系統必須包括支援完整Linux系統的全部東西,因此,它至少應包括以下幾項:
·基本檔案系統結構
·至少含有以下目錄:/dev, /proc, /bin, /etc, /lib, /usr, /tmp
·最基本的應用程式,如sh, ls, cp, mv等
·最低限度的配置檔案,如rc, inittab, fstab等
·裝置:/dev/hd*, /dev/tty*, /dev/fd0
·基本程式執行所需的庫
由於以上所需檔案遠超過1.44M,因此我們通常的做法是先準備好內容後再壓縮到軟盤中,當用軟盤啟動時,再把檔案解壓到中,形成一個虛擬盤(R ISK),透過RAMDISK控制系統啟動。
為了能建立以上的根檔案系統,你必須有一個空閒的能夠放下大約4M檔案的RAMDISK。
如果你使用LILO控制啟動,先檢查一下LILO的配置檔案/etc/lilo.conf中定義的RAMDISK的大小。/etc/lilo.conf 中有一行
RAMDISK_SIZE = nnn
它決定RAMDISK可使用的最大記憶體為nnn,預設情況下為4096K,對我們來說夠了,但是順便說一下,如果你的系統只有8M記憶體,千萬不要使用4 M的RAMDISK。再檢查一下你的系統裝置中是否有一個叫/dev/ram0或/dev/ram的裝置,這是RAMDISK的裝置名,如果沒有,用命令mknod建立一個裝置/ dev/ram0。
2.2 建立根檔案系統
Linux核心識別兩種可以直接複製到RAMDISK的檔案系統,它們是minix 和ext2,ext2更好。如果你使用ext2,你會發現使用-i選項定義比預設更多的資訊節點非常有用。mke2fs預設情況下在1.44M的軟盤上產生3 60個資訊節點,使用壓縮格式的根檔案系統需要更多的資訊節點,所以使用如下命令建立檔案系統可以建立2000個資訊節點,一般不會用光:
mke2fs -m 0 -i 2000 /dev/ram0
mke2fs將會自動判斷裝置容量的大小並相應的配置自身,-m 0引數防止它給root保留空間,這樣會騰出更多的有用空間。接著把虛擬盤掛在節點/mnt上:
mount -t ext2 /dev/ram0 /mnt
如果沒有節點/mnt,建一個。
接著是建立目錄。根檔案系統最少應該有如下8個目錄:
/dev – 裝置
/proc -- proc 檔案系統所需目錄
/etc – 系統配置檔案
/sbin – 重要的系統程式
/bin – 基本應用程式
/lib – 共享函式庫
/mnt – 裝載其他磁碟節點
/usr – 附加應用程式
其中/proc,/mnt和/usr在此情況下都是空的,只需要用mkdir建立它們既可。其餘的目錄應根據需要分別建立,下面我一個一個的詳細敘述。
·/dev:/dev中含有系統不可缺少的裝置檔案,雖然該目錄很普通,可以用 mkdir建立,然而目錄中的裝置檔案必須用mknod建立,當然也有捷徑,你可以把現有系統中/dev的檔案複製過來,然後刪除不必要的檔案。命令c p -dpR /dev /mnt會複製/dev整個目錄但不複製檔案內容,dp開關保證鏈結檔案仍然不變,不會複製鏈結所指原檔案,而且屬性不變。
必須注意的是,每一個裝置檔案佔用一個資訊節點,而軟盤上節點數是有限的,因此有必要刪除沒用的裝置檔案。例如,如果你沒有 裝置,刪除所有的以sd開頭的檔案。如果你不想使用串列埠裝置,刪除所有以cua開頭的檔案。不過記住一定要保留console, kmem, mem, null, ram, tty1等檔案。
·/etc:這個目錄中含有一些必不可少的系統配置檔案,那麼到底哪些檔案是必需的,哪些可有可無呢?告訴你一個小竅門,用命令ls –ltru,該命令會根據最後使用日期反列一下目錄/etc中的檔案,如果一些檔案很長時間沒有被進入過,基本上可以從你的啟動盤中刪去。
我的啟動盤中含有不到15個配置檔案,大致可分為3部分:
(1)啟動盤中必須含有的檔案
·rc.d/* -- 系統啟動指令碼
·fstab – 列出要登陸的檔案系統
·inittab – 包含啟動過程引數
而且這些檔案都是最簡單的。rc應該包括:
#!/bin/sh
/bin/mount -av
/bin/hostname yjy
fstab應包括:
/dev/ram0 / ext2 defaults
/dev/fd0 / ext2 defaults
/proc /proc proc defaults
inittab包括:
id:2:initdefault:
si::sysinit:/etc/rc
1:2345:respawn:/sbin/getty 9600 tty1
2:23:respawn:/sbin/getty 9600 tty2
(2)整理系統所需檔案
·passwd – 使用者名稱和目錄.
·group – 使用者組
·shadow – 使用者密碼
如果你覺得這不,就把passwd和shadow刪掉,這樣只有root可以進入系統。
(3)偶爾使用的檔案,可根據自己的實際情況選擇。
·/bin和/sbin:該目錄中包含有必不可少的應用程式,如ls, mv, cat,你可以根據自己的需要選擇,不過一定要記住包括以下程式:init, getty,login, mount,執行你的rc的外殼shell。
·/lib: 該目錄中包含有你的啟動盤啟動過程中所需要的共享函式庫,如果缺少必須的函式庫,系統會停止啟動或出現一大堆錯誤資訊,所以一定要注意。
幾乎所有的程式都需要libc庫,列一下目錄/lib中的libc:
% ls -l /lib/libc*
-rwxr-xr-x 1 root root 4016683 Apr 16 18:48 libc-2.1.1.so*
lrwxrwxrwx 1 root root 13 Apr 10 12:25 libc.so.6 -> libc-2.1.1.so*
libc.so.6的6表示版本號,它指向的檔案才是你真正需要的。
檢視每一個程式使用的函式庫,用命令ldd,如:
% ldd /sbin/mke2fs
libext2fs.so.2 => /lib/libext2fs.so.2 (0x40014000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x40026000)
libuuid.so.1 => /lib/libuuid.so.1 (0x40028000)
libc.so.6 => /lib/libc.so.6 (0x4002c000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
輸出右邊的庫都是必須的,有的可能是鏈結檔案。
在/lib目錄下你還必須有函式庫裝載器,這個裝載器或是ld.so (對 a.out 庫) 或是 ld-linux.so (對 ELF 庫)。新版本的ldd一般會告訴你所需庫的載入器。
把裝載器和庫複製到/lib後,在仔細檢查一遍,一定保證沒有遺漏。
2.3 模組
如果你有一個模組化的核心,你還得必須考慮需要載入的模組,它們都位於/lib/modules,你可以把不是很重要的模組放到別的盤上,當系統啟動後在載入,這樣會節省啟動盤的空間。
2.4 打包
一旦你完成了上述工作,卸下虛擬盤,複製到一個檔案中,然後壓縮。
umount /mnt
dd if=/dev/ram0 bs=1k | -v9 > rootfs.gz
壓縮結束後,你就擁有了一個壓縮的根檔案系統,不過你得檢查它的大小,如果大了,你還得去掉一些東西。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1005431/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自己動手做一個迷你 Linux 系統(轉)Linux
- linux啟動盤的製作(轉)Linux
- 製作軟盤Linux(轉)Linux
- 用LINUX做在一張軟盤上的撥號閘道器 (轉)Linux
- 製作Linux的優盤(usb)啟動盤(轉)Linux
- Linux啟動盤boot/root盤的製作(轉)Linuxboot
- 讀書軟體做自己的 (轉)
- 製作一個自己的軟體包CD(轉)
- 製作Linux啟動盤的四種方法(轉)Linux
- 自己動手做一個批次doc轉換為docx檔案的小工具
- 做一個自己的工作列 (轉)
- 找人做網站不如自己動手網站
- Python學習,給自己的程式碼做個合集,定製自己的桌面軟體!Python
- 自己動手做QQ木馬----郵件傳送篇 (轉)
- 軟盤裡的Linux防火牆(轉)Linux防火牆
- 自己動手製作elasticsearch-head的Docker映象ElasticsearchDocker
- linux啟動盤製作Linux
- 自己動手製作elasticsearch的ik分詞器的Docker映象Elasticsearch分詞Docker
- Linux U盤啟動盤製作工具Linux
- 自己做個迷你型linux(轉)Linux
- 用commander做一個自己的eslint腳手架EsLint
- [系統] 打造自己最喜愛的 Windows10 —— U 盤啟動盤製作篇Windows
- 【系統】打造自己最喜愛的 Windows10 —— U 盤啟動盤製作篇Windows
- 自己做二級域名的DNS (轉)DNS
- 打造一張萬能Windows安裝盤(轉)Windows
- 製作軟盤上執行的FreeBSD系統(轉)
- 自已動手製作linux下的拼音五筆輸入法(轉)Linux
- 迎接工業網際網路的龍捲風暴,軟通動力繪製了一張轉型地圖地圖
- 自己動手做智慧家居之:智慧空調控制
- 手機寫作業系統之 製作第1個啟動盤作業系統
- raid驅動不用插軟盤的方法(轉)AI
- 自己動手實現一個簡單的 IOC
- 自己動手寫一個簡單的MVC框架MVC框架
- 自己動手寫一個 SimpleVueVue
- 自己動手寫 PHP 框架(一)PHP框架
- mysql怎麼複製一張表的資料到另一張表MySql
- 軟盤版Linux防火牆的製作方法詳細介紹Linux防火牆
- 自己用VC來做自己的專業安裝程式 (轉)