教你製作自己的linux

                             怎樣製作自己的linux

 要製作一個linux系統,首先我們要了解它的原理,啓動的時候,首先是加電自檢,

然後再BIOS裏面設定要讀取的那塊磁盤的MBR,加載bootloderbootloer加載相對應分區的內核,內核完成自身初始化後,掛載根文件系統,並裝載init可執行文件,在inittab文件控制下,完成一系列的任務

    我們先格式化一個磁盤,並分區,這裏分兩個區,sdb1sdb2

把第一個磁盤分區sdb1安裝grub,要在sdb2上裝內核,安裝過grub之後,再把內核也加上,並作相應的配置,就可以啓動一個系統了

首先,創建目錄/mnt/boot,並把設備sdb1掛載到/mnt/boot下面

mkdir  /mnt/boot

mount  /dev/sdb1  /mnt/boot

下面先安裝grub,(其實上篇已經介紹如何安裝了,這裏僅簡述命令)

mkdir /mnt/boot/grub

cp  /usr/share/grub/i386-redhat/*  /mnt/boot/grub

grub

grub>  root (hd1,0)

grub>  setup (hd1)

再創建/mnt/sysroot目錄,用來裝載內核

mkdir  /mnt/sysroot (這裏我們隨便起一個目錄名,然後把新的分區掛載到上面)

mount  /dev/sdb2  /mnt/sysroot/

ls /mnt/sysroot  查看是否已經掛載好,如有lost+found則表明掛在好新分區

Ls /boot/ 可以看到內核在裏面,拷貝內核到/mnt/boot

cp  /boot/vmlinuz-$(uname -r)  /mnt/boot/vmlinuz (後綴名可以自己寫)

mkdir  /tmp/linux 在臨時目錄裏創建一個目錄,用來寄存initrd文件

cd  /tmp/linux

zcat  /boot/initrd-$(uname –r).img | cpio –id 這個文件是歸檔壓縮的文件,是用cpioy歸檔的,所以解壓後,必須用cpio  -id 才能打開,

vim  init    編輯打開後的init文件

找到/dev/vol0/root  換成/dev/sda2

我們知道,本地磁盤sdb 可以當做另一個新主機的磁盤sda,所以grub已經在sda1上了,內核要在第二個磁盤分區上,所以在init文件中,要把/dev/vol0/root 修改爲/dev/sda2

格式化第二個磁盤分區。mkfs –t ext3 /dev/sdb2

     然後再將其歸檔到指定目錄下:

 find . | cpio –o –H newc –quiet | gzip -9 > /mnt/boot/initrd.gz(最後的歸檔名可以自擬)

     下面我們可以創建一些目錄:

cd  /mnt/sysroot

   mkdir –pv  ./{etc/rc.d,bin,sbin,usr,proc,sys,var,tmp,lib,mnt,media,misc,opt,dev}

內核與grub已經有了,下面我們把initbash也拷貝過來

cp  /sbin/init  sbin/

   cp  /bin/bash  bin/

這時候, bashinitgrubinitrd都有了,你是不是以爲大功告成了?我們可以用chroot這個命令測試一下,chroot  /mnt/sysroot  此命令是將後面的目錄作爲根來調用,可以在/mnt/sysroot環境下試驗命令,結果…………嘿嘿!不行吧!

   那是因爲少了命令所依賴的庫文件,可以用ldd 這個命令查看可執行文件依賴的庫文件

 ldd  /bin/bash

  ldd  /sbin/init

然後將以/lib開頭的庫文件拷貝到/mnt/sysroot/lib下,

下面還要配置一些文件:

   先編輯inittab文件,此文件裏定義的有:

1 默認運行級別,2 系統初始化腳本指定 3特定級別目錄下腳本指定 4定義ctrl+alt+del組合鍵的功能 5 定義USP電源故障或電源重新恢復是執行的進程 6啓動虛擬終端 7 初始化圖形界面

Vim etc/inittab

Id :3:initdefault 默認運行級別是3

Si::sysinit:/etc/rc.d/rc,sysinit  siid,運行級別省略是指所有級別,sysinit是系統初始化, 後面是所要運行的腳本,一般格式爲:idrunlevelsactionprocess

 

編輯系統初始化腳本,這裏我們可以隨便寫點

Vim  etc/rc.d/rc.sysinit

#!/bin/bash

Echo  –e  “\t Welcome to mylinux”

/bin/bash

保存退出後,修改權限:chmod +x etc/rc.d/rc.sysinit

最後別忘了,還有一個grub的配置文件呢!

Cd  grub/

V im  grub.conf

default=0

timeout=5

title  mylinux

    root(hd0)

    kernel /vmlinuz ro root=/dev/sda2

    initrd  /initrd.gz

保存退出,然後sync ,同步到磁盤數據這時候,算是完成了,可以啓動你那個新的linux了。

怎麼樣,是不是有種小小的成就感了,其實這只是小試牛刀,如果你想了解更多有關linuxknowledge,請繼續關注我的博客,會不斷更新哦!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章