Tag Archives: Linux - Page 2

Thinkpad T420s 安裝 4 套 OS (Windows7 32bit/Windows7 64bit/Windows XP/Ubuntu Linux)

Thinkpad T420s 太好用了, 所以我在公司又採買了三台, 用做測試機用.
畢竟 50K 以下這一台的 C/P 值非常的高.

因為是測試機, 所以必需要裝很多 OS. 而這些 OS 要是可以復原的.
以現在測試 Wifi performance 而言, 大多都要求用 Intel Ultimate 6300N 3×3 wifi 測試, 以求公平. 而這樣的環境用 VM 是沒有人承認這個數據的, 所以… 在一台電腦內要安裝多套 OS 就是必需的, 不同的狀況客戶會要求不同的 OS. 例如 NAS Performance 就要 Windows 7.

所以接下來就是要在 T420s 安裝以下 OS

  • Windows 7 32bit
  • Windows 7 64bit
  • Windows XP
  • Ubuntu Linux 11.04

Read more »

Linux Assembly

這個只是筆記,
沒有很深入的內容.

Read more »

ubuntu 跑 shellcode 會出現 Segmentation fault

最近在弄 shellcode, 不過在寫測試程式的時候, 卻都會跑出來 Segmentation fault

查了一下, ubuntu 在 9.04 之後有將 CONFIG_CC_STACKPROTECTOR 啟動.
啟動這個 Option 之後, Kernel 可以保護 userspace ELF 的 internal stack.
(請參閱 Security Features Historical )
若是要跳過這個機制, 在 compile time 可以加上 “-z execstack”
不確定是不是要 CPU 支援 NX bit

如果用 readelf -a 來看二個執行檔, 一般的 ELF 程式在 Type 的地方會是 EXEC(Executable file), 如果是加上 -z execstack 的程式會是 REL (Relocatable file).
Section Header 以 REL 會單純許多

Ref.
Testing ShellCodes in Ubuntu 10.10

這樣感覺 Linux 很難摸 ;-/

Altera FPGA 簡體中文教學

Altera 簡體中文教學

我目前正在學習 Altera FPGA, 發現到這個簡體中文教學網站不錯, 講解的東西也很詳細, 線上版是從 webex streaming. 也可以離線閱讀. 離線閱讀時使用 Flash 格式, 但是非常方便, 就像是翻 PowerPoint 時, 有人替你講解.

Ubuntu 10.04 下看也沒有問題.

總之, 是非常好的入門學習文件

[Linux] 使用 hinet IPv6 的服務

這邊使用的是 Hinet Tunnel Broker 的服務.
不過 Hinet 只有提供 Windows 的範例, 那 Linux 呢?
Read more »

Windows 7 存取 Linux Samba 網芳的小問題.

改用 Windows 7 之後, 使用網芳直接用 netbios name 去存取 Server 會有問題.

雖然在網路上看的到名稱, 但是卻無法直接存取, 會出現錯誤訊息

例如
\\SERVER : Fail
\\10.1.1.254 : OK

這個時候就要直接去改 /etc/samba/smb.conf
加上一行 netbios name 就可以,
[TEXT]
workgroup = WORKGROUP
netbios name = SERVER
[/TEXT]

順便寫一下我的版本
Windows 7 64bit
Samba 3.5.4

好小的問題 -_-!

mrtg 正確取得 gigabit interface 的數據

mrtg 在掃 interface 時, 預設的 interface 都是取到 Linux 下的 32bit 的 counter.
而 32bit counter 的流量, 很容易在 5 分鐘取樣一次的 mrtg 中失真.

如果要準確反映 interface 流量, 就要取用 64bits. 的數據.

如何取用 64bits 的數據呢?

以下是 mrtg 的部份設定檔
[TEXT]
Target[localhost_eth0]: \eth0:public@localhost:
SetEnv[localhost_eth0]: MRTG_INT_IP=”60.125.111.222″ MRTG_INT_DESCR=”eth0″
MaxBytes[localhost_eth0]: 12500000
Title[localhost_eth0]: 60.125.111.222 — ms1
[/TEXT]

在Target[localhost_eth0]: \eth0:public@localhost: 後面加上 ::::2

以下就是一個 Gigabit interface.
[TEXT]
Target[localhost_eth1]: \eth1:public@localhost:::::2
SetEnv[localhost_eth1]: MRTG_INT_IP=”192.168.1.254″ MRTG_INT_DESCR=”eth1″
MaxBytes[localhost_eth1]: 125000000
Title[localhost_eth1]: 192.168.1.254 — ms1
[/TEXT]

Ref.
MRTG – MRTG 2.16.2 configuration reference

Patch RVDS 4.0 at Linux

在 Linux 上上 RVDS 4.0 的 Patch Command 如下

[BASH]

# ~/ARM/bin/linux-pentium/setuplinux.bin patch –source RVDS_4_0_dist_to_4-all-all_stnd.armpatch –target ~/ARM

[/BASH]

Linux Kernel 不支援 Floating Pointer

http://lkml.indiana.edu/hypermail/linux/kernel/0405.3/1608.html

Floating point is forbidden in kernel code since the floating point
registers (and other floating point context) is not saved/restored
during system calls, for efficiency. I’m speculating here, but it
might be possible to manually save the floating point context while
doing some floating point operations. The problem arises if this code
is interrupted midway. Using a preemptive 2.6 kernel would easily
break here.

如果是這樣, 那就 Mask IRQ, 做完再 unmask 掉.  不知道可不可行.

Linux kernel PCI Domains Support for ARM

Linux kernel 支援不同 domain 的 PCI, 看起來是 ACPI 的功能之一.
其他平台看起來也有支援, 像是 sparc or mips 都有.

但是在 ARM 上並沒有這樣的支援

我的平台有 2 個 PCIe Host Controller , 而且都要設定在 PCIe bus 0 上面.
這時就拿 PCI domain 的 code 來用最快,
以下就是 Sample Code 和 ARM 部份的 Patch Code (不含我目前使用平台的 Patch)

Read more »