星期日, 五月 03, 2009

将Haiku安装到物理硬盘

haikuOS
haiku是BeOS的延续,我一直在关注着。现在已经有了alpha版的硬盘镜像了,包含了firefox等几个常用工具。

haiku一直没有提供ISO,仅仅提供了raw和VMware的硬盘镜像。昨天折腾了好久,才将其移动到物理硬盘分区中去。

在haiku的论坛中,安装haiku的方法大体有如下几种:

编译haiku的源码,把生成的镜像所在的位置和名称改写成linux中的文件系统,比方生成的镜像名称为/path/haiku.image,则编译生成为/dev/sda5,直接将其写入到物理分区中了。

还有一种方法是启动BeOS,然后挂载这个镜像,创建一个空闲的BFS,拷贝镜像文件到该空闲分区中,写入boot代码,然后启动。

最后一种方法是直接将raw镜像DD到某个分区中。

以上三种方法我均尝试过,第一种方法太复杂,需要准备好编译环境,另外下载haiku的源码也需要很长时间,再就是,编译容易出错;第二种方法不容易实现,因为我在多台电脑上都无法驱动BeOS,估计是因为当前的计算机配置都无法让BeOS来驱动——BeOS实在是太老旧了;最后一种方法也就是我这次要讲的方法了,比较容易实现,缺点是DD后,分区大小被限制,不过有解决的方法。下载haiku的raw镜像,然后准备好两个分区(在这里分别为sda4,sda5),准备好DD(or for windows),Qemu。
我是在linux下操作的,先将下载的haiku.img镜像DD到sda4中,sda4已经是BFS系统了,然后利用Qemu来引导下载的haiku.img,目的是为了在sda4中加入引导代码。添加本地物理磁盘到Qemu中,并利用haiku.img来引导系统。
进入haiku.img引导的系统后,挂载本地物理磁盘分区sda4,会挂载到/haiku1中去。之后打开终端,输入如下命令:
makebootable /haiku1

会有一行写入回显。

之后用grub来引导就可以物理硬盘中的haiku了,启动速度很快!不到10秒。

不过因为是采用DD方式,所以实际物理硬盘会被raw镜像而变小,仅仅230M,需要创建一个空闲的BFS,然后再将haiku的系统文件拷贝到该分区。只需在“开始菜单”-apps-diskSetup中创建一个Bfs分区即可。注意要写入引导代码。

如上方法就能完美实现在本地硬盘上全速运行haiku了,再也看不到使用虚拟机慢吞吞的效率。

几个问题:
haiku制造工厂中有两个磁盘镜像,一个是小容量的,另一个是大容量的,后者包含了firefox等软件。不过我使用后者还dd到硬盘中后,即便是加入引导代码也仍然无法启动,提示:fail to boot OS,press anykey to reboot.不知道怎么回事。用前者则没有问题,不过没有软件,安装太麻烦了,虽然网卡可以识别,但连基本的浏览器都没有,上网都难!
没办法,haiku软件太少,确实不适合平常使用。

创建一个grub的软盘镜像

grub非常好用,不过在安装linux的时候会将其安装到mbr中。若在windows下使用grub for DOS,部分功能无效,如:无法挂载BFS。然后我就创建了一个软盘镜像,再利用G4D启动。虽然麻烦一点,不过却是功能完整的grub了。

我在colinux中创建的,非常方便,如下:

apt-get install grub(如若已经安装,跳过)
cd /usr/lib/grub/i386-pc
dd if=stage1 of=/PATH/grub.img bs=512 count=1
dd if=stage2 of=/PATH/grub.img bs=512 seek=1

之后使用这个软盘镜像引导就ok了。

星期三, 四月 29, 2009

再次在u100上安装ubuntu

等不及下载ubuntu的9.04镜像,使用原来的beta版镜像通过wubi安装的。
安装后,将平常用不到的给删掉,然后更新整个系统。好家伙,400MB的更新包。但至少比下载近700MB的ISO要好多了。
安装后,没有什么太需要配置的,只需要安装中文支持环境和fcitx就ok。不过,我不太喜欢文泉驿的阵黑字体,总感觉歪歪扭扭的。我用的是从苹果系统拷贝的STHeiti.ttf。
本来打算用gnome,不过还有点慢,最后用了XFCE4。

我为什么使用ubuntu?
之前安装了leopard,速度很理想,看电影也特爽,不过摄像头和麦克风没法正常使用,导致无法和MM正常视频聊天,不爽。所以最终还是删掉了,之前已经升级到leopard为10.5.6了。唉,就差麦克风,可惜了。
我在我的笔记本上面安装了debian和arch,不过都删掉了,原因是因为配置太麻烦了,还是用现成的好。

现在,用着ubuntu还算不错的。升级了2.6.30内核,解决了显卡问题。

星期一, 四月 20, 2009

MSI u100 硬件列表

* CPU: Intel Atom N270 1.6Ghz
* RAM: 1024 Mb, DDR2 667Mhz (optional)
* HDD: WD 80Gb SATA (optional)
* VGA: Intel 945 GME, 64 MB DDR
* LCD: 1024x600, 10.2" widescreen
* WLAN: Realtek RTL8187SE , 802.11 a/b/g
* LAN: Realtek RTL8101/02
* CAM: 1.3 Mpix
* BAT: LI-ON 3 cell 2200 mAh, 2 hours (optional)
* bluetooth, card reader, 3x USB 2.0
详细:
00:00.0 Host bridge: Intel Corporation Mobile 945GME Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02)
02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8187SE Wireless LAN Controller (rev 22)

