标签 Ubuntu 下的文章

经过昨天的实践,终于搞定Ubuntu共享WiFi功能,而且不是Ad-hoc模式。从此“二奶”可以作为无线中继使用(这里指的是在Ubuntu系统下)。参考教程:
Ubuntu共享WiFi(AP)给Android/更新方法二 http://weibin.me/538

首先很重要的是,要确定无线网卡驱动是否支持master mode。如果不支持,就别想了。然后就可以按照教程安装并设置hostapd和dnsmasq。根据教程,写了个脚本,方便启动或关闭该功能。第一次写比较长的Shell脚本,所以该脚本还是不太完善,但基本可用。要注意,/etc/dnsmasq.conf还是要手动修改。脚本如下:

#!/bin/sh
# begin file: sharewifi

# Setup wireless AP, share the Internet from interface0 to interface1
# USAGE: sharewifi [ start | stop ] interface0 interface1
# EXAMPLE: sharewifi start wlan1 wlan0

help( )
{
cat << HELP
Setup wireless AP, share the Internet from interface0 to interface1
USAGE: sharewifi [ help | start | stop ] interface0 interface1
EXAMPLE: sharewifi start wlan1 wlan0
HELP
exit 0
}

start( )
{
echo Starting share wifi ......
echo Share Internet $port_in to $port_out

# Configure iptable rules
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.7.0/24 -o $port_in -j MASQUERADE
iptables -A FORWARD -s 192.168.7.0/24 -o $port_in -j ACCEPT
iptables -A FORWARD -d 192.168.7.0/24 -m conntrack --ctstate ESTABLISHED,RELATED -i $port_in -j ACCEPT

# Log the message of route
#iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 80 -j LOG --log-prefix "NEW_HTTP_CONN: "

# Save iptable rules
sh -c "iptables-save > /etc/iptables.rules"

# Configure hostapd
hostapd_conf=/etc/hostapd/hostapd.conf
[ -f $hostapd_conf ] && rm $hostapd_conf
echo >> $hostapd_conf interface=$port_out
echo >> $hostapd_conf driver=nl80211
echo >> $hostapd_conf ssid=AO522-Tether
echo >> $hostapd_conf channel=1
echo >> $hostapd_conf hw_mode=g
echo >> $hostapd_conf auth_algs=1
echo >> $hostapd_conf wpa=3
echo >> $hostapd_conf wpa_passphrase=1234567890
echo >> $hostapd_conf wpa_key_mgmt=WPA-PSK
echo >> $hostapd_conf wpa_pairwise=TKIP CCMP
echo >> $hostapd_conf rsn_pairwise=CCMP
chmod 755 $hostapd_conf

# Configure /etc/dnsmasq.conf
#interface=wlan0
#bind-interfaces #这个是只监听wlan0,没有之会检测所有卡
#except-interface=lo
#dhcp-range=10.1.1.10,10.1.1.110,6h #设置dhcp地址范

killall named
killall hostapd
ifconfig $port_out 192.168.7.1
hostapd -B $hostapd_conf
/etc/init.d/dnsmasq restart

echo Sucess share wifi

exit 0
}

stop( )
{
echo Stopping share wifi ......
echo Stop share Internet $port_in to $port_out

# Configure iptable rules
iptables -F

# Log the message of route
#iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 80 -j LOG --log-prefix "NEW_HTTP_CONN: "

# Save iptable rules
sh -c "iptables-save > /etc/iptables.rules"

# Configure hostapd
hostapd_conf=/etc/hostapd/hostapd.conf
[ -f $hostapd_conf ] && rm $hostapd_conf

# Configure /etc/dnsmasq.conf

killall named
killall hostapd
ifconfig $port_out down
ifconfig $port_out del 192.168.7.1
ifconfig $port_out up

echo Sucess stop share wifi

exit 0
}
#port_in is the network interface which connected to Internet, and default wlan1.
port_in=wlan1

#port_out is the network interface which will be setup AP, and default wlan0.
port_out=wlan0

