內核編譯及制作Linux系統

    用自己編譯的linux內核自己制作一個很簡單的啟動盤,能夠成功啟動且能有簡單的shell環境。

    第一步:從內核官網www.kernel.org 下載相應的內核版本,現在到本地后,將它解壓(我是解壓到/usr/src目錄下),解壓后進入目錄。由于編譯的選項太多,為了簡化設置編譯選項,直接將本地的/boot/config-*文件復制到目錄下并改名為.config,使用命令“make menuconfig”進入編譯設置界面:

blob.png     進入“General setup”設置編譯的版本號:blob.png

    進入“File Systems”設置ntfs文件格式為“M”,將其編譯成模塊:

blob.png

    完成相應的相關設置后,保存退出。使用命令“make”開始編譯(這需要很長的是時間)。注意:在使用make命令之前要確保系統已經安裝了“Server Platform Development”和“Development Tools”兩個包組,如果沒有安裝,編譯會因為卻庫文件報錯。完成后要安裝相關模塊使用命令“make modules_install”。最后使用“make install”完成編譯。

    編譯完成后,可以在/boot目錄下看見編譯的內核和initramfs文件:

blob.png

    并且在/lib/modules目錄下面也有相應版本的模塊:blob.png

    為了驗證編譯時候成功,將系統重啟。

blob.png

    如上圖,啟動的時候已經有了對應的啟動命令,選擇并啟動。

blob.png

    能夠正常啟動,編譯完成。

    下面將做好的內核遷移至一塊新的磁盤,做成一個及其簡易的系統,能夠啟動起來并且能夠運行一些簡單的bash命令。

    首先在剛才編譯內核的機器上新增一塊磁盤,大小120G(盡量設置大點),如下圖的方式讓機器找到設備:

blob.png    將/dev/sdf設備分區,這里簡單點,分成兩個分區,一個作為/boot的分區,一個作為/的分區。格式化為ext4格式的文件系統。將作為/boot的/dev/sdb1掛載到/mnt/boot目錄下,注意,這個掛載點的基名一定要為boot,否則不能將grub安裝進去:

blob.png

    將剛才編譯好的內核和initramfs文件復制進入/mnt/boot目錄下,編輯/mnt/boot/grub/grub.conf文件如下:

blob.png

    由于啟動設置的直接使用bash,不用init程序程序用戶空間,因此指定init為/bin/bash,并且要停用selinux。然后在另一個分區將/mnt/sysroot下面建立根文件系統應該有的目錄:

blob.png

    并從宿主機上面復制bash、ls、ip等命令及其依賴的庫文件到/mnt/sysroot下面,復制完后的目錄如下:

blob.png

blob.png

    完成后,新建一臺虛擬機,使用該磁盤,啟動結果:

blob.png

    成功進入grub,開始引導:

blob.png

    成功啟動,并且能使用幾個簡單的命令,整個過程完成。

原創文章,作者:王更生,如若轉載,請注明出處:http://www.www58058.com/60609

(1)
王更生王更生
上一篇 2016-11-24
下一篇 2016-11-24

相關推薦

  • Linux Basics-重定向與管道:第一部分

    Linux Basics-重定向與管道:第一部分 概述 本教程將介紹 Linux 中重定向標準 IO 流的基本技術。學習: 什么是重定向與標準 IO 流:標準輸入、標準輸出和標準錯誤 各種流和管道的實際應用   前提條件 你應該了解 Linux 基本知識以及擁有一個正常工作的 Linux 系統,在本文說明的實例中,我采用是CentOS 7 內核版本…

    Linux干貨 2016-10-29
  • 持續交付的Mesos與Docker導入篇

    變革這個詞在當今的數字化時代司空見慣,IT技術每過一段時間就會有一起革新,從WEB2.0、虛擬化、云計算、大數據、微架構、DevOps再到今天的容器Docker與Mesos。 Docker的出現方便了應用的測試、部署、與升級,其將各種應用程序和它們所依賴的運行環境打包成標準的Container/Image,進而發布到不同的平臺上運行。Docker的輕量級、快…

    Linux干貨 2016-07-10
  • 復制多臺虛擬機及簡單的網絡配置

    虛擬機的復制,網絡地址的簡單配置,圖形化界面setup和system-config-network的使用

    2017-09-09
  • 淺談HTTP協議以及httpd的十八般武藝

      初識HTTP協議                HTTP(hyper text transfer protocal)作為互聯網應用最廣泛的協議,任何一個運維人員都無法回避它,HTTP的目的就是提供一種發布和…

    Linux干貨 2016-02-14
  • 馬哥教育網絡班19期第十二周課程練習

    1、請描述一次完整的http請求處理過程; 一次完整的http請求處理過程如下: (1) 建立或處理連接:接收客戶端的請求,建立連接,或是拒絕其請求 (2) 接收請求: 接收來自于網絡的請求報文中對某資源的一次請求的過程時,web服務器也分幾種模型對并發請求進行響應:             &nb…

    Linux干貨 2016-08-11
欧美性久久久久