自製小型linux系統

來源:互聯網
上載者:User

自製小型linux系統

Linux開機流程


開機自我測試 (POST):程式post

MBR引導:硬碟上的mbr 主引導記錄由bootloader 446位元組(grub引導程式第一個階段讀核心)、分區表(64位元組)、id標示magic(2位元組)
 
GRUB菜單:在硬碟裡/boot/grub為grub第二個階段,引導到硬碟,選擇要載入的作業系統
 
載入核心(kernel):載入作業系統的核心並運行init進程
 
運行init進程:需要一個inittab

Inittab中各個層級的設定檔對應的初始化指令碼rc.sysinit

Rc.sysinit指令碼:(初始化指令碼)
(功能:設定主機名稱、啟動網路功能、設定時鐘、設定鍵盤)
 
選擇層級後傳一個數字傳給rc指令碼進入/etc/rc0.d/* /etc/rc1.d/* /etc/rc2.d/* /etc/rc3.d/* /etc/rc4.d/* /etc/rc5.d/* /etc/rc6.d/*中執行相應指令碼,帶k的按順序殺死帶s的按順序啟動。
 
執行開機指令碼/etc/rc.d/rc.local

通過mingetty進程啟動一些終端也就是開機啦
 
 通過宿主機來建立自製的linux小系統(我這裡用vm)
*建立一塊兒新的硬碟把硬碟掛到完整的宿主機上並對硬碟分區並從完整宿主機上整理相應的核心檔案和應用檔案,等一切所需準備完成時把硬碟移動到缺少硬碟的虛擬機器上進行測試。
*對新的硬碟建立分區:先建立三個主要磁碟分割sdb1:100m sdb2:1g sdb3:500m
建立完主要磁碟分割後把sdb3類型改為82即swap分區
(圖為各個分區硬碟大小20G)


*對磁碟進行格式化mkfs –t ext3 /dev/sdb1 mkfs -t ext3 /dev/sdb2
/dev/sdb1作為引導分區/dev/sdb2作為根分區
*對磁碟進行掛載


*構建MBR:即構建grub,第一階段在mbr內部裡第二階段在硬碟裡(自動找到/mnt/boot、指向/dev/sdb而不是某個分區)

*找到boot目錄後自動建立grub

*Grub缺少一個菜單建立grub.conf檔案(裡面是核心檔案和一些驅動和一些開機預設項引導項)
*建立菜單前先把宿主機器的核心拷貝過來

*由於宿主機和建立硬碟的不同,有關驅動的initrd-2.6.18-164.e15.img內的資訊也會不同,所以我們應該首先更改該檔案的資訊。
*展開後的檔案裡的init檔案在啟動中是會被執行的,應更改該檔案的內部資訊

*因為我們建立的新硬碟中swap分區並沒有格式化不能被應用所以把87行注釋掉,更改完成後對檔案進行重新打包,並把打包後的檔案拷到/mnt/boot/下

*前幾個階段結束後,寫一個grub菜單

*接下來是init進程:在建立硬碟sysroot目錄下建立所需要的目錄並把每個目錄的配置內容以及所要用的庫拷貝過去

*寫inittab:
*把宿主機/etc/inittab中的21 si::sysinit:/etc/rc.d/rc.sysint行拷貝到/mnt/sysroot/etc/inittab中
*在建立rc.d中沒有rc.Sysinit所以我們要自己建立,rc.sysinit是一個shell指令碼
*由於要運行shell檔案應加入bash的配置

*為了方便把庫加入到每個指令檔案內,編寫一個cp.sh

基本指令連結庫匯入之後就可以進入系統進行簡單操作


*在/mnt/sysroot/etc/inittab檔案下修改內容實現init 0 init 6的應用






*Init 6  


*啟動介面添加背景圖片/mnt/boot/grub/grub.conf檔案下
圖片大小640*480 14位色 格式xmp.gz
安裝yum源 修改/etc/yum.repos.d/rhel-debuginfo.repo

 
安裝完成後在圖形化介面下運行gimp可以對圖片進行修改


*添加網路功能
模組:

*Eth0隻是個別名,真正叫pcnet
*網卡pcnet32
*Mii被pcnet32所依賴
*Modinfo查看模組兒詳細資料
*Rmmod模組兒卸載
*Modprobe 名稱 加模組兒(inmod 必須要加完整路徑)
*在新硬碟裡建放模組兒的檔案並把網路模組拷貝過去
 *由於pcnet32依賴於mii所以要把mii拷貝過來
 *調用模組
 
*把要用的pcnet32.ko和mii.Ko模組兒拷貝過來,,編輯rc.sysinit來調用模組兒並未網卡配上地址
 *已經實現網路功能
 *實現ftp功能: *安裝ftp服務
 *加入vsftpd指令

*把宿主機內的vsftpd下的檔案拷貝到建立硬碟相應位置去,在相對應的var目錄下建立ftp/pub

*因為ftp安裝完之後會形成一個ftp使用者,用來登入ftp,需要把該ftp帳號拷貝過來

*由於登陸name與id需要一種nsswhich機制,機制需要nesswitch.conf檔案,conf檔案依賴於幾個連結庫,這裡我們只做個別連結庫的拷貝

*ftp需要有一個日誌log目錄所以要麼建立log要麼禁用掉
進入/mnt/sysroot/etc/vsftd/vsftpd.conf把39和56有關log的句子禁用掉
  *再把userlist那一行禁用掉 *手工建立一個/mnt/sysroot/etc/usr/share/empty目錄 *實現ftp

 
簡易功能已經能夠實現,如需更多功能還得大家自己慢慢研究學習!!!
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.