發表文章

目前顯示的是 2013的文章

Reversing mkimage

dd if="image   file " of="recovered file" bs=64 skip=1

uboot fw_printenv & fw_setenv 用法

1. 在 uboot 下 make env --> 會在 tool/env 裡得到 fw_printenv. 2. fw_setenv 和 fw_printenv 是同一個執行檔, 用 copy 或 link 都可. fw_env.config 是 決定你的 uboot 的 設定, 必須放在 /etc 下. 範例如下: 因為我用 REDUNDAND 所以要建兩個 mtd, 如下, 下面兩個範例, 不同在於 reundand env 有沒有在不同的 mtd. ================================================================================================== # MTD device name       Device offset   Env. size       Flash sector size       Number of sectors /dev/mtd1               0x0000          0x2000          0x20000 1 /dev/mtd2               0x0000          0x2000          0x20000 1 /etc # cat /proc/mtd  dev:    size   erasesize  name mtd0: 00080000 00020000 "U-Boot" mtd1: 00040000 00020000 "U-Boot Env" mtd2: 00040000 00020000 "Backup U-Boot Env" ================================================================================================== # MTD device name       Device offset   Env. size       Flash sector size       Number of sectors /dev/mtd1          

gzip: initrd.img: unknown suffix -- ignored

gzip 只認識 .gz 的檔案,  所以將 initrd.img 改成 imitrd.gz gzip -d initrd.gz   → OK

linux gpio_led framework 用法

