【VMware】Virtual Disk Manager


之前使用VMware灌的Ubuntu9.10只有定義磁碟大小為12G,一邊用也一邊抓了許多軟體到現在有些小小的抓襟見肘了。幸好VMware提供命列列的方式來加大磁碟大小。

首先先確定硬碟大小,目前是12G

image

如果要把它變成20G的話就使用類似的命令

> vmware-vdiskmanager.exe -x 20Gb kernel.vmdk

當然為了方便起見我省掉了一些絕對路徑,實際上最好宣告檔案的絕對路徑。類似的結果如下圖 。如果一切ok的話,你就會看到你的磁碟空間再Grow了。這段時間會比較久,需要耐心等待。

image  
結束後再開一次VM,大小變成20G了。
image

不過他不是單一個Parition變成20G,剛開始時是12G(原本的) +8 G(or 8.6G,新的)。如果你打算將這8.6G獨立使用的話,先進去「Ubuntu/系統/管理/磁碟公用程式」把新的8.6G作個格式化。

image

格式化好之後用用右上方mount掛載之後就能用了。image

掛載後新的名字就叫 「/media/work」。

image

如果是要兩顆合併的話就要利用 GParted。不過我目前沒這個需求所以先Pass。

image

【參考】

【Crosstool-ng】Toolchain Maker(tbd)


