2013年11月24日 星期日

如何新增 icewm 選單圖示

目的:如何新增 icewm 選單圖示

1. 圖示儲存路徑(目錄)

   /usr/share/pixmaps
   /usr/share/icons

2. 觀看圖片程式:geeqie
   編輯圖片程式:gimp


3. 下載圖片,要作圖示以正方形為宜,流程如下:
   3.1 以 gimp 編輯圖形,並切成正方形,
   3.2 匯出為 kerorohead.png

4. 以 geeqie 觀看剛剛所作之圖示

5. 加入 icewm 選單
   cd /etc/X11/icewm
   以 root 權限編輯 menu 這個檔案

   把圖示欄位寫成絕對路徑,如底下所示:

   prog "urxvt24" /home/eecs/kerorohead.png urxvt24


6. icewm 的系統設定檔 /etc/X11/icewm/preferences,其中有一行 IconPath,設定如
   底下所示:

IconPath="/usr/share/pixmaps:/usr/share/icons:/usr/share/icons/icewm_icons"

   如此一來即可使用

   /usr/share/pixmaps
   /usr/share/icons
   /usr/share/icons/icewm_icons

   這三個目錄來存放 icon (圖示)

7. 以 root 權限把編輯完的圖示存至圖示目錄

   # cp /home/eecs/kerorohead.png /usr/share/icons

   複製完畢後請以 ls -l /usr/share/icons 來檢視此目錄是否有 kerorohead.png

8. 接下來請在 /etc/X11/icewm/menu 中設定圖示,而且無需加上路徑。

2013年11月11日 星期一

使用 qemu 啟動虛擬 ARM 機器

0. 先以 qemu 安裝 ARM 版 Debian Linux 至 arm.img

檔案位置:

~/qemu_image/                   -> 所有虛擬 ARM 檔案目錄
            /arm.img            -> 虛擬 ARM 硬碟映像檔
            /vmlinuz-3.2.0-4-versatile          -> ARM 開機核心
            /initrd.img-3.2.0-4-versatile       -> ARM 開機 initrd
            /runarm.sh          -> 開機 script


0. 先執行底下指令:
# losetup -a
此時會看到目前沒有輸出。

1. 接著將開機核心擷取出來:

# losetup /dev/loop0 arm.img
再執行
# losetup -a
其輸出如下:
/dev/loop0: [0831]:31198060 (/home/herman/qemu_image/arm.img)
這表示 /dev/loop0 與 arm.img 已經連接 (attach) 在一起,之後我們可以使用 fdisk -lu /dev/loop0 來觀看是否為當初安裝時所分割的磁區:

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1            2048     3913727     1955840   83  Linux
/dev/loop0p2         3915774     4192255      138241    5  Extended
/dev/loop0p5         3915776     4192255      138240   82  Linux swap / Solaris

開機核心位於 ?

/boot

因此,我們要將 /dev/loop0p1 掛載上來,再至其 boot 目錄擷取 ARM 版 Linux 核心及 initrd。

losetup -o `expr 2048 \* 512` /dev/loop1 /dev/loop0

接著我們可以將 /dev/loop1 掛載至 /mnt 目錄下:

mount /dev/loop1 /mnt

掛載完後可以執行 df -h /mnt 來觀看結果:

檔案系統        容量  已用  可用 已用% 掛載點
/dev/loop1      1.9G  506M  1.3G   30% /mnt

接著可以至 /mnt/boot 目錄下擷取 Linux 核心

 cp /mnt/boot/initrd.img-3.2.0-4-versatile .
cp /mnt/boot/vmlinuz-3.2.0-4-versatile .

如此一來即完成核心擷取,接下來可以進行開機作業。

2. 使用 qemu 來開機

請將底下指令另存 runarm.sh 以便進行開機:

qemu-system-arm -M versatilepb -m 512 \
        -kernel ./vmlinuz-3.2.0-4-versatile \
        -initrd ./initrd.img-3.2.0-4-versatile \
        -hda arm.img \
        -append "root=/dev/sda1"


接著請執行 sh runarm.sh

 3. 登入系統,確定我們是在 ARM 的機器中

