發表文章

目前顯示的是 4月, 2010的文章

Linux 2.6 INITRAMFS 自訂筆記

Linux 在 Kernel 2.6之後提供了INITRD的新繼任者INITRAMFS,可以大大減少開機時記憶體的浪費,關於兩者的詳細比較,可以參考以下兩篇精彩的文章: initramfs 簡介,一個新的 initial RAM disks 的模型 深入理解 Linux 2.6 的 initramfs 機制 (上) 既然軟體有架構上的更改,製作方法也有不一樣的地方,從mkininitrd改成mkinitramfs。像是debian live helper一樣,mkinitramfs也提供很多hook,可以作到很細緻的完全自訂,主要的設定檔放在以下兩個目錄: /etc/initramfs /usr/share/initramfs-tools 以下以最近製作的一個基於initramfs的迷你系統作說明: Step 1: 修改 /etc/initramfs/initramfs.conf #將預載模組改為list,可以大大縮減initramfs的大小 MODULES=list #不要使用busybox,因為我會用到一些進階的功能,使用busybox會有力有未逮的情形 BUSYBOX=n Step 2: 修改/etc/initramfs/modules #加入必須的module e1000e usbhid Step 3:修改/usr/share/initramfs-tools/init 讓init做完maybe_break modules之後,就停在init裡面並且呼叫自己的程式 Step 4:在/usr/share/initramfs-tools/hooks目錄新增一個burnin檔案,負責在製作過程中,把自己外掛的檔案加到壓縮檔中 #! /bin/sh -e SOURCE=/opt/backtrack case $1 in prereqs) exit 0 ;; esac . /usr/share/initramfs-tools/hook-functions copy_exec $SOURCE/sbin/getty /sbin ... mkdir -p ${DESTDIR}/usr/bin copy_exec $SOURCE/usr/bin/netserver /usr/bin ... exit 0 Step 5:

A Patch of Customized Gparted Live CD Build Script

打從開始打算製作自己的Recovery CD時,在眾多的Embedded LiveCD中,單單對Clonezilla/Gparted心有獨衷,同為台灣國網中心開發的專案,一個是完整的硬碟備份系統,一個是具體而微、在100MB的ISO中放入XWindows的LiveCD,都是非常精細完成度也很高的好工具。 只是用起來好用是一回事,自己重作一個又是另外一回事,試圖按照官網(Create GParted live from scratch Gparted )的文件去做,但是總是遇到問題,幸好在國網中心Steve(也就是Gparted Live的原作者)的幫助下,總算確認了問題,也成功的找出解決方案。 一開始的問題是直接執行create-gparted-live時,live helper一直出狀況 >>>解決方案:在Live CD的根目錄,有個 GParted-Live-Version,實際上他就是一個文字檔,記載了當初製作Live CD的所有參數,照著其中的參數執行,就可以了 再來的問題時,應用GParted-Live-Version的參數去執行,還是會遇到一些套件遺失的訊息,導致製作過程中斷 >>>解決方案;以目前的Stable Release 0.5.2-1來說,會出現discover1套件遺失的問題,原因是sid在套件庫已經移除淘汰這個套件,所以直接在套件清單內把他移除就好,不會有什麼副作用,請執行以下命令: sed -n 's/discover1//g' /opt/drbl/sbin/create-gparted-live > /opt/drbl/sbin/create-gparted-live-sidfix 後執行新的執行檔即可

備份還原系統實做之Linux

目標:做出可以完整備份還原整個硬碟的程式,假設硬碟大小是一樣的(暫時不處理grub跟來源目的不一樣的情形) 備份步驟: Step 1: 備份分割表: dd if=/dev/sda of=mbr.bin bs=512 count=65 Step 2: 備份主分割區 fsarchiver savefs /dev/sda1 sda1.fsa Step 3: 備份位於/dev/sda2的延伸分割表 dd if=/dev/sda2 of=sda2.dd bs=512 count=1 Step 4: 紀錄SWAP的UUID blkid /dev/sda5 | awk '{print $2}' 還原步驟: Step 1:還原MBR dd if=mbr.bin of=/dev/sda bs=512 count=65 partprobe Step 2:還原延伸分割區 dd if=sda2.dd of=/dev/sda2 bs=512 count=1 partprobe Step 3:還原主分割區 fsarchiver restfs sda1.fsa id=0,dest=/dev/sda1 Step 4:重建SWAP並且還原舊的UUID . ./swap.uuid mkswap-uuid -U $UUID /dev/sda5 延伸閱讀: MBR詳解 wiki: GPT wiki: MBR wiki:EBR fsarchiver: quickstart

Recompile Partclone Note

1 Prepare a debian desktop 2 Grab DRBL GPG key: gpg --keyserver subkeys.pgp.net --recv-key D7E8DF3A gpg -a --export D7E8DF3A | apt-key add - 3 Add deb repository to /etc/apt/sources.list deb http://free.nchc.org.tw/drbl-core drbl stable deb-src http://free.nchc.org.tw/drbl-core drbl stable 4 Update apt cache apt-get update 5 Fetch Partclone source: apt-get source partclone 6 Install build dependencies : apt-get build-dep partclone 7 Install missing package "libvmfs": apt-get install libvmfs 8 Extract, configure and make the partclone from source cd partclone-0.2.X ./configure --enable-all make 9 Enjog hacking Readmore: Partclone Official Install Instruction , How to use the key of DRBL

從無到有做一個Clonezilla live ?

