python CGIHTTPServer的一些问题

python -m CGIHTTPServer 8000

让CGIHTTPServer跑在http_root目录下,http_root目录下有个cgi-bin文件夹,用来放置python cgi程序。

cgi程序的开头几行

#! /usr/bin/python  #声明python解释器所在位置

print  “Content-type: text/html”   #html头

print    #空行

print “hello”   #程序代码正文开始,把print “hello”替换成你自己的程序代码

以上都属于标准做法。如果你是普通用户,做了以上这些,再sudo chmod -R 777 http_root,可能就能顺利print 出”hello”了。

如果是root用户,这个http_root放在/root下;  这时,即使 chmod -R 777 /root/http_root 仍不能正常print出hello。 查看CGIHTTPServer那端的输出,发现是permission denied, 于是:chmod 777 /root,这次可以了。

目录的权限,比如/root,  rwx:

r 是  ls这个目录时要用

x 是 cd进入这个目录时要用

w 是 在这个目录里touch新文件或mkdir新目录,以及rm文件时要用。

我们的猜测没错,确实是/root这一层阻止了python cgi的运行。但,我们是用root起的CGIHTTPServer,http_root整个目录连同其子文件的owner都是root;  执行CGI脚本竟说没有权限。真不知CGI脚本执行时是以哪个用户的名义?

我们在cgi-bin里的python脚本里执行创建一个文件。

f=open(“./he”,”w”)

f.write(‘”hhhhhhhhhhh”)

f.close()

从浏览器调用此cgi脚本后,我们看一下新建的这个文件he的属性:

root@a-Calpella-Platform:/home/a# ls /root/http_root/he -lh
-rw-r–r– 1 nobody root 11 2012-03-17 00:08 /root/http_root/he

文件he的属主是nobody,所在组root。

chmod 700 /root ,cgi脚本运行就会遇到问题;

chmod 710 /root ,cgi脚本运行正常,可见,cgi脚本运行需要给root组用户nobody赋予脚本所在路径运行(x)权限,即,可以cd到cgi所在位置。

 

发表在 软件测试学习笔记 | 评论关闭

自复制程序-scp.py

a=1
c=’print “a=1\nc=”+repr(c)+”\n”+repr(c)[1:-1] ‘
print “a=1\nc=”+repr(c)+”\n”+repr(c)[1:-1]

发表在 编程理论与实践 | 评论关闭

qemu-kvm命令详解 collected by tianzixiao

KVM虚拟机和QEMU(命令行选项)

KVM

安装

RHEL/Fedora/CentOS

yum install bridge-utils kvm

bridge-utils是网卡桥接工具,

示例1:Redhat系统KVM

创建磁盘

# qemu-img create -f qcow2 turbo-10.5.5-rc2.img 20G
Formatting ‘turbo-10.5.5-rc2.img’, fmt=qcow2, size=20971520 kB
# file turbo-10.5.5-rc2.img
turbo-10.5.5-rc2.img: QEMU Copy-On-Write disk image version 2, size 5 + 0

配置桥接

配置 /etc/sysconfig/network-scripts 下面的网络脚本

# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.70.30
NETMASK=255.255.252.0
GATEWAY=172.16.68.1
TYPE=Bridge
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# 3Com Corporation 3c905B 100BaseTX [Cyclone]
DEVICE=eth0
#BOOTPROTO=dhcp
#HWADDR=00:01:02:8C:50:09
ONBOOT=yes
BRIDGE=br0

增加一个桥接网络接口,并把刚才配置的eth0添加到桥接口

brctl addbr br0 # 创建一个桥接口
brctl addif br0 eth0 # 添加eth0到br0,重要

使用一个下面的脚本:

# cat /etc/init.d/qemu-ifup
#!/bin/bash

switch=br0

if [ -n "$1" ];then
/sbin/ip link set $1 up
sleep 0.5s
/usr/sbin/brctl addif $switch $1
exit 0
else
echo “Error: no interface specified”
exit 1
fi

使用桥接网卡

可以使用桥接网卡启动qemu-kvm,并使用GTES10.5.5的两个文件通过 NFS安装系统:

# qemu-kvm -m 512 -hda turbo-10.5.5-rc2.img -kernel vmlinuz /
-initrd initrd.img -net nic -net tap,script=/etc/init.d/qemu-ifup –daemonize