if [ -n "$2" ]; then
port_in=$2

if [ -n "$3" ]; then
port_out=$3
fi
fi

case "$1" in
"help" )
help ;;
"start" )
start ;;
"stop" )
stop ;;
*)
help ;;
esac

# end file: sharewifi

PS. “二奶”升级到Lubuntu 12.04 LTS,感觉更好用了~

今晚终于把SA1F00上的Ubuntu 10.10的触摸屏驱动装上了。

装完Ubuntu 10.10后,触摸屏是可以使用,但是定位不准,于是寻找解决方法。

先把结果发上来吧。官方驱动地址:
http://www.penmount.com/Download/Driver/PenMount/PenMount%20Ubuntu%2010.10%20driver%20V3.5.0.tar.gz把下载的文件解压到任何地方,然后执行install.sh即可。重启系统后,即可运行该驱动,而且可以用图形界面校准,非常给力!

下面是寻找解决方法的过程。

第一个尝试。找到evtouch的资料:
https://wiki.archlinux.org/index.php/%E8%A7%A6%E6%91%B8%E5%B1%8F
_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

但是配置MinX、MinY、MaxX和MaxY的过程相当痛苦!因为该驱动自带的校准脚本也不支持SA1F00的触摸屏,而且没有校准工具可以用,所以只能手动逐个值进行尝试。太浪费青春了!后来找到另外一个资料:
http://blog.chinaunix.net/u3/110913/showart_2394865.html
文章末尾提到一个校准工具,但是照着去编译后,该程序还是有问题。就是点屏幕后,那程序接收不到点击事件。

第二个尝试。得知SA1F00的触摸屏是PenMount USB后(查询输入设备的命令:#cat /proc/bus/input/devices),尝试安装xserver-xorg-input-penmount驱动(新立得里可以找到)。但是该驱动的配置更复杂,参考资料如下:
http://www.rainmelody.net/blog/?date=20090418
最大的问题是,找不到相关的资料来弄清楚那些选项代表什么。

为了这个驱动,连续好几个晚上都只睡觉4到5个小时,严重影响第二天的工作。不过装上后,还是很有满足感的,并且马上去找个画图软件来画画!好了,现在就剩下那鸡肋般的无线网卡了。

本来Windows上装个驱动,按[Fn]+[ESC]就可以把SA1F00的屏幕分辨率切换为1024x600或800x480。但是Ubuntu上没有该软件,只好自己实现了这个屏幕分辨率一键切换功能。

1)新建shell脚本文件/usr/local/bin/changeView。该文件内容如下:
---------代码开始---------
#!/bin/sh
PATH="/usr/bin:$PATH"; export PATH
low_size="800x480"
high_size="1024x768"
is_low_size=`xrandr | grep -c "current 800 x 480"`

if [ "$is_low_size" -eq "0" ]; then
xrandr -s $low_size
else
xrandr -s $high_size
fi
exit 0
---------代码结束---------

编辑完成并保存后,记得修改该文件的权限:
chmod 755 /usr/local/changeView

2)设置快捷键,在“系统”->“首选项”->“键盘快捷键”。

点“添加”,然后“名称”随便输,“命令”输入以下内容:
/usr/local/changeView

按“应用”后,选中刚新增的,按[Fn]+[ESC],就设置好了。

说明:由于还没找到让屏幕支持1024x600的方法,所以这里用1024x768来代替。由于SA1F00的屏幕只有7寸,这个切换分辨率的快捷键还是挺实用的。

