2010年10月14日 星期四

如何編譯 X-Loader ?

步驟一
下載x-loader http://git.igep.es/ 解壓縮

還 有到這裡下載toolchain 之後解壓到你的路徑
http://www.codesourcery.com/sgpp/lite/arm
步驟二
#make omap3530beagle_config

出現
rm -f include/config.h include/config.mk
Configuring for omap3devkit8000 board...

步驟三
#vim Makefile

修改
 55 ifndef CROSS_COMPILE
 56 CROSS_COMPILE = arm-none-linux-gnueabi-
 57 #CROSS_COMPILE = arm-linux-
 58 export  CROSS_COMPILE
 59 endif
成為
 55 ifndef CROSS_COMPILE
 56 CROSS_COMPILE = /{your path}/arm-none-linux-gnueabi-
 57 #CROSS_COMPILE = arm-linux-
 58 export  CROSS_COMPILE
 59 endif


步驟四
#make


reference:
http://focus.ti.com/general/docs/wtbu/wtbusplashcontent.tsp?templateId=6123&contentId=4750

https://gforge.ti.com/gf/project/bootloader/wiki/?pagename=X-Loader

2010年9月22日 星期三

.htaccess網頁認證 保護網頁目錄

作業系統 : Ubuntu 8.04LTS

1.編輯
# vim /etc/apache2/http.conf

將上述資料輸入進去存檔
/var/ww/webftp/ 為要保護的網頁目錄


2.新增.htaccess於/var/www/webftp/
# vim /var/www/webftp/.htaccess 

 
AuthName 為視窗的訊息
Authtype 認證模式
AuthUserFile 密碼檔的路徑(盡量別放在網頁目錄裡)
bohan 為使用者

3. 設定密碼
# htpasswd -c /var/www/.htpasswd bohan


4.畫面(Google瀏覽器)




2010年9月6日 星期一

Rsync 指令參數

Rsync 可用於主機資料同步 也可以用於異地備份

使用方法,可以參考這裡


-h , --help 顯示rsync求助資訊.

--version 顯示rsync版本.

-v , --verbose 複雜的輸出訊息.

-q , --quiet 安靜模式,幾乎沒有訊息產生.常用在以cron執行rsync.

-I, --ignore-times 通常rsync為了加快速度會忽略同樣檔案大小且同樣存取時間點的檔案.
可以透過此參數關閉此快速檢查.

--size-only rsync只檢查檔案大小是否改變,不管時間存取點是否改變.
通常用在mirror,且對方時間不太正確時.

-c, --checksum 在傳送之前透過128bit的md4檢查碼來檢查所有要傳送的檔案.(會拖慢速度.)

-a, --archive archive mode 權限保存模式,相當於 -rlptgoD 參數.
很快速的保存幾乎所有的權限設定,除了硬式連結(透過-H設定).

-r, --recursive 複製所有下層的資料(遞迴)

-R, --relative 使用相對路徑.
如: rsync foo/bar/foo.c remote:/tmp/ 在遠端產生/tmp/foo.c檔案
rsync -R foo/bar/foo.c remote:/tmp/ 在遠端產生/tmp/foo/bar/foo.c 檔案

-R, --no-relative 不使用相對路徑.

-b, --backup 目的地端先前已經存在的檔案在傳輸或刪除前會被備份.
--backup-dir=DIR 設定備份的資料夾.
--suffix=SUFFIX 指定備份的檔案名稱字尾形式(預設為~).

-K, --keep-dirlinks 接收方將連結到資料夾的檔案視為資料夾處理

-l, --links 複製所有的連結

-H, --hard-links 保留硬式連結

-p, --perms 保留檔案權限

-o, --owner 保留檔案擁有者(root only)

-g, --group 保留檔案群組

-D, --devices 保留device資訊(root only)

-t, --times 保留時間點

-n, --dry-run 不實際執行傳送,只顯示將會有的傳輸動作

-S, --sparse 嘗試去處理稀疏的檔案,讓這些檔案在目的端佔去較少的磁碟空間.

-W, --whole-file 複製所有的檔案,不額外作檢查.
--no-whole-file 關閉 --whole-file 參數

-x, --one-file-system 不要跨越檔案系統分界(只在一個檔案系統處理)

-B, --block-size=SIZE 強制透過rsync程式去比對修復block-sizeforce

-e --rsh=COMMAND 定義所使用的remote shell

--rsync-path=PATH 定義rsync在遠端機器存放資料的路徑

--existing 只比對更新目的端已經存在的檔案

