2010年8月16日 星期一

移植 bash 到 ARM 開發板

http://www.gnu.org/software/bash/ 下載 bash-4.1.tar.gz。

解開下載的 bash-4.1.tar.gz,然後選擇一個適當的 cross compiler,並執行 configure。

CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-linux \
--target=arm-none-linux-gnueabi --enable-static-link \
--enable-history --without-bash-malloc

原則上執行完 configure 就可以執行 make 編譯了。若想得到靜態編譯的 bash 可執行檔,則再對 Makefile 稍作修改即可。

diff -Naur old/Makefile new/Makefile 
--- old/Makefile 2010-08-15 15:34:58.489728811 +0000
+++ new/Makefile 2010-08-15 15:35:34.877136059 +0000
@@ -120,7 +120,7 @@
# with gprof, or nothing (the default).
PROFILE_FLAGS=

-CFLAGS = -g -O2
+CFLAGS = -g -O2 -static
CFLAGS_FOR_BUILD = -g -DCROSS_COMPILING
CPPFLAGS =
CPPFLAGS_FOR_BUILD =

2010年8月15日 星期日

在 Debian / Ubuntu 使用 gitosis 架設 GIT server

首先自套件庫安裝 python-setuptools。

sudo aptitude install python-setuptools

然後自 eagain.net 下載 gitosis 的程式碼。

git clone git://eagain.net/gitosis.git

接著將下載回來的 gitosis 搬移到 /opt 目錄,再到該目錄執行安裝動作。

sudo mv gitosis/ /opt/
cd /opt/gitosis/
sudo python setup.py install

安裝完畢後。接著建立一個使用者 git 以存取 repository。

sudo adduser --system --shell /bin/sh \
--gecos 'git version control' --group \
--disabled-password --home /home/git git

接著以平時使用的帳號產生一組 SSH 的 key。

ssh-keygen -t rsa

再使用這個 SSH key 初始化 Git Server。

sudo -H -u git gitosis-init < /tmp/id_rsa.pub
sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

接著透過 git 下載 gitosis-admin.git。

git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git

進入下載回來的 gitosis-admin 目錄後,會有一個 gitosis.conf 檔案和一個 keydir 目錄,其中要新增存取 git server 的使用者時,將 SSH key 添加到 keydir 目錄;而 gitosis.conf 則可以用來建立專案。

例如修改 gitosis.conf,添加一個叫 hello 的專案。

--- old/gitosis.conf   2010-08-12 23:08:13.684510792 +0800
+++ new/gitosis.conf 2010-08-12 23:10:55.504778775 +0800
@@ -4,3 +4,7 @@
writable = gitosis-admin
members = online@local

+[group]
+writable = hello
+members = online@local

接著將它送回 git repository,

git commit -a -m "Added a new project \"hello\""
git push

然後就可以開始建立 hello 這個專案了。

mkdir hello
cd hello/
git init
touch README
git add .
git commit -a -m 'Initial import'
git remote add origin git@YOUR_SERVER_HOSTNAME:hello.git
git push origin master