複製Linux到新的硬碟

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

複製Linux到新的硬碟

文章訪客 » 週六 11月 29, 2003 12:07 am

Topic: 複製Linux到新的硬碟

a. 前言
最近我拿了一顆新的硬碟..想說跑跑Debian
當然每次裝Debian都很容易,跑跑光碟片就可以完全裝好了
但是我想試試看..有沒有別的方法..直接copy Linux到HDD上
所以我拿了OpenGroupware.org版的Knoppix CD複製..
把過程記錄下來

b. 說在前頭
這種安裝方式,其實idea是從LFS中的Contructing Temporary System來的
經過我的試驗,雖然可以.但是跑出來的Linux並不是很好,也不完整,
不適合作第一次安裝的方式.. 不過如果你願意..我想在vmware中練習也是很好啦


c. 上路囉!

1. 掏出你的Knoppix光碟吧!
Knoppix真是一個好東西..LiveCD可以讓你馬上有一個現成的Linux

如果你也是跟我一樣用OpenGroupware.org版的Knoppix
請你在開始LILO的畫面中輸入

knoppix lang=us 2

<說明>
lang=us 代表使用英文, 因為預設是德文..Keyboard的排列真的不太一樣
在德文的鍵盤中, = 要用Shift+0打出來
2 代表使用init 2 , 不進入X-Window的環境

一但進入Knoppix後,你會以root身份在Knoppix中

2. 新硬碟的安裝

新的硬碟當然要分割,以及格式化
這方面我不多談,請見任何一本介紹Linux書,大概會有介紹吧
我的硬碟是 /dev/hda1 , 也已經mkfs -t ext3 /dev/hda1 好了

所以在Knoppix中,把他抓進來吧

#mkdir /mnt/hda1
#mount /dev/hda1 /mnt/hda1

<說明>
mkdir代表建立目錄,這裡是為了要把硬碟抓進來,放在這個目錄
mount 把硬碟載入進來

3. 好啦..先了解Linux Tree吧
一個Linux 要跑得起來,基本上先了解他的硬碟目錄結構吧

/etc 這個目錄充滿著設定檔,有點像是在DOS下的config.sys,autoexec.bat的味道

/bin bin代表binary.是一般Linux基本的程式會放的地方 ,比如ls, mkdir , dir , cp 等等
有點像是MS-DOS的外部指令

/sbin 和上面的相同,不過擺的是一些比較屬於管理的程式,比如 MAKEDEV , fdisk , fsck , ifconfig ,init等等

/lib 這個很重要,是放置系統常用的程式庫, 比如glibc,等等 ,
在這個目錄中,有一些檔案很重要,比如ld-linux.so.2 , libc.so.6 等等
,此外,/lib/modules下面是放置Kernel編譯出來的modules, 這些也很重要,有點算是"驅動程式"的東西

/dev 在Linux的世界中,把所有的裝置當成是一個檔案,比如說/dev/hda 代表IDE中,IDE0的Master硬碟,比如/dev/dsp 代表你的音效卡,
/dev/eth0 代表你的第一張Ethernet網路卡..都很重要

/boot 這個目錄不一定要有,不過Knoppix是拿他擺設kernel 和system map的地方,當然重要

/proc 這個目錄是一個很特別的地方,是你電腦狀況,比如說你想知道你記憶體用的多少
以前在DOS中有一個mem.exe,在Linux中可以看/proc/meminfo來知道,
輸入cat /proc/meminfo即可
cat /proc/version 可看你的Linux版本, cat /proc/uptime 可看你開機多久等等

/mnt 這個目錄不一定要有,通常我拿他來放置要掛載的東西,比如說我會先建立一個/mnt/floppy這樣的目錄,再把/dev/fb0 把他mount起來

/usr /usr/通常是拿來放每個人自己編譯的程式,或是自己安裝的程式,不屬於系統的程式,像是我的/usr/bin就有像是xmms,mozilla等等應用程式
有點像是MS-Windows下的c:\Program Files這個目錄

/var 通常是一些log檔案會擺的地方

/tmp 常見,擺設temporary file的地方..通常是放暫存檔案

/ 就是你的linux root,根目錄啦


4. 好啦,這樣我要開始複製囉!!

在知道Linux Directory Tree後,我們開始真正行動吧

剛剛已經把硬碟mount到/mnt/hda1了.所以現在我們到那裡面去開始新的Linux吧

#cd /mnt/hda1

開始建立必備的目錄

