Debian5 dom0上跑Xen Debian5 lenny domUXen ubuntu10.04 Lucid domU--我爱你,飞一般的感觉
我的声明:本文内容比略长的标题略长,部分内容参考网络,转载不究。
个人态度:Linux作为桌面系统有意思吗?
目的:用现成或过时的服务器搭建非常多小应用和测试环境。
目标:在Debian上运行Xen,在其上运行两个(当然可以多个)常用Linux发行版。
1. 背景
2. Debian上跑Xen
#vi /etc/apt/source.list直接删了里面的内容加入下面的台湾源(和Ubuntu在同一台服务器):
deb http://tw.archive.ubuntu.com/debian/ lenny main non-free contrib deb-src http://tw.archive.ubuntu.com/debian/ lenny main non-free contrib
#apt-get update这儿需要根据自己机器的CPU架构选择内核,开始安装Xen相关:
#apt-get install xen-linux-system-2.6.26-2-xen-686 xen-utils-3.2-1 xenstore-utils xenwatch xen-shell xen-tools让apt自行解决依赖问题,然后耐心等待。
安装后的微调
#vi /etc/xen/xend-config.sxp搜索network-dummy,在下面加一行:
(network-script network-bridge)查看新内核是否安装成功。如果成功,限制dom0的内存使用量,不然会抢占domU的内存:
#vi /boot/grub/menu.lst ... title Xen 3.2-1-i386 / Debian GNU/Linux, kernel 2.6.26-2-xen-686 root (hd0,0) kernel /xen-3.2-1-amd64.gz dom0_mem=256M module /vmlinuz-2.6.26-2-xen-686 root=/dev/mapper/vpsee-root ro console=tty0 module /initrd.img-2.6.26-2-xen-686 ...如果第一个Title是Xen相关的内核,说明新内核安装成功,然后在kernel一行后加入dom0_mem=256M,然后重启服务器检查Xen安装是否成功:
#shutdown -h now ...等待重启... #uname -a ...Xen...说明已从新内核启动 #xm list Name ID Mem VCPUs State Time(s) Domain-0 0 256 2 r----- 0.9Xen Pypervisor已经安装成功,现在创建我们需要的虚拟机。
3. Xen上跑Debian5 lenny
#man xen-create-image #xen-create-image --hostname=monitorvm --ip=172.20.10.199 --netmask=255.255.255.0 --gateway=172.20.10.1 --dist=lenny --mirror=http://172.20.10.197/debian --size=10gb --memory=768mb --swap=768mb --arch=i386 --passwd --dir=/vms --force首先查看xen-create-image的文档,然后创建一个虚拟机镜像,--ip指定ip地址,--dist指定Linux发行版本,--mirror指定安装源地址,这里可以使用网上的镜像地址,我这里把Debian光盘拷到本地做了一个web服务器,--passwd指定安装后需要设置密码,--dir指定镜像安装位置,然后开始创建镜像,在不出错误情况下,过会就会要求输入密码,然后等待安装完成。
#vi /etc/xen/monitror.conf ... # # Extra # extra = 'console=hvc0 xencons=tty'在最后加入这么一行,然后再进xen console成功,输入密码进入系统:
#xm list #xm create monitor.conf #xm list #xm console monitor.conf进入系统最好修改Debian的apt源(跟上面一样),然后用puttyssh登录虚拟机,但是居然显示:ssh stdin: is not a tty,解决办法是重新安装udev:
#apt-get install udev重新登录,成功!如果希望dom0重启后虚拟机自动启动,可以这样:
#ln -s /etc/xen/monitorvm /etc/xen/auto创建一个到auto的链接,从此您就可以像操作普通服务器Linux一样使用虚拟机了。
4. Xen上跑Ubuntu 10.04 Lucid LTS
#cp -r /usr/lib/xen-tools/edgy.d /usr/lib/xen-tools/lucid.d然后创建一个lucid到gutsy profile的链接:
#ln -s /usr/share/debootstrap/scripts/gutsy /usr/share/debootstrap/scripts/lucid创建两个针对Xen和pygrub的链接:
#ln -s /usr/lib/xen-3.2-1 /usr/lib/xen #ln -s /usr/lib/xen/bin/pygrub /usr/bin/pygrub修改/etc/xen-tools/xm.tmpl使其先列出root设备,pygrub才能正常。用下列代码替换"# Disk device(s)."部分:
{ for ( my $i = 0; $i <= $#PARTITIONS; $i++ ) { if ( $PARTITIONS[$i]{'mountpoint'} eq '/' ) { $OUT .= "root = '/dev/$device" . ($i + 1) . " ro'\n"; } } $OUT .= "disk = [\n"; for ( my $i = 0; $i <= $#PARTITIONS; $i++ ) { if ( $PARTITIONS[$i]{'mountpoint'} eq '/' ) { $OUT .= " '$PARTITIONS[$i]{'imagetype'}$PARTITIONS[$i]{'image'},$device" . ( $i + 1 ) .",w',\n"; } } for ( my $i = 0; $i <= $#PARTITIONS; $i++ ) { if ( $PARTITIONS[$i]{'mountpoint'} ne '/' ) { $OUT .= " '$PARTITIONS[$i]{'imagetype'}$PARTITIONS[$i]{'image'},$device" . ( $i + 1 ) .",w',\n"; } } $OUT .= " ]\n"; }将/usr/lib/xen-tools/lucid.d/30-disable-gettys内容由以下代替:
#!/bin/sh # # This script comments out all virtual terminals which aren't on the # first console - that must remain so that 'xm console ...' works # correctly. # # Steve # -- # http://www.steve.org.uk/ # # Updated for Lucid; DDS/ABC # prefix=$1 # # Source our common functions # if [ -e /usr/lib/xen-tools/common.sh ]; then . /usr/lib/xen-tools/common.sh else . ./hooks/common.sh fi # # Log our start # logMessage Script $0 starting # # Remove the links for upstart # rm ${prefix}/etc/init/tty[!1].conf # # Are we using an alternative serial device? # if [ ! -z "${serial_device}" ]; then serial_device=`basename ${serial_device}` # Let the user know. logMessage "Replacing default serial device (tty1) with ${serial_device}; having destroyed the rest" # replace existing device. mv ${prefix}/etc/init/tty1.conf ${prefix}/etc/init/${serial_device}.conf sed -i -e s/tty1/${serial_device}/ ${prefix}/etc/init/${serial_device}.conf # make sure that it is allowed to login. echo $serial_device >> ${prefix}/etc/securetty fi # # Log our finish # logMessage Script $0 finished创建/etc/xen-tools/role.d/pygrub文件(可选),并赋予可执行权限,使虚拟机能从自己的内核启动,而不是从Xen提供的内核,如果进行这一步,在创建虚拟机镜像时需要使用pygrub和udev两个role。
#!/bin/sh # # Configure the new image to be suitable for booting via pygrub # # Wejn # -- # http://wejn.org/ # # Updated for Lucid; DDS/ABC # prefix=$1 # # Source our common functions - this will let us install a Debian package. # if [ -e /usr/lib/xen-tools/common.sh ]; then . /usr/lib/xen-tools/common.sh else echo "Installation problem" fi # # Update APT lists. # chroot ${prefix} /usr/bin/apt-get update # # Install the packages # set -e installDebianPackage ${prefix} perl installDebianPackage ${prefix} libklibc installDebianPackage ${prefix} klibc-utils installDebianPackage ${prefix} initramfs-tools #installDebianPackage ${prefix} linux-image-2.6-xen-amd64 installDebianPackage ${prefix} linux-virtual # Force initrd if none exists echo ${prefix}/boot/initrd* | grep -q 2\\.6 if [ $? -ne 0 ]; then chroot ${prefix} update-initramfs -c -k `ls -1 ${prefix}/lib/modules/ | head -n 1` fi # Generate grub menu.lst LNZ=`basename \`ls -1 ${prefix}/boot/vmlinuz*|tail -n 1\`` RD=`basename \`ls -1 ${prefix}/boot/initrd*|tail -n 1\`` mkdir -p ${prefix}/boot/grub cat - <<-EOF > ${prefix}/boot/grub/menu.lst default 0 timeout 5 title Debian/Ubuntu root (hd0,0) kernel /boot/$LNZ root=/dev/xvda2 ro initrd /boot/$RD EOF创建虚拟机镜像,需要注意其中的一些参数选项:
#xen-create-image --hostname=lucid --ip=172.20.10.196 --netmask=255.255.255.0 --gateway=172.20.10.1 --dist=lucid --mirror=http://172.20.10.197/lucid/ --size=10gb --memory=512mb --swap=512mb --arch=i386 --passwd --dir=/vms --force --role=udev,pygrub--dist指定为lucid,镜像同样是自己从光盘拷贝的内容,--role指定了udev和我们创建的pygrub。
... #kernel = '/boot/vmlinuz-2.6.26-2-xen-686' #ramdisk = '/boot/initrd.img-2.6.26-2-xen-686' ... # # Extra # extra = 'console=hvc0 xencons=tty'启动虚拟机:
#xm list #xm create lucid.conf直接启动putty用ssh方式登录虚拟机,完毕!
小结
转载请注明出处:http://www.jlunlp.com/article/20230331/797099.html
随机推荐
-
为什么我可以在英特尔i5上执行静态链接的riscv helloworld程序?我正在运行Debian测试
为什么这在我的英特尔i5上也能用?为什么我可以在本地执行它?# riscv64-linux-gnu-gcc-7 hello.c -o hello -static # ./hello Hello World! # file hello he...
-
Debian测试su命令不更新$PATH?
使用2个帐号root和ebfe测试Debian,在执行su之后,用户ebfe的$PATH仍然是相同的。sudo su将$PATH从根目录更改为根目录,并且直接登录到根目录显然也具有根目录的$PATH。为什么su不更新$PATH而sudo s...
-
debian 10 安装fcitx 后设置
关于 debian10 安装后没有中文输入法的解决方案 设置好代理后 apt-get install fcitx 后 仍然看不到 语言栏 可能是 在设置fcitx时 的字体太小了 输入法配置 -外观-字体 加大 即可
-
Debian 8或Debian 9(64 位)安装 .NET Core
在 Debian 8 或 Debian 9(64 位)上安装 .NET Core 的具体步骤: 备注:必须有用户控制目录,才能通过 tar.gz 在 Linux 系统上进行安装。 1.准备一台刚安装的Debian 9系统,在远程客户端上安...
-
PDF::Table Perl模块在Debian Jessie上不起作用
当我尝试在Debian Jessie (Perl5.20)上使用PDF::Table模块时,我得到了这样的消息:Useless use of greediness modifier ? in regex; marked by -- HERE...
-
无法在debian上安装node-libcurl
请告诉我为什么我不能安装node-libcurl。以下是安装时显示的错误(npm install node-libcurl): node-libcurl@1.3.0 install /var/www/node/node_modules/no...
-
Linux VPS安全设置之一 修改SSH端口(CentOS/Debian)
老左在之前的不少文章中已经分享过在centos或者在debian环境下安装lnmp和llsmp的教程,老左用人格担保肯定是可行的,因为我都是在实战操作后截图及写下来的文章。可以让VPS初学者手把手的学习如何在Linux VPS上安装系统及...
-
Debian安装RabbitMQ
1.安装Erlang语言环境 sudo apt-get install erlang-nox sudo apt update sudo apt upgrade sudo apt autoremove 2.安装RabbitMQ服务 s...
-
无法在debian 9上安装django 3
我不能在我的Debian 9系统上安装Django 3。我遵循本指南来安装https://www.rosehosting.com/blog/how-to-install-python-3-6-4-on-debian-9/ 3,因为Debia...
-
龙芯 3A4000 安装 Debian stable
2022-01-17 2022-06-04 更新 v0.0.3 版权声明:原创文章,未经博主允许不得转载 3A5000 开始,龙芯转向 loongarch ,新的架构虽然甩掉了历史包袱,但也需要一段时间来积累生态。在这半年多的时间里,...