这个月初入手一台二手的Kohjinsha(工人舍) SA1F00WKR(白色韩国版)。装上Windows XP后,该机器无论作为上网本还是下载机,都很给力,只是作为MP4就有点力不从心了(播放RMVB会卡)。为了进一部挖掘其应用及性能,决定装个Ubuntu 10.10 Desktop上去。经过一番的折腾,下面分享一下安装过程:
第一,硬盘安装系统。
1)为什么是Desktop而不是Netbook,纯粹个人喜欢。安装系统后,也可以通过软件管理器安装Netbook、Lubuntu等。
2)机器没有光驱,于是用硬盘安装。也可以外接USB光驱来装的,只是偶没有该设备。
3)由于Ubuntu的安装程序图形界面在该机器上一片漆黑,所以外接了个显示器来安装。没有显示器的话,只能装Alternative版了。
安装过程参考以下文章:
[url]http://www.maoegg.com/archives/926.html[/url]
安装步骤总结如下:
1)安装Grub(或者可以直接使用带Grub的、可启动的U盘)。
2)下载ubuntu-10.10-desktop-i386.iso,放到该机器硬盘上某分区的根目录下(我就放在第一个分区下)。并把iso文件里casper文件夹下的vmlinuz和initrd.lz两个文件解压,并与iso文件放在一起。
3)启动电脑,进入grub的启动界面,按c键进入命令编辑界面,输入以下命令:
[code]
root (hd0,1)
kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-10.10-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8
initrd /initrd.lz
boot
[/code]
4)进入ubuntu系统后,打开终端,输入以下命令:
[code]
sudo umount -l /isodevice
[/code]
5)运行安装程序。由于是全中文,所以安装过程略过。由于安装过程非常漫长,建议在睡觉前进行,第二天醒来就装好了。
第二,配置显卡及显示屏。
这个比较麻烦,经过相当长的时间查资料及验证,才总结出来。目前可以显示800x480分辨率,但1024x600还不能显示,其它可用分辨率包括:1024x768、800x600、600x480。
配置显卡及显示屏,把以下代码保存为xorg.conf文件,并存放到/etc/X11目录下。
[code]
Section "InputDevice"
Identifier  "Keyboard0"
Driver      "kbd"
EndSection
Section "InputDevice"
Identifier  "Mouse0"
Driver      "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
Option "Emulate3Buttons" "yes"
EndSection
Section "Monitor"
Identifier   "Monitor0"
VendorName   "Generic Vendor"
ModelName    "Generic Monitor"
Option       "DPMS"
HorizSync    28-50
VertRefresh  43-73
EndSection
Section "Device"
Identifier  "Geode"
VendorName  "Videocard vendor"
BoardName   "AMD Geode LX Video"
Driver "geode"
BusID       "PCI:0:1:1"
Option      "AccelMethod" "EXA"
Option      "EXANoComposite"
# Specify panel size for GeodeLX, corresponds ModeLine above:
Option      "PanelMode" "36940  800 832 912 1024  480 481 484 501"
EndSection
Section "Screen"
Identifier  "Screen0"
Device      "Geode"
Monitor     "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport  0 0
Depth     24
Modes     "1024x768" "1024x600" "800x600" "800x480" "640x480"
EndSubSection
SubSection "Display"
Viewport  0 0
Depth     16
Modes     "1024x768" "1024x600" "800x600" "800x480" "640x480"
EndSubSection
SubSection "Display"
Viewport  0 0
Depth     8
Modes     "1024x768" "1024x600" "800x600" "800x480" "640x480"
EndSubSection
EndSection
Section "ServerLayout"
Identifier     "X.org Configured"
Screen         "Screen0" 0 0
InputDevice    "Mouse0" "CorePointer"
InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
[/code]
该文件可以从这里下载:
[attachment=0]xorg.conf.txt[/attachment]
第三,配置无线网卡。
新内核已经可以识别该机器的无线网卡了,但是还不能搜索到无线网络。但插上USB无线网卡后,却能马上找到无线网络。这个问题还没时间去搞,希望高手指教。
第四,配置声卡。
登录系统后是有登录声音的,只是播放MP3时没声音。这个问题还没找资料,也希望高手指教。
第五,其它问题。
(暂无)

这个月初入手一台二手的Kohjinsha(工人舍) SA1F00WKR(白色韩国版)。装上Windows XP后,该机器无论作为上网本还是下载机,都很给力,只是作为MP4就有点力不从心了(播放RMVB会卡)。为了进一部挖掘其应用及性能,决定装个Ubuntu 10.10 Desktop上去。经过一番的折腾,记录一下安装过程:

第一,硬盘安装系统。
1)为什么是Desktop而不是Netbook?因为Netbook版体现不出什么优势(跟Android比差远了),反而Desktop版更方便。安装系统后,也可以通过软件管理器安装Netbook、Lubuntu等。
2)机器没有光驱,于是用硬盘安装。也可以外接USB光驱来装的,只是我没有该设备。
3)由于Ubuntu的安装程序图形界面在该机器上一片漆黑,所以外接了个显示器来安装。没有显示器的话,只能装Alternative版了。曾装了个10.04的Alternative版,也折腾了很久,而且软件装了一大堆,不知道哪些跟哪些。看到10.10出来了,顺便更新。

安装过程参考以下文章:
http://www.maoegg.com/archives/926.html

安装步骤总结如下:
1)安装Grub(或者可以直接使用带Grub的、可启动的U盘)。
2)下载ubuntu-10.10-desktop-i386.iso,放到该机器硬盘上某分区的根目录下(我就放在第一个分区下)。并把iso文件里casper文件夹下的vmlinuz和initrd.lz两个文件解压,并与iso文件放在一起。
3)启动电脑,进入grub的启动界面,按c键进入命令编辑界面,输入以下命令:

grub > root (hd0,1)
grub > kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-10.10-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8
grub > initrd /initrd.lz
grub > boot

4)进入ubuntu系统后,打开终端,输入以下命令:

sudo umount -l /isodevice

5)运行安装程序。由于是全中文,所以安装过程略过。由于安装过程非常漫长,建议在睡觉前进行,第二天醒来就装好了。

第二,配置显卡及显示屏。

这个比较麻烦,经过相当长的时间查资料及验证,才总结出来。也因为内核的驱动不断在更新,所以老版本的Ubuntu跟10.10上的配置不同。目前可以完美显示800x480分辨率,但1024x600还不能显示,其它可用分辨率包括:1024x768、800x600、600x480。

配置显卡及显示屏,把以下代码保存为xorg.conf文件,并存放到/etc/X11目录下。

Section "InputDevice"
Identifier  "Keyboard0"
Driver      "kbd"
EndSection

Section "InputDevice"
Identifier  "Mouse0"
Driver      "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
Option "Emulate3Buttons" "yes"
EndSection

Section "Monitor"
Identifier   "Monitor0"
VendorName   "Generic Vendor"
ModelName    "Generic Monitor"
Option       "DPMS"
HorizSync    28-50
VertRefresh  43-73
EndSection

Section "Device"
Identifier  "Geode"
VendorName  "Videocard vendor"
BoardName   "AMD Geode LX Video"
Driver "geode"
BusID       "PCI:0:1:1"
Option      "AccelMethod" "EXA"
Option      "EXANoComposite"
# Specify panel size for GeodeLX, corresponds ModeLine above:
Option      "PanelMode" "36940  800 832 912 1024  480 481 484 501"
EndSection

Section "Screen"
Identifier  "Screen0"
Device      "Geode"
Monitor     "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport  0 0
Depth     24
Modes     "1024x768" "1024x600" "800x600" "800x480" "640x480"
EndSubSection
SubSection "Display"
Viewport  0 0
Depth     16
Modes     "1024x768" "1024x600" "800x600" "800x480" "640x480"
EndSubSection
SubSection "Display"
Viewport  0 0
Depth     8
Modes     "1024x768" "1024x600" "800x600" "800x480" "640x480"
EndSubSection
EndSection

Section "ServerLayout"
Identifier     "X.org Configured"
Screen         "Screen0" 0 0
InputDevice    "Mouse0" "CorePointer"
InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

目前还存在的问题:
1)无线网卡。
新内核已经可以识别该机器的无线网卡了,但是还不能搜索到无线网络。但插上USB无线网卡后,却能马上找到无线网络。这个问题还没时间去搞。

2)声卡。
登录系统后是有登录声音的,只是播放MP3时没声音。这个问题还没找资料。