請在登入畫面使用 root 帳號、密碼,看能不能登入,並執行

cat /proc/cpuinfo

來觀看 CPU 狀態。


如果在 qemu 視窗中點擊滑鼠將會使 qemu 把滑鼠「抓走」,此時我們要按

Ctrl+Alt 讓 qemu 將滑鼠「釋放」出來,否則會沒有遊標可用,要確定目前

滑鼠是否有被 qemu 抓走請看 qemu 之狀態列。

在 qemu 畫面下按 Ctrl+Alt+f 可以放大/縮小全螢幕狀態。

 4. 安裝 arm 的 Xwindow,並進入 Xwindow 環境

4.1 將 /etc/apt/sources.list 中的鏡像站改至校內:

加上這兩行

deb ftp://120.117.72.71/debian wheezy main contrib non-free
deb ftp://120.117.72.71/debian wheezy-updates main contrib non-free

將 deb-src 註解,保留 security.debian.org 設定


修改完畢後執行 apt-get update

再安裝 xorg icewm 套件

4.2 安裝完畢後以一般 user 登入

登入完畢後執行

startx

看看能不能進入 Xwindow

5. 清除已安裝之 .deb 檔案

# apt-get clean

清除完畢可以執行 df -h 來看目前磁碟空間

6. 依照 X86 流程,安裝 iceweasel,並觀察能否上網。

2013年11月10日 星期日

啟動音效卡支援

目的:啟動音效卡支援

1. 使用 id 指令檢查自己是否有 audio 次群組

id

其輸出如下:

uid=1000(herman) gid=1000(herman) groups=1000(herman),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev)

若無 audio 次群組,請編輯 /etc/group 檔案,在 audio 行加上 eecs,如底下所示:

audio:x:29:eecs

改完要登出系統,再重新登入一次,並執行 id 指令確認是否有 audio 次群組。

2. 安裝 alsamixergui

apt-get install alsamixergui

3. 安裝播 mp3 程式 audacious

apt-get install audacious

4. 啟動 audacious 並下載 mp3 檔案進行測試

5. 安裝 flash player

請確定 /etc/apt/sources.list 中的設定有 non-free,如下所示:

 deb ftp://120.117.72.71/debian wheezy main contrib non-free

接著安裝 flashplugin-nonfree 套件,然後重開 firefox,再連上 youtube 等影音網站看看是否可以看到電影。

2013年10月28日 星期一

安裝 ARM toolchain (舊/2014版)

目的:安裝 ARM toolchain


Embedded Debian Linux 的官方網站在:http://www.emdebian.org/crosstools.html,要進行 Embedded Debian Linux 開發,首先我們要將 Embedded Linux 的套件庫新增至系統中。

1. 在 /etc/apt/sources.list 新增底下二行:

deb http://www.emdebian.org/debian/ squeeze main
deb http://opensource.nchc.org.tw/debian/ squeeze main contrib non-free

2. 更新套件狀態

apt-get update

此時我們會發現系統有底下警告訊息:

W: GPG error: http://www.emdebian.org wheezy Release: 由於無法取得它們的公鑰,以下簽章無法進行驗證: NO_PUBKEY B5B7720097BB3B58

我們可以安裝 emdebian-archive-keyring 套件來解決上面的警告訊息,指令如下:

apt-get install emdebian-archive-keyring

安裝完再執行 apt-get update 即無錯誤訊息。

3. 安裝 ARM ToolChain

請安裝底下套件:

gcc-4.4-arm-linux-gnueabi
cpp-4.4-arm-linux-gnueabi
g++-4.4-arm-linux-gnueabi

我們在安裝時會發現系統是由 http://www.emdebian.org 網站下載相關套件,而非 Debian Linux 鏡像站,裝完後的可執行檔名稱如下:

arm-linux-gnueabi-gcc-4.4
arm-linux-gnueabi-g++-4.4
arm-linux-gnueabi-cpp-4.4


4. 驗證 ARM ToolChain

如果我們使用一般 gcc 來觀看版本的話,指令如下:

gcc -v

