跟大神一起製作一個屬於自己的Linux作業系統!
一、前言
Linux作業系統至1991年10月5日誕生以來,就其開源性和自由性得到了很多技術大牛的青睞,每個Linux愛好者都為其貢獻了自己的一份力,不管是在Linux核心還是開源軟體等方面,都為我們後來人提供了一個良好的學習和研究環境。
本文主要通過裁剪現有Linux系統,根據自己的需要,打造一個屬於自己的Linux小系統,讓其能夠具備Linux的一些常用小功能。
二、原理
啟動流程介紹:
製作Linux小系統之前,我們有必要再瞭解一下Linux的啟動流程:
1、首先Linux要通過POST自檢,檢查硬體裝置有沒有故障
2、如果有多塊啟動盤的話,需要在BIOS中選擇啟動磁碟
3、啟動MBR中的bootloader載入程式
4、載入核心檔案
5、執行所有程式的父程式、老祖宗init
6、列印歡迎介面
在Linux的啟動流程中,載入核心檔案時還需要藉助別外兩個檔案:
1)initrd,是CentOS5上用記憶體模擬的磁碟裝置
2)initramfs,是CentOS6上用記憶體模擬的檔案系統
在啟程的流程中,init主要是用來做哪些操作的呢?
init通過呼叫/etc/inittab這個配置檔案,然後再去執行/etc/rc.d/rc.sysinit的系統初始化指令碼。
好啦,原理我們已經知道了,接下來我們來看看具體的思路吧(〃'▽'〃)
三、思路
1、我們要在一個現有的Linux系統上加一塊硬碟/dev/sdb,在硬碟上分兩個分割槽,一個是/boot,一個是/,並將其格式化。當然,我們需要明確的概念是,我們現在加的這個硬碟在現有的Linux系統中是/dev/sdb,但是,當我們把東西全部設定好時,我們就需要把這個硬碟拔除,放在我們的新系統上,此時,他就是/dev/sda啦。
2、在/dev/sdb這個硬碟上,我們要將其打造成一個獨立的Linux系統,裡面的所有檔案是需要我們一個一個拷貝進去的。而且,作為一個將來要當/dev/sda的硬碟,裡面一定要有grub檔案諾~所以我們要安裝grub檔案。
3、同時,作為一個能獨立執行的Linux系統,核心是一定不能少的!所以,我們要把核心檔案和initramfs檔案也一起拷到我們的/dev/sdb上。
4、現在我們系統已經初具規模了,接下來就是需要程式了0.0關於程式的拷貝我們可以通過一個指令碼來實現。具體的指令碼在下文中會給大家說到。
以上步驟完成,我們的自制Linux就完成啦~我們的思路就是這麼回事,接下來,我們就開始吧( ̄▽ ̄)~*
四、操作步驟
本次實驗我們以centos6.9為例~
1、目標磁碟分割槽
首先,我們在宿主機上新增一塊大小為20G的硬碟:
新增完成後,點選確定,然後我們開啟宿主機。 通過fdisk來給我們的/dev/sdb進行分割槽:
接下來,我們對/dev/sdb的分割槽進行格式化:
格式化完成後,我們建立一個資料夾。進行掛載:
注意:新建的資料夾必須是/mnt/boot
2、安裝grub至目標磁碟
我們直接用grub-install –root-directory=/mnt命令來安裝。用這個命令會安裝grub引導第二階段的檔案。
我們可以來看一下二進位制確認我們是否安裝成功:
安裝成功。
3、複製核心檔案和initrd檔案
將核心檔案和initrd檔案複製到/dev/sdb下的boot目錄中:
4、建立grub.conf檔案
上面我們已經移植了核心和initrd檔案,我們可以根據其版本來編寫grub.conf檔案:
注意,我們要把selinux給關掉,同時設定一下init,告訴核心不要再去找這個程式了,不然開機的時候會出現錯誤的~
5、建立一級目錄並複製檔案
至此,我們就缺目錄和檔案了~
建立開機後的一級目錄,同時把/dev/sdb2掛載至/mnt/sysroot,使該目錄作為根目錄:
複製檔案,複製檔案我們通過指令碼執行,複製我們平時常用的命令即可,小編這裡複製了ls,ifconfig,bash,reboot,rm,modprobe,mount,ip,mkdir,touch,cat,vi,less,shutdown,insmod。我們可以用tree檢視一下這些命令的複製情況:
很明顯我們都複製成功了~
附:複製命令的指令碼原始碼
6、複製網路卡驅動
我們基本工作已經完成了,如果想使這個虛擬機器帶有網路卡功能,我們就必須把網路卡驅動拷過來,具體操作如下:
1)查詢網路卡詳細資訊:
2)把網路卡模組的路徑複製到/mnt/sysroot的庫檔案下:
以上,我們的操作全部完成。現在我們就可以關機,然後把/dev/sdb這個硬碟拆下來,放到新的虛擬機器上執行了~
五、測試開機
我們建立一個新的虛擬機器,啟動的時候會帶一個硬碟,我們不用它的,刪掉再把我們自己定義的硬碟加進去:
此時,我們做好的硬碟已經加進去了。我們可以試試能不能啟動了,如果虛擬機器可以正常開啟,就說明我們的實驗成功~
六、實現網路功能
由於圖片可能會看不清楚,現把程式碼標出如下:
由於複製命令的時候忘記複製ping了……所以我們用另一臺機器來ping一下這個ip地址:
可以ping通~
至此,我們已經完成了私人訂製Linux的全部操作,同時我們的自制Linux也可以聯網啦~
所有實驗圓滿成功!撒花✿✿ヽ(°▽°)ノ✿
作者:珂兒吖
來源:http://www.cnblogs.com/keerya/p/7553491.html
PS:記得查收小編送你的免費大禮包呦~
福利 | 一萬多套PPT模板等你免費來拿!無條件領取!
免費送 | 1000多套簡歷模板免費拿,附贈簡歷製作教程!
免費領 | 《Shell指令碼 100例》電子書免費拿,運維必備乾貨~
▼▼點選【閱讀原文】,5天運維免費課程,開講在即!
相關文章
- Word製作屬於自己的DIY個性工具欄
- 製作屬於自己得nuget包
- YodaOS: 一個屬於 Node.js 社群的作業系統Node.js作業系統
- 使用Vue製作一個屬於自己的音樂播放器!Vue播放器
- 【掘金日報】第一期 想不想做個屬於自己的作業系統?作業系統
- iOS,製作屬於自己cocoapods,(framework,bundle)iOSFramework
- 微軟開發自己的 Linux 作業系統微軟Linux作業系統
- 作業系統(自己理解)作業系統
- 製作一個報警系統
- 作業系統(一):作業系統概述作業系統
- 各個作業系統的 作業系統日誌作業系統
- Linux系統安裝,教你安裝一個屬於自己的Linux系統Linux
- 微信小程式,製作屬於自己的Icon圖示微信小程式
- 自己如何製作一個網頁網頁
- truncate一個linux作業系統檔案Linux作業系統
- 【作業系統】作業系統綜述(一)作業系統
- 跟著超哥大神學習擴充套件包的製作- -套件
- Python十分鐘製作屬於你自己的個性logoPythonGo
- Linux 製作系統映象Linux
- three.js 製作屬於自己的動態二維碼JS
- 桌面寵物 ① 透過python製作屬於自己的桌面寵物Python
- 自己怎麼製作一個網站網站
- 自制作業系統(一) 第一個作業系統作業系統
- Alpaquita Linux:唯一為Java量身定製的Linux作業系統UILinuxJava作業系統
- Linux 作業系統Linux作業系統
- Linux作業系統Linux作業系統
- 製作一個自己的軟體包CD(轉)
- Linux作業系統Vmstat命令列出的屬性詳解Linux作業系統命令列
- 作業系統-1.1_2作業系統四個特徵作業系統特徵
- 關於作業系統的一些思考作業系統
- 【linux】Linux作業系統Linux作業系統
- 手機寫作業系統之 製作第1個啟動盤作業系統
- Linux自己製作rpm包Linux
- Linux作業系統概述Linux作業系統
- 作業系統與Linux作業系統Linux
- 作業系統是什麼?Linux是什麼作業系統?作業系統Linux
- 作業系統(1)——作業系統概述作業系統
- 基於雙核的雙系統製作