2009年7月24日 星期五

製作還原光碟

由於客戶想要還原光碟,又不想要用付費的軟體一 一,所以我要幫客戶生出來...
由於對還原光碟完全沒有概念,所以查了不少資料。
在初步查詢資料後,有兩個方案可以來嘗試製作:

方案1. 想辦法做一個LiveUSB/LiveCF/之類的東西,然後把要還原的硬碟(簡稱A)透過dd指令寫入至檔案,然後再透過ShellScript讓客戶可以方便的來把檔案dd回去A。確定可行後,再把LiveUSB/LiveCF做成LiveDVD給客人。

由於方案一實在蠻麻煩的,而且dd會有些技術上的問題,可能需要同型號同大小的硬碟才保證無誤,所以出現了方案2。

方案2. 在Linux討論區流傳著一種好用的備份還原軟體-----Clonezilla----,它是國家高速網路與計算中心自行研發出來Base on Linux的類似Ghost軟體。可至Clonezilla官網下載所需的Live版本。官網本身也有詳細的對於Clonezilla的操作介紹,在此不細談。

由於是國人自行研發的,所以有親切的中文介面,也有圖形化或者文字介面供使用者選擇,整體來說很方便。還原光碟的製作方式如下:

1. 進入LiveCD後跟著選項操作,然後選擇再生龍來使用。先把要存放映像檔的裝置mount起來,再透過選項把硬碟備份至mount的資料夾下,最後會產生一個依照你命名的資料夾,那個就是備份資料。
2. 由於要製作光碟,所以備份完後繼續操作。 選擇2`,進入command 模式。
# sudo passwd root --> 設定root的帳號密碼
# su - --> 切換成root
# rmmod pcspkr --> 關掉非常吵的蜂鳴器
# mount --> 看看存映像檔的位置被掛在哪一個路徑下
# 不知道如何mount的話,可以使用prep-ocsroot這個指令
# cd PATH --> 這裡的PATH就是映像檔掛載的位置 ex:/tmp/iso
# /opt/drbl/sbin/ocs-iso -g en_US.UTF-8 -t -k NONE -e "-b -c restoredisk ImageName sda" ImageName
--> ImageName就是備份的資料夾名稱,-g 指定語言 -k 指定KB -e 代表額外參數 , 我們選擇restore only 以及指定還原映像檔和還原的硬碟號碼

依照上述製作出的還原光碟 , 只會跳出選擇解析度以及確定是否要還原的選項

接下來插上USB,並且mount起來,把產生的iso檔存到USB上,再把檔案燒成DVD即可


接下來是我在研究如何製作還原光碟的心路歷程...

由於一開始官網的文件製作還原光碟那我看不太懂一 一,很懷疑怎麼再LiveCD上面再做一個還原光碟。所以我去嘗試修改LiveCD的iso檔內容,使用# mount -o loop livecd.iso /mnt/iso後,可以看到裡面包的東西,但是卻看不到我以為可以看得到的filesystem。原來filesystem被壓縮成filesystem.squashfs放在live內,再一次使用 # mount -o loop filesystem.squashfs /mnt/fs,也就可以看到filesystem的內容了。但是愚蠢的我天真的以為可以直接修改iso檔內的東西...但是再寫入時才發現唯讀...。需要把那些mount起來的資料夾給cp出來修改。可以修改歸可以修改...但是在修改完後又遇上更古怪的問題。

原來squashfs是一個在LiveCD上很常看到的壓縮工具。由於本來的filesystem就是靠squashfs做出來的,所以我也必須把新的filesystem給做成squashfs檔。先apt-get取得相關的套件,再使用mksquashfs做成filesystem.squashfs。但是在這邊我有碰到問題,LiveCD內所使用的squashfs是4.0的版本,而我去抓下來的是3.x的版本,所以後來我想從新mount我做的filesystem時卻不能mount,說我的squashfs太舊...

接下來是把資料夾再做成iso檔...由於Ubuntu8.10已經是使用genisoimage而不是使用以前的mkiso...所以換成genisoimage來操作。產生的iso檔燒出來...卻...是一般的資料夾...不是bootable的iso....,需要下參數才有辦法做成bootable的iso檔...但是由於趕著要出貨給客戶一 一,所以這邊放棄...以後有空在想辦法...