也可以使用iso安装,这样对于多张iso发行版的linux需要在qemu的控制台换盘:

# qemu-kvm -m 512 -hda turbo-10.5.5-rc2.img -cdrom 你的iso路径 /
-net nic -net tap,script=/etc/init.d/qemu-ifup -boot d –daemonize

进入qemu的控制台,在鼠标聚焦到qemu界面时候,按住 Ctrl+Alt+2 进入控制台:

(qemu) change cdrom 你的另外一张iso

上面命令如果提示:”device not found”。可能是设备映射出错,可以这样:

(qemu) info block

(qemu) change ide1-cd0 iso文件

QEMU常见使用

使用vnc

# qemu-kvm -m 512 -hda xp.img -net nic,macaddr=00:00:11:33:02:02 /
-net tap,ifname=tap2,script=/etc/init.d/qemu-ifup /
-localtime -vnc 172.16.70.30:2 –daemonize

上面让kvm虚拟机在后台运行,并启动vnc服务器,这样我们可以用vnc客户端链接172.16.70.30:5092这个地址。

QEMU选项:

一般选项

-M machine

选择模拟的机器(我们可以输入-M?提到一个模拟的机器列表)

-fda file

-fdb file

使用file作为软盘镜像.我们也可以通过将/dev/fd0作为文件名来使用主机软盘.

-hda file

-hdb file

-hdc file

-hdd file

使用file作为硬盘0,1,2,3的镜像.

-cdrom file

使用文件作为CD-ROM镜像(但是我们不可以同时使用’-hdc’和’-cdrom’).我们可以通过使用’/dev/cdrom’作为文件名来使用主机的CD-ROM.

-boot [a|c|d]

由软盘(a),硬盘(c)或是CD-ROM(d).在默认的情况下由硬盘启动.

-snapshot

写入临时文件而不是写入磁盘镜像文件.在这样的情况下,并没有写回我们所使用的磁盘镜像文件.然而我们却可以通过按下C-a s来强制写回磁盘镜像文件.

-m megs

设置虚拟内存尺寸为megs M字节.在默认的情况下为128M.

-smp n

模拟一个有n个CPU的SMP系统.为PC机为目标,最多可以支持255个CPU.

-nographic

在通常情况下,Qemu使用SDL来显示VGA输出.使用这个选项,我们可以禁止所有的图形输出,这样Qemu只是一个简单的命令行程序.模拟的串口将会重定向到命令行.所以,我们仍然可以在Qemu平台上使用串口命令来调试Linux内核.

-k language

使用键盘布局语言(例如fr为法语).这个选项只有在不易得到PC键盘的情况下使用.我们在PC/Linux或是PC/Windows主机不需要使用这个选项.默认的为en-us,可用的布局如下:

ar de-ch es fo fr-ca hu ja mk no pt-br sv
da en-gb et fr fr-ch is lt nl pl ru th
de en-us fi fr-be hr it lv nl-be pt sl tr

-audio-help

这个选项将会显示声音子系统的帮助:驱动列表以及可调用的参数.

-soundhw card1,card2 …. or -soundhw all

允许声音并选择声音硬件.使用?可以列出所有可用的声音硬件

qemu -soundhw sb16,adlib hda
qemu -soundhw es1370 hda
qemu -soundhw all hda
qemu -soundhw ?

-localtime

设置时钟为本地时间(默认为UTC时间).如果在MS-DOS或是Windows上这个选项则需要正确的日期.

-full-screen

以全屏方式启动.

-pidfile file

在file文件中存许Qemu的进程PID.如果我们是由脚本启动的,这个选项是相当有用的.

-win2k-hack

当安装Windows 2000时可以使用这个选项来避免磁盘错误.在安装上 Windows 2000系统,我们就不再需要这个选项(这个选项降低IDE的传输速度).

USB选项

-usb

允许USB驱动(很快就将成为默认的选项)

-usbdevice devname

添加USB设备名.我们可以查看监视器命令usb_add来得到更为详细的信息.

网络选项

-net nic[,vlan=n][,macaddr=addr]

创建一个新的网卡并与VLAN n(在默认的情况下n=0)进行连接.在PC机上,NIC当前为NE2000.作为可选项的项目,MAC地址可以进行改变.如果没有指定-net选项,则会创建一个单一的NIC.