--ignore-existing 忽略目的端已經存在的檔案(也就是不更新)

--delete 刪除傳送端已經不存在,而目的端存在的檔案

--delete-excluded 除了把傳送端已經不存在,而目的端存在的檔案刪除之外,
也刪除 --exclude 參數所包含的檔案.

--delete-after rsync預設會在檔案傳送前進行相關刪除動作確保接收端有足夠的檔案空間,
但可以透過 --delete-after 讓刪除動作在檔案傳送後再行刪除.

--ignore-errors 忽略任何錯誤既使是I/O error 也進行 --delete 刪除動作.

--max-delete=NUM 定義rsync不要刪除超過 NUM 個檔案.

--partial rsync若遇到傳輸過程中斷時,會把那些已經傳輸的檔案刪除.
在某種狀況下保留那些部分傳送的檔案是令人高興的. 你可以透過 --partial 參數達到這個目的.

--partial-dir=DIR 在 --partial 參數啟動時,你還可以定義rsync把那些部分傳送的檔案
寫入定義的資料夾,而非直接寫入目的端.需要注意的是, 此資料夾不應該被其他使用者可以寫入.(如:/tmp)

--force 當目的端資料夾被傳送端非資料夾名稱覆蓋時,強制rsync刪除資料夾,
即使該資料夾不是空的.

--numeric-ids 不將傳送端檔案的uid及gid值,與目的端的使用者/群組進行配對.
若傳送端並沒有uid及gid的對應名稱(如:原帳號群組被刪除的遺留檔案),
或目的端沒有相對應的帳號/群組,保留數字型態的uid/gid

--timeout=TIMEOUT 設定 I/O 逾時的時間(秒). 超過這個秒數而沒有資料傳送,rsync將會結束.
預設為0,也就是沒有定義逾時時間.

-T, --temp-dir=DIR 定義rsync在接收端產生暫時性的複製檔案時使用資料夾暫存.
預設是直接在接收端資料夾直接產生暫存檔案.

--compare-dest=DIR 定義rsync在目的端建立資料夾來比對傳送過來的檔案.

--link-dest=DIR 與 --compare-dest 相同,但同時會針對無法改變的檔案建立硬式連結.

-z, --compress 壓縮模式,當資料在傳送到目的端進行檔案壓縮.

-P -P參數和 --partial --progress 相同.只是為了把參數簡單化.

-C, --cvs-exclude 排除那些通常不希望傳送的檔案.定義的方式與CVS傳送相同:
RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state
.nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej
.del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/
符合以上條件的都會被忽略而不傳送.

--exclude=PATTER 符合PATTERN(規則表示式)樣式的檔案不進行傳送