其輸出為:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.7.2-5' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.7.2 (Debian 4.7.2-5)

其中有一行

Target: x86_64-linux-gnu

告訴我們此 C 編譯器之目標為 x86_64 平台,現在我們執行 ARM gcc 來看其版本,指令如下:

arm-linux-gnueabi-gcc-4.7 -v

其輸出為:

Using built-in specs.
COLLECT_GCC=arm-linux-gnueabi-gcc-4.7
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabi/4.7/lto-wrapper
Target: arm-linux-gnueabi
Configured with: ../src/configure -v --with-pkgversion='Debian 4.7.2-4' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/arm-linux-gnueabi/include/c++/4.7.2 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libitm --enable-plugin --enable-objc-gc --disable-sjlj-exceptions --with-arch=armv4t --with-float=soft --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-linux-gnueabi --program-prefix=arm-linux-gnueabi- --includedir=/usr/arm-linux-gnueabi/include --with-headers=/usr/arm-linux-gnueabi/include --with-libs=/usr/arm-linux-gnueabi/lib
Thread model: posix
gcc version 4.7.2 (Debian 4.7.2-4)

我們可以由上面的 Target 這行看到其目標為 arm-linux-gnueabi


5. 實際編譯 C 程式

在此以 C 程式第一個範例 hello.c 作編譯測試,其原始碼如下:

void main(void)
{
  printf("Hello World\n");
}

我們先以 gcc 來編譯此程式,指令如下:

gcc hello.c -o hello

此時會產生一個 hello 的可執行檔,其屬性如下:

-rwxr-xr-x 1 herman herman 6751 10月 29 09:33 hello

我們可以使用 file hello 來觀看其檔案資訊,輸出如下:

hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0xf29466ceaf1115e4b88f524d8432210a2a1ea1ca, not stripped

從上述資訊我們可以看到 hello 是 x86-64 的可執行檔,接下來我們以 ARM gcc 來編譯,指令如下:

arm-linux-gnueabi-gcc-4.7 hello.c -o hello_arm

此時會產生一個 hello_arm 的可執行檔,我們可以使用 file hello_arm 來觀看其檔案資訊,輸出如下:

hello_arm: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0x8f91e5977bcd09b9b94028392cdd29560fb655ee, not stripped

從上述資訊我們可以看到 hello 是 ARM 的可執行檔。到這裡為止,我們已經初步完成 ARM ToolChain 安裝,接下來我們將使用此 Tool Chian 來編譯 ARM 版 Linux 核心以及 bootloader,並將系統植入先前完成之 sdcard.img 中,再以 qemu 來開機。

2013年10月24日 星期四

NGSPICE 的 .control 語法

.control

set hcopydevtype=postscript
set hcopypscolor=true

set color1=rgb:0/0/0
set color0=rgb:f/f/f
set hcopywidth=640
set hcopyheight=400


hardcopy file.eps v(2) v(1)


其中:
 
set color1=rgb:0/0/0
set color0=rgb:f/f/f

是將黑底白線,改為白底黑線。

而
 
set hcopywidth=640
set hcopyheight=400

是設定存檔圖片之寬為 640 點,高為 400 點。

2013年10月17日 星期四

XCircuit 使用方式

1. 安裝

apt-get install xcircuit

2. 啟動

xcircuit &


3. 使用

z -> 縮小顯示比例
Z -> 放大顯示比例

紅點是格點,可以按 + - 來改變格點間距。


4.
右側是工具圖示,底下是工具介紹

4.1 畫線

4.1 畫線

滑鼠左鍵是畫線、定義轉折點
滑鼠右鍵是取消轉折點、取消畫線
滑鼠中鍵是決定畫線

4.2 畫方塊


4.3 畫圓/橢圓

首先選擇畫圓圖示,此時遊標會變成圓形,接著在格點上點滑鼠左鍵,會出現一個圓。

此時再按滑鼠左鍵,會變成畫弧模式,我們可以選擇我們要的弧形,

再按左鍵可以選擇圓弧的起點,接著按左鍵可以選圓弧終點。