1. 先將 menuconfig 裡 LED Trigger support 打開  Device Drivers  --->  LED Support  --->  LED Trigger support  --->  LED Timer Trigger                                                                    |->  LED Heartbeat Trigger                                                                    |->  LED backlight Trigger                                                                    |->  LED GPIO Trigger                                                                    |->  LED Default ON Trigger 2. 將 gpio-key 定義好, 並註冊. struct gpio_led { const char *name; const char *default_trigger; unsigned gpio; unsigned active_low : 1; unsigned retain_state_suspended : 1; unsigned default_state : 2; /* default_state should be one of LEDS_GPIO_DEFSTATE_(ON|OFF|KEEP) */ }; struct gpio_led_platform_data { int num_leds; struct gpio_led *leds; int (*gpio_blink_set)(unsigned gpio, int state, unsign

linux gpio_keys framework 用法

1. 先將 menuconfig 裡 GPIO Buttons 打開  Device Drivers  --->  Input device support  --->  Keyboards  --->  GPIO Buttons 2. 將 gpio-key 定義好, 並註冊. struct gpio_keys_button { /* Configuration parameters */ int code; /* input event code (KEY_*, SW_*) */ int gpio; int active_low; char *desc; int type; /* input event type (EV_KEY, EV_SW) */ int wakeup; /* configure the button as a wake-up source */ int debounce_interval; /* debounce ticks interval in msecs */ bool can_disable; }; struct gpio_keys_platform_data { struct gpio_keys_button *buttons; int nbuttons; unsigned int poll_interval; /* polling interval in msecs -   for polling driver only */ unsigned int rep:1; /* enable input subsystem auto repeat */ int (*enable)(struct device *dev); void (*disable)(struct device *dev); }; #include #include static struct gpio_keys_button bfin_gpio_keys_table[] = { { .code = KEY_POWER, /* See include/linux/

shell script 小程式

1. 利用 smartctl 讀硬碟溫度     smartctl -d ata -A /dev/sda | grep Tempera | cut -c 88-90

RPATH RUNPATH 和 LD_LIBRARY_PATH

reference: http://www.cnblogs.com/jibin/archive/2012/05/21/cadevtips0x0101.html

Cross Compiling Python for Embedded Linux

reference :  http://randomsplat.com/id5-cross-compiling-python-for-embedded-linux.html http://www.trevorbowen.com/2013/10/07/cross-compiling-python-2-7-5-for-embedded-linux/

pkg-config & cross compiling

別人寫得, 先紀錄一下. reference: http://dabod.blogspot.tw/2009/06/pkg-config-cross-compiling.html 想成功的 build open source package, 一定要先搞清楚 pkg-config. 支援的 pkg-config 的 package 在安裝時會將 .pc 檔裝到 /usr/lib/pkgconfig 目錄中 (當然, 這些是指 host 端的 package), 裡面包含了有 package 的版本, header files 所在目錄, libraries 所在目錄, 相依的其他 package 名稱...可用指令 pkg-config 來 query. 使用法就不說明了, 看文件應該很容易懂才是. 在網上常看到有人在問: build XXX package 時 pkg-config 一直說找不到 OOO, 明明就有裝呀, 怎麼.... build XXX package 時 pkg-config 一直說 OOO 的版本小於 mm.nn, 明明就是 aa.bb 呀, 怎麼.... 在 cross compiler 時, 我們是不會把 build 好的 package 放在跟 host 一樣的目錄的 (不然, 同名的 file 相互 overwrite, 那 host 以後肯定出問題). 所以, 想當然爾, pkg-config 回報的 package 路徑也會不同於 native build. 上面那個找不到/版本跟預期不同的問題, 情況通常是沒有將給 target 用的 package 安裝路徑提供給 pkg-config. 怎麼給呢? "man pkg-config" 一下 PKG_CONFIG_PATH A colon-separated (on Windows, semicolon-separated) list of directories to search for .pc files. The default directory will always be searched after searching the path; the default is lib‐ dir/pkgconfig:datadir/pkg

How to switch between users on one terminal?

How about using the  su  command? $ whoami user1 $ su - user2 Password: $ whoami user2 $ exit logout If you want to log in as root, there's no need to specify username: $ whoami user1 $ su - Password: $ whoami root $ exit logout Generally, you can use  sudo  to launch a new shell as the user you want; the  -u  flag lets you specify the username you want: $ whoami user1 $ sudo -u user2 zsh $ whoami user2 sudo -s  gives you a shell like  su ,  sudo -i  simulates login like  su - . Can be combined with  -u $user ,

rootdelay

rootdelay=    [KNL] Delay (in seconds) to pause before attempting to mount the root filesystem 前陣子在 mount NFS 時, 發現 giga lan mount 不成功, 改用 10/100 就可以. 研究好久發現只要在 boot commamd 加上 rootdelay=5, mount NFS 時就不會有問題. 這應該是 driver 的問題吧, 不是所以平台都需要.

修改 Fedora yum server

可上下面網站找尋 http://mirrors.fedoraproject.org/publiclist/ 不同的 fedora 版本, 有不同的 server @@@@ 以下以 Fedora 13 做範例 /etc/yum.repos.d 下有三個檔案 -rw-r--r--. 1 root root 1495 Aug 29 13:45 fedora.repo -rw-r--r--. 1 root root 1410 Aug 29 13:41 fedora-updates.repo -rw-r--r--. 1 root root 1492 Aug 29 13:41 fedora-updates-testing.repo 修改三個檔案中的 baseurl 或 mirrorlist 成你要的 server vim fedora.repo [fedora] name=Fedora $releasever - $basearch failovermethod=priority #baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/ #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch baseurl=http://ftp.cuhk.edu.hk/pub/linux/fedora-archive/fedora/linux/releases/$releasever/Everything/$basearch/os/ enabled=1 metadata_expire=7d gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch [fedora-debuginfo] name=Fedora $releasever - $basearch - Debug failovermethod=priority #baseurl=http://downloa

Fedora ftp server 使用 vsftp

Fedora ftp server 使用 vsftp yum install vsftpd yum install ftp /etc/init.d/vsftpd start or /etc/init.d/vsftpd restart 利用下面指令看是否有成功 netstat -tulnp| grep 21 tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      1717/vsftpd 如果要將vsftpd加入服務,只要輸入chkconfig vsftpd on 利用 xinetd 來啟動會失敗, 與網路上說的不同, 原因不明. ////////////////////////////////////////////////////////////////////////////////////////////////////////// vsftp 預設是 standalone mode, 就是要自行打開 如果要藉由 xinetd 來啟動,  cp /usr/share/doc/vsftpd-2.3.4/vsftpd.xinetd /etc/xinetd.d/vsftpd 並將 disable = yes --> disable = no /etc/init.d/xinetd restart netstat -tulnp| grep 21 tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      1739/xinetd 也可利用 chkconfig 來看是否有啟動 xinetd based services: tftp:           on vsftpd:         on ////////////////////////////////////////////////////////////////////////////////////////////////////////// 測試方法: 1. 利用 ftp://IP Address 可

使用 crosstool-NG 產生 toolchain

這裡是使用 1.18 版來做 預設都在 HOME 資料夾裡 安裝 crosstool-ng # cd ~ # wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.18.0.tar.bz2 # tar xf crosstool-ng-1.18.0.tar.bz2 # cd crosstool-ng-1.18.0 # ./configure --prefix=`pwd`/crosstool # make && make install # export PATH="${PATH}:`pwd`/crosstool/bin" # ct-ng help This is crosstool-NG version 1.18.0 表示安裝成功... 安裝 cross compilier toolchain # cd ~ # mkdir crosstool # cd crosstool # ct-ng list-samples  --> 可以看到支援的平台 [G.X]   arm-cortex_a15-linux-gnueabi [G..]   arm-cortex_a8-linux-gnueabi [G..]   arm-davinci-linux-gnueabi [G..]   arm-unknown-eabi [G..]   arm-unknown-linux-gnueabi [G.X]   arm-unknown-linux-uclibcgnueabi [G..]   x86_64-unknown-linux-gnu [G..]   x86_64-unknown-linux-uclibc [G.X]   x86_64-unknown-mingw32 # ct-ng show-arm-unknown-linux-gnueabi  -->  toolchain 環境     OS             : linux-3.7.3     Companion libs : gmp-4.3.2 mpfr-2.4.2 libelf-0.8.13     binuti