-net user[,vlan=n]

使用用户模式网络堆栈,这样就不需要管理员权限来运行.如果没有指定-net选项,这将是默认的情况.

-net tap[,vlan=n][,fd=h][,ifname=name][,script=file]

将TAP网络接口name与VLAN n进行连接,并使用网络配置脚本file进行配置.默认的网络配置脚本为/etc/qemu-ifup.如果没有指定name,OS 将会自动指定一个.fd=h可以用来指定一个已经打开的TAP主机接口的句柄.例如:

qemu linux.img -net nic -net tap

下面的是一个更为复杂的例子(两个NIC,每一个连接到一个TAP设备):

qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 /
-net nic,vlan=1 -net tap,vlan=1,ifname=tap1

-net socket[,vlan=n][,fd=h][,listen=[host]:port][,connect=host:port]

使用TCP socket 将VLAN n与远程的另一个Qemu虚拟机的VLAN进行连接.如果指定了listen,Qemu将在port端口监听连入请求(host是可选的), connect可以用来使用listen选项与另一个Qemu实例进行连接.fd=h指定了一个已经打开的TCP socket.例如:

# launch a first QEMU instance
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,listen=:1234
# connect the VLAN 0 of this instance to the VLAN 0 of the first instance
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net
socket,connect=127.0.0.1:1234

-net socket[,vlan=n][,fd=h][,mcast=maddr:port]

创建一个VLAN n,并使用UDP 多址通信套掊口与其他的QEMU虚拟机进行共享,尤其是对于每一个使用多址通信地址和端口的QEMU使用同一个总线. 在这里我们要注意以下几点:

  • ·几个QEMU可以运行在不同的主机上但却使用同一个总线(在这里假设为这些主机设置了正确的多址通信)
  • ·mcast支持是与用户模式Linux相兼容的.
  • ·使用fd=h指定一个已经打开的UDP 多址通信套接口.

例如:

# launch one QEMU instance
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net
socket,mcast=230.0.0.1:1234
# launch another QEMU instance on same “bus”
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net
socket,mcast=230.0.0.1:1234
# launch yet another QEMU instance on same “bus”
qemu linux.img -net nic,macaddr=52:54:00:12:34:58 -net
socket,mcast=230.0.0.1:1234

下面的为用户模式Linux的例子:

# launch QEMU instance (note mcast address selected is UML’s default)
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net
socket,mcast=239.192.168.1:1102
# launch UML
/path/to/linux ubd0=/path/to/root_fs eth0=mcast

-net none

表明没有网络设备需要进行配置.如果没有指定-net选项,则会用来覆盖活跃的默认配置.

-tftp prefix

当 使用用户模式网络堆栈,激活一个内置的TFTP服务器.所有的以 prefix开始的文件将会使用一个TFTP客户端从主机下载到本地.在本地的TFTP客户端必须以二进制模式进行配置(使用Unix的TFTP客户端的 bin命令).在客户机上的主机IP地址如通常的10.0.2.2.

-smb dir

-redir [tcp|udp]:host-port:[guest-host]:guest-port

当 使用用户模式网格栈,将连接到主机端口host-port的TCP或是UDP 连接重定向到客户机端口guest-port上。如果没有指定客户机端口,他的值为10.0.2.15(由内建的DHCP服务器指定默认地址)。例如:要 重定向从screen 1到客户机screen 0的X11连接,我们可以使用下面的方法:

# on the host
qemu -redir tcp:6001::6000 [...]
# this host xterm should open in the guest X11 server
xterm -display :1
To redirect telnet connections from host port 5555 to telnet port on
the guest, use the following:

# on the host
qemu -redir tcp:5555::23 [...]
telnet localhost 5555

然后当我们在主机telnet localhost 5555上使用时,我们连接到了客户机的telnet服务器上。

Linux启动选项

当我们使用这些选项时,我们可以使用一个指定的内核,而没有将他安装在磁盘镜像中。这对于简单的测试各种内核是相当有用的。

`-kernel bzImage’

使用bzImage作为内核映像。

`-append cmdline’

使用cmdline作为内核的命令行。

`-initrd file’

使用file作为初始的ram磁盘。

调试选项

`-serial dev’

