這篇文章受密碼保護,請輸入密碼後查看內容。
- Jul 29 Thu 2010 16:23
-
原來
- Jul 28 Wed 2010 19:13
-
Close-hearted v.s. Closed heart.
最近有點自閉傾向,換了新工作,就會有新環境的不適應。跟同事都不熟,看同事三五成群的聊天挺熱絡的,更覺得自己似乎無法融入這個環境。
對著電腦說話似乎很簡單,不用考慮人與人之間不同的想法,不用去猜測對方的感受,不用去擔心自己的話會不會讓對方誤解,甚至自己的好意反而帶給了對方壓力。
更懶的去跟同事social了,同事也不是壞人,但就是提不起勁去參加別人的談話,或是找話題聊天。
最近雖然有了煙友,偶爾去抽個煙,卻總是想快快抽完,結束言不及義的話題。
對著電腦說話似乎很簡單,不用考慮人與人之間不同的想法,不用去猜測對方的感受,不用去擔心自己的話會不會讓對方誤解,甚至自己的好意反而帶給了對方壓力。
更懶的去跟同事social了,同事也不是壞人,但就是提不起勁去參加別人的談話,或是找話題聊天。
最近雖然有了煙友,偶爾去抽個煙,卻總是想快快抽完,結束言不及義的話題。
- Jul 28 Wed 2010 18:03
-
用dd寫入image,你幹過嗎?

廢言
用dd,總是覺得毛毛的,總有d完重開就會死掉的感覺,總讓我再次想起我的eeemedia usb。
開始
一個完整可開機的image,想要對其做更改,但又不想裝進storage(因為裝完再dd出來size會變大),有方法如下:
- Apr 22 Thu 2010 09:19
-
[usb system] overview

USB是Universal Serial Bus,是一個讓電腦跟週邊設備 (包括usb storage,HID, 數位相機等)。版本區分為1.1,2.0,以及最新的3.0。其頻寬從1.5MB/s, 60MB/s,提升到625MB/s。新版皆向前相容。另一特色就是hotplug。
架構上是由host controller和hubs組成,其中最上層的稱為root hub,支援到127個devices,包括串接的hub。host controller是介於os和usb device之間的一層hardware interface。目前有三種interfaces (register level): OHCI (open, by compaq, 1.1),UHCI (universal, by intel,1,1),EHCI (Enhanced, by intel,2.0)。
hardware vendor也提供一層HCD (Host
Controller Device) interface讓system software跟device互動
- Apr 19 Mon 2010 15:59
-
[archlinux] function key setting on xfce

灌好archlinux後,只有螢幕的明暗會動,其他像Touchpad,audio control都是沒反應的,可以做一些customise
以audio為例,X可接受的keycode如下:
而linux下可用amixer控制sound card。兩者結合一下,就能客製化function key。
- Apr 19 Mon 2010 10:02
-
keyboard/mouse mapping

