文字模式管理 VirtualBox 虛擬機器

文字模式管理 VirtualBox 虛擬機器

by Jamyy on 十月.15, 2008, under Linux

環境:

    VirtualBox 2.0.2
    Fedora 9 (x86_64), runlevel 3, 未安裝 X window 相關套件

安裝 VirtualBox

    至 http://www.virtualbox.org/wiki/Linux_Downloads 下載 VirtualBox for Fedora 9 ("Sulphur") - AMD64

    # yum -y install kernel-devel kernel-headers gcc libxslt.x86_64

    # rpm -ivh --nodeps VirtualBox-2.0.2_36488_fedora9-1.x86_64.rpm

    # usermod -a -G vboxusers someone (讓 someone 可建立虛擬機器)

    日後若更新 kernel, 需執行 /etc/init.d/vboxdrv setup 重新編譯 VirtualBox kernel module

建立 Virtual Machine

    建立並登錄虛擬機器
    VBoxManage createvm -name "CentOS 5" -register

    虛擬機器基本設定: 記憶體大小、是否啟用 ACPI、第一開機順位裝置、網路類型
    VBoxManage modifyvm "CentOS 5" -memory "256MB" -acpi on -boot1 dvd -nic1 nat

    建立並登錄虛擬硬碟
    VBoxManage createvdi -filename "CentOS_5.vdi" -size 10000 -register

    設定虛擬機器使用剛剛登錄的虛擬硬碟
    VboxManage modifyvm "CentOS 5" -hda "CentOS_5.vdi"

    登錄光碟映像檔, 並讓虛擬機器掛載之
    VBoxManage registerimage dvd ~/CentOS-5.2-i386-bin-DVD.iso
    VBoxManage modifyvm "CentOS 5" -dvd ~/CentOS-5.2.i386-bin-DVD.iso

    或直接掛載本機光碟
    VBoxManage modifyvm "CentOS 5" -dvd host:/dev/cdrom

    設定虛擬機器使用的遠端桌面埠口 (預設: 3389)
    VBoxManage modifyvm "CentOS 5" -vrdp on -vrdpport 3390

    啟動虛擬機器
    VBoxManage startvm "CentOS 5" -type vrdp

    以遠端桌面連線虛擬機器所在之主機即可操作虛擬機器畫面

    若虛擬機器使用非標準 port (3389), 只要在連線時, 於 IP 或 Host name 後面加上 :3390 (自定埠口) 即可

    遠端桌面相關網頁:

        Wikipedia - 遠端桌面協定
        Microsoft Remote Desktop Connection 6.0 用戶端更新
        rdesktop 官方網站

啟用虛擬桌面登入驗證

    # ln -sf /lib64/libpam.so.0 /lib64/libpam.so (x86 則為 /lib)

    VBoxManage modifyvm "CentOS 5" -vrdpauthtype external

    Linux Client 使用 rdesktop 連入虛擬機器: rdesktop -u someone -p - 192.168.0.1:3390

    其中 someone 係該虛擬機器的擁有者

從外部連入 NAT VM (相關限制請見文末)

    通訊協定
    VBoxManage setextradata "CentOS 5" \
    "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" TCP

    虛擬機器聆聽埠口
    VBoxManage setextradata "CentOS 5" \
    "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 22

    本機聆聽埠口
    VBoxManage setextradata "CentOS 5" \
    "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 2222

    重新啟動 VM 之後, 即可經由本機 tcp 2222 port 連入 VM:22

    以上紫色部份, "CentOS 5" 係虛擬機器名稱, "ssh" 為自定名稱, 最後一個參數是設定值

    bridging 做法可參閱官方 User Manual (PDF File) -- 6.8 Host Interface Networking and bridging on Linux hosts

    Ref:

        有事就記: VirtualBox NAT port forwarding
        hpeter 心得分享測試站: VirtualBox 使用 NAT 方法讓 vm 連上網路

開機自動啟動虛擬機器、關機自動保存虛擬機器狀態

    # vi /etc/rc.d/rc.local

        su - someone -c "VBoxManage startvm 'Name of Virtual Machine' -type vrdp"

    # vi /etc/default/virtualbox

        SHUTDOWN_USERS="userA userB"
        SHUTDOWN=savestate

    # vi /etc/init.d/vboxdrv

        搜尋 start(), 往下找到 succ_msg 的位置 (約 184 行), 於 succ_msg 之上新增一列:

        touch /var/lock/subsys/vboxdrv

    # chkconfig vboxdrv on

    # touch /var/lock/subsys/vboxdrv

    Ref: LinuxQuestions.org - Scripts under rc0.d and rc6.d do not seem to run during shutdown, reboot

參考資料

    HowToForge :: VBoxHeadless - Running Virtual Machines With VirtualBox 2.0 On A Headless Ubuntu 8.04 Server



--- 2008.11.03 補充:

    只能從 "內部 IP" (10.; 172.32.; 192.168.) 直接連入虛擬機器的 NAT 埠口 (如前例之 tcp:2222).
    本機 port 轉向除 nat table 需要設定之外, filter 的 INPUT 也要同時接受指向虛擬機器 NAT 埠口的封包,
    iptables -P INPUT DROP 者須注意.

        iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to 2222
        iptables -t filter -A INPUT -p tcp --dport 2222 -j ACCEPT

    本機 port 轉向只能使用 "標準埠號" (如: 22, 25, 80, 110), 無法使用自定埠號來轉向.

        iptables -t nat -A PREROUTING -p tcp --dport 8888 -j REDIRECT --to 50080 (假設 50080 是 nat 到 VM:http 的本機埠口)
        iptables -t filter -A INPUT -p tcp --dport 50080 -j ACCEPT

以上設定無法接受來自 Internet 端的 my.public.ip:8888 連線請求, 但內部 IP 可以用 vm.host.ip:8888 連入.

你可能感兴趣的:(linux,centos,VirtualBox)