重定向虚拟串到主机的设备dev。可用的设备如下:

vc

虚拟终端

pty

(Linux)伪TTY(自动分配一个新的TTY)

null

空设备

/dev/XXX”

(Linux)使用主机的tty。例如,’/dev/ttyS0′。主机的串口参数通过模拟进行设置。

/dev/parportN

(Linux)使用主机的并口N。当前只可以使用SPP的并口特征。

file:filename

将输出写入到文件filename中。没有字符可读。

stdio

(Unix)标准输入/输出

pipe:filename

(Unix)有名管道filename

在图形模式下的默认设备为vc,而在非图形模式下为stdio.这个选项可以被多次使用,最多可以模拟4个串口。

‘-parallel dev’

重定向虚拟并口到主机的设备dev(与串口相同的设备)。在Linux主机上,`/dev/parportN’可以被用来使用与相应的并口相连的硬件设备。这个选项可以使用多次,最多可以模拟3个并口。

`-monitor dev’

重定向临视器到主机的设备dev(与串口相同的设备)。在图形模式下的默认设备为vc,而在非图形模式下为stdio。

‘-s’

等待gdb连接到端口1234.

`-p port’

改变gdb连接端口。

`-S’

在启动时并不启动CPU(我们必须在监视器中输入’c')

‘-d’

输出日志到/tmp/qemu.log

`-hdachs c,h,s,[,t]‘

强 制硬盘0的物理参数(1 <= c <= 16383, 1 <= h <= 16, 1 <= s <=63),并且可以选择强制BIOS的转换模式(t=none, lba or auto).通常QEMU可以检测这些参数.这个选项对于老的MS-DOS磁盘映像是相当有用的.

`-std-vga’

模拟一个Bochs VBE扩展的标准VGA显卡(默认情况下为Cirrus Logic GD5446 PCI VGA)

`-loadvm file’

从一个保存状态启动.

组合键

在图形模拟时,我们可以使用下面的这些组合键:

Ctrl-Alt-f

全屏

Ctrl-Alt-n

切换虚拟终端’n’.标准的终端映射如下:

  • ·n=1 : 目标系统显示
  • ·n=2 : 临视器
  • ·n=3 : 串口

Ctrl-Alt

抓取鼠标和键盘

在虚拟控制台中,我们可以使用Ctrl-Up, Ctrl-Down, Ctrl-PageUp 和 Ctrl-PageDown在屏幕中进行移动.

在模拟时,如果我们使用`-nographic’选项,我们可以使用Ctrl-a h来得到终端命令:

Ctrl-a h

打印帮助信息

Ctrl-a x

退出模拟

Ctrl-a s

将磁盘信息保存入文件(如果为-snapshot)

Ctrl-a b

发出中断

Ctrl-a c

在控制台与监视器进行切换

Ctrl-a Ctrl-a

发送Ctrl-a

磁盘映像

从0.6.1起,QEMU支持多种磁盘映像格式,包括增长的磁盘映像,压缩与加密的磁盘映像.

我们可以用下面的命令来创建一个磁盘映像:

qemu-img create myimage.img mysize

这里myimage.img是磁盘映像的文件名,而mysize是以K表示的尺寸.我们可以使用M前缀来使用M表示尺寸或是G作为前缀使用G表示尺寸.

qemu-img选项

可以支持下面的一些命令:

`create [-e] [-b base_image] [-f fmt] filename [size]‘
`commit [-f fmt] filename’
`convert [-c] [-e] [-f fmt] filename [-O output_fmt] output_filename’
`info [-f fmt] filename

命令参数

filename

磁盘映像文件名.

base_image

只读的磁盘映像,可以作为拷贝到写映像的基础.写映像上的拷贝只存储修改的数据.

fmt

磁盘映像格式.在大多数情况下可以自动检测.可以支持下面的格式:

  • ·raw

raw 磁盘格式(默认).这种格式有简单并且易于移植到其他模拟器的优点.如果我们的文件系统支持holes(例如在Linux上的ext2或是 ext3),然后只有写入的部分保持空白.使用qemu-img info来得到映像使用的实际的大小或是在Unix/Linux上使用 ls -ls.

  • ·qcow

QEMU映像格式.最通用的格式.使用他可以获得较小的映像(如果我们的文件系统不支持holes,例如在Windows上,这是相当有用的),可以选用AES加密或是基于zlib的压缩.

  • ·cow

在写映像格式上的用户模式的Linux拷贝.在QEMU中作为增长的映像格式使用.这个选项只是为了与以前版本的兼容,并不能在Win32上使用.

  • ·vmdk

VMware 3 或是 4 兼容的映像格式.

  • ·cloop

Linux压缩的循环映像,重用直接压缩的CD-ROM映像.

  • ·size

以K表示的磁盘映像的尺寸.同时可以支持M或是G作为前缀.

  • ·output_filename

目的磁盘映像文件名

  • ·output_fmt

目标格式

  • ·-c

表明目标映像必须是压缩的(只是qcow格式)

  • ·-e

表明目标映像必须是加密的(只是qcow格式)

 

发表在 春寒花凋 | 评论关闭

kvm安装的小问题

1. Centos 6 上 没有python imaging
解决:yum install python-imaging

2. Ubuntu 11.04上 failed to find romfile “pxe-rtl8139.bin”

a@a-Calpella-Platform:~$ kvm
kvm: pci_add_option_rom: failed to find romfile “pxe-rtl8139.bin”

解决: sudo apt-get install kvm-pxe

发表在 kvm-autotest学习笔记 | 评论关闭

maude的二进制数加法

fmod Binary_Add is
sort number .
ops 1 0 : -> number .
op __ : number number -> number  [assoc prec 1] .
op _+_ : number number -> number [comm assoc prec 2] .
vars x y : number .

eq 0 + x = x .
eq 1 + 1 = 1 0 .

eq 1 + x 0 = x 1 .
eq 1 + x 1 = (x + 1) 0 .

eq x 0 + y 0 = (x + y) 0 .
eq x 1 + y 0 = (x + y) 1 .
eq x 1 + y 1 = (x + y + 1) 0 .
endfm

red in Binary_Add : 1 1 1 1 + 1 .

发表在 pure-lang | 评论关闭

kvm网络配置步骤

在 2012年3月5日 下午4:38,yongcheng wu <ycwu1979@gmail.com> 写道:

首先假定客户机的镜像为 client.img ,宿主机主要工作网卡为 eth0,网络配置为手
动设置 IP 地址,网段为 192.168.0.0/24,网关为 192.168.0.1,IP 为 192.168.0.100,
宿主机临机的 IP 地址为 192.168.0.200
1、部署宿主机与客户机在同一个网段,实现客户机与宿主机的临机自由通信
安装客户机操作系统,并配置客户机的网络环境为 IP 192.168.0.101/24,Router
192.168.0.1
在宿主机端,创建网桥,并设定网桥的网络参数
# brctl addbr br0
# ifconfig br0 192.168.0.100/24 up
# brctl addif br0 eth0
清除失效的 eth0 的路由表信息,并设置 br0 的路由表
# route -n | grep eth0 –color=no | awk -F ’ ’ ’{ system(“route del -net ”
$1 ” gw ” $2 ” netmask ” $3 ” dev eth0″)}’
# route add default gw 192.168.0.1
启动虚拟机并设置起网卡参数
# qemu-kvm -hda client.img -net tap,name=tap0,script=no,downscript=no -net
nic &
# ifconfig tap0 0.0.0.0 up
# brctl addif br0 tap0
刷新一下客户机的网络设备即可。
客户机现在共享宿主机的网卡并以 IP 192.168.0.101 和宿主机及其临机在一个网段内
工作。
2、部署宿主机为客户机的网关,实现宿主机对客户机的网络环境的保护
直接启动虚拟机
# qemu-kvm -hda client.img -net tap,name=tap0,script=no,downscript=no -net
nic &
设定虚拟网卡 tap0 为客户机的网关,并将网段切换到 192.168.1.0/24
# ifconfig tap0 192.168.1.1/24 up
打开 IP 转发
# echo 1 > /proc/sys/net/ipv4/ip_forward
清空并设置路由规则
# iptables -t nat -F
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT –to-
source=$(ifconfig | grep eth0 -A 1 –color=no | tail -n 1 | sed
‘s/.*addr:\(.*\)\ Bcast.*/\1/’)
进入客户机将 IP 地址指定为 192.168.1.2~253 之间的任意一个(掩码24)
,并将
Router 的地址设定为 192.168.1.1 即可。
如果需要同时启动多台虚拟机,并是这些虚拟机处于同一网关下,则需要将多个虚拟网
卡桥接到同一个网桥上。

