Tag Archives: kernel - Page 2

[Linux] fakenetdev 假的 network interface

有些時候, 我們會需要一個假的 network device.
像是
1) 某些軟體會去 check network interface
2) 需要學習寫作一些軟體

所以我花了一點點時間寫了這一個 kernel modules
主要功能就是在 linux 下建立一個假的 network interface
這個 network interface
只能送(馬上就 free 掉 packet buffer), 沒有收的 function .

在 insert 時, 可以用參數 name 和 mac 指定特定的 network device name 和 mac address.
ex: # insmod fakenetdev.ko name=fake0 mac=00:aa:bb:cc:dd:ee
mac 的格式也可以是 00aabbccddee 或 00-aa-bb-cc-dd-ee
也支援用 ifconfig 修改 mac
ex: # ifconfig eth2 down
# ifconfig eth2 hw ether 00:aa:bb:cc:dd:ee
# ifconfig eth2 up

這個程式在 ubuntu 8.10 (interpid), Linux kernel 2.6.27 下測試.
目前看起來沒有很大的問題, 原作者要用的目地可以達到

可以從這個 URL 下載程式 fakenetdev

— English —
Sometimes, we will need a fake network device for some purpose
like,
1) cheat some software which will check network mac
2) learn how to write a simple network device driver

So, I spend a little time to write this kernel module.
Major function is that create fake network interface.
It can send packet, but driver will free it immediately.

When insert modules, the module support argument “name” and “mac” to
modify default name and mac.
ex: # insmod fakenetdev.ko name=fake0 mac=00:aa:bb:cc:dd:ee
it also support other format for mac, like 00aabbccddee or 00-aa-bb-cc-dd-ee
and support modify mac by ifconfig
ex: # ifconfig eth2 down
# ifconfig eth2 hw ether 00:aa:bb:cc:dd:ee
# ifconfig eth2 up

This module was tested at ubuntu 8.10 (interpid), Linux kernel 2.6.27.
It seems work fine for me .

You can download follow this link fakenetdev

後記:

這 Driver 不難寫, 麻煩的是在 Debug .不小心少寫一行就 Core Dump.
又懶得弄 KGDB 或是 User Mode Linux, 因為弄的時可能比寫完還多
網路上掃了一遍沒有看到馬上可以用的, 所以就自己亂寫, 希望
大家都可以用得到, 因為是用在*謎*用途的呀 :p

不過這個功能可以用 dummy device 達成,
我寫的頂多就是可以在 load driver 的時候改 name 和 mac .

[Gentoo] Linux 2.6.24 和 ntfs3g 配合的問題.

昨天剛拿到新的 Notebook X61, 想將使用己久的 FAT32 系統換 NTFS (主要還是為了不爭氣的 Windows 做檔案交換用, 而且因為用 VirtualBox, 單一檔超過 2G, FAT32 不吃(手賤嘛).

結果從昨天試到今天, 當 file copy 進用 ntfs-3g mount 的 Disk 時. 就是會出現 Core Dump, 這邊節錄三行就好了.

BUG: soft lockup – CPU#1 stuck for 11s! [wget:28163]

Pid: 28163, comm: wget Not tainted (2.6.24-gentoo-r2 #4)
EIP: 0060:[] EFLAGS: 00000246 CPU: 1

現在小朋友不睡覺, 只好抱著小朋友, 順便找找有沒有什麼解決方案, 最後在 Gentoo Forums 看到了一篇 new kernel, write ntfs, sys freeze[done]
大意是說, 原來舊版的 kernel 是使用 fuse module + ntfs3g 這二個 portage 套件組合而成, 這樣是沒有什麼問題的, 但是如果是用新版的 kernel (2.6.24), 就要用 kernel 內建的 fuse module (在 File System 選項那邊.

果然改用 2.6.24 Kernel 內建的 fuse module 就沒有事情了. 這種鳥問題應該只有用 Gentoo 的人會碰到吧 (默)

[ARM] chroot 出現 Message “Illegal Instruction”

記錄一下,

不僅僅是 chroot 以外, 如果執行任何程式有 “Illegal Instruction” 時, 記得將 kernel 的 NWFPE 選項 enable.

Linux Kernel 2.6.24 Released.

Linux kernel 2.6.24 己經在昨天 Released. 可以直接到 Kernel.org Download

要知道詳細的改變, 可以看 Kernelnewbies Linux Kernel 2.6.24

這邊列出我自己對於這次改版比較重要的地方

  • CFS improvement (Performance improvement, Fair group scheduling, Guest time reporting)
  • Tickless support for x86-64, PPC, UML, ARM, MIPS : 不知道 ARM 加上 Tickless support 會不會增加 Performance ?
  • New wireless drivers and configuration interface
  • Anti-fragmentation patches : 這個 Patch 很重要, 尤其是在記憶體不夠的 Embedded Linux, 現在整合進來或許以前某些奇怪的問題就可以解決了吧 🙂
  • Per-device dirty memory thresholds: 簡單的說, 之前的 Dirty Memory 是共用了, 只要有低速週邊 USB 1.1, Dirty Memory 就會被塞滿.
  • PID and network namespaces: 這個是為了 Visualization Operation-System 存在的, 可以讓系統內不用的 Visualization OS 使用不同的 PID 和 Network Layer
  • Large Receive Offload (LRO) support for TCP traffic : 需要再看得更詳細一點, 尤其是如果有新的 Design 出來, 是不是可能修改 Hardware 去符合這樣的設計(需要再研究)

[Linux][Kernel] Kernel Oops 網站.

http://www.kerneloops.org 是一個會收集 mailing list 和 bugzilla 的網站, 他將收集到的 oops 整理成一份簡單的 report.
這樣大家就可以知道, 那一版的 kernel 有多少個什麼類型的 Bug.

Bug Report 包含 module 和 backtrace, 不過不含原始網站連結, 這是比較可惜的地方

常常碰 embedded linux 的人, 常常要找一些莫名的 bug, 有時候為了節省時間,
會想辦法看看有沒有相對應的 Bug Patch, 如果有就非常方便.
這個網站看起來是可以節省一些 Search 的時間, 運氣好說不定碰到的 Bug 是同一個呀 🙂

Ref.
Kernel Trap : Collecting Kernel Oops Data
[Tags] Linux, kernel, oops [/Tags]