參考這份文件(http://hi.baidu.com/caicry/blog/item/f306db639c4281680c33fa1b.html)所作的筆記。

【環境】
Ubuntu Linux 2.6.31-14 (Ubuntu 9.10),記得先把相關工具抓好。

$apt-get update
$apt-get install build-essential
$apt-get install sharutils exuberant-ctags zlib1g zlib1g-dev 
$apt-get install libncurses5 libncurses5-dev libgcc1 gcc gcc++ 
$apt-get install gdb expect bison flex makedepend 
$apt-get install gawk texi2html texinfo automake libtool cvs termcap
$apt-get install git-core curl

【安裝】

安裝好之後最後跑一下 「ct-ng」 確定 ct-ng 版本。

$wget http://ymorin.is-a-geek.org/download/crosstool-ng/crosstool-ng-1.5.2.tar.bz2
$tar jxvf crosstool-ng-1.5.2.tar.bz2
$cd crosstool-ng-1.5.2
$./configure --prefix=/opt/crosstool-ng
$make
$make install
$ct-ng -v
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i486-pc-linux-gnu

【使用】

(tbd)

Different with document…

$ mv glibc-cvs-2.9.tar.gz ~/src/
$ mv glibc-ports-cvs-2.9.tar.gz ~/src

CT_KERNEL_VERSION=2.6.31.1
CT_LIBC_GLIBC_MIN_KERNEL=2.6.31.1

【ttysnoop】snoop tty device


看到作者的這篇文章(http://daydreamer.idv.tw/rewrite.php/read-64.html)不經令人會心一笑,也讓我想起我在前公司到客戶那邊出差時也有和他一樣的遭遇。不過那時我自己有帶Console線,只是可惜有的RT(Router)沒有接牛角,我是直接到BestBuy/Frys買牛角,也幸好牛角座不像SMT元件的焊點那麼小,買完就去客戶那邊的維修部自己用烙鐵接上去。

不過在美國,在國內航線飛機帶Scroll driver,老是會被安檢人員基於安全理由特殊對待。如果我那時會用ttysnoop,應該會輕鬆許多吧。收起來先。

【Shell】chvt


切換你的terminal。例如我們

  • ctrl-alt-f3: 第三個是字符界面
  • ctrl-alt-f7” 第七個是視窗界面

我們想切到視窗三,再切到視窗七,我們可以利用chvt來達到這個功能。

#chvt 3 #切到文字模式
#chvt 7 #切到視窗模式

【Buildroot】Toolchain Maker(tbd)


OPENCSL - 打開嵌入式系統操作大門的開放教材(http://opencsl.openfoundry.org/Lab01_intro.rst.html)
提供豐富的資料,不過有的東西有點過期了。附記一下我測試的筆記。

【環境】
Ubuntu 9.10/gcc 4.4.1

【Lab1. install Qemu and build/verify(ch2.1)】
先參考 http://www.qemu.org/download.html,抓取最新的套件。

$apt-get install libsdl1.2debian-all libsdl1.2-dev zlib1g-dev 
$wget http://download.savannah.gnu.org/releases/qemu/qemu-0.10.6.tar.gz 
$tar zxvf qemu-0.10.6.tar.gz 
$cd qemu-0.10.6 
$./configure --cc=/usr/bin/gcc-4.4 --host-cc=/usr/bin/gcc-4.4 --target-list=arm-softmmu 
$make 
$make install 

$wget http://www.nongnu.org/qemu/arm-test-0.2.tar.gz 
$tar zxvf arm-test-0.2.tar.gz 
$cd arm-test 
$./qemu-system-arm -kernel zImage.integrator -initrd arm_root.img -nographic -append "console=ttyAMA0"
這樣Qemu就帶起來測試的kernel和file_system了。
image 
如何離開Qemu,基本上是利用 ctrl+a-x。
  • Press ctrl+a-x,exit Qemu
  • Press ctrl+a-c, witch from Qemu
【Lab1. toolchain(ch2.3)】
$ sudo apt-get install bison flex gettext patch build-essential texinfo
$ sudo apt-get install subversion
$ sudo apt-get install libncurses5-dev
$ svn co -r 21163 svn://uclibc.org/trunk/buildroot
$ cd buildroot
$ make menuconfig

可能會遇到的問題與解決方式:

  • 現象: Appear below error message 
    scripts/unifdef.c:209: error: conflicting types for ‘getline’
  • 解決方式: rename toolchain_build_arm/linux-2.6.22.10/scripts/unifdef.c/getline() to something else
    利用「arm-linux-gcc –v」或 「arm-linux-uclibc-gcc –v」 來看結果。

這次Lab的重點在於確定gcc的版本與include/lib路徑。

$build_arm/staging_dir/usr/bin/arm-linux-gcc -v
Using built-in specs.
Target: arm-linux-uclibc
Configured with: /root/buildroot/buildroot/toolchain_build_arm/gcc-4.2.1/configure --prefix=/usr --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=arm-linux-uclibc --enable-languages=c --with-sysroot=/root/buildroot/buildroot/build_arm/staging_dir --with-build-time-tools=/root/buildroot/buildroot/build_arm/staging_dir/usr/arm-linux-uclibc/bin --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --enable-shared --with-gmp=/root/buildroot/buildroot/toolchain_build_arm/gmp --with-mpfr=/root/buildroot/buildroot/toolchain_build_arm/mpfr --disable-nls --enable-threads --disable-multilib
Thread model: posix
gcc version 4.2.1

設定環境變數

$export PATH=/root/buildroot/buildroot/build_arm/staging_dir/usr/bin:$PATH 
$source ~/.bashrc

【Lab2 Kernel】

  • 第一次保險的作法基本上跟著採用 linux 2.6.18.1就可以了。
    $make -j4
  • 完成之後,確認Image
    $file linux-2.6.18.1/arch/arm/boot
    linux-2.6.18.1/arch/arm/boot/zImage: data
  • 執行
    $qemu-0.10.6/arm-softmmu/qemu-system-arm -kernel kernel/linux-2.6.18.1/arch/arm/boot/zImage -initrd arm-test/arm_root.img -nographic -append "console=ttyAMA0"
  • 驗證
    qemu login: root
    login[731]: root login  on `ttyAMA0'
    BusyBox v1.1.2 (2006.05.04-15:30+0000) Built-in shell (ash)
    Enter 'help' for a list of built-in commands.
    # uname -a
    Linux qemu 2.6.18.1 #1 Tue Jan 12 12:05:26 CST 2010 armv5tejl unknown
  • 為了unionfs,這邊嘗試編譯2.6.31
    參考 适用于QEMU的ARM虚拟机的内核最简配置
    http://hi.chinaunix.net/?uid-21635276-action-viewspace-itemid-39010
    $wget wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.tar.gz
    $make ARCH=arm CROSS_COMPILE=arm-linux-uclibc-  allnoconfig
    $make ARCH=arm CROSS_COMPILE=arm-linux-uclibc-  menuconfig
    $make -j4 ARCH=arm CROSS_COMPILE=arm-linux-uclibc-

  • $cp arch/arm/configs/versatile_defconfig .config
  • (tbd)
  • 可能問題:
    qemu: fatal: integratorcm_read: Unimplemented offset 0x1f1018
    R00=00013770 R01=00000055 R02=ffffffff R03=101f1000
    R04=000cb4a8 R05=000d3540 R06=000d353c R07=000d3530
    R08=00000100 R09=00000000 R10=10000000 R11=000d4938
    R12=000d493c R13=000d492c R14=000133f4 R15=00010c04
    PSR=200001d3 --C- A svc32
    已經終止

【Lab3 Filesystem】

  • Busybox部分: 可以採用目前最新的 busybox-1.15.3,摘錄一下命令
    $make CROSS_COMPILE=arm-linux-uclibc- ARCH=arm
    $make install CROSS_COMPILE=arm-linux-uclibc- ARCH=arm
    $file bin/busybox
    bin/busybox: ELF 32-bit LSB executable, ARM, version 1, statically linked, stripped
  • 製作必須檔案與目錄
    $cd ./_install/
    $mkdir etc etc/init.d dev root tmp
    $cd dev
    $sudo mknod console c 5 1
    $sudo mknod null c 1 3
    $sudo mknod ttyAMA0 c 204 64
  • 承上,記的最後再補足
    /etc/inittab
    /etc/init.d/rcS
    /etc/passwd
    /ect/group
  • 把檔案放到 rom這個目錄
    (tbd)
  • nfs設定,這部分改成用genext2fs 省得麻煩,類似範例如下
    $genext2fs -b 2048 -i 1024 -d rom/ ext2fs
  • 測試
    $qemu-0.10.6/arm-softmmu/qemu-system-arm -kernel kernel/linux-2.6.18.1/arch/arm/boot/zImage -initrd ext2fs -nographic -append "console=ttyAMA0"
  • 確認
    opencsl login: root
    Jan  1 00:00:07 login[719]: root login on 'ttyAMA0'
    # uname -a
    Linux opencsl 2.6.18.1 #1 Tue Jan 12 12:05:26 CST 2010 armv5tejl GNU/Linux
  • 把kernel和file system作成一包。


【Lab4 OS porting】

原作者好像還沒動工。

【Lab5 OS debugging】

  1. gdb-server
    配合目前的gcc 加上--disable-werror,不過我猜或許只需用ubuntu上的
    $../configure --target=arm-linux-uclibc --disable-werror --prefix=$(pwd)
  2. gdb-target
    最後多加個strip
    $arm-linux-uclibc-strip gdbserver
    $file gdbserver
    gdbserver: ELF 32-bit LSB executable, ARM, version 1, statically linked, stripped

(tbd)

【後記】

  1. 以上整個幾乎就是一個BSP的製作過程了。有了這次的經驗。在下次跑案子的時候,我們可以事先規劃好BSP的整個架構,先由目錄規畫開始,來看要放那些檔案。
    BSP Installation directory
        +
        |--- Documentation(bugs/features/how-to..)
        |
        |--- Firmware(bzimage/rootfs)
        |
        |--- loader(ex.redboot...)
        |
        |--- kernel(linux kernel)
        |
        |--- apps(Userspace/verdor's driver)
        |
        |--- toolchain(buildroot)
        |
        |--- Project(.config)
  2. 思考:如何融入wiki/trac

【Zoundry Raven】Blog writter


除了WLW以外,另外又找了一套 Zoundry Raven來作Blog的離線備份。目前這篇文章就是使用Raven發佈。

所以目前知道大概有幾個方式可以用來撰寫Blogspot

  1. 直接登入Blogspot撰寫
  2. 利用發信的功能撰寫
  3. 利用Google Doc撰寫
  4. 使用WLW(Windows Live writer),裡面有許多豐富的Plugin
  5. 利用Zoundry Raven,除了可以撰寫以外,還支援Portable mode拿來備份。如果要設成Portable mode,記的將Raven2Go打勾。

    如果剛開始的設定是由WLW匯入的,記得將你的圖片來源指到Picasa(如果你是用Picasa的話)

    這套軟體可以一次將一篇文章發佈到多個Blog,也可以拿來當線上備份使用。

【iGTD】時間管理好用軟體


收起來先

http://bargiel.home.pl/iGTD/

如何成為時間管理的黑帶高手

【Wikipad】數狀大綱記事本(tbd)


樹狀大綱的記事本 Treepad 用了多年,用的也蠻習慣的,不過總是卡在幾個地方讓人覺得有點不方便。最近看到有人分享WikidPad,聽說有支援Sqlite也不錯用改天再來試看看。

Wikipad http://wikidpad.sourceforge.net/

【使用】

  • 基本語法(tbd)
  • 插入圖表
    把檔名夾在 [file://X/ ] 中間就可以,X是你Disk的名稱。
  • 插入超連結
    把檔名夾在 [http://X/ ] 中間就可以了
  • 自動打開相關檔案
    把檔名夾在 [file://X/ ] 中間就可以了
【參考】

【Refcardz】Free Cheat Sheets for Developers


裡面有很多製作精美的圖表。

【Blog】WLW CoMar懶人包


CoMar懶人包(http://coolbirdsss.blogspot.com/)是一個非常好用的plugin,會將你常用的功能整個打包。例如

  • 重點畫底線,或
  • 嵌入彎彎與洋蔥頭的圖。就像下面截圖一樣。

image 

其中有一個「給我重點」的功能,請記得在Blog中將「設定/格式/轉換分行符號」設成「否」。才不會在利用WLW上傳時,出現格式上問題,而要將原本應該顯示的底線無法顯示。

image

 

Ed32. Copyright 2008 All Rights Reserved Revolution Two Church theme by Brian Gardner Converted into Blogger Template by Bloganol dot com