安装ubuntu domU
一、创建虚拟机硬盘
# lvcreate -L 4096M -n lucid-srv domU
# lvcreate -L 4096M -n lucid-srv domU
在CentOS(dom0)安装debian/ubuntu有多种方式:
在这里给大家演示后两种
dom0环境为:CentOS5.7,xen的版本是3.1.2,redhat在该版本中增加了对grub2的支持
{: class=“info” }
通过 virt-manager安装linux(hvm)很简单,就像在平常在物理机上安装linux一样,准备好iso镜像文件,再根据安装程序的提示,一步步操作就可以了。在安装的过程中,硬盘选择file backend,文件名为deb6-template,后面的步骤需要用到该镜像文件。
从官方网站下载的iso文件名为:debian-6.0.2.1-amd64-xfce+lxde-cd-1.iso,文件名太长了,在virt-manager中无法识别,因此需要修改文件名,譬如debian6-amd64.iso
{: class=“note” }
cowboy这个词来自《the book of xen》,我估计是因为这种方式比较粗野,所以作者用了cowboy这个词。这种方式的思路是直接打包一台domU的系统文件,然后解压到另一台domU的硬盘中。虽说办法是糙了一点,但是非常适合于命令行下操作,可以实现大规模部署。
上面我们已经使用virt-manager安装了一台debian 6.0.2的源domU,接下来通过这个源domU先创建模版
# mount -o loop deb6-template.img /tmp/deb6-template
# chroot /tmp/deb6-template
# tar -cvpzf deb6.0.2-template.tar.gz --exclude=/deb6.0.2-template.tar.gz --exclude=/tmp --exclude=/lost+found --exclude=/media / --exclude=/mnt /
假如没有chroot的话,命令应该是:
# tar -cvpzf deb6.0.2-template.tar.gz --exclude=./deb6.0.2-template.tar.gz --exclude=./tmp --exclude=./lost+found --exclude=./media --exclude=./mnt /
网上很多文档都说在创建模版的时候要exclude掉/sys
和/proc
这两个目录,因为在系统运行的状态下,这两个目录含有一些临时文件,但是这些文档只说了一半,解压后到domU存储后,还要记得创建这两个目录,否则,系统运行会出错。另外,也可以将源domU关机,然后打包,因为关机后,domU中这两个目录是空的。
{: class=“note” }
在这里,我们选择镜像文件作为参考,读者也可以选择lvm作为目标domU的存储。
# dd if=/dev/zero of=/staff/domU/deb6-1.img bs=1000 count=2000K
# parted /staff/domU/deb6-1.img mklabel msdos
# parted /staff/domU/deb6-1.img mkpartfs primary ext2 0 1536
# parted /staff/domU/deb6-1.img mkpart extend 1537 2048
# parted /staff/domU/deb6-1.img mkpartfs logical linux-swap 1537 2048
以上命令是创建一个镜像文件,然后对其分区,先创建主分区,接着是扩展,然后是逻辑分区,swap分区位于逻辑分区。
# parted deb6-1.img
>set 1 boot on
>quit
这个步骤是为了将主分区置为boot,实际上这个步骤是多余的,即使primary不是boot flag也能启动。
大家有没有注意到上面的步骤中,分区类型是ext2,这是因为CentOS5.7的parted版本为1.8.1,只支持ext2,最新的parted版本是3.03倒是支持ext3,然而没有for centos5.7的rpm,所以我们还需要将ext2手工转换成ext3。
{: class=“info” }
# kpartx -p "" -av /staff/domU/deb6-1.img
将在/dev/mapper/下生成loopX1和loopX5两个device map,其中loopX1是primary分区,loopX5是swap分区
# tune2fs -j /dev/mapper/loopX1
这样就将ext2转换成了ext3。
# mount /dev/mapper/loopX1 /tmp/deb6-1
# mount /dev/mapper/loopX1 /tmp/deb6-template
# cp -rfp /tmp/deb6-template/* /tmp/deb6-1/
将文件拷贝到新的domU中之后,要记得卸载分区
# umount /tmp/deb6-1
# umount /tmp/deb6-template
# kpartx -d /staff/domU/deb6-1.img
# kpartx -d /staff/domU/deb6-template.img
# vim /etc/xen/deb6-hvm.cfg
import os, re
arch = os.uname()[4]
if re.search('64', arch):
arch_libdir = 'lib64'
else:
arch_libdir = 'lib'
kernel = "/usr/lib/xen/boot/hvmloader"
builder='hvm'
memory = 1024
# Should be at least 2KB per MB of domain memory, plus a few MB per vcpu.
shadow_memory = 8
name = 'deb6-hvm'
vif = [ 'type=ioemu, bridge=eth0' ]
#acpi = 1
#apic = 1
disk = [ 'file:/home/staff/vm.images/deb6-hvm.img,sda,w',
'file:/home/chenr/software/debian-6.0.2.1-amd64.iso,ioemu:hdc:cdrom,r'
]
device_model = '/usr/' + arch_libdir + '/xen/bin/qemu-dm'
#-----------------------------------------------------------------------------
# boot on floppy (a), hard disk (c) or CD-ROM (d)
# default: hard disk, cd-rom, floppy
boot="c"
sdl=0
vnc=1
vncconsole=3
vncpasswd=''
serial='pty'
usbdevice='tablet'
#on_reboot="destroy"
#on_poweroff="destroy"
#on_shutdown="destroy"
on_crash="preserve"
需要注意的是,disk选项必须是:
disk = ["file:/staff/domU/deb6-hvm.img,sda,w"]
不能是
disk = ["tap:aio:/staff/domU/deb6-hvm.img,xvda,w"]
因为xen3.1.2不支持tap/xvda。
virt-manager是一种通用的安装方法,适合于安装全系列的linux/windows操作系统,不过不利于大规模部署,而cowboy的方式则适合于大规模、快速部署,跟virt-manager形成互补。
ifconfig e1000g0 unplumb
ifconfig e1000g1 unplumb
dladm create-aggr -l e1000g0 -l e1000g1 interlink0
ifconfig plumb interlink0
ifconfig interlink0 192.168.33.11/24 broadcast + up
dladm set-linkprop -p mtu=9000 aggr0
dladm show-linkprop -p mtu
假如之前配置了一个网卡,残留:/etc/hostname.e1000g0这样的文件,这时候需要将该文件更名为hostname.aggr0,mv /etc/hostname.e1000g0 /etc/hostname.aggr0
,否则系统重启后会出错:network/physical:default无法正常启动,处于maintance状态
{: class=“info” }
svcadm disable network/physical:nwam
svcadm enable network/physical:default
ifconfig e1000g0 unplumb
ifconfig e1000g0 plumb
ifconfig e1000g0 192.168.172.12/24 broadcast + up
route -p add default 192.168.84.1
/etc/nsswith.conf
vim /etc/nsswitch.conf
ipnodes: files mdns
hosts:files mdns
/etc/resolv.conf
echo "Nameserver 8.8.8.8" > /etc/resolv.conf
在存储服务器中安装一块Intel 558双口网卡后,nexenta 3.0.5无法识别,ifconfig -a
看不到任何网卡信息,原因是内核尚未装载驱动,接下来需要做的是:
vendor id
和device id
;# prtconf -pv | less
model: 'Ethernet controller'
power-consumption: 00000001.00000001
fast-back-to-back:
devsel-speed: 00000001
interrupts: 00000001
max-latency: 00000038
min-grant: 00000008
subsystem-vendor-id: 00008086
subsystem-id: 000010f0
unit-address: '4'
class-code: 00020000
revision-id: 00000005
vendor-id: 00008086
device-id: 00001229
name: 'pci8086,10f0'
找到device-id: 00001229
,对应的vendor-id: 00008086
。接着再找对应的驱动:
root@ncp:/etc# grep 1229 /boot/solaris/devicedb/master
pci8086,1229 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet"
pci8086,1229.8086.1009 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet"
pci8086,1229.8086.100c pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet"
pci8086,1229.8086.1012 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet"
pci8086,1229.8086.1013 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet"
pci8086,1229.8086.1015 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet"
pci8086,1229.8086.1016 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet"
pci8086,1229.8086.1017 pci8086,1229 net pci iprb.bef "Intel Pro100/B Fast Ethernet"
第一行的结果显示这块网卡用的是iprb
驱动,因此
# modload /kernel/drv/iprb
# ifconfig iprb0 plumb
# touch /etc/hostname.iprb0
# ifconfig iprb1 plumb
# touch /etc/hostname.iprb1
$ sudo ifconfig bge0 plumb
$ sudo ifconfig bge0 dhcp start
# locate
locate: database too small: /var/db/locate.database
解决办法:# /usr/libexec/locate.updatedb
# pkg_add -i bash
然后调整.bash_profile
$ cd /tmp
$ ftp ftp://ftp.openbsd.org/pub/OpenBSD/4.9/ports.tar.gz
$ cd /usr
$ sudo tar xvzf /tmp/ports.tar.gz
;注意,tar一定要带上参数v,因为在openbsd中解压非常慢,v可以即时显示解压进度。
在openbsd需要安装colorls才能用不同颜色区分不同文件和目录。
# pkg_add colorls
# vim ~/.profile
export TERM=wsvt25
alias ls="colorls -G"
重新登录ls看看吧。
默认颜色:
kill -HUP $(cat /var/run/sshd.pid)
kill -HUP `cat /var/run/sshd.pid`
ps aux | grep app_name
kill -9 id
# rdate -ncv pool.ntp.org
# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
这样就可以得到正确的时间了。
那如何将时间同步到bios中呢?目前还没有找到合适的方法,以下是一种workaround
# echo "/usr/local/bin/ntpd -A -c /etc/ntp.conf -l /var/log/ntp.log
譬如
# cat /etc/hosts
127.0.0.1 freebsd.darkblue.com
sendmail_submit_enable="NO" # Start a localhost-only MTA for mail submission
sendmail_outbound_enable="NO" # Dequeue stuck mail (YES/NO).
sendmail_msp_queue_enable="NO" # Dequeue stuck clientmqueue mail (YES/NO).
通过编辑/etc/rc.conf
来修改网卡IP地址,接着执行# sh /etc/netstart
,新的IP地址立刻生效,不需要重启系统
# kldstat
# kldload dummynet.ko
安装freebsd 7.3的时候选择developer,dummynet.ko就已默认安装,不需要重新编译内核。
# pkg_add -r net-snmp
# echo "snmpd_enable="YES"" >> /etc/rc.conf
;以下是snmpd.conf的简单配置,如果没有就自己创建一个
# cat /usr/local/share/snmp/snmpd.conf
;如果没有就创建一个snmpd.conf
syslocation somewhere
syscontact admin@example.com
rocommunity public
master yes
disk /
disk /tmp
disk /usr
disk /var
disk /home
# /usr/local/etc/rc.d/snmpd start
;snmpd默认会使用/usr/local/share/snmp/snmpd.conf启动
# vim /boot/loader.conf
if_bridge_load="YES"
bridgestp_load="YES"
dummynet_load="YES"
# vim /etc/rc.conf
cloned_interfaces="bridge0"
ifconfig_bridge0="addm le1 addm le2 up"
ifconfig_em0="up"
ifconfig_em1="up"
# vim /etc/sysctl.conf
net.link.bridge.ipfw=1
# pkg_add -r ntop
# pkg_add -r GeoIP
# pkg_add -r rrdtool
随后下载GeoIP所需要的dat文件
运行:
# /usr/local/bin/ntop
根据提示输入administrator的账号和密码。
接着就可以通过浏览器来访问ntop了。
在TCP/IP的世界里,每台计算机都必须拥有一个IP地址才能跟其他计算机通信。在DHCP没有诞生之前,计算机的IP地址都必须手工分配,因此也称之为静态IP地址。随着计算机数量的急剧增多,静态IP呈现出以下缺点:
去年买了一款linksys wrt54g v4改造版,ROM为8M,RAM则升级到了64M,预装了tomato 1.25版。通过web界面,我把它升级到了kamikaza8.09.2,前段时间官网推出了backfire10.03.1-rc4,采用2.6.32的内核,提供更丰富的软件功能,支持的硬件类型也更多,于是我开始了曲折的升级之旅。
根据官网的文档,我执行了以下操作:
接着,我尝试将镜像文件上传到ROM中,然后通过命令行进行升级:
/tmp
目录下;mtd -r write openwrt-wrt54g-squashfs.bin linux
提示:
Could not open mtd device: linux
Can't open device for writing!
接着
mtd unlock linux
mtd -r write openwrt-wrt54g-squashfs.bin linux
Bad trx header
This is not the correct file format; refusing to flash.
Please specify the correct file or use -f to force.
Image check failed.
shit,不就是升个级吗?!
于是又尝试了以下几种操作:
1.mtd -r write openwrt-wrt54g-squashfs.bin firmware
实际上并没有firmware这个分区,当时找到的文档太老了,也不了解OpenWRT的flash分区情况就病急乱投医。
{: class=“info”}
2.通过sysupgrade升级
创建/etc/sysupgrade.conf(复制wiki.openwrt.org中的/etc/sysupgrade.conf)
sysupgrade openwrt-wrt54g-squashfs.bin
Bad trx header
This is not the correct file format; refusing to flash.
Please specify the correct file or use -f to force.
Image check failed.
傻眼了,难不成经过改造后的这款Linksys无法升级?
后来忽然想到,当时是通过tomato的web页面升级到OpenWRT的,何不先将kamikaza升级至tomato,然后再从tomato升级至backfire?但又有些担心,万一变成砖头怎么办?所以google到一篇文章:Installing Tomato over OpenWRT for Linksys WRT54G,似乎DD-WRT对unbricked有一手,即便出错了还能倒退。
于是下载了一个dd-wrt.v24_mini_generic.bin,颤抖的双手终于将kamikaza升级到DD-WRT,接下来就非常顺利了,又从DD-WRT的web升级到了backfire。紧接安装所需的软件包:
opkg update
opkg install tcpdump
opkg install tmux
opkg install openvpn
opkg install iftop
opkg install iperf
至此,Linksys WRT54G又恢复了元气,甚至更为强壮。