星期四, 四月 16, 2009

nginx编译,平滑升级

./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/sbin --with-http_stub_status_module --with-pcre=../pcre-7.6 --with-zlib=../zlib-1.2.3 --with-openssl=../openssl-0.9.8i

kill -USR2 `path/nginx.pid`
kill -WINCH `path/nginx.pid`

nginx信号:
TERM, INT 快速关闭
QUIT 从容关闭
HUP 重载配置
用新的配置开始新的工作进程
从容关闭旧的工作进程
USR1 重新打开日志文件
USR2 平滑升级可执行程序。
WINCH 从容关闭工作进程

星期四, 四月 09, 2009

nginx on debian etch4.0

这个算是之前在debian lenny尚未发布的时候写的笔记,发到blog上,以便以后做个参考啥的。

测试环境为cooperative Linux(debian imageFS) on windowsXP。colinux虚拟机IP:yoyoliyang.yo2.cn。

配置完毕colinux后,准备nginx编译环境。
apt-get install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev build-essential

下载nginx稳定版:http://sysoev.ru/nginx/download.html
编译下载的源码包:
./configure --prefix=/usr/local/sbin
然后修改nginx.conf,不赘述。
编写一个nginx的启动脚本,添加到/etc/init.d/中,如下:
[code=bash]#! /bin/sh### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFOPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/nginx
NAME=nginx
DESC=nginxtest -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
. /etc/default/nginx
fi

set -e

case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON
sleep 1
start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/nginx.pid --exec $DAEMON
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac

exit 0

[/code]

修改这个脚本属性为755,启动该脚本,然后设置为默认启动:
update-rc.d nginx defaults

之后安装mysql:
apt-get install mysql-server mysql-client
安装php5:
apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

修改/etc/php5/cgi/php.ini,在配置文件最后添加如下字段:
cgi.fix_pathinfo = 1

创建php-fastcgi启动脚本,如下:
[code=bash]#! /bin/sh
### BEGIN INIT INFO
# Provides: php-fastcgi
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop php-cgi in external FASTCGI mode
# Description: Start and stop php-cgi in external FASTCGI mode
### END INIT INFO# Author: Kurt Zankl <kz@xon.uni.cc># Do NOT "set -e"PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="php-cgi in external FASTCGI mode"
NAME=php-fastcgi
DAEMON=/usr/bin/php-cgi
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

# If the daemon is not enabled, give the user a warning and then exit,
# unless we are stopping the daemon
if [ "$START" != "yes" -a "$1" != "stop" ]; then
log_warning_msg "To enable $NAME, edit /etc/default/$NAME and set START=yes"
exit 0
fi

# Process configuration
export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS
DAEMON_ARGS="-q -b $FCGI_HOST:$FCGI_PORT"

do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null || return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON -- $DAEMON_ARGS || return 2
}

do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE > /dev/null # --name $DAEMON
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}

case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
restart|force-reload)
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 3
;;
esac

[/code]

修改其属性为755。
创建一个/etc/default/php-fastcgi的php-cgi控制脚本。
如下:
[code=bash]#
# Settings for php-cgi in external FASTCGI Mode
## Should php-fastcgi run automatically on startup? (default: no)START=yes# Which user runs PHP? (default: www-data)

EXEC_AS_USER=www-data

# Host and TCP port for FASTCGI-Listener (default: localhost:9000)

FCGI_HOST=localhost
FCGI_PORT=9000

# Environment variables, which are processed by PHP

PHP_FCGI_CHILDREN=5
PHP_FCGI_MAX_REQUESTS=1000

[/code]

启动脚本,并设置为自启动:
update-rc.d php-fastcgi defaults
这样下来,最基本的配置完毕。

附注:根据自己安装编译的nginx所在的目录在修改/etc/init.d/nginx启动脚本,修改DAEMON路径就可以了。

我的nginx简易编译规则为:

[code=bash]./configure --sbin-path=/usr/local/sbin/ --with-pcre=../pcre-7.6 --with-zlib=../zlib-1.2.3 --with-openssl=../openssl-0.9.8i --with-http_stub_status_module[/code]

星期四, 四月 02, 2009

linux 和 mac OSX

不久前安装了linux,ubuntu的9.04.

俩字可以形容它在我笔记本上的运行速度:卡的很!

个人喜欢听歌,看电影.不过在linux下无论是听歌,还是看电影,都没有较好的软件可以使用.到头来,我还是换回到了leopard中来.

leopard在我的笔记本中运行速度是在可称一流了.比XP和ubuntu都快!播放1080P的电影(mov)超爽~之前在xp和ubuntu中播放都不好.

到现在,发现linux中的好多软件都有模仿mac的嫌疑.主要是,单纯的模仿其外表,而本质的性能却越来越差了!X性能不可观!

不过mic的问题没有解决.愁人.leopard已经升级到了10.5.6.

linux,还是乖乖的去做服务器吧.

星期四, 三月 19, 2009

msi苹果

安装了leopard.用的是msiwindOSX.iso,安装很简单,不介绍了.
发个图:
leopard_shouguang.org
另外推荐阅读一下苹果和windows下的键盘代替表.

星期五, 三月 13, 2009

刚刚到手msi wind u100

此文章留念.新买本本一天.

星期日, 三月 08, 2009

arch升级

去年安装的archlinux,好久没有升级,今天升级看看──需要安装好多包!
arch真的好快! 反正是比windows快很多!

archupgrade.png