例如:
需要启动10台虚拟机,其磁盘镜像分别为 os_1.img ~ os_10.img
宿主机的网络环境为
IP: 192.168.80.4
NETMASK: 255.255.255.0
ROUTE: 192.168.80.1
希望设定客户机网段为 192.168.10.0/24 网关为 192.168.10.1
编辑 start_10_vms.sh 文件,使用如下脚本内容
#!/bin/bash
# start_10_vms.sh
vmset=”1 2 3 4 5 6 7 8 9 10″
modprobe kvm
modprobe kvm-amd
# (intel cpu 用 modprobe kvm-intel)
brctl addbr br0
ifconfig br0 192.168.10.1/24 up
echo 1 > /proc/sys/net/ipv4/ip_forward
for i in $vmset;
do
qemu -net tap,ifname=tap${i},script=no,downscript=no -net
nic,macaddr=00:00:00:00:00:${i} -hda os_${i}.img &
done
sleep 10
for i in $vmset;
do
ifconfig tap$i 0 up
brctl addif br0 tap$i
done
iptables -t nat -F
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT –to-
source=$(ifconfig | grep eth0 -A 1 –color=no | tail -n 1 | sed
‘s/.*addr:\(.*\)\
+Bcast.*/\1/’)
在每台虚拟机客户端中配置网络参数,(x 可以取 2~253 )
# ifconfig eth0 192.168.10.x/24 up
# route add default gw 192.168.10.1

