安装debian domU

在CentOS(dom0)安装debian/ubuntu有多种方式:

  1. debootstrap
  2. virt-manager
  3. cowboy

在这里给大家演示后两种

dom0环境为:CentOS5.7,xen的版本是3.1.2,redhat在该版本中增加了对grub2的支持
{: class=“info” }

一、virt-manager

通过 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

cowboy这个词来自《the book of xen》,我估计是因为这种方式比较粗野,所以作者用了cowboy这个词。这种方式的思路是直接打包一台domU的系统文件,然后解压到另一台domU的硬盘中。虽说办法是糙了一点,但是非常适合于命令行下操作,可以实现大规模部署。

2.1 创建模版

上面我们已经使用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” }

2.2 准备目标domU存储

在这里,我们选择镜像文件作为参考,读者也可以选择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也能启动。

2.3 转换分区文件系统

大家有没有注意到上面的步骤中,分区类型是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。

2.4 克隆

# 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

2.5 创建配置文件

# 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形成互补。

nexenta中的链路聚合设置

1、确保所有网口没有被启用

ifconfig e1000g0 unplumb
ifconfig e1000g1 unplumb

2、创建link-aggregation

dladm create-aggr -l e1000g0 -l e1000g1 interlink0

3、启用端口汇聚

ifconfig plumb interlink0

4、配置ip地址

ifconfig interlink0 192.168.33.11/24 broadcast + up

5、配置JumboFrame

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” }

nexenta网络设置

基本配置

1. 配置IP地址

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

2. 配置默认网关

route -p add default 192.168.84.1

3. 配置DNS

  • 修改/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

如何在nexenta中安装intel558双口网卡

在存储服务器中安装一块Intel 558双口网卡后,nexenta 3.0.5无法识别,ifconfig -a看不到任何网卡信息,原因是内核尚未装载驱动,接下来需要做的是:

  1. 识别网卡vendor iddevice id
  2. 查找匹配的驱动;
  3. 装载驱动;
  4. 配置网卡;

1. 识别网卡“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。接着再找对应的驱动:

2. 查找匹配的驱动

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驱动,因此

3. 装载驱动

# modload /kernel/drv/iprb

4. 配置网卡

# ifconfig iprb0 plumb
# touch /etc/hostname.iprb0
# ifconfig iprb1 plumb
# touch /etc/hostname.iprb1

OpenBSD学习笔记

o 运行locate时出错

# locate
locate: database too small: /var/db/locate.database

解决办法:# /usr/libexec/locate.updatedb

o 安装bash

# pkg_add -i bash

然后调整.bash_profile

o 安装port tree

$ 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可以即时显示解压进度。

o 彩色显示目录和文件

在openbsd需要安装colorls才能用不同颜色区分不同文件和目录。

# pkg_add colorls
# vim ~/.profile
export TERM=wsvt25
alias ls="colorls -G"

重新登录ls看看吧。

默认颜色:

  1. 白色 正常文件
  2. 蓝色 目录
  3. 红色 可执行文件
  4. 品红 连接

o 如何在openbsd中重启服务?

kill -HUP $(cat /var/run/sshd.pid)
kill -HUP `cat /var/run/sshd.pid`

ps aux | grep app_name
kill -9 id

o 如何更新时间

# 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

FreeBSD学习笔记

o 禁用sendmail

  • 在/etc/hosts中添加域名

譬如

# cat /etc/hosts
127.0.0.1 freebsd.darkblue.com
  • 修改/etc/rc.conf
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).

o 安装完vim-lite后,需要freebsd重启才能在root下面打开vim

o 修改网卡IP地址后立即生效的方法

通过编辑/etc/rc.conf来修改网卡IP地址,接着执行# sh /etc/netstart,新的IP地址立刻生效,不需要重启系统

o 如何查看加载到内核中的模块?

# kldstat

o 如何加载模块到内核中?

# kldload dummynet.ko

安装freebsd 7.3的时候选择developer,dummynet.ko就已默认安装,不需要重新编译内核。

o 如何安装和配置snmpd(net-snmp)

  • 先安装和配置snmpd:
# 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
  • 接着启动snmpd:
# /usr/local/etc/rc.d/snmpd start
;snmpd默认会使用/usr/local/share/snmp/snmpd.conf启动

o 如何在freebsd 7.3中创建filter bridge

  • 加载if_bridge.ko模块
# 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

o 如何在freebsd中安装ntop

# pkg_add -r ntop
# pkg_add -r GeoIP
# pkg_add -r rrdtool

随后下载GeoIP所需要的dat文件

运行:

# /usr/local/bin/ntop

根据提示输入administrator的账号和密码。

接着就可以通过浏览器来访问ntop了。

DHCP服务

在TCP/IP的世界里,每台计算机都必须拥有一个IP地址才能跟其他计算机通信。在DHCP没有诞生之前,计算机的IP地址都必须手工分配,因此也称之为静态IP地址。随着计算机数量的急剧增多,静态IP呈现出以下缺点:

升级OpenWRT

去年买了一款linksys wrt54g v4改造版,ROM为8M,RAM则升级到了64M,预装了tomato 1.25版。通过web界面,我把它升级到了kamikaza8.09.2,前段时间官网推出了backfire10.03.1-rc4,采用2.6.32的内核,提供更丰富的软件功能,支持的硬件类型也更多,于是我开始了曲折的升级之旅。

根据官网的文档,我执行了以下操作:

  1. 下载backfire 10.03.1-rc4镜像文件;
  2. 在kamikaza的“升级界面”upload该镜像文件,出现不支持该镜像文件的错误。

接着,我尝试将镜像文件上传到ROM中,然后通过命令行进行升级:

  1. 启动SSHd;
  2. 由于kamikaza没有SFTP,因此WinSCP无法通过SFTP将镜像文件上传至OpenWRT,于是我在笔记本上利用hfs这个小工具架设了一个web网站;
  3. 在kamikaza中,通过wget将镜像文件下载至/tmp目录下;
  4. 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又恢复了元气,甚至更为强壮。