十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
前言
一般來說,我們所說的Linux系統(tǒng)指的是各種基于Linux Kernel和GNU Project的操作系統(tǒng)發(fā)行版。為了掌握Linux操作系統(tǒng)的使用,了解 Linux操作系統(tǒng)的運作過程,理解內(nèi)核與外圍支撐系統(tǒng)的關系,加深對開源操作系統(tǒng)的認識,我決定造個輪子——自己定制一個Linux文件系統(tǒng)。
這里有兩種實現(xiàn)方法:
直接自己實現(xiàn)init**\*(M1)***
加載bios 的硬件信息-> 讀取MBR –>執(zhí)行Grub ->加載kernel–> 加載驅(qū)動–> init –> 執(zhí)行bash
利用系統(tǒng)/sbin/init**\*(M2)***
加載bios 的硬件信息-> 讀取MBR –>執(zhí)行Grub ->加載kernel–> 加載驅(qū)動–> init –> /sbin/init -> 取得run-level信息 -> /etc/rc.d/rc.sysinit -> services –> /etc/rc.d/rc.local –> mingetty –> login
我們先選擇*M1*。
思路
Step1:獲得shell版本的initrd.img
首先,我們可以寫一個腳本init,使得內(nèi)核用該文件系統(tǒng)啟動后能夠直接獲得一個Bash。
創(chuàng)建腳本 init
其中:/bin目錄下是常用命令,init是自己寫的腳本,/lib64目錄下是應用程序所依賴的動態(tài)庫。
init 內(nèi)容
現(xiàn)在我們需要使用命令行,創(chuàng)建bin和sbin目錄,向其中添加bash、ls、rm、cp、mv、echo、cat、less等基礎命令。由于這些命令需要依賴/lib64等目錄下的一些動態(tài)鏈接的共享庫,所以需要將依賴的庫拷貝到小系統(tǒng)對應的目錄下,用ldd命令查詢應用程序及其依賴的動態(tài)庫。完成之后,執(zhí)行:
find . | cpio -H newc -o | gzip > /boot/initrd.img
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。