發表文章

目前顯示的是有「linux」標籤的文章

Linux VLAN 筆記

圖片
Linux VLAN 筆記  kernel 開啟802.1q功能後,便可以透過簡單指令,設定VLAN.  brctl delif br0 ath0 brctl delif br0 eth0 vconfig add ath0 555 vconfig add eth0 555 ifconfig ath0.555 up brctl addbr br555 brctl addif br555 ath0.555 brctl addif br555 eth0.555 ifconfig ath0.555 up ifconfig eth0.555 up ifconfig br555 10.0.0.11 up Wireless AP mode運作正常,抓無線封包有看到帶了VLAN ID 555. 不幸的是,我的Wireless STA,不能成功ping到我的AP,只好下去看程式,這邊有幾個部份要看.  1. Linux kernel 802.1q  2.Wireless driver.(我手邊的是Atheros proprietary LSDK driver,所以這部份內容都不會放上來)  3.hostapd跟wpa_supplicant.    Linux的net_dev是用一個list串起來,每個net_dev都有會呼叫ev_queue_xmit ->dev_hard_start_xmit ,去傳送封包至下一步。  vlan.c::vlan_proto_init()時會invoke,dev_add_pack(&vlan_packet_type);  static struct packet_type vlan_packet_type __read_mostly = {         .type = cpu_to_be16(ETH_P_8021Q),         .func = vlan_skb_r...

安裝Cowday到你的linux歡迎訊息,message of day linux

圖片
1.先安裝 sudo apt-get install fortune cowsay 2接著加入以下指令到 bash.bashrc中,這樣每次開啟terminal 或 ssh 就會有隻牛跟你說話囉 sudo vim    / etc / bash.bashrc   # Spicing up Terminal fortune | cowsay -n echo source: http://xtremediary.blogspot.tw/2010/04/spice-up-ubuntulinux-terminal-with.html

Strace cross compile PowerPC

今天遇到一個bug Web daemon隨機會segmentation fault 想用Strace來debug看看 在這抓 - http://sourceforge.net/projects/strace/files/strace/ ./configure --host=powerpc-linux CC=powerpc-linux-gcc LD=powerpc-linux-ld  make之後就可以放上機器上囉。 在機器上執行:Strace -f -o web.trace webs 神奇的事發生了,這時候我的web daemon就不會掛掉了。 只好,慢慢trace code了,最後是發現有人做這樣的行為,寫C時要小心,別亂copy亂指的。 UCHAR old_pass[32]; UCHAR *passphrase; strcpy(passphrase, old_pass);

objdump gcc Assembly debug筆記

gcc -s xxxx 可以篇成組合語言 gcc -g xxxx 之後可以用 objdump -S a.out 看到組語、C code 遇到要debug kernel panic時很好用! :) example: [carlos@localhost testC]$ objdump -S ./a.out ./a.out:     file format elf32-i386 080483d4 : int func1() {  80483d4:       55                      push   %ebp  80483d5:       89 e5                   mov    %esp,%ebp  80483d7:       83 ec 08                sub    $0x8,%esp    printf("WAT WAT WAT \n");  80483da:       c7 04 24 10 85 04 08    movl   $0x8048510,(%esp)  80483e1:       e8 02 ff ff ff          call   80482e8 }  80483e6:       c9                      leav...

Cross Compile Hello world kernel module - PowerPC

寫了幾年的程式,常常在改人家寫好的kernel module,好像沒自己寫過,今天就來試試看。 1.先寫好hello.c 這段整個是reference copy來的。 #include <linux/module.h> /* Needed by all modules */ #include <linux/kernel.h> /* Needed for KERN_INFO */ int init_module(void) { printk(KERN_INFO "Hello world 1.\n"); /* * A non 0 return means init_module failed; module can't be loaded. */ return 0; } void cleanup_module(void) { printk(KERN_INFO "Goodbye world 1.\n"); } 2. Makefile kernel module的compile方式跟 userspace application 有點不同。 我實驗用的開發板是PowerPC平台,其make file如下。 # Cross compilation Makefile for ARM KERN_SRC=../../linux-2.6.37_build obj-m := hello.o all: make -C $(KERN_SRC) ARCH=powerpc CROSS_COMPILE=/opt/powerpc/usr/bin/powerpc-linux- M=`pwd` modules clean: make -C $(KERN_SRC) ARCH=powerpc CROSS_COMPILE=/opt/powerpc/usr/bin/powerpc-linux- M=`pwd` clean 3.把hello.ko tftp至機器上測試 [root@localhost /sbin]# insmod hello.ko Hell...