在一些舊版本Kernel(ex:2.4.x)下 , 要用mount去掛載initrd , 就可以觀看initrd在做些甚麼
# mv initrd.img initrd.img.gz
# gunzip initrd.img.gz
# mkdir /mnt/init
# mount -o loop initrd.img /mnt/init
修改好後還原
# umount /mnt/init
# gzip -9 initrd.img
# mv initrd.img.gz initrd.img
新版本的initrd , 是使用cpio來做備份 , 所以要用cpio來還原檔案
# file initrd.img
initrd.img: gzip compressed data, from Unix, last modified: Wed Jul 29 11:21:30 2009
# mv initrd.img initrd.img.gz
# gunzip initrd.img.gz
# file initrd.img
initrd.img: ASCII cpio archive (SVR4 with no CRC)
# mkdir init
# cd init
# cpio -i -I ../initrd.img
修改好後還原
# find . -print | cpio -o -H newc > ../new.initrd.img (用new ASCII格式)
# file ../new.initrd.img
new.initrd.img: ASCII cpio archive (SVR4 with no CRC)
# cd ..
# gzip -9 new.initrd.img
# mv new.initrd.img.gz new.initrd.img
2009年9月28日 星期一
2009年9月25日 星期五
如何掛載LVM格式的裝置
由於Fedora Core4使用預設的安裝 , 安裝後的格式為Linux LVM
那我在Ubuntu 8.10下要如何去掛載這個硬碟呢!
# apt-get install lvm2 (這樣才可以使用下面一些的指令)
# modprobe dm-mod
# pvscan (查看VG是哪一個)
ex: PV /dev/sda2 VG VolGroup00 lvm2 [37.16 GB / 32.00 MB free]
Total: 1 [37.16 GB] / in use: 1 [37.16 GB] / in no VG: 0 [0 ]
# vgchange -a y VolGroup00 (-a為active y為yes , 將VolGroup00 enable)
這時 , 在/dev/下 , 就會產生VolGroup00這個裝置
# ls /dev/VolGroup00
LogVol00 LogVol01
再將這個裝置mount起來即可
# mkdir /mnt/fc4
# mount /dev/VolGroup00/LogVol00 /mnt/fc4
收工!!
詳細的LVM介紹 , 請參考下面連結
http://plog.kmjh.tc.edu.tw/post/1/91
那我在Ubuntu 8.10下要如何去掛載這個硬碟呢!
# apt-get install lvm2 (這樣才可以使用下面一些的指令)
# modprobe dm-mod
# pvscan (查看VG是哪一個)
ex: PV /dev/sda2 VG VolGroup00 lvm2 [37.16 GB / 32.00 MB free]
Total: 1 [37.16 GB] / in use: 1 [37.16 GB] / in no VG: 0 [0 ]
# vgchange -a y VolGroup00 (-a為active y為yes , 將VolGroup00 enable)
這時 , 在/dev/下 , 就會產生VolGroup00這個裝置
# ls /dev/VolGroup00
LogVol00 LogVol01
再將這個裝置mount起來即可
# mkdir /mnt/fc4
# mount /dev/VolGroup00/LogVol00 /mnt/fc4
收工!!
詳細的LVM介紹 , 請參考下面連結
http://plog.kmjh.tc.edu.tw/post/1/91
2009年9月22日 星期二
錯誤訊息與可能可以解決的方法
編譯ubuntu 10.04核心時,卻出現下列錯誤。
~$ sudo make -j2
LD [M] ubuntu/omnibook/omnibook.o
ld: /ubuntu/omnibook/sections.lds: No such file: No such file or directory
make[2]: *** [ubuntu/omnibook/omnibook.o] Error 1
make[1]: *** [ubuntu/omnibook] Error 2
make: *** [ubuntu] Error 2
$ sudo vi /usr/src/linux/ubuntu/omnibook/Makefile
160: #EXTRA_LDFLAGS += $(src)/sections.lds
161: EXTRA_LDFLAGS += $(PWD)/ubuntu/omnibook/sections.lds
1. cannot restore segment prot after reloc permission denied
這是我在執行startx IEGD的Driver載入時會出現這個錯誤 , 判斷是Selinux的問題
因此google到一個方法
chcon -t texrel_shlib_t $(FILE)
2. perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
由於debootstrap會依照目前我電腦的設定去產生filesystem, 所以在幫客人做filesystem時會有這種語言設定的錯誤.
安裝好X server client gnome後, startx會產生的Err Msg
apt-get install fast-user-switch-applet
#### 在Fedora 10上安裝新版intel driver ####
# ./autogen.sh
syntax error near unexpected token xinerama
抓新版的xorg-x11-server-devel
# yum search xorg-x11-server-devel
# yum install xorg-x11-server-devel-i386
#### Nautilus can't be used now ####
在使用embedded debian時, 我手殘的把user加入了gdm群組, 導致重登後出現這個錯誤.
把/etc/group下, gdm後面的user刪掉即可.
Error 16: Inconsistent filesystem structure
還原後的系統, grub時所出現的錯誤, 是他不認得你的裝置格式, 通常是有錯誤才會這樣
# fsck -y -f $DEVICE_NODE
手很賤...將原先編譯的好的kernel make clean又移位,導致我要compile module時出現錯誤。
1. 先出現Module.symvers is missing
那就將module下的Module.symvers貼過去
2. 又出現scripts/mod/modpost: No such file or directory
make scripts就可以解決^_^
3. 可以編譯以及正確動作啦!
手動從console only安裝x windows server & clients後,登入時的錯誤
OAFIID:GNOME_FastUserSwitchApplet panel encountered a problem
sudo apt-get install indicator-applet-session
~$ sudo make -j2
LD [M] ubuntu/omnibook/omnibook.o
ld: /ubuntu/omnibook/sections.lds: No such file: No such file or directory
make[2]: *** [ubuntu/omnibook/omnibook.o] Error 1
make[1]: *** [ubuntu/omnibook] Error 2
make: *** [ubuntu] Error 2
$ sudo vi /usr/src/linux/ubuntu/omnibook/Makefile
160: #EXTRA_LDFLAGS += $(src)/sections.lds
161: EXTRA_LDFLAGS += $(PWD)/ubuntu/omnibook/sections.lds
1. cannot restore segment prot after reloc permission denied
這是我在執行startx IEGD的Driver載入時會出現這個錯誤 , 判斷是Selinux的問題
因此google到一個方法
chcon -t texrel_shlib_t $(FILE)
2. perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
由於debootstrap會依照目前我電腦的設定去產生filesystem, 所以在幫客人做filesystem時會有這種語言設定的錯誤.
export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales
3.OAFILD:Gnome_FastUserSwitch Applet安裝好X server client gnome後, startx會產生的Err Msg
apt-get install fast-user-switch-applet
#### 在Fedora 10上安裝新版intel driver ####
# ./autogen.sh
syntax error near unexpected token xinerama
抓新版的xorg-x11-server-devel
# yum search xorg-x11-server-devel
# yum install xorg-x11-server-devel-i386
#### Nautilus can't be used now ####
在使用embedded debian時, 我手殘的把user加入了gdm群組, 導致重登後出現這個錯誤.
把/etc/group下, gdm後面的user刪掉即可.
Error 16: Inconsistent filesystem structure
還原後的系統, grub時所出現的錯誤, 是他不認得你的裝置格式, 通常是有錯誤才會這樣
# fsck -y -f $DEVICE_NODE
手很賤...將原先編譯的好的kernel make clean又移位,導致我要compile module時出現錯誤。
1. 先出現Module.symvers is missing
那就將module下的Module.symvers貼過去
2. 又出現scripts/mod/modpost: No such file or directory
make scripts就可以解決^_^
3. 可以編譯以及正確動作啦!
手動從console only安裝x windows server & clients後,登入時的錯誤
OAFIID:GNOME_FastUserSwitchApplet panel encountered a problem
sudo apt-get install indicator-applet-session
2009年9月16日 星期三
VIA CX700M for Kernel 2.6.18
Kernel 2.6.18 無法打開DMA , 因為VIA CX700在Kernel 2.6.18的支援有問題.
這個問題搞了我很久...
我的錯誤決策導致浪費相當多的時間.
一開始我就決定用最省力的方式 , 直接Update Kernel到2.6.27 (Ubuntu8.10的Kernel version) , 想當然爾 , DMA在更新核心後就可以開啟了 . 但是小日本並不想更新核心 . 由於他們是使用CentOS5.3 , 所以並不想冒險去使用較新的核心.
這邊出現了一點小問題...我第一次Update Kernel到2.6.18.8時 , DMA也是可以被開啟的...但是第二次之後 , 卻一直都是失敗...我也還沒搞清楚問題在哪裡.
後來一直圍繞在第一次成功的基準 , 不斷的去更改核心選項 , 認為應該問題是在於我少勾或者是多勾了甚麼功能...所以造成非常多的時間被浪費在編譯核心.
最後更改方向 , 去VIA的論壇去看看這個晶片在2.6.18上是有甚麼問題的. 果然找到了一個可能的解決方案 . 在driver/ide/pci/via82cxxx.c內多加幾行code即可
#define PCI_DEVICE_ID_VIA_CX700 0x8324
#define PCI_DEVICE_ID_VIA_CX700-IDE 0x5324
#define PCI_DEVICE_ID_VIA_8237S 0x3372
{ “cx700”, PCI_DEVICE_ID_VIA_CX700, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }
{ “vt8237s”, PCI_DEVICE_ID_VIA_8237S, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }
{ “6410”, PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }
static struct pci_device_id via_pci_tbl[] = {
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_CX700-IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0,0},
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_6410, PCI_ANY_ID, PCI_ANY_ID, 0, 1, },
修改完後 , 把他編譯進核心 , 不能使用模組的方式 , 因為不知道是哪個模組會去先使用到ide的位置 , 導致這個模組用外掛的方式會失敗
重新開機後即可!!
這個問題搞了我很久...
我的錯誤決策導致浪費相當多的時間.
一開始我就決定用最省力的方式 , 直接Update Kernel到2.6.27 (Ubuntu8.10的Kernel version) , 想當然爾 , DMA在更新核心後就可以開啟了 . 但是小日本並不想更新核心 . 由於他們是使用CentOS5.3 , 所以並不想冒險去使用較新的核心.
這邊出現了一點小問題...我第一次Update Kernel到2.6.18.8時 , DMA也是可以被開啟的...但是第二次之後 , 卻一直都是失敗...我也還沒搞清楚問題在哪裡.
後來一直圍繞在第一次成功的基準 , 不斷的去更改核心選項 , 認為應該問題是在於我少勾或者是多勾了甚麼功能...所以造成非常多的時間被浪費在編譯核心.
最後更改方向 , 去VIA的論壇去看看這個晶片在2.6.18上是有甚麼問題的. 果然找到了一個可能的解決方案 . 在driver/ide/pci/via82cxxx.c內多加幾行code即可
#define PCI_DEVICE_ID_VIA_CX700 0x8324
#define PCI_DEVICE_ID_VIA_CX700-IDE 0x5324
#define PCI_DEVICE_ID_VIA_8237S 0x3372
{ “cx700”, PCI_DEVICE_ID_VIA_CX700, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }
{ “vt8237s”, PCI_DEVICE_ID_VIA_8237S, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }
{ “6410”, PCI_DEVICE_ID_VIA_6410, 0x00, 0x2f, VIA_UDMA_133 | VIA_BAD_AST }
static struct pci_device_id via_pci_tbl[] = {
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C576_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_CX700-IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0,0},
{ PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_6410, PCI_ANY_ID, PCI_ANY_ID, 0, 1, },
修改完後 , 把他編譯進核心 , 不能使用模組的方式 , 因為不知道是哪個模組會去先使用到ide的位置 , 導致這個模組用外掛的方式會失敗
重新開機後即可!!
2009年9月3日 星期四
在CF卡上安裝Ubuntu 8.10
這部份資料都是參考Dennis前輩的網頁
只是我這邊在做一些筆記而已
1.格式化CF卡 , 我是分成/boot 以及 / , 沒有切swap出來用
# fdisk /dev/sda
# mkfs.ext3 -m 0 /dev/sda1
# mkfs.ext3 -m 0 /dev/sda2
-m 0 指的是不多分5%空間給root
# mkdir /mnt/sda2
# mount /dev/sda2 /mnt/sda2
2.用debootstrap做出Ubuntu 8.10的filesystem
# apt-get install debootstrap
# debootstrap --arch i386 intrepid /mnt/sda2
這邊的intrepid指的是Ubuntu 8.10的版本代碼
3.安裝Grub on /boot
# mount /dev/sda1 /mnt/sda2/boot
# grub-install --root-directory=/mnt/sda2 /dev/sda
參數代表root的位置以及你要安裝grub的裝置位置(/dev/sda 為 第一個硬碟的MBR)
# grub
grub> root (hd0,0) (指定你的 /boot 分割區位置)
grub> setup (hd0) (安裝 GRUB 到 MBR)
grub> quit (離開 GRUB shell)
# touch /mnt/sda2/boot/grub/menu.lst
在Ubuntu 8.10是去讀menu.lst , 不是grub.conf
建立自己的menu.lst
--------------------------------------------------------
ex:
default 0
timeout 3
title Ubuntu 8.10 , Kernel 2.6.27.7
root (hd0,0)
kernel /vmlinuz root=/dev/sda2 ro quiet
initrd /initrd.img
---------------------------------------------------------
3. 在Host PC上做出vmlinuz以及initrd.img
這邊就不贅述了 , 做好後把vmlinuz initrd.img 以及modules放到CF卡上
重開機後就可以用CF開機 , 並且進入你做好的Linux內了!
我做到這邊尚無X window大概花了600M的空間
4. 先把最重要的網路用起來
# vi /etc/network/interfaces
auto eth0
iface eth0 inet dhcp
# /etc/init.d/networking restart
再設定apt的sourcelist
# apt-get update
編輯fstab
# vi /etc/fstab
/dev/sda2 / ext3 relatime,errors=remount-ro 0 1
/dev/sda1 /boot ext3 relatime 0 2
5. 安裝X Window
# apt-get install xserver-xorg-core xterm gnome-core gdm (843M)
# apt-get install xbase-clients (2662K)
# X -configure
# cp ~/xorg.conf.new /etc/X11/xorg.conf
# startx
Resolution不對 , 無法顯示正確的1024x600_60.00
感覺桌面被定死在1024x768 , 所以1024x600都會造成無法顯示下面的區塊
800x600也不行...真的是Driver問題嗎!!?
恩...Driver的問題...
修改xf86-video-geode-2.11.3/src/lx_panel.c即可
6. 好用的Tools
# apt-get install pciutils (lspci)
測試用Tools
# apt-get install hdparm (hdparm)
# apt-get install ssh (可以直接在host端控制)
7. 修改user權限, 使user運作正常
由於adduser產生的user, 在Debian上沒有加入其他groups, 所以在Audio或者是network-manager的使用上有問題. 以下範例適用於debian
# usermod -g ($Userid) -a -G adm dialout cdrom plugdev netdev audio ($Userid)
8. 開機出現的錯誤訊息
mfgpt-timer: could not allocate a MFPGT timer
LX800的一個.c檔所造成
hub 1-0:1.0: unable to enumerate USB device on port 3
只是我這邊在做一些筆記而已
1.格式化CF卡 , 我是分成/boot 以及 / , 沒有切swap出來用
# fdisk /dev/sda
# mkfs.ext3 -m 0 /dev/sda1
# mkfs.ext3 -m 0 /dev/sda2
-m 0 指的是不多分5%空間給root
# mkdir /mnt/sda2
# mount /dev/sda2 /mnt/sda2
2.用debootstrap做出Ubuntu 8.10的filesystem
# apt-get install debootstrap
# debootstrap --arch i386 intrepid /mnt/sda2
這邊的intrepid指的是Ubuntu 8.10的版本代碼
3.安裝Grub on /boot
# mount /dev/sda1 /mnt/sda2/boot
# grub-install --root-directory=/mnt/sda2 /dev/sda
參數代表root的位置以及你要安裝grub的裝置位置(/dev/sda 為 第一個硬碟的MBR)
# grub
grub> root (hd0,0) (指定你的 /boot 分割區位置)
grub> setup (hd0) (安裝 GRUB 到 MBR)
grub> quit (離開 GRUB shell)
# touch /mnt/sda2/boot/grub/menu.lst
在Ubuntu 8.10是去讀menu.lst , 不是grub.conf
建立自己的menu.lst
--------------------------------------------------------
ex:
default 0
timeout 3
title Ubuntu 8.10 , Kernel 2.6.27.7
root (hd0,0)
kernel /vmlinuz root=/dev/sda2 ro quiet
initrd /initrd.img
---------------------------------------------------------
3. 在Host PC上做出vmlinuz以及initrd.img
這邊就不贅述了 , 做好後把vmlinuz initrd.img 以及modules放到CF卡上
重開機後就可以用CF開機 , 並且進入你做好的Linux內了!
我做到這邊尚無X window大概花了600M的空間
4. 先把最重要的網路用起來
# vi /etc/network/interfaces
auto eth0
iface eth0 inet dhcp
# /etc/init.d/networking restart
再設定apt的sourcelist
# apt-get update
編輯fstab
# vi /etc/fstab
/dev/sda2 / ext3 relatime,errors=remount-ro 0 1
/dev/sda1 /boot ext3 relatime 0 2
5. 安裝X Window
# apt-get install xserver-xorg-core xterm gnome-core gdm (843M)
# apt-get install xbase-clients (2662K)
# X -configure
# cp ~/xorg.conf.new /etc/X11/xorg.conf
# startx
Resolution不對 , 無法顯示正確的1024x600_60.00
感覺桌面被定死在1024x768 , 所以1024x600都會造成無法顯示下面的區塊
800x600也不行...真的是Driver問題嗎!!?
恩...Driver的問題...
修改xf86-video-geode-2.11.3/src/lx_panel.c即可
6. 好用的Tools
# apt-get install pciutils (lspci)
測試用Tools
# apt-get install hdparm (hdparm)
# apt-get install ssh (可以直接在host端控制)
7. 修改user權限, 使user運作正常
由於adduser產生的user, 在Debian上沒有加入其他groups, 所以在Audio或者是network-manager的使用上有問題. 以下範例適用於debian
# usermod -g ($Userid) -a -G adm dialout cdrom plugdev netdev audio ($Userid)
8. 開機出現的錯誤訊息
mfgpt-timer: could not allocate a MFPGT timer
LX800的一個.c檔所造成
hub 1-0:1.0: unable to enumerate USB device on port 3
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檔...但是由於趕著要出貨給客戶一 一,所以這邊放棄...以後有空在想辦法...
由於對還原光碟完全沒有概念,所以查了不少資料。
在初步查詢資料後,有兩個方案可以來嘗試製作:
方案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檔...但是由於趕著要出貨給客戶一 一,所以這邊放棄...以後有空在想辦法...
2009年6月26日 星期五
關於Debian版本定義
最近在搞Kernel 2.4.27的debian 3.1r4 , 在更新apt source.list時遇上一些問題.
# apt-get update 他會更新成2.6 kernel的套件 , 導致我的2.4無法找到正確的套件.
Google一下 , 發現是 source.list內的敘述有問題. Debian分成很多種版本 , 每種都有各種不同的需求 , 由於我在source list內為 deb http://.../ stable , 所以他會自動幫我去抓最新的套件 , 而不是最新的2.4 kernel的套件.
以下節錄自Debian官方網站
Debian發行版有3種「風格」: stable:適用於架設產品化服務器,不適用於工作站用戶(workstation 縮寫WS) testing:適用於工作站用戶。 unstable:千萬別盲目使用。新的程度:Unstable > testing > stable。 在2002年3月時,這三個發行版對應為potato(產品化品質),woody(beta-test,非常穩定即將發佈),和sid(alpha- test)。到2002年8月,也就是woody剛剛發佈,三個發行版對應為woody(產品化品質),sarge(beta-test,有時運行不夠穩 定),和sid(總處於alpha-test)。如果unstable發行版中的軟件包不再出現Release Critical(RC)錯誤,一周後將自動升級到testing發行版。請注意,如果使用混合型Debian,例如在stable中加入testing或是在stable中加入unstable,會一不留神從testing或unstable中下載許多關鍵包,由於Unstable是最新且不穩定的,可能會造成一些意外的錯誤。
待續...XD
# apt-get update 他會更新成2.6 kernel的套件 , 導致我的2.4無法找到正確的套件.
Google一下 , 發現是 source.list內的敘述有問題. Debian分成很多種版本 , 每種都有各種不同的需求 , 由於我在source list內為 deb http://.../ stable , 所以他會自動幫我去抓最新的套件 , 而不是最新的2.4 kernel的套件.
以下節錄自Debian官方網站
Debian發行版有3種「風格」: stable:適用於架設產品化服務器,不適用於工作站用戶(workstation 縮寫WS) testing:適用於工作站用戶。 unstable:千萬別盲目使用。新的程度:Unstable > testing > stable。 在2002年3月時,這三個發行版對應為potato(產品化品質),woody(beta-test,非常穩定即將發佈),和sid(alpha- test)。到2002年8月,也就是woody剛剛發佈,三個發行版對應為woody(產品化品質),sarge(beta-test,有時運行不夠穩 定),和sid(總處於alpha-test)。如果unstable發行版中的軟件包不再出現Release Critical(RC)錯誤,一周後將自動升級到testing發行版。請注意,如果使用混合型Debian,例如在stable中加入testing或是在stable中加入unstable,會一不留神從testing或unstable中下載許多關鍵包,由於Unstable是最新且不穩定的,可能會造成一些意外的錯誤。
待續...XD