>
> 在 2012年3月5日 下午1:02,聂锡宁 <xining.nie@i-soft.com.cn> 写道:
>>  如果容易找的话,麻烦帮我找一找(虚拟机网络参数化配置步骤), 发到我这个邮箱。
>>
>>
>>  kvm-autotest打印出的qemu命令,直接放在shell下执行不通。可见,autotest在启动这条命令前做了一些设置工作。
>>
>>
>>
>>  kvm-autotest打印出的qemu命令原版
>>
>> [root@test125 ~]# qemu-kvm -name vm1 -nodefaults -vga std -monitor
>> unix:/tmp/monitor-humanmonitor1-20111207-113715-QKOZ,server,nowait -serial
>> unix:/tmp/serial-20111207-113715-QKOZ,server,nowait -drive
>> file=/tmp/kvm_autotest_root/images/f15-64.qcow2,index=0,if=ide,cache=none
>> -device rtl8139,netdev=idg2UfH4,mac=9a:cf:90:50:83:0a,id=idOnliM7 -netdev
>> tap,id=idg2UfH4,fd=21 -device
>> rtl8139,netdev=idBizlNL,mac=9a:cf:90:50:80:00,id=idNHx4QN -netdev
>> tap,id=idBizlNL,fd=22 -m 1024 -smp 2 -vnc :0
>> qemu-kvm: -netdev tap,id=idg2UfH4,fd=21: TUNGETIFF ioctl() failed: Bad file
>> descriptor
>> TUNSETOFFLOAD ioctl() failed: Bad file descriptor
>> qemu-kvm: -netdev tap,id=idBizlNL,fd=22: TUNGETIFF ioctl() failed: Bad file
>> descriptor
>> TUNSETOFFLOAD ioctl() failed: Bad file descriptor
>>
>> 我改写的简化版
>> [root@test125 ~]# qemu-kvm -hda /tmp/kvm_autotest_root/images/win7-32.qcow2
>> -m 1024 -usb -usbdevice tablet -device
>> rtl8139,netdev=idBizlNL,mac=9a:cf:90:50:80:00,id=idNHx4QN -netdev
>> tap,id=idBizlNL,fd=22
>> qemu-kvm: -netdev tap,id=idBizlNL,fd=22: TUNGETIFF ioctl() failed: Bad file
>> descriptor
>> TUNSETOFFLOAD ioctl() failed: Bad file descriptor
>>
>>
>> thks
>>
>>
>> —————————————————-
>> 聂锡宁
>> 电话:010-82664919 8316(分机)
>>
>> 普华基础软件事业部测试组 北京

发表在 kvm-autotest学习笔记 | 评论关闭

