Linux 啟動盤

來源:互聯網
上載者:User
自己作一張磁碟片的linux
好些時候,我們需要一個只要一張磁碟片就能啟動Linux 的系統,比如說做路由器。但是我們該怎樣做呢? 也就是說我們要把Kernel和FileSystem都做在一張3.5'的盤上。我們先把FileSystem 分解成如下幾個部分吧。

  1. /bin目錄下的檔案

  bin目錄通常是放置系統的一些基本命令檔案的目錄,要保證你的系統能夠正常啟動而且能夠完成必要的功能,你需要在 /bin目錄下放置如下檔案:

  ksh--->shell是不可少的。

  more-->要知道Linux下可沒有type命令哦。

  dmesg->雖然你很熟悉你的系統硬體,但是有它還是方便多了。

  ps---->檢查系統進程是管理員的良好習慣。

  login->總不至於不要人家登入吧,再說它也是底層系統的構成呀。

  sync-->更新磁碟的Block,很有好處啊。

  mount->除非你不要檔案系統就不需要它。

  umount->卸載檔案系統的東東。

  kill-->殺掉那些無用或停止回應的進程。

  setterm->修改終端參數的。

  hostname->顯示當前機器名字。

  telnet->遠程登入,你的Linux不會不幹點其他的事吧!

  ping-->檢查網路連接狀態。

  ftp--->雖然什麼也放不下,但是留下它也有好處的。

  tar--->備份很重要!即使你的系統只有一個軟碟機!

  killall->shutdown時系統會用它哦。

  chmod->修改檔案屬性的。

  chown->修改檔案的歸屬

  cp--->拷貝檔案,修複系統時可以用啊!

  dd--->據說好多管理員常用啊,但是我還真沒用過!因為我很少進行介質拷貝。

  df--->查看磁碟使用方式。

  du--->查看指定路徑的佔用空間。

  ls--->你不會一次都沒用過吧!

  mkdir->建目錄是常事,即使在只有一張盤的情況下!

  mv--->移動檔案的命令。

  rm--->刪除檔案,萬一有多的怎麼辦?靠它了!

  ln--->連結檔案,當然有用了!

  dircolors-->設定目錄的顏色,當你用的是彩顯時。

  cut-->將檔案的一些行送到標準輸出裝置。

  cat-->把標準輸入送到檔案或把檔案送到標準輸入

  stty-->很重要的終端命令哦!

  gzip-->打包和解包的程式

  domainname-->查看網域名稱。

  還要把一些東西連結起來哦