--exclude-from=FILE 和--exclude參數相同,不過是把不進行傳送的檔案事先寫入某一檔案.
執行時,透過此參數讓rsync讀取.
(; #開頭的行列或空白行會被rsync忽略)

--include=PATTERN 定義rsync不要排除符合pattern樣式的檔案.

--include-from=FILE 和--include參數相同,只不過把要包含的檔案寫到某一檔案.

--files-from=FILE 把要傳送的檔案名稱都精確的寫入某一檔案,讓rsync讀取.
如: rsync -a --files-from=/tmp/foo /usr remote:/backup

-0 --from0 定義檔案所要讀取的檔案是null字元結尾.

--version 顯示版本訊息.

--daemon 定義rsync以daemon型態執行.

--no-detach 當以daemon型態執行時,不要進行分裂且變成背景程序.

--address=ADDRESS 定義所要連結(bind)的ip位址或是host名稱(daemon限定)

--config=FILE 定義所要讀取的設定檔rsyncd.conf位置(daemon限定)
預設值為 /usr/local/etc/rsyncd.conf

--port=PORT 定義rsyncd(daemon)要執行的port(預設為tcp 873)

--blocking-io 使用blocking I/O連結遠端的shell,如rsh , remsh

--no-blocking-io 使用non-blocking連結遠端的shell,如ssh (預設值)

--stats 顯示檔案傳送時的資訊狀態

--progress 顯示傳送的進度.(給檔案傳送時,怕無聊的人用的..)

--log-format=FORMAT 定義log的格式(在rsyncd.conf設定)

--password-file=FILE 從檔案讀取與遠端rsync伺服器連結的密碼

--bwlimit=KBPS 定義傳輸頻寬的大小(KBytes/秒)

--write-batch=FILE 把紀錄資料寫入一個檔案(給其他相同環境且相同需求的機器使用)

--read-batch=FILE 透過讀取紀錄檔案來進行傳輸.(檔案由 --write-batch 參數產生)

--checksum-seed=NUM 定義檔案 checksum-seed 的大小(byte)

-4 --ipv4 使用IPv4協定

-6 --ipv6 使用IPv6協定


不習慣使用指令備份的話 網路上也有GUI介面的軟體

2010年8月3日 星期二

Ubuntu 裡重新設定MySQL root密碼

1.先停止MySQL
#/etc/init.d/mysql stop
2.輸入下列即可進入mysql
# mysqld_safe --skip-grant-tables &
3. 換成root
#mysql -u root
4.出現mysql> 後輸入下列指令
mysql> use mysql;
mysql> update user set password=PASSWORD("newpassword") where User='root';
mysql> flush privileges;
mysql> quit
5.再啟動MySQL
#/etc/init.d/mysql start

2010年7月31日 星期六

Ubuntu如何用指令匯出MySQL 的資料庫?

開啟終端機輸入下列指令

1.匯出某資料庫
# mysqldump -u root -p '密碼' 某資料庫名稱 > 輸出名稱.sql
或者是
# mysqldum p -u root -p 某資料庫名稱 > 輸出名稱.sql    按enter後再輸入mysql密碼
如果要所有資料庫匯出
# mysqldump -u root -p '密碼' -A > 多個輸出名稱.sql

2. 匯入某資料庫
# mysql -u root -p 某資料庫名稱 < 輸出名稱.sql 或是 sql語法
匯入多個
# mysql -u root -p -A < 多個輸出名稱.sql 

參數眾多 
請愛用 man mysqldump, man mysql
謝謝收看!!

2010年7月26日 星期一

Ubuntu裡安裝joomla

首先開啟終端機 安裝以下套件
  • apache2
  • php5
  • php5-mysql
  • mysql-server
  • mysql-client
  • phpmyadmin
先建資料夾 mkdir /var/www/想要的名稱 
再到這裡下載所需套件 http://www.joomla.org.tw/download

解壓縮至/var/www/想要的名稱
開啟browser 輸入http://localhost/想要的名稱
這樣就可進入安裝步驟了

2010年7月19日 星期一

編譯內核時出現 "mkimage" command not found - U-Boot images will not be built

  CHK     include/linux/compile.h
  Kernel: arch/arm/boot/Image is ready
  Kernel: arch/arm/boot/zImage is ready
  UIMAGE  arch/arm/boot/uImage
"mkimage" command not found - U-Boot images will not be built
  Image arch/arm/boot/uImage is ready

原因很簡單製作uImage的mkimage找不到
以至於uImage無法生成

解決辦法:到編譯U-Boot的資料夾裡 複製回mkimage就好

東西放在u-boot-1.3.3/tools/ (記得是編譯完U-Boot的資料夾 不然裡面是沒有mkimage)

cp mkimage /usr/local/arm/4.3.2/bin/
cp mkimage comiler資料夾/bin/

ps:網路上也有人說放在/usr/bin裡  也有再加入另外加入$PATH 解決

2010年7月13日 星期二

AF_INET和PF_INET的區別

在寫網路程式的時候,建立TCP socket一般是這樣的:   
 sock = socket(PF_INET, SOCK_STREAM, 0);

然後在綁定本地地址或連接遠程地址時需要初始化sockaddr_in結構,其中指定address family時一般設置為AF_INET,即使用IP。
問題是AF_INET和PF_INET到底有什麼區別,甚至很多參考書上都是混用。今 天查了一下相關頭文件的定義,找到了答案。


AF = Address Family
PF = Protocol Family
 

AF_INET = PF_INET

所以,理論上建立socket時是指定協議,應該用PF_xxxx,設置地址時應該用AF_xxxx。當然AF_INET和 PF_INET的值是相同的,混用也不會有太大的問題。


reference Andy Yang

2010年7月1日 星期四

Ubuntu SSH遠端安全連線安裝及設定以及scp指令用法

# sudo apt-get install openssh-server 就這麼簡單

如何連入遠端電腦?

linux下
# ssh username@ip

windows
請Google PieTTY 這套軟體

scp用法 
#scp filename username@ip:filename

假設使用者allen要傳資料/home/allen/test.txt
到david桌面(ip:123.123.123.123) 指令可以這樣打 
#scp /home/allen/test.txt david@123.123.123.123:/home/david/桌面/

如果要抓回來 顛倒即可
#scp david@123.123.123.123:/home/david/桌面/test.txt /home/allen

Windows 對 Linux
可以Google WinSCP這套軟體