畫完弧形後再按左鍵可以調整圓形比例,如果要畫橢圓的話可以在此階段處理。

如果我們再按左鍵的話,可以繼續調整,假設已經畫完的話,

可以直接按滑鼠中鍵結束繪圖。

4.4 選擇圖形/取消選擇圖形

將滑鼠遊標移至某個圖形上,再按中鍵可以把該物件變成黃色,此時該物件即被選擇。

多重選擇作法 1 - 使用滑鼠中鍵一一選擇物件
多重選擇作法 2 - 使用滑鼠中鍵拉一個方框,裡面的物件都會被選取。

按滑鼠右鍵,可以取消選擇圖形

4.5 刪除圖形

先選擇圖形,再按 Del 即可刪除圖形。

4.6 還原上一步

如果作錯事的話,可以按 u 選原上一步。

4.7 叫出內建元件庫 (Library)

按 l 可以叫出元件庫,再按 l 可以切換元件庫



4.8 將元件顯示移至畫面正中央

先將滑鼠遊標對準元件,再按 p 即可將該元件顯示移至畫面正中央。

4.9 移動元件

先以中鍵選擇要移動的元件,再按左鍵抓取該物件,然後移動該物件。


4.10 複製元件

將遊標移至要複製的元件,然後按 c 即可複製,此時移動滑鼠,我們可以看到分身元件。

請在要放置的位置上按滑鼠中鍵即可貼上,若按左鍵的話會蓋印章。

4.11 旋轉元件

要旋轉元件,請先選擇要旋轉之元件,再按右側工具圖示,或是

Edit -> Rotate/Flip 選擇來旋轉元件


4.12 加線的連接點/跳線

請按 l 進入元件,再選擇連接點或跳線。

連接點也可以按 . 直接打上去。


4.13 打字

請在畫面按 t 即可輸入字元

按 shift + t 可以幫線/端點標名字

標端點有個至高無上的指導原則:不要壓到線 + 在端點旁邊


4.14 上色

先選擇要上色的元件 (線、元件、字),再點右側顏色圖示來選顏色。

請注意,所有元件的顏色要一致,所有線段的顏色要一致,所有端點的顏色要一致。


4.15 編輯已存在之元件

請選擇要編輯的元件,再按 e 即可再編輯此元件。

4.16 切換多檔編輯

按 1 2 3 4 5 6 7 8 9 0

可以切換至不同頁面,編輯不同檔案。

2013年10月14日 星期一

Qemu ARM 虛擬機器安裝

1. 安裝 qemu

apt-get install qemu

2. 建立 ~/qemu_image 目錄

~$ mkdir qemu_image

3. 切換至 ~/qemu_image 目錄

cd ~/qemu_image

4. 建立 qemu-image 檔

qemu-img create arm.img 2G

5. 啟動 ARM Debian Linux 安裝畫面

5.1 下載 Debian ARM 安裝光碟至 ~/qemu_image 目錄中

ftp://ftp.twaren.net/Linux/Debian/debian-cd/7.6.0/armel/iso-cd/debian-7.6.0-armel-CD-1.iso

5.2 下載 Debian ARM 安裝開機檔至 ~/qemu_image/install 目錄中

將底下的兩個檔案複製到 ~/qemu_image/install 目錄中


ftp://ftp.debian.org/debian/dists/wheezy/main/installer-armel/current/images/versatile/netboot/initrd.gz


ftp://ftp.debian.org/debian/dists/wheezy/main/installer-armel/current/images/versatile/netboot/vmlinuz-3.2.0-4-versatile

5.3 啟動安裝畫面,安裝完 base 系統,至重新開機為止。

將底下指令另存為 buildarm.sh,再在 ~/qemu_image 目錄下執行即可。

qemu-system-arm -M versatilepb -m 512 \
        -kernel ./install/vmlinuz-3.2.0-4-versatile \
        -initrd ./install/initrd.gz \
        -hda arm.img \
        -append "root=/dev/sda1"

請執行 buildarm.sh

~/qemu_image/sh buildarm.sh

然後一步步安裝 ARM 版  Debian Linux。


6. 使用 Qemu 開機