Linux 系统中使用 TL-WN422G+无线网卡

在 Linux 操作系统中使用这款无线上网卡需要如下程序:

  • ZD1211RW 驱动
  • ZD1211 Firmware

ZD1211RW 驱动
重新编译内核增加这个驱动,可以编译为模块或直接编译进内核。

ZD1211 Firmware
没有这个固件不能正常驱动设备,第一次我就是这样的问题。
如果你有包管理系统,那么安装一下 zd1211-firmware,或去 http://sourceforge.net/projects/zd1211/ 下载。解压后保存成 /lib/firmware/zd1211/ 目录中。

Over!

将 G1 手机打造成无线路由器+无线上网卡

本文所有内容都以 T-Mobile G1 美版(US)为例。

需要的软件
1. 可以拥有 root 权限的 Android 1.6 操作系统
2. Android Wireless Tether

可以拥有 root 权限的 Android 1.6 操作系统
如果你在你的系统中已经可以拥有 root 权限,就可以略过这段。
1. 下载 RC29 的 DreaIMG.nbh 映像文件,自己 Google,如果找不到可以联系我。
2. 下载 http://www.heiher.info/service/android/recovery-RA-dream-v1.6.2.img
3. 将前面下载的两个文件保存到手机的 SD 卡根目录中,按 [照相]+[电源] 开机,当加载 DreaIMG.nbh 成功后,按 [电源] 开始写,当成功后按 [滚球],然后按 [通话]+[菜单]+[电源] 重启。
4. 开机进入系统,去 Market 安装 terminal 和 telnet 程序并运行 terminal,在这个程序中进行 telnetd ,然后进行 telnet,连接 localhost 主机。
5. 进行如下指令

mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
flash_image recovery /sdcard/recovery.img
cat /sdcard/recovery.img > /system/recovery.img

6. 下载 http://www.androidspin.com/downloads.php?dir=enomther/ROM/&file=HTC_ADP_1.6_DRC83_rooted_base.zip 并保存在手机 SD 卡的根目录中,文件名为 update.zip
7. 以 [屋子]+[电源] 开机,按 [Alt]+[S] 开始写文件,完成后按 [屋子]+[返回] 重启。
8. 在 http://developer.htc.com/adp.html 下载 ota-radio-2_22_19_26I.zip 并保存在手机 SD 卡的根目录中,文件名为 update.zip
7. 以 [屋子]+[电源] 开机,按 [Alt]+[S] 开始写文件,完成后按 [屋子]+[返回] 重启。
9. 下载 http://android-wifi-tether.googlecode.com/files/adp-1_6-kernel-update_r2.zip 并保存在手机 SD 卡的根目录中,文件名为 update.zip
7. 以 [屋子]+[电源] 开机,按 [Alt]+[S] 开始写文件,完成后按 [屋子]+[返回] 重启。

Android Wireless Tether
1. 下载 http://android-wifi-tether.googlecode.com/files/wireless_tether_1_60-pre3_htc.apk 并保存在手机 SD 卡中。
2. 去 Market 安装 AppInstaller
3. 运行 AppInstaller 安装 wireless tether.
4. 设置 wireless tether 就完成了。

Over!

制作 X86 平台的龙芯内核交叉编译环境

先下载 Binutils 2.20 和 GCC Core 4.4.2。
Binutils 2.20: http://ftp.gnu.org/gnu/binutils/binutils-2.20.tar.bz2
Binutils 2.20 Loongson2f 补丁: http://heiher.info/sftp/files/binutils-2.20-loongson2f.patch
GCC Core: http://ftp.gnu.org/gnu/gcc/gcc-4.4.2/gcc-core-4.4.2.tar.bz2

设置环境变量和新建目录

$ mkdir -p /opt/loongson-cross-tools/usr/{bin, lib, share}
$ echo "PATH=$PATH:/opt/loongson-cross-tools/usr/bin" >> ~/.bashrc

编译 Binutils:

$ tar xjf binutils-2.20.tar.bz2
$ cd binutils-2.20
$ patch -Np1 -i ../binutils-2.20-loongson2f.patch
$ cd .. && mkdir binutils-build && cd binutils-build
$ ../binutils-2.20/configure --prefix=/opt/loongson-cross-tools/usr --target=mipsel-pc-linux-gnu --with-sysroot=/opt/loongson-cross-tools --enable-64-bit-bfd --disable-nls --enable-shared
$ make configure-host
$ make
$ make install

编译 GCC:

$ tar xjf gcc-core-4.4.2.tar.bz2
$ mkdir gcc-build && cd gcc-build
$ ../gcc-4.4.2/configure --prefix=/opt/loongson-cross-tools/usr --target=mipsel-pc-linux-gnu --with-sysroot=/opt/loongson-cross-tools --disable-multilib --with-newlib --disable-nls --disable-shared --disable-threads --enable-languages=c --with-abi=64
$ make all-gcc
$ make all-target-libgcc
$ make install-gcc
$ make install-target-libgcc

Over!

FastDog – 轻量级的 Web 服务器

最近在学习 Web 开发,在学习过程中我觉得认真的研究一下 HTTP 协议还是有一定必要的。就试着写一个 Web 服务器玩玩吧,好久没有用C语言写过程序了,也当作一个练习吧。

FastDog 大致的架构如下:
* HTTP 1.1 协议
* 支持静态和动态页面
* 高性能I/O
* 多工作线程
* 基于共享库的模块化站点框架

目前在看最重要的东西 RFC2616(HTTP 1.1 协议),看完准备实现 HTTP 部分和站点框架。

项目网站:http://github.com/heihaier/fastdog/

Over!fastdog/

T-Mobile G1 首次收到官方 OTA,升级至 1.6

今天很惊喜的看到 G1 提示有一个可用的系统更新 Android 1.6,重启开始安装。确认后,手机重启了,2分钟后补丁安装完成。这个是我第一次收到官方的 OTA 更新。

OTA 推送是先下载后提示的,当我接到提示的时候14M的更新包已经下载完成了(如果不是我包了200M的流量,又要停机了……)。

Over!

交换硬盘分区的设备文件命名

这个可以通过 udev 来解决问题,默认 udev 是根据分区表中的序列来分配的,那也就可以通过修改分区表中的序列来实现了。这里就记录一下修改的过程。
1. 使用如下命令打印出分区表信息。
$ sudo fdisk -l /dev/hda

Disk /dev/hda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
 
   Device Boot      Start         End      Blocks   Id  System
/dev/hda1               1          14      112423+  83  Linux
/dev/hda2              15        2447    19543072+  83  Linux
/dev/hda3            2448       19180   134407822+  83  Linux
/dev/hda4           19181       19457     2225002+  82  Linux swap / Solaris

2. 删除将要交换的两个分区,例如 /dev/hda1 和 /dev/hda2。
$sudo fdisk /dev/hda
d
1
d
2
3. 创建新的分区,达到交换目的。
n
p
1
15
2447
n
p
2
1
14
w

这样就完成的交换操作。

Over!