HSCGI – 一个 SCGI 服务器

最新状态
还在构想当中,还没有实现。

代码仓库
http://git.heiher.info/hscgi.git

CGI 协议
http://en.wikipedia.org/wiki/Common_Gateway_Interface

SCGI 协议
http://en.wikipedia.org/wiki/Simple_Common_Gateway_Interface
http://www.python.ca/scgi/protocol.txt

HSCGI 服务器
HSCGI 是 SCGI 服务器的一个实现,它定义了模块接口类,用户通过编写其模块实现具体的功能。HSCGI 的模块分为两种类型 Handler 和 Filter 。

Handler 模块
这种类型的模块用于实现具体的处理功能,它定义了两个操作接口:
check : 检查当前的 Request 是否应该处理。
dispatch : 处理当前的 Request,生成 Response。

Filter 模块
这种类型的模块用于处理 Handler 模块生成的 Response,它定义了两个操作接口:
check : 检查当前的 Response 是否应该处理。
dispatch : 处理当前的 Response。

架构图

未解决问题
1. 高效的异步I/O。
2. 基于流的数据处理。
3. Request 缓冲区太大。
4. Inet Socket 鉴权。

Over!

搭建基于 ArchLinux 的龙芯无盘系统环境

环境简述
服务端: ArchLinux(192.168.0.1)
客户端: ArchLinux(dhcp)
服务器端使用 NFS 导出一个目录,此目录存放一个客户端可用的 ArchLinux 系统;客户端不安装硬盘,PMON 从网络加载 kernel 和 initrd,并将服务器端导出的系统目录作为根分区挂载至 /。

服务器端
1. 安装 ArchLinux 操作系统
2. 安装 nfs-utils

pacman -S nfs-utils

3. 创建客户端根目录

mkdir /srv/nfs/arch

4. 下载并安装客户端 ArchLinux 系统。

cd /srv/nfs
wget http://dev.lemote.com:2001/archlinux/archive/archlinux-lemote2f-201103082300.tar.gz
cd /srv/nfs/arch
tar xzf ../archlinux-lemote2f-201103082300.tar.gz

5. 更新客户端系统 initrd

chroot /srv/nfs/arch
vi /etc/mkinitcpio.conf
MODULES="nfs"  # add 'nfs'
HOOKS="base udev net autodetect pata scsi sata filesystems"  # add 'net'
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t tmpfs udev /dev
mkinitcpio -p kernel26
umount /dev /sys /proc

6. 设置 NFS 导出目录

vi /etc/exports
/srv/nfs/arch	*(rw,fsid=0,no_root_squash,no_subtree_check)
vi /etc/hosts.allow
nfsd:ALL
rpcbind:ALL
mountd:ALL

7. 启动服务器端 NFS 服务
可以在 rc.conf 增加自动启动项目

/etc/rc.d/rpcbind start
/etc/rc.d/nfs-common start
/etc/rc.d/nfs-server start

8. 修正客户机端系统网络配置

vi /etc/rc.conf
NETWORK_PERSIST="yes"
DAEMONS=(syslog-ng !network...

9. 安装并启动 TFTP 服务
安装一个 TFTP 服务,并将客户机系统中的 /boot/{vmlinz26,kernel26.img} 导出。

客户机端
1. PMON 启动参数

ifaddr rtk0 192.168.0.2
load tftp://192.168.0.1/tftp/vmlinuz26
initrd tftp://192.168.0.1/tftp/kernel26.img
g console=tty rootfstype=nfs root=/dev/nfs nfsroot=192.168.0.1:/srv/nfs/arch ip=::::::dhcp

Over!

ArchLinux for Lemote

架构名称

mipsel

编译参数

-march=mips3 -mabi=32 -O2

基本系统(包含 Lemote2F 通用内核 2.6.37)
http://dev.lemote.com:2001/archlinux/archive/

源服务器

http://dev.lemote.com:2001/archlinux/$repo/os/$arch

配置文件
http://dev.lemote.com:2001/archlinux/other/config/

Over!

Sentelic FingerPad Driver Patch for Linux 2.6.36+

Download
http://heiher.info/sftp/files/0001-Sentelic-FingerPad-Ext.patch

Usage

cat /sys/devices/platform/i8042/serio2/falgs                # Display flags
echo 'e' > /sys/devices/platform/i8042/serio2/falgs    # Disable Finger Pad
echo 'E' >  /sys/devices/platform/i8042/serio2/falgs    # Enable Finger Pad
echo 'VH' >  /sys/devices/platform/i8042/serio2/falgs  # Enable VScroll & HScroll

Over!