2007/Jan/12

ARM (Advanced RISC Machine) คืออะไร คือ Microprocessor แบบ RISC นั่นเอง เป็นที่นิยมใช้ใน อุปกรณ์เล็ก ๆ เช่น เกมส์บอย มือถือ PDA เยอะแยะมากมาย กินไฟน้อย.. พวก ARM CORE ทั้งหลายนั้นแตกแขนง Licence ไปหลายยี่ห้อ หลายชื่อ intel , marvell , atmel , sumsung , ti ... อ่านไม่หมดเยอะจัดมีหลายรุ่น ต้องไปนั่งรื้อฟื้นความจำสมัย z80, MCS51(ตัวนี้เพื่อนใช้หากินจนถอย วีโก้ไปแล้ว) ที่เคยเรียนมา ทั้งหมดทั้งหลายที่สนใจ ARM ขึ้นมาเพราะอยากเอามันมาลง BSD ให้ได้หรือ Linux ซึ่งอยากทำมาก ๆ(เพื่อนหลายคนเก่งๆ ทำแล้วอยากทำมั่ง)

สรุปแล้วที่ต้องมีคือ

- ARM9 dev board(แพงหูฉี่) ถ้าไม่มีเอา Qemu ลงแทน อยู่ใน /usr/ports/emulators/ (ถ้าเลือกช่อง kqemu เพื่อเพิ่ม speed อ่านมาจาก kitty.in.th ต้องใช้ Kernel source สำหรับ option นี้)

- Toolchian ประกอบด้วย binutils + compiler (ขาดอะไรมั่งหว่า)

  1. /usr/ports/devel/arm-elf-binutils (เกี่ยวกับ ELF)
  2. /usr/ports/devel/arm-elf-gcc295
  3. /usr/ports/devel/gdb53

เราก็จะได้โปรแกรมคร่าว ๆ ดังนี้ หลัก ๆ

* arm-elf-ld - the GNU linker.
* arm-elf-as - the GNU assembler.

และมีคำสั่งโปรแกรม

* arm-elf-addr2line - Converts addresses into filenames and line numbers.
* arm-elf-ar - A utility for creating, modifying and extracting from archives.
* arm-elf-c++filt - Filter to demangle encoded C++ symbols.
* arm-elf-gprof - Displays profiling information.
* arm-elf-nlmconv - Converts object code into an NLM.
* arm-elf-nm - Lists symbols from object files.
* arm-elf-objcopy - Copys and translates object files.
* arm-elf-objdump - Displays information from object files.
* arm-elf-protize - ***
* arm-elf-ranlib - Generates an index to the contents of an archive.
* arm-elf-readelf - Displays information from any ELF format object file.
* arm-elf-size - Lists the section sizes of an object or archive file.
* arm-elf-strings - Lists printable strings from files.
* arm-elf-strip - Discards symbols.
* arm-elf-unprotoize - ***



edit @ 2007/01/13 02:22:51

2006/Sep/16

Well she's walking through the clouds

With a circus mind that's running round

Butterflies and zebras And moonbeams and fairy tales

That's all she ever thinks about Riding with the wind.

When I'm sad, she comes to me With a thousand smiles, she gives to me free

It's alright she says it's alright Take anything you want from me, anything

Anything.

Fly on little wing, Yeah yeah, yeah, little wing

2006/Aug/31

อะไรคือ Bridge อ่านที่นี่พอเป็นแนวทาง http://www.tanti.ac.th/Com-ranning/NetWork/bridge.htm

Bridge การทำงานคือส่งผ่าน packet ethernet แค่นั้นเอง เมื่อ + ipfw เข้าไปสามารถ fillter ได้ถึงชั้น layer ip ก็กลายเป็น smart bridge ถ้าเพิ่มฟังก์ชัน dummynet + ฟังก์ชัน route ติด Nic สิบตัว ก็จะกลายเป็น super ultra bridge ไปเลย 5 5 5 5+ อันนี้พูดเล่นแต่อยากทำ

การทำงานของมันไม่มีอะไรมากคือ เอา Nic มาสองตัว เปิดฟังก์ชัน bridge ให้มันไม่ต้องใส่ ip ก็คือเมื่อมีสัญญาณไฟฟ้าผ่านมาทางสายแลน มันเอาอ่านหมดทุก packet แล้วจะส่งต่อไปยัง kernel เพื่ออ่านกฎคัดแยกเพื่อส่งไปยัง Nic อีกอันหรือจะทิ้ง packet นั้นไป

Setup (ข้อมูล รายละเอียดอ่านเอาจาก http://www.thai-aec.org/misc/secure_bridge.html)

1.Compile kernel
2.แก้ไข /etc/rc.conf
3.แก้ไข /etc/sysctl.conf
4.แก้ไข /etc/syslog.conf
5.แก้ไข /boot/loader.conf

หลังจากทำทุกอย่างเรียบร้อย กฎที่ให้มาตามด้านบนไม่ work เพราะปัญหาอันดับแรกคือเรา Deny all อยู่แล้วเครื่องไม่สามารถติดต่อใครได้เลย ถ้าต้องการดูว่า bridge เราทำงานหรือไม่ก็เอาสาย lan cross มาต่อเข้า NIC ต้องใช้สามเครื่องในการทดลอง หรือเอาสายจาก Hub เข้ามาเส้นนึงเป็นขา out และสาย cross ต่อเข้าเครื่อง client เป็น in เพื่อทำการทดลอง

เพิ่มกฎ

add pass all from any to any

ถ้า client สามารถเล่นเน็ตแสดงว่า bridge เรา work

- ปัญหาแรก ที่เจอคือ arp ไม่สามารถาส่งผ่านไปได้หลังจากใส่กฎด้านบนไปหมดแล้วเราต้องเพิ่ม

add pass all from any to any mac-type arp

- ปัญหาที่สอง คือ DHCP เพราะว่ากฎด้านบนบล๊อค 0.0.0.0 และ multicast class4 ไว้ด้านบนเลยทำให้ dhcp โดนทิ้งหมดให้เอากฎพวกนี้ทิ้งให้หมด แล้วค่อย copy ไปไว้ deny ตอนท้ายๆของกฎ

${fwcmd} add deny all from any to 0.0.0.0/8
${fwcmd} add deny all from any to 169.254.0.0/16
${fwcmd} add deny all from any to 192.0.2.0/24
${fwcmd} add deny all from any to 224.0.0.0/4
${fwcmd} add deny all from any to 240.0.0.0/4

${fwcmd} add deny all from 10.0.0.0/8 to any
${fwcmd} add deny all from 172.16.0.0/12 to any


${fwcmd} add deny all from 0.0.0.0/8 to any
${fwcmd} add deny all from 169.254.0.0/16 to any
${fwcmd} add deny all from 192.0.2.0/24 to any
${fwcmd} add deny all from 224.0.0.0/4 to any
${fwcmd} add deny all from 240.0.0.0/4 to any


การแก้ปัญหา DHCP เพิ่มกฎ

add pass udp from any to any 67 keep-state #client
add pass udp from any to any 68 keep-state #server

- ปัญหาที่สาม คือ FTP แบบ passive อันนี้แก้ไม่ตกจะให้เราเปิดหมดตั้งแต่ 1025-65xxx ก็ไม่ไหวเพราะจุดประสงค์ของผมคือ block torrent

การแก้ปัญหาคือถ้าจะใช้ server ไหนให้บอกผมมาแล้ว add ให้ชั่วคราว :)... to be continue ง่วง