date@ -> /sbin/clock
less@ -> more
sh@ -> ksh
gunzip@ -> gzip
zcat@ -> gzip
bash@ -> sh
tcsh@ -> sh

  2./etc目錄下的檔案

  etc目錄是放置系統配置資訊的檔案目錄,同時也放置了一些系統初始設定檔案。

  mtab -->mounted table已經mount的FileSystem列表。

  kernel -->系統核心。

  issue -->login時的prompt資訊 。

  profile -->bash下的全域使用者登陸時執行的批次檔 。

  psdevtab -->kernel映象的相關檔案。

  inittab -->初始化列表,系統啟動時要用到的東東。

  passwd -->使用者的password資料庫。

  motd -->message of today 使用者login時顯示的資訊。

  fstab -->開機時要自動mount的FileSystem。

  hosts -->domain name到IP的解析檔案。

  resolv.conf -->原生IP地址和網域名稱伺服器地址設定檔。

  termcap -->終端字元對應表檔案。

  services -->系統啟動時載入的服務項目。

  rpc -->RPC資源解釋檔案。

  protocols -->系統協議說明檔案。

  networks --> 定義本機IP和子網的設定檔。

  mtools -->mtools的parameter檔案。

  hosts.deny --> 設定那些目的機不能Telnet到此主機。

  hosts.allow -->和hosts.deny相反,設定可以Telnet到此機的目的機地址。

  exports -->NFS的系統檔案。

  DIR_COLORS -->設定ansi-color終端的系統色彩。

  HOSTNAME -->原生domain name。

  inetd.conf -->inetd進程的設定檔。

  ld.so.cache -->系統lib的緩衝資訊。

  shells -->系統可用的shell的記錄。

  host.conf -->原生網路相關配置。

  magic -->系統內檔案格式的資料。

  utmp -->當前login使用者的記錄。

  group -->使用者組參數記錄。

  ld.so.conf -->記錄一些lib所在的目錄。

  fastboot -->shutdown命令產生的一個檔案,系統重新啟動時會檢查該檔案。

  3. /sbin目錄下的檔案

  這個目錄下放置一些系統擴充命令:

  swapoff@ -> swapon --> 把swapoff串連到swapon命令

  telinit@ -> init --> 把telinit串連到init命令

  reboot@ -> halt --> 把reboot串連到halt命令

  addswap -->增加一個交換分區,需要自己編輯一個addswap指令碼

  chkhd -->檢查硬碟

  clock -->測定設定時間

  swapon -->開啟交換分區

  update -->bdflush的守護

  mkswap -->格式化交換分區

  agetty -->終端守護

  init -->系統初始化命令

  shutdown -->關閉系統

  halt -->系統停機

  killall5 -->清出所有進程

  ifconfig -->網路設定程式

  route -->路由設定命令

  bdflushd -->開啟buffer回寫到磁碟

  4. /usr目錄下的檔案

  使用者目錄,目錄下放置了一些使用者經常需要使用的程式和一些配置資料

  spool@ -> ../var/adm -->串連到/var/adm

  tmp@ -> ../var/adm -->串連到/var/adm

  adm@ -> ../var/adm -->串連到/var/adm

  /usr/bin目錄,使用者命令檔案目錄

  who -->查詢當前登陸使用者

  superformat -->進階格式化工具

  loadkeys -->載入鍵盤影射表

  joe -->一種十分好使的編輯器

  uptime -->查看系統從啟動到現在的已耗用時間

  finger -->查詢使用者資訊

  mcheck -->檢查dos系統磁碟片

  tput -->初始化終端或者查詢終端資訊

  traceroute -->檢查路由路徑

  host ->檢查當前主機配置資訊

  split -->分割檔案

  sleep -->延遲指定時間

  setfont -->設定字型

  grep -->行查詢指令,常常配合管道使用

  reset -->重設系統參數

  usr/sbin目錄下放置了使用者需要使用的進階指令,但我們沒有使用到,看看磁碟空間,能放些什麼自己放吧。

  /usr/local目錄放置了一些應用程式的設定檔

  usr/local/lib目錄

  lynx.cfg -->lynx瀏覽器的設定檔  

  usr/lib目錄

  es.map -->鍵盤對應檔案

  t.fnt -->字型檔

  5. /lib目錄下的檔案

  此目錄下放置了系統的一些庫檔案,這裡不做解釋

libgpm.so@ -> libgpm.so.1
libdl.so@ -> libdl.so.1
ld-linux.so.1
libtermcap.so.2
libm.so.5
libc.so.5
libdl.so.1
libgpm.so.1
libtermcap.so.2
libcurses.so.1
ld.so

  6. /dev目錄,系統裝置檔案目錄,按照標準裝置定製。

  7. /var目錄,主要放置系統參數和配置。

var/adm/
utmp -->空檔案,為uucp準備的tmp檔案
cron -->空檔案,kernel載入時的tmp檔案
/var/spool/locks目錄,放置一些正在啟動並執行程式的臨時檔案和進程號檔案。

  8. 其他目錄都為空白目錄,有:

/dosa
/dosc
/iomega
/tmp@ -> /dosc/onedisk
/root

  9. addswap命令指令碼指令碼,放置在/sbin下。

if [ "$1" = "" ];
then
$mide=10000
if
dd if=/dev/zero of=/tmp/linux.swp bs=1k count=$mida
mkswap -c /tmp/linux.swp 2>/dev/null
sync 2>/dev/null
swapon /tmp/linux.swp 2>/dev/null
mida=`cat /proc/meminfo | grep SwapTotal | cut -b16-19 `
echo $mida 'KB aCTiu'arxiu=`ls /dosc/ | grep .swp`

  系統的基本檔案系統就介紹完了,下面我們介紹OLD(one disk Linux)系統的具體製作。

  介紹完了主要目錄和檔案的結構,我們對ODL的大概也比較瞭解了。現在你可以找一個Linux把他裁剪一下,把必要的東西放到一張磁碟片上,以後用他來啟動了你的系統進入Linux了。然後在放進一些需要的軟體,如Linux Router,或者其他的小的應用軟體,那麼他就成了一台小的路由器、Proxy 伺服器,你的小玩具,你可以用他上網,讀新聞,看信,和瀏覽。這是多麼不可以想象的事情,全不都可以在一張1.44M的磁碟片系統上實現。

  製作ODL的詳細過程十分複雜,其基本思想是在一張磁碟片上做好可以啟動的Kernel,然後再將定製的檔案系統傳到磁碟的剩餘空間裡,啟動時先讀前面的讓系統boot起來,再讀後面的,讓系統mount到一個Ramdisk裡,然後將定製好的檔案系統解壓縮,釋放到Ramdisk裡。這樣整個磁碟系統既有kernel,又有FileSystem,自然可以使用一張磁碟啟動整個Linux系統。由於篇幅的限制,我們不詳細說明全部過程,只把其中最關鍵的部分,定製檔案系統和讓系統在無lilo的引導下啟動這兩個部分做說明(其他目錄的相關檔案,請按照開始將的檔案系統結構建立)。

  定製檔案系統的過程如下:

dd if=/dev/zero of=DEVICE bs=1k count=3000 (分配一段記憶體空間做RamDisk)
mke2fs -m 0 -i 2000 DEVICE (格式化Ramdisk)
mount -t ext2 DEVICE /mnt (裝載到/mnt目錄下)
cp -dpR /dev /mnt (將/dev/下的硬體裝置拷貝到/mnt/dev下)
mkdir /mnt/etc (建立ODL系統設定檔目錄)
寫/mnt/etc/rc.d檔案,其內容如下:
#!/bin/sh
/bin/mount -av
/bin/hostname silver
寫/mnt/etc/fstab 檔案,其內容如下:
/dev/ram0 / ext2 defaults
/dev/fd0 / ext2 defaults
/proc /proc proc defaults
寫入/mnt/etc/inittab檔案,其內容如下:
id:2:initdefault:
si:ysinit:/etc/rc
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
umount /mnt (卸載Ramdisk)
dd if=DEVICE bs=1k | gzip -v9 > root.gz 將Ramdisk上的內容寫入root.gz
讓系統在無lilo的引導下啟動
mke2fs -i 8192 -m 0 /dev/fd0 KERNEL_BLOCKS
(KERNEL_BLOCKS為核心部分在磁碟上占的空間大小)
mount /dev/fd0 /mnt
rm -rf /mnt/lost+found
mkdir /mnt/boot
mkdir /mnt/dev(建立一些啟動時需要的基本檔案目錄)
cp -R /dev/{null,fd0} /mnt/dev
(將啟動需要的兩個裝置NULL和fd0拷貝到啟動盤中)
cp /boot/boot.b /mnt/boot (建立boot的映象檔案)
cp bdlilo.conf KERNEL /mnt (KERNEL為OLD需要的核心檔案)
lilo -v -C bdlilo.conf -r /mnt (將lilo資訊寫到OLD中)
其dblilo.conf的內容如下(可以根據需要修改):
boot =/dev/fd0
install =/boot/boot.b
map =/boot/map
read-write
backup =/dev/null
compact
image = KERNEL
label = Bootdisk
root =/dev/fd0
dd if=KERNEL of=/dev/fd0 bs=1k
(將核心KERNEL寫到系統的前1024位元組,使OLD磁碟片可以啟動系統)
dd if=rootfs.gz of=/dev/fd0 bs=1k seek=KERNEL_BLOCKS
(將原來定製的檔案系統 傳到磁碟剩餘空間中)

  此時,你做好的這張磁碟就可以直接將系統啟動了。`如果你配置好了網路系統,那麼網路也可以通過他自動啟動。如果你對Linux還不是很瞭解,自己定製一個系統還比較困難,那麼OLD的全部系統映象檔案可以在http://linux.apostols.org/guru/wen/1.x/stone.img下載得到。將下載的檔案用rawrite.exe程式在dos下寫入一張1.44M的磁碟片中,此張盤就可以啟動系統,並將你帶入到神奇的Linux世界。

  值得注意的是:此映象檔案是一個德國人所做,其終端鍵盤為類型不是標準的US鍵盤,所以我們需要修改他的鍵盤定義。

  系統啟動後,在/usr/lib/下有一個es.map檔案,我們需要修改它,可以在redhat下拷貝一個default.kmap檔案,然後執行/bin/loadkeys default.kmap,此時鍵盤就可以正常使用了。
--------------------------------------------------------------------------------

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.