[/mnt/hda1]mkdir bin boot dev etc home lib mnt proc sbin tmp usr var

1. 複製你的bin目錄
[/mnt/hda1]cd bin
請你一個一個複製下面的程式

</bin建議複製的名單>
ls (就是DOS下的dir)
dir (和ls類似)
mkdir (建立目錄用)
rmdir (取消目錄用)
cp (複製檔案用)
dmesg (看開機訊息用)
gunzip gzip (壓縮和解壓縮用)
login (登入用)
more (常用,用法是cat yourfile |more ,防止卷頁用)
mv (搬移檔案用)
sh, bash (Shell)
touch (建立空白檔案用)
mount , umount (掛載東西用)
cat (看文件用,有點像是DOS下的type)
echo (這在用Shell Script常用)
greo (常用,為查看檔案內容用)
mktemp (常用,建議暫存檔案用)
sed (Stream Editor,常用)
tar (包檔案用,就是通常說的tarball..)
uname (看系統資訊用,有點像是DOS中的ver)
hostname (設定主機名稱用)
su (變換身份用)

[/mnt/hda1/bin]cp /bin/ls .
就像這樣,把他們通通拷貝吧!!


2. 複製你的/etc目錄


[/mnt/hda1/bin]cd ../etc

請你一個一個複製下面的程式