keyboard mapping在定義上分成三個層次
1. physycal: 指的是鍵盤本身的定義,會帶一組keycode,如a是38,b是56 (可用xev查詢)。
2. os level: 指的是在os層的對應碼,如a是0x0061, b是0x0062 (可用xmodmap查詢)
- Apr 13 Tue 2010 18:59
-
[archlinux] 建置arm rootfs
在ubuntu下,安裝qemu-arm-static後,把/usr/bin/qemu-arm-static 複製到target的/usr/bin/下就,就可以很容易的chroot成功。而在archlinux下無此套件,workaround如下:
1.下載qemu-arm-static的deb套件,解開取得qemu-arm-static的binary,複製到target的/usr/bin
2. 從ubuntu偷/var/lib/binfmts 和/var/cache/binfmts,丟到一樣的位置
1.下載qemu-arm-static的deb套件,解開取得qemu-arm-static的binary,複製到target的/usr/bin
2. 從ubuntu偷/var/lib/binfmts 和/var/cache/binfmts,丟到一樣的位置
- Apr 08 Thu 2010 17:48
-
arch linux 安裝筆記
下載完後,直接拿來開機,介面跟古早的linux安裝很像,就是dialog,把它當windows一步一步裝,有點sense的話,還蠻直覺的。裝完之後就是一個console,再來就是把應用程式裝上去:
1. 編輯 /etc/pacman.d/mirrorlist: 打開一些mirror site,台灣可新增如下
#Taiwan
Server=ftp://ftp.mirror.tw/pub/ArchLinux/$repo/os/i686
Server=http://ftp.mirror.tw/pub/ArchLinux/$repo/os/i686
2. 先做一次upgrade: pacman -Syn。不熟悉pacman的話可參照指令對應。
1. 編輯 /etc/pacman.d/mirrorlist: 打開一些mirror site,台灣可新增如下
#Taiwan
Server=ftp://ftp.mirror.tw/pub/ArchLinux/$repo/os/i686
Server=http://ftp.mirror.tw/pub/ArchLinux/$repo/os/i686
2. 先做一次upgrade: pacman -Syn。不熟悉pacman的話可參照指令對應。
- Mar 02 Tue 2010 23:23
-
FPS (Frame Per Second) V.S. Vsync (frame rate, refresh rate)
- Feb 24 Wed 2010 08:45
-
想知道grub跟initrd的關係嗎
請見楊小斯作品集之initrd與initramfs
- Feb 01 Mon 2010 20:32
-
我所知道的GPIO
Documentation
先從documentation消化一點介紹: A "General Purpose Input/Output" (GPIO) is a flexible software-controlled digital signal。 既然是數位訊號數位訊號在computer science,那就是只有0(low)/1(high),在embedded 平台上是常用且好用的東西。SoC上會有一堆GPIO,多達一百多根,沒有被設為alternative function (註1)的都可以拿來GPIO。從schematics上看就是一個點,從CPU拉出來,可能拉到power button設為XEINT當wakeup event,或是拉到analog codec設gpi當jack detect,或是設成gpo用來表示目前系統狀態 (1: normal; 0 suspend)。
GPIO的用途大概有以下幾種:
先從documentation消化一點介紹: A "General Purpose Input/Output" (GPIO) is a flexible software-controlled digital signal。 既然是數位訊號數位訊號在computer science,那就是只有0(low)/1(high),在embedded 平台上是常用且好用的東西。SoC上會有一堆GPIO,多達一百多根,沒有被設為alternative function (註1)的都可以拿來GPIO。從schematics上看就是一個點,從CPU拉出來,可能拉到power button設為XEINT當wakeup event,或是拉到analog codec設gpi當jack detect,或是設成gpo用來表示目前系統狀態 (1: normal; 0 suspend)。
GPIO的用途大概有以下幾種:
- Feb 01 Mon 2010 19:15
-
[轉貼騙點擊率]busybox初探
Linux軟砲楊小斯再度發表新作,整篇拿起來抄,感覺良好。不過連段落title都跟本人的一模一樣,也算是一報還一報。
<前言>
有時呢 系統掛了 要使用 live-cd 又會覺的要開很久 可是有時僅僅只是希望做一些簡單的事 這時我們就可以使用 busybox 來幫我們做一些簡單的事情.
以下所示範是在 ubuntu based 的 distribution.
<實作>
首先在console 下先搜尋 busybox-static 的套件. ( sudo apt-cache search busybox-static )
busybox-static - Standalone rescue shell with tons of builtin utilities
二話不說馬上把它裝起來 ( sudo apt-get install busybox-static )
如此就完成了第一步
接下來我們必需要建立幾個需要的目錄
mkdir busybox-prepare
並在這個目錄下在建出 proc, sys, dev, bin, sbin, etc, lib
為什麼會知道是這幾個目錄呢? 其實跟據 FHS 的文件 其實是有定義的 可以參考 FHS 不過我在此也簡易的描述一下 因為在開機過程中首先被掛載的一定是 / (root), 所以與開機相關的檔案一定不可以跟 / 分開.
舉個例好了,比如我們經常使用的 /home 和 一般安裝的 app 通都是裝到 usr (unix software resource) 這個 folder 裡面. 這兩個對系統而言是可以存在不同的分割區的, 因為開機即始沒有它也不會有啥影響的.
或許有人會困惑為什麼 /boot 沒有在此出現 不是存放著 kernel 和 ramdisk 嗎?
其實 /boot這一層的東西是由grub/grub2幫我們處理掉的 因為 grub有能力去處理 filesystem 的檔案 所以 是不一定要跟 / 處在同一個分割區的.
哈好像扯遠了....
接下來 我們把剛剛裝下來的 busybox-static 的 binary 檔案 從 /bin/busybox 貼到 busybox-prepare/bin/busybox
並建出兩個連結
ln -s bin/busybox busybox-prepare/init
ln -s bin/busybox busybox-prepare/bin/sh
除此之外還要新增一個 etc/inittab 因為我們是用 busybox init 所以 default 會讀取這個檔案
cat > busybox-prepare/etc/inittab <<EOF
console::sysinit:-/etc/init.d/rcS
EOF
chmod 755 busybox-prepare/etc/inittab
把所有你想要做的動作都寫在 rcS 這個檔案 就可以囉
cat > busybox-prepare/etc/init.d/rcS <<EOF
#!/bin/sh
mount -t proc proc /proc
mount -t sysfs sysfs /sys
/bin/sh
EOF
sudo mknod busybox-prepare/dev/concolse c 5 1
到此一個簡易的 busybox 的環境就完成囉!
我們將這個 directory 打包成 gzip 壓縮的 cpio format
到 busybox-prepare這一層目錄 find . | cpio -H newc -o | gzip -9 >../initrd.gz
然後我們可以藉由 qemu 來實驗這個 initrd.gz
sudo qemu -kernel /boot/vmlinuz-2.6.27-11-generic -initrd ../initrd.gz -hda /dev/null
當然 這個 kernel 你可以替換成你桌機的 kernel 不需要跟我的一樣.
當然看到下圖時你就成功的開進去囉.
在這個 shell 中,可以觀察到 sysfs 和 proc 都有被成功的 mount 起來 based on the /etc/inittab 所指定的 rcS
不過看到此時不禁會有一個困惑 為什麼console 會抱怨 啥 job control turned off 這是啥??
其實 這是因為 /dev/console 並不 support 為 control terminal 做法就是要把它改成 tty1 這一類的 terminal 才不會有這樣的問題. 你可以在剛剛的 console 做一個簡單的實驗 while true; do dmesg -c; done
這時不管你怎麼壓 Ctrl+C 就是無法跳出,這樣的確是有一點麻煩的啦...
所以我們可以這樣修改
mknod busybox-prepare/dev/tty1 c 4 1
mknod busybox-prepare/dev/tty5 c 4 5 ( 因為 default 的 busybox shell 會將 log 寫在 tty5, 在剛剛的圖片可以很明確的看出有吐出這樣的訊息 )
再將
console::sysinit:-/etc/init.d/rcS -> tty1::sysinit:-/etc/init.d/rcS
這樣就沒問題了.
不過你也可以參考官網的說明 busybox-job control.
<前言>
有時呢 系統掛了 要使用 live-cd 又會覺的要開很久 可是有時僅僅只是希望做一些簡單的事 這時我們就可以使用 busybox 來幫我們做一些簡單的事情.
以下所示範是在 ubuntu based 的 distribution.
<實作>
首先在console 下先搜尋 busybox-static 的套件. ( sudo apt-cache search busybox-static )
busybox-static - Standalone rescue shell with tons of builtin utilities
二話不說馬上把它裝起來 ( sudo apt-get install busybox-static )
如此就完成了第一步
接下來我們必需要建立幾個需要的目錄
mkdir busybox-prepare
並在這個目錄下在建出 proc, sys, dev, bin, sbin, etc, lib
為什麼會知道是這幾個目錄呢? 其實跟據 FHS 的文件 其實是有定義的 可以參考 FHS 不過我在此也簡易的描述一下 因為在開機過程中首先被掛載的一定是 / (root), 所以與開機相關的檔案一定不可以跟 / 分開.
舉個例好了,比如我們經常使用的 /home 和 一般安裝的 app 通都是裝到 usr (unix software resource) 這個 folder 裡面. 這兩個對系統而言是可以存在不同的分割區的, 因為開機即始沒有它也不會有啥影響的.
或許有人會困惑為什麼 /boot 沒有在此出現 不是存放著 kernel 和 ramdisk 嗎?
其實 /boot這一層的東西是由grub/grub2幫我們處理掉的 因為 grub有能力去處理 filesystem 的檔案 所以 是不一定要跟 / 處在同一個分割區的.
哈好像扯遠了....
接下來 我們把剛剛裝下來的 busybox-static 的 binary 檔案 從 /bin/busybox 貼到 busybox-prepare/bin/busybox
並建出兩個連結
ln -s bin/busybox busybox-prepare/init
ln -s bin/busybox busybox-prepare/bin/sh
除此之外還要新增一個 etc/inittab 因為我們是用 busybox init 所以 default 會讀取這個檔案
cat > busybox-prepare/etc/inittab <<EOF
console::sysinit:-/etc/init.d/rcS
EOF
chmod 755 busybox-prepare/etc/inittab
把所有你想要做的動作都寫在 rcS 這個檔案 就可以囉
cat > busybox-prepare/etc/init.d/rcS <<EOF
#!/bin/sh
mount -t proc proc /proc
mount -t sysfs sysfs /sys
/bin/sh
EOF
sudo mknod busybox-prepare/dev/concolse c 5 1
到此一個簡易的 busybox 的環境就完成囉!
我們將這個 directory 打包成 gzip 壓縮的 cpio format
到 busybox-prepare這一層目錄 find . | cpio -H newc -o | gzip -9 >../initrd.gz
然後我們可以藉由 qemu 來實驗這個 initrd.gz
sudo qemu -kernel /boot/vmlinuz-2.6.27-11-generic -initrd ../initrd.gz -hda /dev/null
當然 這個 kernel 你可以替換成你桌機的 kernel 不需要跟我的一樣.
當然看到下圖時你就成功的開進去囉.
在這個 shell 中,可以觀察到 sysfs 和 proc 都有被成功的 mount 起來 based on the /etc/inittab 所指定的 rcS
不過看到此時不禁會有一個困惑 為什麼console 會抱怨 啥 job control turned off 這是啥??
其實 這是因為 /dev/console 並不 support 為 control terminal 做法就是要把它改成 tty1 這一類的 terminal 才不會有這樣的問題. 你可以在剛剛的 console 做一個簡單的實驗 while true; do dmesg -c; done
這時不管你怎麼壓 Ctrl+C 就是無法跳出,這樣的確是有一點麻煩的啦...
所以我們可以這樣修改
mknod busybox-prepare/dev/tty1 c 4 1
mknod busybox-prepare/dev/tty5 c 4 5 ( 因為 default 的 busybox shell 會將 log 寫在 tty5, 在剛剛的圖片可以很明確的看出有吐出這樣的訊息 )
再將
console::sysinit:-/etc/init.d/rcS -> tty1::sysinit:-/etc/init.d/rcS
這樣就沒問題了.
不過你也可以參考官網的說明 busybox-job control.