libvirt 改变network配置文件并使其生效

(系统环境:cent os 6)

配置文件在 /var/lib/libvirt/network/default.xml

改变此配置文件后,如IP, (其实应该在virsh交互环境下改,不过我还没学会virsh), 如此如此:

1.  把libvirt旧的虚拟网桥down掉:

ifconfig virbr0 down

(如果down不掉它,先stop它试试;各种原理我不清楚,反正我碰到过down不掉的情况,说是 integer expression expected, 不知啥意思)

2. 从网桥管理中删去旧的虚拟网桥:

brctl delbr virbr0

3. 在virsh交互环境下启动新网桥

virsh # net-start default

(如果这时报错说无法连接到libvirt socket,那是因为libvirt服务没起来, 需 service libvirtd start; 如果你要是这时候启动libvirtd, 这个网桥也就建好了,通过下面 net-list –all 看看default 网络起来没有)

virsh # net-list –all

发表在 kvm-autotest学习笔记 | 留下评论

电的历史

现在就来考究一下电脑或者计算机这个事物。从历史开始,从电开始:

人类开始利用电是不久的事,但对电现象的记载还是较早的。 最早的电自然是雷电。夏天下雨的时候会打闪,人们并不知道这闪电是怎么一回事,闪电伴着震耳的雷声,有时会击到树上,引起火;有时击到房屋,甚至击死人畜。于是,人们对闪电非常敬畏。