</etc建議複製的名單>
fstab , mtab (掛載設備的紀錄檔)
inittab (必拷,有點像是config.sys)
lilo.conf (設定Lilo用,lilo=LInux LOader)
services , protocol(網路設定的檔案,有需要)
/etc/init.d/rcS (必拷,有點像是autoexec.bat)
/etc/joe/* (因為我愛用joe,所以也要拷貝他的設定檔)



[/mnt/hda1/etc]cp /etc/fstab .
就像這樣,把他們通通拷貝吧!!
如果是init.d ,joe這兩個,就先建立目錄再複製

[/mnt/hda1/etc]mkdir init.d
[/mnt/hda1/etc]cd init.d
[/mnt/hda1/etc/init.d]cp /etc/init.d/rcS .
[/mnt/hda1/etc/init.d]cd ..
[/mnt/hda1/etc]mkdir joe
[/mnt/hda1/etc]cd joe
[/mnt/hda1/etc/joe]cp /etc/joe/* .

2. 複製你的/boot目錄

[/mnt/hda1/etc/joe]cd ../../
[/mnt/hda1]cd boot
[/mnt/hda1/boot]cp /boot/* .
[/mnt/hda1/boot]ln -s System.map map
[/mnt/hda1/boot]cd ..
[/mnt/hda1]ln -s boot/vmlinuz vmlinuz
這個步驟把Linux的Kernel複製過來

3. 複製你的/lib目錄

[/mnt/hda1]cd lib
[/mnt/hda1/lib]cp /lib/librt.so.1 .
[/mnt/hda1/lib]cp /lib/libc.so.6 .
[/mnt/hda1/lib]cp /lib/libpthread.so.0 .
[/mnt/hda1/lib]cp /lib/ld-linux.so.2 .
[/mnt/hda1/lib]cp /lib/libncurses.so.5 .
[/mnt/hda1/lib]mkdir -r /lib/modules .
最後一個指令是把kernel 的modules也一並複製過來, 會比較方便

4. 複製你的/sbin目錄

[/mnt/hda1/lib]cd ../sbin
請你一個一個複製下面的程式

</sbin建議複製的名單>
fdisk (分割硬碟用)
halt (關機用)
init (必備,一定要複製)
lilo,lilo.real (必備,裝開機用)
lsmod (查modules用)
modprobe (必備,裝上modules用)
shutdown (必備,關機用)
fsck (有點像是DOS下的chkdsk, scandisk的)
insmod (裝modules用)
reboot (重開機)
runlevel (設定跑得RunLevel)
ifconfig, route (設定網路卡有用)

[/mnt/hda1/sbin]cp /sbin/fdisk .
就像這樣一個一個copy吧

5. 複製你的/usr目錄
其實對我而言,主要是一個joe要拷貝

[/mnt/hda1/sbin]cd ../usr
[/mnt/hda1/usr]mkdir bin
[/mnt/hda1/usr/bin]cp /usr/bin/joe .
好啦

6. 複製你的/dev目錄

[/mnt/hda1/usr/bin]cd ../../
[/mnt/hda1]cd dev
[/mnt/hda1/dev]cp -a /dev/* .
這裡比較特別,cp 要加上-a ,代表複製檔案本身,並非設備


5. 呼呼.終於複製好了..現在怎麼辦!!

[/mnt/hda1/dev]cd ..
現在我們要修改lilo.conf這個檔案,才能夠重新開機阿!!

[/mnt/hda1]cd etc
[/mnt/hda1/etc]joe lilo.conf

修改幾個地方
"!Please Edit .... " 這行前面加一個#

把boot=/dev/hda

找一個default=Knoppix 修改一下
改成以下狀況

default=Linux

image=/vmlinuz
append="lang=us apm=power-off vga=791 quiet"
root=/dev/hda1
label=Linux
read-write

存檔離開...
重開機,並且準備Debian的第一張光碟..或是請你去抓一下Slackware的Rescue磁碟都可以

6. 重要的時刻來臨了
我是把Debian光碟放進去啦,用光碟開始

在出現光碟的lilo時候,輸入下面的指令

#rescue rw root=/dev/hda1

就會開使用新硬碟當成是root, 不過因為Knoppix所附送的Kernel是2.4.20 ,而Debian的是2.2 所以會出現許多找不到/lib/modules/2.2.??的訊息
不用管他

等到開好後,輸入
lilo -v -v -v

把Lilo裝到你的硬碟, 這樣你就可以用硬碟開機了,當然是馬上又重新開機吧

7. 哈哈.現在終於一切都可了..不過開機會出現很多很多的錯誤訊息
這些你必須修改你的/etc/inittab , /etc/init.d/rcS檔案等等,才可以獲得一個比較單純的Linux環境


d. 後記

我是真的很無聊,所以才考慮這樣的粗略,就沒有內容的方式安裝Linux,
不過這樣讓我對Linux的概念真的深入不少...,至少知道如何徒手裝 Linux,
不過已經有很完整這方面的資料,請你看看http://www.linuxfromscratch.org
我是用類似的觀念的..


隨時歡迎與我討論;-)
This document is written in Kwrite, Debian , Linux kernel 2.4.18-bf2.4
訪客
 

Re: 複製Linux到新的硬碟

文章yagiza » 週六 11月 29, 2003 12:08 am

忘記登入

我是yagiza
圖檔
yagiza
可愛的小學生
可愛的小學生
 
文章: 60
註冊時間: 週四 8月 07, 2003 11:40 pm

re:複製Linux到新的硬碟

文章moto » 週六 11月 29, 2003 1:18 am

讚拉... 感謝分享... :finger1:
歡迎你來到MOTO學園一起討論Debian相關問題。
在post問題前可先別忘記了以下的步驟:
1:翻一下/usr/share/doc/中是否已經有解答了?
2:閱讀一下無痛起步是否已經提到了?
3:找一下google予以解答?
4:善用學園中的"搜尋"功能,往往答案就在裡面窩。
頭像
moto
摩托學園站長
摩托學園站長
 
文章: 2808
註冊時間: 週二 9月 03, 2002 3:37 am
來自: 台北

re:複製Linux到新的硬碟

文章palmpilote » 週六 11月 29, 2003 8:37 am

我想...或許不要使用debian rescue,而直接在knoppix下使用chroot來切換過去
再來執行lilo,我想這樣應該會比叫好一點
因為根據經驗,那些抱怨的訊息應該大都是kernel對格式的抱怨
直接在相同環境底下完成應該比較不會出現問題
P.S我也沒試過,純粹參考
圖檔
看啥?沒看過貓有五條腿的嗎?
http://palmpilote.twbbs.org
個人blog啟動
頭像
palmpilote
快樂的大學生
快樂的大學生
 
文章: 524
註冊時間: 週四 10月 17, 2002 4:01 pm
來自: 笨呆星球

re:複製Linux到新的硬碟

文章yagiza » 週日 11月 30, 2003 1:42 am

palmpilote 寫:我想...或許不要使用debian rescue,而直接在knoppix下使用chroot來切換過去
再來執行lilo,我想這樣應該會比叫好一點
因為根據經驗,那些抱怨的訊息應該大都是kernel對格式的抱怨
直接在相同環境底下完成應該比較不會出現問題
P.S我也沒試過,純粹參考


恩..沒錯沒錯..因為Debian的rescue 的kernel是2.2.?的
而Knoppix的大概都是2.4.20吧
所以會有這方面的問題

chroot是不錯.....下次我試試看!
圖檔
yagiza
可愛的小學生
可愛的小學生
 
文章: 60
註冊時間: 週四 8月 07, 2003 11:40 pm


回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客