故事是這樣開始的, 國家高速網路與計算中心自由軟體實驗室 ,簡稱國網中心設計了一套非常簡便好用的備份軟體叫做Clonezilla,功用跟GHOST一樣強大,但是完全是採用Linux的開源軟體開發,完全免費加上高度的支援度跟自訂性,屢屢在國內外的軟體展中獲獎,堪稱當今最簡單好用的備份軟體。 但是原本貼心的簡便設計並不能滿足我的需要,於是動起歪腦筋,想要把它改上一改,在官方的Q&A問答集中也有提到 如何自己從頭打造一個Clonezilla Live ,但是按照他的步驟,就是一直出錯,遺失了某些軟體元件,經過一番努力之後才成功的做出來屬於我的Clonezilla,以下就是實做筆記: 1. 下載clonezilla live 1.2.0-25 (含)以後的版本 2. 用上述版本來開機之後選擇好語言與鍵盤後,選擇"Start_Clonezilla" -> "device-image",然後掛載一個空間夠的分割區(必須是Linux的檔案系統,例如ext3, reiserfs等,不可用FAT或是NTFS的分割區)成為/home/partimag目錄來當工作目錄,建議選用local_dev,因為NFS之類的網路磁碟目錄和aufs/squashfs等相容性有些問題,製作的時候可能會失敗. 3. 在選擇要備份硬碟/分割區或者還原的時候,選擇"exit",進入命令列 4. 執行"sudo su -" 5. 執行ocs-live-netcfg來設定網路,以便待會製作Debian Live程式需要. 5. cd /home/partimag/ 6. apt-get update; apt-get -y install live-helper cdebootstrap >>>以上都可以照做 7. 如果你要特別版本的核心,只要確認Debian套件庫中有的話,例如你要2.6.18-6或是2.6.24-etchnhalf.1的核心,就這樣執行: create-debian-live -l e -b unstable -k 2.6.18-6 -i customized 或是 create-debian-live -l e -b unstable -k 2.6.

OSS Digital Signage Install Note: Concerto Signage

圖片
Introduction 介紹 Concerto是一套OSS開放原始碼的Digital Signage Solution,同時也有考慮另外一套Xibo,同為OSS的軟體,不過Xibo需要以Windows為客戶端,因為這點就把注意力轉向Concerto,他還有提供以LiveCD為媒介的客戶端,比起來高下立見,只不過跟Xibo比起來,Concerto相關資源也少好很多,連包含網頁、資料庫、PHP的Server安裝都用幾行字帶過,這篇文章就是要補足原廠的不足,讓大家都可以開開心心安裝Concerto System Requirements 系統需求(摘自官網): http://www.concerto-signage.com/view/deploy Installing Concerto requires some basic server administration experience. You'll need to have installed and be familiar with the setup of: * A *nix OS * PHP 5.2+, along with the GD, MySQL, and Curl libraries * A web server with URL rewriting capabilities (such as mod_rewrite under Apache) * MySQL 4.1+ * Cron (and crontab access) Installation 安裝說明文件: http://sourceforge.net/apps/mediawiki/harmoni/index.php?title=Concerto_Installation 這份文件講的跟原廠有點出入,以下的安裝步驟是兩者的混合版 前置Sever準備工作: 1 安裝 Apache Web Server apt-get install apache2 1.1 確認 Apache 安裝: 用 Firefox 開啟 http://localhost/ 2 安裝 PHP apt-get install php5 libapache2-mod-php5 php5-gd php5-mysql

inetboot x httpfs 研究筆記

首先從名詞解釋開始... inetboot: http://openlab.ring.gr.jp/oscircular/inetboot/ 這是一個由日本實驗室主導的專案,目標在開發一套系統,可以直接利用http/ftp上面的ISO檔來開機,不需要傳統的下載、燒錄光碟、然後在透過光碟或者隨身碟開機的冗長程序,加上主流Linux Distribution都有提供LiveCD,兩個結合起來就是只要能夠上網的裝置,都可以直接利用網路的檔案開機。 不過inetboot已經在2008年9月停止更新,實驗主力轉往PS3 Linux的相關應用韌體與全球網路服務發展,這也促成這次研究的動機,因為想把最新的Ubuntu 9.10移植上去跑(目前只支援到Ubuntu 8.04) httpfs: http://httpfs.sourceforge.net/ 這是前項專案的核心技術httpfs,取代以往整個檔案下載的方式,變成按需要分部份下載,只要事先對ISO建立檔案索引,就可以很有效率的直接取用,基於 FUSE 的先進技術,只要核心有支援FUSE,不需重新編譯核心即可直接在user space創立httpfs buildroot: buildroot 一如其名稱,這是專門用來開發Embedded Linux Root Filesystem的"巨集",本身只是一堆設定檔跟連結,但是巧妙設計的設定系統,讓本來東拼西湊的Embedded Linux 系統開發變得很簡單,支援X86、ARM等主流硬體。 阿婆的裹腳布落落長的開發歷程... 1 首先是驗證inetboot的性能,但是透過WAN速度還是頗慢 2 所以自己架了Apache Web Server來提供下載服務,果然開機速度快多了 3 確認可行之後,就是拆解inetboot的光碟研究,就像很多Embedded Linux一樣,由三個部份組成bootloader、kernel與initrd 4 bootloader 預設是grub,不過要換成syslinux也可以 5 kernel,預設版本是2.6.24,夠新了,不過後來我癢又把它小改一下,開機更快了一點 6 initrd,也就是root fs,這是這次修改的重點 7 分析錯誤訊息並追蹤開機檔案linuxrc->casper