同时,人们早早注意到日常中的摩擦起电。南朝博物学家陶弘景著的医书记载了用摩擦起电的方法鉴别琥珀真伪(http://zhongguoshi.boxueren.com/contents/2955/26069.html)。只不过,这种记载只知道摩擦过的琥珀能吸取芥粒这种现象。此外,古人还发现梳头脱衣着簪时的光和诧响,但认识也仅此而已,都未必能把琥珀取芥跟梳头时的光和诧响联系起来,更别提天上的闪电了。
进入17世纪的欧洲研究起电来,先是有意识地制造摩擦起电的装置:起电机(http://memo.cgu.edu.tw/yun-ju/cguweb/sciknow/phystory/ElectricGenerator.htm#ps01)。

起电机产生的静电无法持久保存,能够保存静电的装置是在18世纪中期发明的:
1745年左右, 因马德堡真空球实验而闻名的同一个德国人和荷兰的莱顿大学教授分别独立地发现玻璃瓶可以储存电荷。这种瓶子叫做莱顿瓶。标准的莱顿瓶是这样的:一个玻璃瓶子,内外壁都贴有锡箔,内壁锡箔还通过铁链连着一根金属杆,顶端一个金属球。
莱顿大学的莱顿瓶里还装有水,他们搞不清楚储存电的是水还是玻璃。莱顿瓶在欧洲各国流传,并传到美国的费城。18世纪中期的美国那时候还是个崭新的国家。本杰明富兰克林,一位天才,也是一位全才,收到欧洲寄来的一个莱顿瓶,并用它做了一些电学实验。富兰克林找出了莱顿瓶的原理:只需要两片金属中间隔一块绝缘体就可以储存电荷,并不是必须做成莱顿瓶。现在看来,莱顿瓶其实就是今天标准的电容器的样子。

有一天,富兰克林的妻子不小心碰到一个带大量电荷的莱顿瓶,只见电光一闪,富兰克林的妻子被击倒在地,这次事故让她卧床一个星期才好转。而当时的电光却让富兰克林想起下雨时的闪电。当时人们还不知道雷闪和电是一回事。富兰克林想要证实一下自己的猜想,他在一个雷雨天用金属丝线放风筝,要把天上的雷闪通过金属丝线引下来。这个著名的费城实验是非常危险的。当时的人并不知道,雷雨闪电的电量实际超乎他们的想象。所幸富兰克林没有受伤。他把雷雨天引下来的闪电存入莱顿瓶,后来做了一些电学实验,表明闪电和起电器产生的电没有两样。
18世纪70-80年代,英文的卡文迪许和法国的库伦通过精确的实验得到静电学上的库伦定律。
这时候物理学界的共识是:
1. 世界上有两种不同的电荷;
2. 同种电荷在一起电量叠加,异种电荷一起互相抵消;
3. 因为这两种电荷就像正数和复数,所以把一种叫做正电荷,另一种叫做负电荷;
4. 带电荷的物体间有静电力,同种电荷互相吸引,异种电荷互相排斥;
5. 这种静电力与电量成正比,与距离平方成反比,这种数学关系跟牛顿刚发表不久的万有引力定律相似;

伏打电池
进入19世纪,1800年,伏打把锌片和银片浸在盐水中,就制成伏打电池。之后,人们又发明了更好的电池。电学实验不再只是静电,电流的一些性质也被人们发现。
(图片来自http://www.phy.ntnu.edu.tw/demolab/html.php?html=Notes/electronics/battery)

电磁学
如果电学仅仅停留在摩擦起电的阶段,它就不可能对世界产生这么大的影响。干燥天气下用梳子梳头会噼啪作响,摩擦过的琥珀可以吸引芥粒

发表在 春寒花凋 | 评论关闭

vms

My current job, also my first job, is about Virtual Machines. A VM is
an emulated computer upon a ‘real’ computer. Though I was once
interested in VMs, just for curiosities when I was at school. I’d
never think VMs could be so popular in software industry but after
entering Bejing, the big city of China.

VM techs are hot because Cloud Computing are hot these
years. Virtualization techs are said to be fundamental to Clouds,
cloud this, and could that. As the said is, the most shinny VM company
is vmware. But the comp. which I worked for is not that shinny. Nor am
I an up-to-date IT geeker. As fact, I am not a programmer but a tester. I
am articling on VMs for more knowleges about vms and an easier daily
task achivement which urged by my manager. Also, I hope maybe I could
get a clearer idea about real computer by the leaning of virtual
computer. For my knowlege of real computer is poor too.

There are virious kinds of virtual machines, such as bochs, vpc of
microsoft, vbox of oracle, etc. We here take kvm as our study object.

KVM, stands for Kernel-based Virtual Machines, which means it is a module
part of Linux kernel. Linux OS is composed of these things: kernel,
shell, and other application softwares.

Linux kernel, whose source code is now bigger than 100M, is matained by
Linus Torvalds.

发表在 软件测试学习笔记 | 评论关闭

republic

人物: Socrates, Glaucon,
地点:Piraeus
时间:约公元前420年

Socrates(苏格拉底)和Glaucon(格劳孔)来到希腊小镇Piraeus(皮亚欧斯)参加神节的祈祷,祈祷结束被当地的Polemarchus(波利马图斯)领回家里。Polemarchus的父亲Cephalus(西法卢斯)非常欢迎哲学家Socrates的到来,表示自己随着年纪的增长,肉体愉悦减退,对哲学交谈的兴趣却有所增长。如果不是因为年老体衰,一定会自己经常去城里(雅典?)拜访Socrates,而不会等到Socrates来这里。
Socrates也对这位老人表示钦佩,表示自己非常喜欢跟老人交谈,因为老人有更多的经历,对于人生道路比后来者知道更多。Socrates要问老人:人生处于那样的年迈阶段感觉时怎样的,是痛苦吗,还是别的什么?

[哲学似乎有一个大问题就是如何看待生命的终结。原因可能是:因为哲学思考人生,既然谈论“生”,就必然要回答它的反面——关于“死”的问题。记得土豆或网易上的名校公开课,有一门哲学选修课的第一堂课,教授介绍该课程的一大部分是关于应该如何看死亡。]

[这本书是柏拉图以其老师苏格拉底为第一人称所写,书中的苏格拉底大约50岁,此时的柏拉图也大约50岁。]

[希腊的神(Godness)不是基督教的上帝(God)。耶稣的诞生差不多是公元元年,因此还要等好几百年才会出现基督教。这表明,那种把西方科学文明归因于基督教的看法并不正确。而《日瓦戈医生》中就有这样的看法:“…从这种意义上说,(人类)历史是从基督开始的…人不再死于路旁,而是终老于历史中…才发明了科学,人们才创作了交响乐; 没有精神信仰,这是很难办到的”。 基督教并不总是与智慧同行,例如,柏拉图创立的雅典学派传承到后世几百年,最后就是被信仰基督教的罗马皇帝驱散的。这跟中共并不总是与中华文明同行相似——文革时曾打倒了传承千年的孔子儒学。]

发表在 春寒花凋 | 评论关闭