ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上
2009年12月3日 星期四
2009年12月1日 星期二
Enable remote X server in ubuntu 9.10
<schema> <key>security/DisallowTCP</key> <signature>b</signature> <default>false</default> </schema>允許 TCP connection。 完成後重新啟動 X, gdm (重開機比較快)。 然後可以用 nmap 看一下 X11 port 有沒有 service。 另外,還要用 xhost command 允許 client host 連線:
xhost + 允許所有 host 連線Client 端就只要設定 DISPLAY 變數到 Server ip:display number 就可以。 從 nmap 可以看到 X server listen port, X 從 6000 開始。 所以 Client 要設:
export DISPLAY=192.168.145.143:0就可以。
另外,Server都設好後,可以用
ssh -X 192.168.144.250連線到 client,用 -X option 告知將要進行X session forward。 連線後,可以用
echo $DISPLAY localhost:10.0看一下。 然後,執行任何 x client ap
同樣的,在 gdm.schema 剛剛修改的後面有xdmcp 的設定,default 是關閉,可以把他打開。 Client 端可以用 ubuntu 附的 Tsclient (遠端桌面),可以選 xdmcp,但是 default 是沒有安裝。 所以要手動 install xnest。
aptitude install xnest
Enable "Key sequence to Kill the X server" in ubuntu 9.10
- System->Preferences->Keyboard
- Layouts tab --- Layout options
- “Key sequence to kill the X server”. Check “Ctrl+Alt+Backspace”
2009年11月27日 星期五
Auto Launch Network Management without asking password
- 再network manager applet 按右鍵,選 edit connection
- 選Wired或Wireless tab,然後選一個connection , edit
- 勾選下面Available to All Users
2009年11月17日 星期二
Install Android SDK in Windows
現在都 follow Chrome 那種 download-install 的方式。
所以沒有網路連線能力的就沒拜法裝了Download Android SDK : http://developer.android.com/intl/zh-TW/sdk/index.html
解開後,看 readme 就會有說要 run SDKSetup.exe。
有 proxy 的在 SDKSetup.exe 啟動 timeout 後再到 Settings 去設。
然後就會出現一堆 可以download 的 SDK,勾選後就會download 囉。
會download 在 SDKSetup.exe 的 folder 的 platform 下。
所以最好把 解開的 android-sdk-windows copy 到適當的地方裝完 SDK 後再去裝 Eclipse 和 ADT plugin,因為裝完後 。 要去設 Eclipse 的 Android SDK location。
Windows - Preference - Android : SDK Location 選 Browse。
他會在你指定的位置找 Tools 這個 folder,所以指到解開的 android-sdk-windows 下就可以。
他就會自己找到你 run SDKsetup.exe 後 download 下來的 SDK。
最好把 C:\android-sdk-windows\tools 加到 path 裡,因為還有很多時候會要開console run 其中的command。
這樣就裝完了,可以follow http://developer.android.com/intl/zh-TW/guide/tutorials/hello-world.html
2009年11月12日 星期四
ubuntu 9.10 on IBM R40e
2009年11月2日 星期一
R40e display chip
看來 R40e 要上 9.10 應該要很久吧...搞不好永遠不可能 XD
2009年10月2日 星期五
Virtualbox : clone vm hd image
vboxmanage clonevdi Master.vdi node1.vdi大小寫有關,應該是:VBoxManage 在 /usr/bin
RDP function for close source Virtualbox
這個遠端連線是由 Virtualbox 提供的,不是 guest OS。所以即使 guest OS 沒有遠端桌面功能(或是 disable 了遠端連線),我們還是可以經由 virtualbox 的 遠端桌面 連線 guest OS。
在 Setting 的遠端桌面 有一個 port number。
假設 該 server (不是 guest OS) 的 ip 是 192.168.145.72。
port number 是 3389
我們只要用遠端連線程式,連到 192.168.145.72:3389
就可以連過去了。
2009年9月16日 星期三
clone partition/disk to another partition/disk
詳細還是要看 原網站說明另外一個選擇是 partclone,是單一的程式,console mode。 clone partition 的 command 大概是:
$ partclone.extfs -b -d -s /dev/hda1 -o /dev/hdb1
2009年9月9日 星期三
mysql how to - step by step
mysql 裡有自己的user , password 和權限。用 GRANT 命令來指定。
django - install
- 安裝apache2
- 安裝 mod_python for apache2
- 安裝django
- 安裝 mysql
- 先用 django admin create 一個 site folder 和 site data
- 在 apache2 中指定一個location,轉 python run django code
- 設定path 參數到剛剛 create 的 folder (上一層)
2009年9月8日 星期二
code reading : sample code of ffmpeg : avcodec_sample0.5.c
av_probe_input_format2( ) 會讀取 file 內容,從標頭猜測 格式。
實際上這一段就是一一呼叫所有 codec 的 XXX_probe( ) function,取出score,score 最高的codec 就是了..
probe 和 decode 在不同的目錄:
- probe : libformat
- decode : libavcodec
decode file stream 是利用以下 data sequence:
/* Start codes. */ #define SEQ_END_CODE 0x000001b7 #define SEQ_START_CODE 0x000001b3 #define GOP_START_CODE 0x000001b8 #define PICTURE_START_CODE 0x00000100 #define SLICE_MIN_START_CODE 0x00000101 #define SLICE_MAX_START_CODE 0x000001af #define EXT_START_CODE 0x000001b5 #define USER_START_CODE 0x000001b2
GCC - library link order
$ gcc -Wall calc.c -lm -o calc (correct order)With some linkers the opposite ordering (placing the -lm option before the file which uses it) would result in an error,
$ cc -Wall -lm calc.c -o calc (incorrect order) main.o: In function `main': main.o(.text+0xf): undefined reference to `sqrt'因為command 的order,calc.c 後面沒有寫明任何 library,calc.c 使用到的sqrt 雖然有定義在 libm ,但是command 列在calc.c 之前,所以 linker 找不到。 When several libraries are being used, the same convention should be followed for the libraries themselves. A library which calls an external function defined in another library should appear before the library containing the function. 例如, data.c 使用到 linear programming library : library,library 又使用到 math library : libm。所以正確的linking order 是:
$ gcc -Wall data.c -lglpk -lmsince the object files in ‘libglpk.a’ use functions defined in ‘libm.a’. 目前大多數的 linker 都會(重複?)搜尋所有指定的 external library,所以 linking order 在目前似乎沒那麼重要。 但是當你在build 時遇到 undefined external,而你又確定該 symbol 是有定義的,或許試試是不是 linking order 的問題。
還有另一個問題是重複的function,如果一個function 在兩個 external libary 都有定義,linker 會採用 linking order 在前面的那個 libary (依照找到的順序)。
build ffmpeg sample in mingw - success
-lavdevice -lavformat -lavcodec -lavutil -lswscale -lm這樣那個 avcodec_sample_0.5.0.c 就可以 build 了。 ./a.exe 出現 segment fault. 用 dbg run
(gdb) run Starting program: c:\codepiece/a.exe [New thread 2472.0x6a0] Program received signal SIGSEGV, Segmentation fault. 0x0040cccd in url_open () (gdb) bt #0 0x0040cccd in url_open () #1 0x0040f399 in url_fopen () #2 0x004025c1 in av_open_input_file () #3 0x0040144c in main (argc=1, argv=0x3e2430) at avcodec_sample.c:51知道是因為沒給 argument,所以 open url,給定一個 mpg file後就 OK 了。 這個sample 會將 mpg 存為 6 個 ppm file...
make fail - disable all encoder in ffmpeg
c:/ffmpeg/build/libavcodec/libavcodec.a(snow.o):snow.c:(.text+0x4a57): undefined reference to `ff_epzs_motion_search' c:/ffmpeg/build/libavcodec/libavcodec.a(snow.o):snow.c:(.text+0x4bba): undefined reference to `ff_get_mb_score' c:/ffmpeg/build/libavcodec/libavcodec.a(snow.o):snow.c:(.text+0xf64d): undefined reference to `ff_rate_estimate_qscale' c:/ffmpeg/build/libavcodec/libavcodec.a(snow.o):snow.c:(.text+0xfb74): undefined reference to `h263_encode_init' c:/ffmpeg/build/libavcodec/libavcodec.a(snow.o):snow.c:(.text+0xfc0f): undefined reference to `ff_rate_control_init' c:/ffmpeg/build/libavcodec/libavcodec.a(snow.o):snow.c:(.text+0x10894): undefined reference to `ff_rate_estimate_qscale' c:/ffmpeg/build/libavcodec/libavcodec.a(snow.o):snow.c:(.text+0x10ce0): undefined reference to `ff_init_me' c:/ffmpeg/build/libavcodec/libavcodec.a(snow.o):snow.c:(.text+0x1184d): undefined reference to `ff_rate_estimate_qscale' c:/ffmpeg/build/libavcodec/libavcodec.a(snow.o):snow.c:(.text+0x11886): undefined reference to `ff_write_pass1_stats' collect2: ld returned 1 exit status所以重新打開好了...(雖然看起來好像開 h264 encoder就可以..)
ffmpeg config log
$ ../ffmpeg-export-2009-09-02/configure --prefix=/mingw --disable-debug --disable-optimizations --disable-stripping --enabl e-memalign-hack --enable-gpl --enable-static --disable-shared --disable-ffserver --disable-altivec --disable-amd3dnow --dis able-mmx --disable-mmx2 --disable-sse --disable-ssse3 --disable-yasm --disable-encoders --disable-hwaccels --disable-indevs --disable-protocol=gopher --disable-protocol=http --disable-protocol=rtmp --disable-protocol=rtp --disable-protocol=tcp -- disable-protocol=udp --disable-network install prefix /mingw source path /c/ffmpeg/ffmpeg-export-2009-09-02 C compiler gcc .align is power-of-two no ARCH x86 (generic) big-endian no runtime cpu detection no yasm no MMX enabled no MMX2 enabled no 3DNow! enabled no 3DNow! extended enabled no SSE enabled no SSSE3 enabled no CMOV enabled no CMOV is fast no EBX available yes EBP available no 10 operands supported yes gprof enabled no debug symbols no strip symbols no optimizations no static yes shared no postprocessing support no new filter support no filters using lavformat no network support no threading support no SDL support yes Sun medialib support no AVISynth enabled no libdc1394 support no libdirac enabled no libfaac enabled no libfaad enabled no libfaad dlopened no libgsm enabled no libmp3lame enabled no libnut enabled no libopencore-amrnb support no libopencore-amrwb support no libopenjpeg enabled no libschroedinger enabled no libspeex enabled no libtheora enabled no libvorbis enabled no libx264 enabled no libxvid enabled no zlib enabled no bzlib enabled no Enabled decoders: aac ffv1 pcm_s32be aasc ffvhuff pcm_s32le ac3 flac pcm_s8 adpcm_4xm flic pcm_u16be adpcm_adx flv pcm_u16le adpcm_ct fourxm pcm_u24be adpcm_ea fraps pcm_u24le adpcm_ea_maxis_xa gif pcm_u32be adpcm_ea_r1 h261 pcm_u32le adpcm_ea_r2 h263 pcm_u8 adpcm_ea_r3 h263i pcm_zork adpcm_ea_xas h264 pcx adpcm_g726 huffyuv pgm adpcm_ima_amv idcin pgmyuv adpcm_ima_dk3 imc pgssub adpcm_ima_dk4 indeo2 ppm adpcm_ima_ea_eacs indeo3 ptx adpcm_ima_ea_sead interplay_dpcm qcelp adpcm_ima_iss interplay_video qdm2 adpcm_ima_qt jpegls qdraw adpcm_ima_smjpeg kmvc qpeg adpcm_ima_wav loco qtrle adpcm_ima_ws mace3 ra_144 adpcm_ms mace6 ra_288 adpcm_sbpro_2 mdec rawvideo adpcm_sbpro_3 mimic rl2 adpcm_sbpro_4 mjpeg roq adpcm_swf mjpegb roq_dpcm adpcm_thp mlp rpza adpcm_xa mmvideo rv10 adpcm_yamaha motionpixels rv20 alac mp1 rv30 amv mp2 rv40 ape mp3 sgi asv1 mp3adu shorten asv2 mp3on4 smackaud atrac3 mpc7 smacker avs mpc8 smc bethsoftvid mpeg1video snow bfi mpeg2video sol_dpcm bmp mpeg4 sonic c93 mpegvideo sp5x cavs msmpeg4v1 sunrast cinepak msmpeg4v2 svq1 cljr msmpeg4v3 svq3 cook msrle targa cscd msvideo1 theora cyuv mszh thp dca nellymoser tiertexseqvideo dnxhd nuv tiff dpx pam tmv dsicinaudio pbm truehd dsicinvideo pcm_alaw truemotion1 dvbsub pcm_bluray truemotion2 dvdsub pcm_dvd truespeech dvvideo pcm_f32be tta eac3 pcm_f32le twinvq eacmv pcm_f64be txd eamad pcm_f64le ulti eatgq pcm_mulaw v210 eatgv pcm_s16be v210x eatqi pcm_s16le vb eightbps pcm_s16le_planar vc1 eightsvx_exp pcm_s24be vcr1 eightsvx_fib pcm_s24daud vmdaudio escape124 pcm_s24le vmdvideo vmnc vqa wnv1 vorbis wavpack ws_snd1 vp3 wmav1 xan_dpcm vp5 wmav2 xan_wc3 vp6 wmv1 xl vp6a wmv2 xsub vp6f wmv3 Enabled encoders: Enabled hwaccels: Enabled parsers: aac dvdsub mpeg4video ac3 h261 mpegaudio cavsvideo h263 mpegvideo dca h264 pnm dirac mjpeg vc1 dnxhd mlp vp3 dvbsub Enabled demuxers: aac iss pcm_u24be ac3 lmlm4 pcm_u24le aiff m4v pcm_u32be amr matroska pcm_u32le apc mjpeg pcm_u8 ape mlp pva asf mm qcp ass mmf r3d au mov rawvideo avi mp3 rl2 avs mpc rm bethsoftvid mpc8 roq bfi mpegps rpl c93 mpegts segafilm cavsvideo mpegtsraw shorten daud mpegvideo siff dirac msnwc_tcp smacker dnxhd mtv sol dsicin mvi sox dts mxf str dv nc swf dxa nsv thp ea nut tiertexseq ea_cdata nuv tmv eac3 ogg truehd ffm oma tta flac pcm_alaw txd flic pcm_f32be vc1 flv pcm_f32le vc1t fourxm pcm_f64be vmd gsm pcm_f64le voc gxf pcm_mulaw vqf h261 pcm_s16be w64 h263 pcm_s16le wav h264 pcm_s24be wc3 idcin pcm_s24le wsaud iff pcm_s32be wsvqa image2 pcm_s32le wv image2pipe pcm_s8 xa ingenient pcm_u16be yuv4mpegpipe ipmovie pcm_u16le Enabled muxers: ac3 m4v pcm_mulaw adts matroska pcm_s16be aiff matroska_audio pcm_s16le amr mjpeg pcm_s24be asf mlp pcm_s24le asf_stream mmf pcm_s32be ass mov pcm_s32le au mp2 pcm_s8 avi mp3 pcm_u16be avm2 mp4 pcm_u16le crc mpeg1system pcm_u24be daud mpeg1vcd pcm_u24le dirac mpeg1video pcm_u32be dnxhd mpeg2dvd pcm_u32le dts mpeg2svcd pcm_u8 dv mpeg2video psp eac3 mpeg2vob rawvideo ffm mpegts rm flac mpjpeg roq flv mxf sox framecrc mxf_d10 spdif gif null swf gxf nut tg2 h261 ogg tgp h263 pcm_alaw truehd h264 pcm_f32be vc1t image2 pcm_f32le voc image2pipe pcm_f64be wav ipod pcm_f64le yuv4mpegpipe Enabled protocols: file pipe Enabled filters: crop Enabled bsfs: aac_adtstoasc mjpega_dump_header noise dump_extradata mov2textsub remove_extradata h264_mp4toannexb mp3_header_compress text2movsub imx_dump_header mp3_header_decompress Enabled indevs: Enabled outdevs: License: GPL version 2 or later Creating config.mak and config.h...
2009年9月7日 星期一
build ffmpeg sample in mingw
gcc testffmpeg.c -lavformat -lavcodec -lavutil -lz
* 而且要按照這個次序..!!!!
至於那個 sample file,最後還要加一個library : lswscale
google 了一下: ffmpeg static library link order
發現有說明,因為ffmpeg 的各個 library 裡有重複的 object file,所以link order 很重要。
如果要做出一個單一的 library 包含現在的 library,好像要 --enable-gpl,同時 disable 一些 codec。
log -ffmpeg install
$ make install install -d "/mingw/lib" install -m 644 libavfilter/libavfilter.a "/mingw/lib" ranlib "/mingw/lib/libavfilter.a" install -d "/mingw/lib" install -m 644 libavdevice/libavdevice.a "/mingw/lib" ranlib "/mingw/lib/libavdevice.a" install -d "/mingw/lib" install -m 644 libavformat/libavformat.a "/mingw/lib" ranlib "/mingw/lib/libavformat.a" install -d "/mingw/lib" install -m 644 libavcodec/libavcodec.a "/mingw/lib" ranlib "/mingw/lib/libavcodec.a" install -d "/mingw/lib" install -m 644 libavutil/libavutil.a "/mingw/lib" ranlib "/mingw/lib/libavutil.a" install -d "/mingw/lib" install -m 644 libswscale/libswscale.a "/mingw/lib" ranlib "/mingw/lib/libswscale.a" install -d "/mingw/include/libavfilter" install -d "/mingw/lib/pkgconfig" install -m 644 "/c/ffmpeg/ffmpeg-export-2009-09-02/libavfilter"/avfilter.h "/mingw/include/libavfilter" install -m 644 "/c/ffmpeg/build"/libavfilter/libavfilter.pc "/mingw/lib/pkgconfig" install -d "/mingw/include/libavdevice" install -d "/mingw/lib/pkgconfig" install -m 644 "/c/ffmpeg/ffmpeg-export-2009-09-02/libavdevice"/avdevice.h "/mingw/include/libavdevice" install -m 644 "/c/ffmpeg/build"/libavdevice/libavdevice.pc "/mingw/lib/pkgconfig" install -d "/mingw/include/libavformat" install -d "/mingw/lib/pkgconfig" install -m 644 "/c/ffmpeg/ffmpeg-export-2009-09-02/libavformat"/avformat.h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavformat"/ avio.h "/mingw/include/libavformat" install -m 644 "/c/ffmpeg/build"/libavformat/libavformat.pc "/mingw/lib/pkgconfig" install -d "/mingw/include/libavcodec" install -d "/mingw/lib/pkgconfig" install -m 644 "/c/ffmpeg/ffmpeg-export-2009-09-02/libavcodec"/avcodec.h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavcodec"/opt .h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavcodec"/vdpau.h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavcodec"/xvmc.h "/mingw/in clude/libavcodec" install -m 644 "/c/ffmpeg/build"/libavcodec/libavcodec.pc "/mingw/lib/pkgconfig" install -d "/mingw/include/libavutil" install -d "/mingw/lib/pkgconfig" install -m 644 "/c/ffmpeg/ffmpeg-export-2009-09-02/libavutil"/adler32.h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavutil"/avstr ing.h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavutil"/avutil.h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavutil"/base64.h "/c/ff mpeg/ffmpeg-export-2009-09-02/libavutil"/common.h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavutil"/crc.h "/c/ffmpeg/ffmpeg-exp ort-2009-09-02/libavutil"/fifo.h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavutil"/intfloat_readwrite.h "/c/ffmpeg/ffmpeg-expor t-2009-09-02/libavutil"/log.h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavutil"/lzo.h "/c/ffmpeg/ffmpeg-export-2009-09-02/libav util"/mathematics.h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavutil"/md5.h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavutil"/mem. h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavutil"/pixfmt.h "/c/ffmpeg/ffmpeg-export-2009-09-02/libavutil"/rational.h "/c/ffmp eg/ffmpeg-export-2009-09-02/libavutil"/sha1.h "/mingw/include/libavutil" install -m 644 "/c/ffmpeg/build"/libavutil/libavutil.pc "/mingw/lib/pkgconfig" install -d "/mingw/include/libswscale" install -d "/mingw/lib/pkgconfig" install -m 644 "/c/ffmpeg/ffmpeg-export-2009-09-02/libswscale"/swscale.h "/mingw/include/libswscale" install -m 644 "/c/ffmpeg/build"/libswscale/libswscale.pc "/mingw/lib/pkgconfig" gcc -DHAVE_AV_CONFIG_H -I. -I"/c/ffmpeg/ffmpeg-export-2009-09-02" -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -D_FILE_OFFSET_B ITS=64 -D_LARGEFILE_SOURCE -std=c99 -fno-common -fomit-frame-pointer -g -Wdeclaration-after-statement -Wall -Wno-switch -Wdi sabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wcast-qual -Wwrite-strings -Wundef -O3 -fno-math-er rno -fno-tree-vectorize -MMD -MF ffmpeg.d -MT ffmpeg.o -c -o ffmpeg.o /c/ffmpeg/ffmpeg-export-2009-09-02/ffmpeg.c gcc -L"/c/ffmpeg/build"/libavcodec -L"/c/ffmpeg/build"/libavdevice -L"/c/ffmpeg/build"/libavfilter -L"/c/ffmpeg/build"/libav format -L"/c/ffmpeg/build"/libavutil -L"/c/ffmpeg/build"/libpostproc -L"/c/ffmpeg/build"/libswscale -Wl,--warn-common -Wl,-- as-needed -Wl,-rpath-link,"/c/ffmpeg/build"/libpostproc -Wl,-rpath-link,"/c/ffmpeg/build"/libswscale -Wl,-rpath-link,"/c/ffm peg/build"/libavfilter -Wl,-rpath-link,"/c/ffmpeg/build"/libavdevice -Wl,-rpath-link,"/c/ffmpeg/build"/libavformat -Wl,-rpat h-link,"/c/ffmpeg/build"/libavcodec -Wl,-rpath-link,"/c/ffmpeg/build"/libavutil -Wl,-Bsymbolic -o ffmpeg_g.exe ffmpeg.o cmdu tils.o -lavfilter -lavdevice -lavformat -lavcodec -lavutil -lswscale -lz -lm -lvfw32 cp -p ffmpeg_g.exe ffmpeg.exe strip ffmpeg.exe install -d "/mingw/bin" install -c -m 755 ffmpeg.exe ffplay.exe "/mingw/bin" install -d "/mingw/share/ffmpeg" install -m 644 /c/ffmpeg/ffmpeg-export-2009-09-02/ffpresets/libx264-baseline.ffpreset /c/ffmpeg/ffmpeg-export-2009-09-02/ffp resets/libx264-default.ffpreset /c/ffmpeg/ffmpeg-export-2009-09-02/ffpresets/libx264-fastfirstpass.ffpreset /c/ffmpeg/ffmpeg -export-2009-09-02/ffpresets/libx264-hq.ffpreset /c/ffmpeg/ffmpeg-export-2009-09-02/ffpresets/libx264-ipod320.ffpreset /c/ff mpeg/ffmpeg-export-2009-09-02/ffpresets/libx264-ipod640.ffpreset /c/ffmpeg/ffmpeg-export-2009-09-02/ffpresets/libx264-lossle ss_fast.ffpreset /c/ffmpeg/ffmpeg-export-2009-09-02/ffpresets/libx264-lossless_max.ffpreset /c/ffmpeg/ffmpeg-export-2009-09- 02/ffpresets/libx264-lossless_medium.ffpreset /c/ffmpeg/ffmpeg-export-2009-09-02/ffpresets/libx264-lossless_slow.ffpreset /c /ffmpeg/ffmpeg-export-2009-09-02/ffpresets/libx264-lossless_slower.ffpreset /c/ffmpeg/ffmpeg-export-2009-09-02/ffpresets/lib x264-lossless_ultrafast.ffpreset /c/ffmpeg/ffmpeg-export-2009-09-02/ffpresets/libx264-main.ffpreset /c/ffmpeg/ffmpeg-export- 2009-09-02/ffpresets/libx264-max.ffpreset /c/ffmpeg/ffmpeg-export-2009-09-02/ffpresets/libx264-normal.ffpreset /c/ffmpeg/ffm peg-export-2009-09-02/ffpresets/libx264-slowfirstpass.ffpreset "/mingw/share/ffmpeg"
2009年9月6日 星期日
bookmark - ffmpeg and SDL tutorial
順便寫一下,這個也有說明 ffmpeg 的 source code architecture
www.wiki.multimedia.cx
其實這些link 在 ffmpeg 的主站就有link
2009年9月4日 星期五
SDL programming - draw pixel
SDL_Init(SDL_INIT_VIDEO);
然後create 一個你要的 surface,可以任意指定這個 video surface 的 format (color depth, color space(?), dimension):
SDL_Surface *screen;
screen = SDL_SetVideoMode(640,480,16,SDL_FULL_SCREEN);
接下來就跟 DirectDraw 很像..
surface 的 structure 中包含 surface 的 raw data arrary (就像是 framebuffer一樣),可以直接作read/write pixel 的動作。
但是在操作之前,要lock surface,操作完後 unlock:
Uint16 *raw_pixels;
SDL_LockSurface(screen);
raw_pixels = (Uint16 *)screen->pixels;
要"填寫" raw pixel value,可以利用 screen structure 中另一個資訊:format。
format 包涵 color bit 的 有效bit和 bit 位置的資料:
在 example program 可以看出來:
Uint value;
value = ((red >>fmt->Rloss) <<fmt->Rshift) +
....
R.G.B 三色分別有對應的無效 bit 數 (Xloss) 和位置(Xshift)
還有 raw_pixels[] array 的 x, y 對應,可以依照 screen structure 的 pitch 的資料。
pitch 代表 一條 y line 的 byte 數。
example code 中,填寫 (x,y) 點的 offset 是:
screen->pitch/2 * y + 1-- 因為 raw_pixels 是 Uint16,所以要/2。 畫完圖後SDL_Unlock(screen)。 再call SDL_UpdateRect(screen,0,0,0,0) 把 surface update 到真正的螢幕上。
完整code:
#include "SDL.h"
Uint16 CreateHicolorPixel(SDL_PixelFormat *fmt, Uint8 red, Uint8 green, Uint8 blue)
{
Uint16 value;
value = ((red >>fmt->Rloss) << fmt->Rshift) +
((green>>fmt->Gloss) << fmt->Gshift) +
((blue >>fmt->Bloss) << fmt->Bshift);
return value;
}
int main(int argc,char* argv[])
{
SDL_Surface *screen;
Uint16 *raw_pixels;
int x,y;
SDL_Init(SDL_INIT_VIDEO);
atexit(SDL_Quit);
screen = SDL_SetVideoMode(640,480,16,SDL_FULLSCREEN);
SDL_LockSurface(screen);
raw_pixels = (Uint16*)screen->pixels;
for(x=0;x<256;x++){
for(y=0;y<256;y++){
Uint16 pixel_color;
int offset;
pixel_color=CreateHicolorPixel(screen->format,x,0,y);
offset=(screen->pitch/2 *y+x);
raw_pixels[offset]=pixel_color;
}
}
SDL_UnlockSurface(screen);
SDL_UpdateRect(screen,0,0,0,0);
SDL_Delay(3000);
return 0;
}
build command 可以利用 sdl-config 吐出 build optin:
gcc sdl1.c -o sdl1 `sdl-config --cflags --libs`
2009年9月3日 星期四
ffplay in gdb & ffmpeg library
首先要build none-strip 版本。
先 configure --help 列出 configure option。其中有:
Developer options (useful when working on FFmpeg itself): --disable-debug disable debugging symbols --enable-debug=LEVEL set the debug level [] --enable-gprof enable profiling with gprof [] --disable-optimizations disable compiler optimizations --enable-extra-warnings enable more compiler warnings --disable-stripping disable stripping of executables and shared libraries所以重新configuer,加上 --disable-optimizations --disable-stripping。
然後就可以開始make
follow 這一篇(http://ffmpeg.arrozcru.org/wiki/index.php?title=Static)的 ffmpeg build 步驟,ffmpeg include 和 lib 會被 install 在
/usr/local/include /usr/local/lib所以compile 的時候要加上 -I/usr/local/include -L/usr/local/lib -lavdevice -lavformat -lavcodec -lavutil -lswscale
如果在config ffmpeg 時指定 --prefix=/mingw ,就不用 額外 寫明 -I, -L path。
2009年9月2日 星期三
msys, mingw
- 屬於 msys 的 package,就要 copy 到 msys 的 folder root。
- 屬於 mingw 的 package,就要 copy 到 mingw 的 folder root。
Copy all the files from the lib folder to C:\msys\mingw\lib\. Copy the SDL folder from the include folder to C:\msys\mingw\include\. Copy all the files from the bin folder to C:\msys\mingw\bin\.其中的 path 應該是
C:\mingw\lib\. C:\mingw\include\. C:\mingw\bin\.因為follow default setting 的話, minGW 是 install 在 c:\mingw。
這一篇有圖文並茂的 msys, mingw的安裝教學 (我沒看 )而且mingw 比 msys 先安裝,要怎樣 install 到 msys 的 folder 中呢?
2009年8月30日 星期日
This is SIP 4.8.2 for Python 2.6.2 on linux2. The SIP code generator will be installed in /usr/bin. The SIP module will be installed in /usr/lib/python2.6/dist-packages. The SIP header file will be installed in /usr/include/python2.6. The default directory to install .sip files in is /usr/share/sip. The platform/compiler configuration is linux-g++. Creating sipconfig.py... Creating top level Makefile... Creating sip code generator Makefile... Creating sip module Makefile...然後就是make , make install.. 發生error,,,, 所以用 aptitude install 現成的 :p 但是這個版本不夠build PyQt 4.5 ,需要 SIP 4.8.2 以上版本。
2009年8月17日 星期一
Virtualbox 3.0 USB in Debian Lenny
但是裝完後,要設定好 host linux 的 usb 使用權限,Virtualbox 才能正常的 access usb。
但是usb 的權限好像在很多地方設。
最後 follow 下面的文章:
Debian Lenny, VirtualBox USB device
和
Virtualbox USB not working in Debian Lenny
做的事情大概有:
Edit the rules in file /etc/udev/rules.d/91-permissions.rules for Lenny. Change around line 37 to:
# usbfs-like devices SUBSYSTEM=="usb_device", MODE="0664" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="usbusers", MODE="0664重點設定 groupe,並且設定 mode。
不要忘記這個 groupe 是原來不存在的,要新增。
還有修改 /etc/init.d/mountkernfs.sh (line 75),原來是:
domount usbfs usbdevfs /proc/bus/usb usbfs -onodev,noexec,nosuid一樣,加上groupeid 和 access mode:
domount usbfs usbdevfs /proc/bus/usb usbfs onodev,noexec,nosuid, devmode=0664,devgid=46其中 devgid=46的 46 是 usbusers 的 groupe id。
* 不要忘記要把 要使用 virtualbox的 user 加到 usbusers groupe 中。
2009年7月7日 星期二
initrd ? initramfs - todo
- 要看一下 Documentation/early-userspace/README
- Documentation/filesystems/ramfs-rootfs-initramfs.txt:
- usr/Makefile: 中有 ramfs-input
2009年7月3日 星期五
gnu make 的 call function
The syntax of thecall
function is:$(call variable,param,param,...)make
執行這道命時,會賦予param...一個暫時的變數名稱$(1)
,$(2)
, etc. 變數$(0)
則是 variable.Then variable is expanded as a
make
variable in the context of these temporary assignments. Thus, any reference to$(1)
in the value of variable will resolve to the first param in the invocation ofcall
.If variable is the name of a builtin function, the builtin function is always invoked (even if a
make
variable by that name also exists).examples
This macro simply reverses its arguments:
reverse = $(2) $(1)foo = $(call reverse,a,b)foo 會是 `b a'.
This one is slightly more interesting: it defines a macro to search for the first instance of a program in
PATH
:pathsearch = $(firstword $(wildcard $(addsufix /$(1),$(subst :, ,$(PATH)))))LS := $(call pathsearch,ls)
Now the variable LS contains /bin/ls
or similar.
The call
function can be nested. Each recursive invocation gets its own local values for $(1)
, etc. that mask the values of higher-level call
. For example, here is an implementation of a map function:
map = $(foreach a,$(2),$(call $(1),$(a)))
Now you can map a function that normally takes only one argument, such as origin
, to multiple values in one step:
o = $(call map,origin,o map MAKE)
and end up with o containing something like `file file default'.
A final caution: be careful when adding whitespace to the arguments to call
. As with other functions, any whitespace contained in the second and subsequent arguments is kept; this can cause strange effects. It's generally safest to remove all extraneous whitespace when providing parameters to call
.
uimage 的 quiet_cmd_uimage ...
arch/arm/boot/Makefile其中:
quiet_cmd_uimage = UIMAGE $@ cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel \ -C none -a $(LOADADDR) -e $(LOADADDR) \ -n 'Linux-$(KERNELRELEASE)' -d $< $@但是我到處都找不到 ref quiet_cmd_uimage 和 cmd_uimage 的地方。 後來找到原來是 .. Kbuild
Kbuild 的 instruction:
quiet_cmd_CMD = 要顯示的 cmd_CMD = 要執行的有關Kbuild 在 kernel/Documentation/kbuild/makefile.txt 有說明:
--- 6.7 Custom kbuild commands When kbuild is executing with KBUILD_VERBOSE=0, then only a shorthand of a command is normally displayed. To enable this behaviour for custom commands kbuild requires two variables to be set: quiet_cmd_<command> - what shall be echoed cmd_<command> - the command to execute Example: # quiet_cmd_image = BUILD $@ cmd_image = $(obj)/tools/build $(BUILDFLAGS) \ $(obj)/vmlinux.bin > $@ targets += bzImage $(obj)/bzImage: $(obj)/vmlinux.bin $(obj)/tools/build FORCE $(call if_changed,image) @echo 'Kernel: $@ is ready' When updating the $(obj)/bzImage target, the line BUILD arch/i386/boot/bzImage will be displayed with "make KBUILD_VERBOSE=0".
uImage 和 mkimage
make xx_config make coldconfig make dep make uImage就可以build 出 uImage。 uImage 和以往zImage, bzImage 不同的是..她需要用 tools/mkimage 這個 tool 來包裝過:
- build vmlinux (ELF binary format)
{CROSS_COMPILE)-objcopy -O binary -R .note -R .comment -S vmlinux linu.bin
gzip -9 linux.bin
- 包裝:
mkimage -A arm -O linux -T kernel -C gzip -a 0 -e 0 -n "Linux Kernel Image" -d linux.bin.gz uImage
Usage: ../kernel/scripts/mkimage -l image -l == list image header information ../kernel/scripts/mkimage [-x] -A arch -O os -T type -C comp -a addr -e ep -n name -d data_file[:data_file...] image -A == set architecture to 'arch' -O == set operating system to 'os' -T == set image type to 'type' -C == set compression type 'comp' -a == set load address to 'addr' (hex) -e == set entry point to 'ep' (hex) -n == set image name to 'name' -d == use image data from 'datafile' -x == set XIP (execute in place)
2009年7月1日 星期三
worklog : build android from source
build/core/build-system.html然後,run
build/envsetup.sh就可以多出幾個command,可以用 "help" 指令 (run 完後直接key "help")看一下..
Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment: - croot: Changes directory to the top of the tree. - m: Makes from the top of the tree. - mm: Builds all of the modules in the current directory. - mmm: Builds all of the modules in the supplied directories. - cgrep: Greps on all local C/C++ files. - jgrep: Greps on all local Java files. - resgrep: Greps on all local res/*.xml files. - godir: Go to the directory containing a file. Look at the source to view more functions. The complete list is: add_lunch_combo cgrep check_product check_variant choosecombo chooseproduct choosetype choosevariant croot findmakefile gdbclient get_abs_build_var getbugreports get_build_var getprebuilt gettop godir help isviewserverstarted jgrep lunch m mm mmm pid printconfig print_lunch_menu resgrep runhat runtest runtest_py setpaths set_sequence_number set_stuff_for_environment settitle smoketest startviewserver stopviewserver tapas tracedmdump其中有關"mm" 這個command 的使用方法,在 SipX Android Build Environment 有提到。
這個 build-system.html 也包含很多其他的說明,像是 # 如何增加一個 project 到 android build system # 各種 build target 的差異 # 各種 clean 的差異
2009年6月30日 星期二
.gvfs permission denied
$sudo rsync -av /home/james/ /home/tmp/結果出現 error :
rsync: readlink_stat("/home/james/.gvfs") failed: Permission denied (13)看一下這個 folder 的 permission 是 r_x,沒有w。 查一下,gvfs是新的 gnome vfs 架構,使用gio library。 會在login x 的 user home dirctory 下 mount .gvfs folder 到gvfs。 所以..先logout,login 成其他人, umount /home/james/.gvfs 之後,就可以 rsync ..
2009年6月29日 星期一
ubuntu memory larger than 4G
$ sudo sudo apt-get install linux-headers-server linux-image-server linux-server
2009年6月26日 星期五
build pilot-link-0.12.4
./configure --prefix=/home/charles/pilotmake結果出現 error:
contactsdb-test.c:28:18: 錯誤: popt.h:沒有此一檔案或目錄 contactsdb-test.c: In function 「main」: contactsdb-test.c:348: 警告: 「pilot_connect」 is deprecated (declared at ../include/pi-header.h:31) make[2]: *** [contactsdb-test.o] Error 1 make[2]: Leaving directory `/home/charles-chang/pilot-link-0.12.4/tests' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/charles-chang/pilot-link-0.12.4' make: *** [all] Error 2看一下,是有 popt 這個 folder,也有 popt.h 呀。 所以用 ./configure --help 看一下.. 有這個選項:
--enable-conduits Build the userland conduits所以 重新 configure..
./configure --enable-conduits --prefix=/home/charles/pilot這樣出現的config message 就有:
Userland Tools -------------------------. Build userland tools.... : yes Support for popt........ : yes (internal)之後再make 就 OK 了!
2009年6月25日 星期四
Building Git on Centos 5
wget http://kernel.org/pub/software/scm/git/git-1.5.4.5.tar.gz tar zxvf git-1.5.4.5.tar.gz cd git-1.5.4.5 make prefix=/usr/local all sudo make prefix=/usr/local install要裝 man page的話:
wget http://kernel.org/pub/software/scm/git/git-manpages-1.5.4.5.tar.gz cd /usr/local/share/man sudo tar zxvf ~/git-manpages-1.5.4.5.tar.gz然後就可以
git --version man git看看是不是 work.
2009年6月24日 星期三
rpmdb: Lock table is out of available locker entries
$ sudo yum rpmdb: Lock table is out of available locker entries rpmdb: Unknown locker ID: bc0 error: db4 error(22) from db->close: 不適用的引數 error: cannot open Packages index using db3 - 無法配置記憶體 (12) error: cannot open Packages database in /var/lib/rpm Traceback (most recent call last): File "/usr/bin/yum", line 29, in ? yummain.main(sys.argv[1:]) File "/usr/share/yum-cli/yummain.py", line 85, in main base.getOptionsConfig(args) File "/usr/share/yum-cli/cli.py", line 163, in getOptionsConfig disabled_plugins=self.optparser._splitArg(opts.disableplugins)) File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 164, in _getConfig self._conf = config.readMainConfig(startupconf) File "/usr/lib/python2.4/site-packages/yum/config.py", line 685, in readMainConfig yumvars['releasever'] = _getsysver(startupconf.installroot, startupconf.distroverpkg) File "/usr/lib/python2.4/site-packages/yum/config.py", line 752, in _getsysver idx = ts.dbMatch('provides', distroverpkg) TypeError: rpmdb open failed據 這一篇 說,這是因為上次執行 yum 到一半被強制 kill,所以 lock file 沒有release。 解開的方法:
rm /var/lib/rpm/__db.00* rpm --rebuilddb
2009年6月20日 星期六
Install Firefox 3.6
deb http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu jaunty main然後收 GPGKEY
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com EF4186FE247510BE然後再install firefox 3.6 就可以
2009年6月11日 星期四
mount samba folder
mount -t cifs -o username=server_user,password=server_password //192.168.44.100/share_name /path_to/mount_point
2009年6月6日 星期六
set bridge network for virtualbox
#!/bin/bash brctl addbr br0 ifconfig eth0 0.0.0.0 brctl addif br0 eth0 #if you have a dhcp-server uncomment this line: #dhclient3 br0 #If you have a static IP uncomment the following lines and #change the IP accordingly to your subnet: #ifconfig br0 192.168.178.5 up #route add default gw 192.168.178.1 #Now we will create the tap device for the vm,! # change your username accordingly tunctl -t tap0 -u simon #Now add the tap-device to the bridge: ifconfig tap0 up brctl addif br0 tap0有關 network bridge 的說明,還是在 man 中說得清楚。
brctl addbr br0
ifconfig eth0 0.0.0.0把 實體網卡 eth0 設為 promisc mode (所有封包都收).
brctl addif br0 eth0把實體網卡 eth0 加入 bridge 網路 br0 中。
dhclient3 br0原來使用 eth0 的host ,改用 br0,br0 向dhcp 取得 ip..
tunctl -t tap0 -u username新增一個虛擬網卡 tap0,可以用的 user 是 "username"
ifconfig tap0 up啟動 這個 虛擬網卡 tap0
brctl addif br0 tap0把 tap0 這個虛擬網卡也加入 br0 這個 bridge network card 中。
2009年2月26日 星期四
AndroidFanatic - News and Forume
2009年2月25日 星期三
mplayer -vo caca : play video on console
2009年2月16日 星期一
ARM GCC Inline Assembler
asm(code : output operand list : input operand list : clobber list);也就是一堆用 ':'分開的字串。 其中 'code' 的部份要存取 output operand list , input operand 的內容,是用 % 符號:
%0 代表存取 output operand %1 代表存去 input operand 最後的'clobber' 是要告訴 compiler 有哪些 register 被這段 assembly code 修改了。為了防止 compiler 把這一段 inline assembly code optimize 掉,通常都會加上 volatilr:
asm voltaile("mov %0, ror #01" : "-r" (result) : "r" (value));這段 inline assembly,如果之後的部份都沒有資料,就可以不寫,舉例來說:
asm volatile("mov r0, r0");這只是用來delay的code,沒有input, output,也沒有 register 會被修改,所以後面的 部份都不用寫。 但是如果有資料一定要寫,他的前面部份就不可以省略,舉例來說:
asm volatile("" : : : "memory");這段inline assembly 不包含任何 code,只是告訴 compiler memory 有可能會被修改。 一般為了好看,建議將一堆 assembly 寫成這樣:
asm volatile( "mov r0,r0\n\t" "mov r0,r0\n\t" "mov r0,r0\n\t" );也就是說,分行寫,但是要記得加上 "\n\t" - 這是要讓 compiler listing 時,比較好看。 Input Output Operand 這兩個區域是要告訴 compiler operand 的資料,利用以下 "Constraint" 來通知: Operand Register 的類型:
- f : 是floating point register (有些 cpu 有專屬的 floating point register)
- I : 立即定址 immediate operands
- J : Indexing constants
- K : negative value in rhs
- L: negative value in rhs
- M : for shift
- r : General registers -- ARM 一般用這個
- = : Write-only (通常所有的 output operand 都會加這個符號)
- + : Read-Write (inline assemnly 不支援這個符號)
- & : Output only - 這個register 只做 output 使用
asm volatile("mov %0, %0, ror #1" : "=r" (value) : "0" (value));這個 code 是將'value" right shit 1 bit。 但是用同一個 register 來作就可以。 input operand 用 "0" 告訴 compiler ,使用 第0個operand (就是 output operand)。 所以 input, output 都會用同一個 register (mov %0, %0..)。 Clobbers 把被修改的部份寫在這
asm volatile( "amsd r3, %1, #3 \n\t" "eor %0, %0, r3 \n\t" "addne %0, #4" : "=r" (len) : "0" (len) : "cc","r3" );例子使用了 r3 作scratch register,所以做完這段 code 後,r3的值會被修改,以在clobber的區域要列出 "r3"。 另外,作邏輯運算後,status 區域也會修改,所以要把"cc"也列上。 還有另一個例子:
asm volatile( "ldr %0, [%1] \n\t" "str %2, [%1, #4] \n\t" : "=&r" (rdv) : "r" (&table), "r" (wdv) : "memory" );這一段code會update table 的內容,所以要在....
有一點沒寫到,就是 c variable name 都寫在 operand 後面,用括號( )括起來..
在 "Assembler Instruction with C expression operand" ,範例:大概可以這樣說: assembly code 中,要引用 C 宣告的部份,就要寫在 operand (in/out) 欄位,並且寫號 constrain. 然後用 %0, %1...來使用。 如果是直接存取 register,就直接用 r1, r2, r3... 但是要記得寫在 clobber 欄位。asm ("fsinx %[angle],%[output]" : [output] "=f" (result) : [angle] "f" (angle));在operand 前可以用 [name] 寫出''將會用這'name'名字稱呼''。 然後在 code 區域就可以直接用 %[name] 來引用
ref:
Lenny Released
2009年2月12日 星期四
加一個以前換下來的 HD 到 Sempron26Debian..
Disk /dev/hdb: 82.3 GB, 82348277760 bytes 255 heads, 63 sectors/track, 10011 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x9b8c9b8c Device Boot Start End Blocks Id System /dev/hdb1 * 1 2501 20089251 7 HPFS/NTFS /dev/hdb2 2502 10011 60324075 f W95 Ext'd (LBA) /dev/hdb5 2502 10011 60324043+ c W95 FAT32 (LBA)所以用 extend 的部份就好了..
用 fdisk 刪除(d) partition 5, 2 然後再 create (n) parition:extend,create (n) partition : logical,然後就是:
Disk /dev/hdb: 82.3 GB, 82348277760 bytes 255 heads, 63 sectors/track, 10011 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x9b8c9b8c Device Boot Start End Blocks Id System /dev/hdb1 * 1 2501 20089251 7 HPFS/NTFS /dev/hdb2 2502 10011 60324075 5 Extended /dev/hdb5 2502 10011 60324043+ 83 Linux為了保險,重開機...
這樣 mount 都不用先format (mkfs.ext3)。
所以 mount 在 ~/myhd 中。
決定還是在裡面 create folder,再用 link 到~/下好了。
先mv .VirtualBox 到 _toVirtualBox
再建link(ln -s myhd/_toVirtualBox .VirtualBox),然後 try virtualbox 會不會動... OK!
同樣,move vboxshare 過去,建 link..
OK. 這樣兩個 hd 都剩 30G.
2009年2月9日 星期一
convert id tage
java -jar id3iconv -e gb2312 *.mp3python: mid3iconv , 這個要安裝 python-mutagen。http://gearspot.blogspot.com/2007/05/mid3iconvmp3tag.html
mid3iconv -e gbk --remove-v1 *.mp3
2009年2月6日 星期五
Android mast - repo int and sync
這個花很多時間..花了5 hours ,.repo 這個folder 約 674M。 checkout 後,變成2.3G 然後再 create .repo/local_manifest.xml,再 repo sync..就沒 error 了。 為了節省以後的時間,把 .repo tar 起來... 但是不知道單純這樣解開有沒有用..
果然,zip 起來,也是 664M - 所以 .repo 真的是已經壓縮過...測試,在另一個 folder 解開 .repo,然後在 .repo 裡repo sync 可以恢復... 為求保險,在 android-cupcake sync 一個 cupcake branch 的 repo..
Git out success ! open port 9418
>git config --global user.emal "charles@gmail.com"還刪掉 .repo。 之後,就可以 run rep init ... 了。 然後,接著的 repo sync 也 OK。
2009年2月3日 星期二
Git behind proxy
Basically the steps are: 1 - sudo apt-get install socket 2 - in your home directory, put a shell script called "proxy-cmd.sh" containing (replace YOUR_PROXY and YOUR_PROXY_PORT with your own proxy parameters): #! /bin/bash (echo "CONNECT $1:$2 HTTP/1.0"; echo; cat ) | socket YOUR_PROXY YOUR_PROXY_PORT | (read a; read a; cat ) 3 - chmod +x proxy-cmd.sh 4 - export GIT_PROXY_COMMAND=<PATH TO YOUR SCRIPT>/proxy-cmd.sh Enjoy, Matthieu PS: you can export GIT_PROXY_COMMAND in your ~/.bashrc file to make this permanent還沒確認有沒有效...
這一篇有說明 socket command : git via a proxy server
From: Jan-Benedict Glaw <jbglaw@lug-owl.de> Date: 2006-05-18 18:31:32 On Wed, 2006-05-17 20:44:28 -0700, Sam Song <samlinuxkernel@yahoo.com> wrote: > Petr Vandrovec <petr@vmware.com> wrote: > > Jan-Benedict Glaw <jbglaw@lug-owl.de> wrote: > > > Well, install some package to have `socket' > > > available? Debian calls > > > the packet `socket', too, so I guess Fedora may > > > have something similar. > > > > Surprisingly they do not... You should be able to > > replace 'socket' with > > 'netcat' - and I believe that netcat/nc package is > > available for Fedora. For > > this purpose they have same command line & behavior. > > Ummm, I am trying on that. nc is avaiable for Fedora. > But what could be the replacement for CONNECT in > Fedora? :-) Erm, you haven't understood what you're doing there, have you? With the GIT_PROXY_COMMAND helper, you're expected to create a clean tunnel which in turn git can use to transfer its data. You've only got some limited internet connectivity via a HTTP proxy available, so you need to use this. This means: * The proxy administrator needs to allos outgoing connections for the CONNECT method with git's TCP port. * You need to have some minimalistic program to initially speak HTTP with the proxy and later on just stream the raw git protocol through the link. * You may or may not need to strip anything that came into the git stream by accident because you tunnled it through a HTTP proxy. A reply message from the proxy server is an example for this. So this little script (using "CONNECT" and netcat or socket) does the first part: it talks in the language HTTP with the proxy server. It may be enough to just use CONNECT, but you may need to speak some more lines, eg. for proxy authorization. The first `cat' in there is just for pushing the git protocol though the HTTP proxy connection later on (hopefully after the proxy was made to accept the the CONNECT request.) Once the proxy accepted it, it'll send you a HTTP/200 message (or something like that) and an empty line. This is what the two reads are for; the next `cat' simply again transfers all the rest (the git protocol). To draw the line, there's not _one_ solution to HTTP proxy tunneling, there are many, and you'll need to design one that fits your network. It should be quite simple, given that you've got nice tools like `strace' and `tcpdump', which will help you to understand how the proxy reacts and so on. MfG, JBG -- Jan-Benedict Glaw jbglaw@lug-owl.de . +49-172-7608481 _ O _ "Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg _ _ O für einen Freien Staat voll Freier Bürger" | im Internet! | im Irak! O O O ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA)); - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
結果...
charles-chang@rbtlegacy:~/android-eee$ repo init -u git://android.git.kernel.org/platform/manifest.git Getting repo ... from git://android.git.kernel.org/tools/repo.git fatal: protocol error: bad line length character所以是 Fail... 不知道是不是公司的squid proxy 不允許 CONNECT 這個 operation. 同樣的一篇有說:
Note: most HTTP proxy servers allow CONNECT method to a very limited range of ports, and administrators will need to enable the git port (9418) explicitly.所以要問 MIS 有沒有 允許 CONNECT method和開啟 git 要用的 9418 port。
2009年2月2日 星期一
Sempron26Debian - 手動 update kernel 到 2.6.26
2009年2月1日 星期日
Bookmark - android for Virtualbox
ref : http://groups.google.com/group/android-porting/browse_thread/thread/66862bdb52dac936/8ffe04d6b3f9d4c0
copy 一下人家寫好的 how to.
大概是follow 先前的,但是 不用 checkout branch。
build完後 copy vendor/eeepc 下的 kernel.config 到 kernel 下作 menuconfig 重新 set kernel option for virtualbox, build kernel。
最後把 installer.img convert 成 virtualbox 吃的 vdi file。
---------------------------------------
Hi, all How to use x86 android platform on virtualbox =============================================== Last modified by Lim,GeunSik on 8-Jan,2009 Current Work status is not finished. But, I opened and shared to combine with developers for this tasks all over the world. Why I like virtualbonx in Linux distribution like Fedora 9? This is Major characteristics per Virtualization Software. ------------------------------------------------------------------- Software Linux WinXP Opensource Free Quick Install ------------------------------------------------------------------- M$ Virtual PC X O X O O VMwareServer O O X O O VMwareWorkstation O O X X O Parallels O O X X O QEMU O O O O O Virtualbox O O O O O XEN O X O O X KVM O X O O X ----------------------------------------------------------------- acirc;�� 1. Development environments * OS: Feodra 9 ( Linux 2.6.27-9 ) * GCC: gcc(gcc 4.3.0) and gcc34 (gcc 3.4) <- I recommend gcc 3.4 compat-compiler to build x86 android fullsource. * Glibc: glibc 2.6 (NPTL Thread Model) * PC: Samsung MagicStation DB-P70 Model * CPU : Interl Core2 Quad CPU Q9300 (2.50Ghz) , bogomips is 4,987.50 , cache size 3,072kb * MEM: Samsung DDR2 2G * Reference: Midhun & Chen Yang's posting at http://groups.google.com/ and http://source.android.com * Additional information: When i finished this task finally, I will upload final howto using WYSWYG and figures at http://www.kandroid.org. �2. Build kernel source for VirtualBox software. Fedora9$ cd ~/bin_x86/mydroid Fedora9$ cp ./vendor/asus/eee_701/kernel.config kernel/.config Fedora9$ cd kernel Fedora9$ make menuconfig * Network device for virtualbox s/w network device support -> Ethernet (10 or 100Mbit) ---> [*] EISA, VLB, PCI and on board controllers <*> AMD PCnet32 PCI support <- We need virtual lan infra in virtualization like vmware or virtualbox. * To support FB on virtualbox environment. Graphics support ---> <*> Support for frame buffer devices ---> [*] VESA VGA graphics support <- Unfortunately, Vesa VGA support 800X600 resolution. Console display driver support ---> <*> Framebuffer Console support [*] Select compiled-in fonts [*] VGA 8x8 font [*] VGA 8x16 font * Disable pmem allocator if your kernel is 2.6.27 base. [*] Misc devices ---> [ ] Android pmem allocator (NEW) If you are using 2.6.27 based x86 android full source, Disable "PMEM" feature in "make menuconfig menu. pmem is only needed for certain devices requiring large physically contiguous memory on the MSM7XXX (GPU,DSP, etc). It's not currently used by any other SoCs and its absence is not a fatal error. ------------------------------------------------------------------- * MSM7XXX (GPU,DSP, etc): YUV --> pmem ---> VideoLayer * Another Chip: YUV --> mEmulation(ro.kernel.qemu=1) --> /dev/fb0(RGB) ------------------------------------------------------------------- Fedora9$ make bzImage Fedora9$ ls ./arch/x86/boot/ Ref) If you want to build 2.6.27 based android kernel at http://android.git.kernel.org webstie, you may apply alsa related the patch at http://review.source.android.com/6751 �3. convert installer.img to installer.vmdk with virtualbox Fedora9$ cd ~/bin_x86/mydroid/out/target/product/eee_701 Fedora9$ rpm -ivh http://download.virtualbox.org/virtualbox/2.1.0/VirtualBox-2.1.0_4114... Fedora9$ VBoxManage --help | grep Version VirtualBox Command Line Management Interface Version 2.1.0 Fedora9$ VBoxManage convertfromraw -static -format VDI ./ installer.img ./installer.vdi (X) Fedora9$ VBoxManage convertfromraw -format VDI ./ installer.img ./installer.vdi (O) VirtualBox Command Line Management Interface Version 2.1.0 (C) 2005-2008 Sun Microsystems, Inc. All rights reserved. Wrong owner (0) of '/tmp/.vbox-invain-ipc'. Converting from raw image file="installer.img" to file="./ installer.vdi"... Creating dynamic image with size 406871040 bytes (389MB)... Fedora9$ file ./installer.vdi ./installer.vdi: data OR Fedora9$ vditool DD installer.vdi *.img Fedora9$ vditool SHRINK installer.vdi �4. Setting of virtualbox Open "Sun VirtualBox" software ->Click on New -> Next - Name = it as "AsusAndrioid" - OStype=Linux - Version=2.6 - RAM=256MB - Hard Disks= Slot Checked Boot Harddisk with IDE Primary Master �5. booting android kernel in virtualbox s/w. 1) When I start the installer.vdi in virtualbox software, it hangs on grub Loading stage 2 step. Below is error screenshot to help understanding. So, you have to push F12 key fastly as soon as start installer.vdi with virtualbox. Remember "Press F12 to select boot device" message in virtual box window. 2) When you press F12 key and it shows the following: 0: sys_loader 1: recovery 2: std_boot (* default selection) 3) Option "0: sys_loader" is selected by default when kernel boot in virtualbox. * Option 0: sys_loader 0: cmdline (hd0,0)/cmdline 1: kernel --use-cmd-line (hd0,0)/kernel 2: initrd (hd0,0)/ramdisk * Option 1: recovery 0: cmdline (hd0,2)/cmdline 1: kernel --use-cmd-line (hd0,2)/kernel 2: initrd (hd0,2)/ramdisk * Option 2: std_boot 0: cmdline (hd0,2)/cmdline 1: kernel --use-cmd-line (hd0,2)/kernel 2: initrd (hd0,2)/ramdisk Now, I din't find "/boot/grub/menu.lst" file for bootloader like Feodra or Ubuntu. Belows is process informations using top command. #> cat /proc/version Linux version 2.6.25-00101-gb6922fa (dmitr...@weppard.mtv.corp.google.com) (gcc version 4.0.3 (Ubuntu 4.0.3-1ubuntu5)) #1 SMP PREEMPT Wed Nov 19 11:52:46 PST 2008 #> cat /proc/partitions major minor #blocks name ......... Above Omission .......... 8 0 397335 sda 8 1 4439 sda1 8 2 391872 sda2 � 5. Modify kernel cmd line like Linux: *** Select No 2 "2: std_boot (* default selection)" after F12 key. Remove "--use-cmd-line" option in Linux boot display. Append "androidboot.hardware=eee_701 vga=788" options in Linux boot display Highlighted entry is 2: GNU GRUB version 0.97 (639K lower / 261056K upper memory) 0: cmdline (hd0,2)/cmdline 1: kernel --use-cmd-line (hd0,2)/kernel 2: initrd (hd0,2)/ramdisk .......... Omission ......... Highlighted entry is 0: Todo: But, bootloader is not found (hd0,2) because (hd0,2) partition is not exist. Booting command-list cmdline (hd0,2)/cmdline Error 22: No such partition Press any key to continue ... � 6. Mount "* img" to /dev/block/sda2 device node. Use installer command /data directory. #> system/bin/installer -p /dev/block/sda2 It gives an error that the total requested size is greater than the disk size as belows. " Total requested size of partitins (1,644,167,168) is greater than disk size (406,871,040)." (My image size is 387 MB and it is looking for around 1.5GB space). #> ls /data/ userdata.img boot.img system.img bootldr.bin lost+found OR Fedora9#> mkdir /data/boot Fedora9#> mount -t ext2 /dev/block/sda2 /data/boot Fedora9#> echo " vga=788" > /data/boot/cmdline Fedora9#> umount /data/boot
這裡有 build 好的 Android for VirtualBox 的VDI 可以 download,download 後 用 VirtualBox run 就可以了 Android in VirtualBox
2009年1月31日 星期六
Bookmark : after make... Android image
follow link 的說明,build 好的 system folder 是
- / : root
- /system : system
- /data : data
follow instruction 要 mkinitramfs 時...找不到2.6.27-android module..
這一篇有增加一個 step,就是build x86 kernel 的 module.
不知道要不要作..(Q_Q 是日文..),但是 boot image 都做出來了,應該是不需要才對..
這一個 thread 有說明要怎樣 build 一個 x86 kernel for Virtualbox.
他是由 installer.img 來作的..
Some bookmarks about Android : cupcake
自從 Android 整個 open source 後,一堆 support 都出現了,Android 開始蓬勃發展了起來。
像這一篇:Try out Cupcake yourself
就把 cupcake build 好,用 1.0 版的 android emulator 就可以 run 了。
還有,跟著 link,就可以看到,有人開始把 Android SDK 納入 Debian package了。
deb package of Android SDK with breeding edage cupcake images
使用 debian 系統的人,以後就可以簡單的 apt-get 就可以 run Android emulator,安裝 Android SDK了。
Android open source 後,像以前的一些限制:Armv5 以上,cramfs support 應該都沒有了吧。
因為這些都是因為 Android 沒有 open source 前,只有 release rootfs,所以 kernel porting 的重點都在"能 run 這個 rootfs",所以才有這些限制。
現在 Android for x86 都出來了,Armv5 的限制應該也沒有了吧。
2009年1月29日 星期四
果然有error.. build OK!
Copy: jasmin (out/host/linux-x86/obj/EXECUTABLES/jasmin_intermediates/jasmin) Install: out/host/linux-x86/bin/screenshot2 Install: out/host/linux-x86/bin/traceview Install: out/host/linux-x86/lib/libswt-atk-gtk-3236.so Install: out/host/linux-x86/lib/libswt-cairo-gtk-3236.so Install: out/host/linux-x86/lib/libswt-gtk-3236.so Install: out/host/linux-x86/lib/libswt-pi-gtk-3236.so target asm: grub_start_stage2 <= external/grub/stage2/start.S Target userdata fs image: out/target/product/eee_701/userdata.img du: 無法存取「out/target/product/eee_701/data」: 沒有此一檔案或目錄 /bin/bash: line 0: [: -lt: unary operator expected find: out/target/product/eee_701/data: 沒有此一檔案或目錄 out/host/linux-x86/bin/genext2fs: out/target/product/eee_701/data is neither a file nor a directory make: *** [out/target/product/eee_701/userdata.img] Error 1 make: *** Waiting for unfinished jobs....但也還好,google一下,有回應: Change 8265: Fix the build issue when building installer_img with TARGET_ARCH=x86 所以follow說明,找一下 bootable/diskinstaller/config.mk 改一下:
installer_target_data_files := \ $(INSTALLED_BOOTIMAGE_TARGET) \ $(INSTALLED_SYSTEMIMAGE) \ $(INSTALLED_USERDATAIMAGE_TARGET) \ $(bootldr_bin)改成
installer_target_data_files := \ droidcore \ $(bootldr_bin)然後重新下一次 make xxxx... 的 command.. 結果呢? 還在 build.. 希望會有好結果..
花了一個晚上,終於build OK了。 只有在最後,target Dex xxxx 的階段,不知道是因為 memory 不夠(只有512M),所以 swap 一直動作,hd 轉個不停,大概持續1個多小時,然後沒有任何output。 disk space 也沒有改變,幾乎以為是當機。 最後的log是:
--- Finished installer data image -[ out/target/product/eee_701/installer/installer_data.img ]- Creating bootable installer image: out/target/product/eee_701/installer.img Updated inst_boot length to be 4444KB Updated inst_data length to be 420764KB I/diskconfig(16123): Requesting operation on a regular file, not block device. I/config_mbr(16123): Configuring pentry. status=0x80 type=0x83 start_lba=2048 len_lba=8888 I/config_mbr(16123): Configuring pentry. status=0x0 type=0x83 start_lba=10936 len_lba=841528 I/config_mbr(16123): Configuring pentry. status=0x0 type=0x0 start_lba=0 len_lba=0 I/config_mbr(16123): Configuring pentry. status=0x0 type=0x0 start_lba=0 len_lba=0 Copying images to specified partition offsets I/diskutils(16123): Writing RAW image 'out/target/product/eee_701/installer/installer_tmp.img' to 'out/target/product/eee_701/installer.img' (offset=1048576) I/diskutils(16123): Wrote 4550656 bytes to out/target/product/eee_701/installer.img @ 1048576 I/diskutils(16123): Writing RAW image 'out/target/product/eee_701/installer/installer_data.img' to 'out/target/product/eee_701/installer.img' (offset=5599232) I/diskutils(16123): Wrote 430862336 bytes to out/target/product/eee_701/installer.img @ 5599232 File edit complete. Wrote 2 images. Done with bootable installer image -[ out/target/product/eee_701/installer.img ]-
2009年1月27日 星期二
Worklog - build Android for x86
原來 -b option 就是取出 branch,這個 Thread 最後(2009/01/29)說 cupcake 已經 merge 進 master 了,所以不需要再 -b cupcakerepo sync 要好久呀,常常在 "unpacking objects" 就停下來。(停在某個 %). 這時候,我就用 Ctrl-C 中斷,等個幾分鐘後再作 repo sync.. 有時候就會繼續下去.. 但是一下又停了。
發現用system monitor 來看比較方便,大約 1min 會有一個download,所以如果發現network 沒動作,超過 3 min,就Ctrl-C,再 repo sync..
終於,花了三天終於 sync 完畢,開始作 checkout xxx 的動作。
checkout 動作就不用再download了,所以很快..follow Androidx86 的說明,加上 local_manifest.xml。 內容大概是加上 vendor/asus/eeepc701 這一個 source。 再用 repo sync 把他拉下來。 -- 這個很快。一下就好了。 然後就是 follow instruction,build...
後記: 有人 follow 2009/1/29以後的 thread 整理了一份 "build android for eeepc"。
這個文件有點問題,照著他作: repo init 後 create local_manifest 然後 repo sync,會出現 error。 在 repo init 後,還是要 repo sync 一次,再create local_manifest ,再 repo sync 一次..
2009年1月26日 星期一
Before building --- android
google 了一下,想不到,連 Androidx86 這樣的網站都出現了。
看了一下,好像是 2009/1/18 建立的。 - 還蠻新的。
最早的 x86 port 是 eeepc 701,現在該站的文章有說明 ThinkPad, Geode LX (for OLPC?)。
艇麻煩的,還要安裝Google為 Android寫的 source control tool : repo。
雖然說是 git 的加強,但也太囉唆了些。
還好 repo 只是一個 python file。所以'安裝'還算簡單,就是 download 檔案下來,chmod 就可以了。
最近好像"為xxx project 寫building tool 好像是流行,稿得要 build 一個 project就要install 一堆 build environment。最古老/完整的內容,應該還是這一個討論串。後來的內容都是要在 VirtualBox 上 Run。好像還體難的,有一堆問題。
為什麼不能像以前一樣,就是 configure, make, make install 就 OK ?
2009年1月20日 星期二
bookmark - Android porting to real target
會不會有雞生蛋,蛋生雞的問題?另外一篇 Compilation of Android kernel ,則是說明 如何 build 一個可以 run android vm 的 kernel。 是以qemu for arm 作例子
2009年1月4日 星期日
Hv3 - the fast light web browser
速度是很快,image, javascript 都有一個開關可以選。 (Html Viewer 3)
標籤
- 3g (19)
- 工作的備worklog (93)
- 自言自語 (36)
- 草稿 (1)
- 亂亂寫 (8)
- 翻譯 (3)
- administration (76)
- alsa (7)
- android (299)
- apple (5)
- application (42)
- archlinux (1)
- audio (3)
- avr (6)
- backup_restore (2)
- bluetooth (5)
- bookmark (38)
- bootloader (21)
- browser (5)
- cellphone (28)
- command (8)
- Configuration (27)
- debug (7)
- django (1)
- driver (15)
- earphone (1)
- editor (1)
- EFL (1)
- ffmpeg (18)
- Filesystem (4)
- GCC (8)
- Gentoo (1)
- google (1)
- Graphic (3)
- hardware (40)
- hero (7)
- hibernation (9)
- iMX51 (38)
- Info (3)
- Install (30)
- java (4)
- Kernel (102)
- language (2)
- life (2)
- make (11)
- MantainLog (38)
- MCU_P (9)
- memo (8)
- microcontroller (3)
- MINGW (7)
- network (19)
- OpenCL (1)
- OS (11)
- package (3)
- pad (1)
- ProblemAndSolve (15)
- programming (8)
- Python (7)
- raspberry_pi (23)
- SDL (2)
- sensation (13)
- setup (3)
- software_package (36)
- SQL (1)
- suspend (2)
- ToDo (5)
- tool (3)
- ubuntu (1)
- VersionControl (45)
- Virtualization (15)
- VLC (5)
- wheezy (1)
- wifi (3)
- Windows (16)
- xiaomi (1)
- xperia (1)
網誌存檔
-
▼
2009
(62)
-
►
9月
(16)
- clone partition/disk to another partition/disk
- mysql how to - step by step
- 白痴..
- django - install
- code reading : sample code of ffmpeg : avcodec_sam...
- GCC - library link order
- build ffmpeg sample in mingw - success
- make fail - disable all encoder in ffmpeg
- ffmpeg config log
- build ffmpeg sample in mingw
- log -ffmpeg install
- bookmark - ffmpeg and SDL tutorial
- bookmark : video sample site - mplayer
- SDL programming - draw pixel
- ffplay in gdb & ffmpeg library
- msys, mingw
-
►
2月
(13)
- AndroidFanatic - News and Forume
- mplayer -vo caca : play video on console
- ARM GCC Inline Assembler
- Lenny Released
- 加一個以前換下來的 HD 到 Sempron26Debian..
- convert id tage
- 接著到kernel 下 make menuconfig。 http://virtuallysho...
- Android mast - repo int and sync
- Git out success ! open port 9418
- Git behind proxy
- Sempron26Debian - 手動 update kernel 到 2.6.26
- 明天的備忘..
- Bookmark - android for Virtualbox
-
►
9月
(16)