Gentoo Linux 開發員 User-Mode Linux 測試指南
1.
取得 User-Mode Linux
就如同 user-mode linux 網站所說的
(http://user-mode-linux.sourceforge.net) ,user-mode linux 讓使用者
"在 Linux 裡面執行 Linux"。特別的是,user-mode linux 提供一台虛擬的機器讓使用者
可以 "執行有臭蟲的軟體,試驗新的 Linux 核心或發行版,還有摸索 Linux 的內部。這
些都不用對您原來的 Linux 冒險。' Gentoo 核心套件,像是
sys-apps/baselayout 或 sys-libs/glibc,這些實驗性的改變可能會破壞系統或
是導致他不能開機,使用 user-mode linux 可以嘗試這些改變而不用擔心破壞目前的系統
。
安裝 user-mode linux 基本上來說和一般安裝核心的過程差不多。首先安裝核心(加上適
合執行 user-mode linux 的修正),然後設定 user-mode linux 核心。在 2.6.9 以後,
UML 已經整合到核心中了。
原始碼 1.1: 安裝 UML 核心原始碼 |
# emerge sys-kernel/development-sources
# cd /usr/src/linux
# make menuconfig
# make linux
# cp linux /usr/local/bin/linux
|
確定 /usr/local/bin 在您的 path 變數中。編輯
/etc/env.d/00basic 中的 PATH 變數加上 /usr/local/bin
然後執行 env-update:
原始碼 1.2: 編輯 00basic |
# nano -w /etc/env.d/00basic
# env-update
# source /etc/profile
|
為了讓 user-mode linux 核心可以正常啟動 Gentoo 系統,要設定核心不要自動掛
載 /dev (devfs)。此外,您要確定您有編譯 tmpfs (虛擬記憶體檔
案系統)的支援,因為 Gentoo linux 開機時預設在一小塊 tmpfs 分割區中儲存一些資訊
。(user-mode 網站上提供已經編譯好的核心會自動掛載 /dev,而且沒有
支援 tmpfs ,不要去麻煩他們。)
我極度建議去閱讀 user-mode linux 文件,但是基本的做法是執行
/usr/local/bin/linux 啟動 user-mode 核心,然後嘗試啟動儲存在
root_fs 檔案中的系統,這個檔案應該是在目前的工作目錄。
安裝 user-mode linux 工具不會有任何副作用。
原始碼 1.3: 安裝 UML 工具 |
# emerge sys-apps/usermode-utilities
|
這些工具提供 user-mode linux 系統和原來的系統的網路連接。
2.
建立 root_fs
變換 Gentoo 根目錄
user-mode linux 需要的 root_fs 檔案是包含完整 Gentoo Linux 檔案系
統的單一檔案。為了建立這個檔案,您需要在主系統核心(非 user-mode)啟動
Loopback device 支援。
我們最後一步才會製作 root_fs 檔案。首先,我們使用一般的變換根目錄
來建立 Gentoo 檔案系統。我們需要 stage tarball,這可以從網路上下載,從 LiveCD
抓出來,或是直接從 liveCD .iso 檔案中取得。
原始碼 2.1: 掛載 liveCD .iso |
# mkdir /mnt/loop
# mount -o loop /path/to/install-<TAB>.iso /mnt/loop
|
變換根目錄的過程基本上和安裝 Gentoo Linux 時差不多。
原始碼 2.2: 建立 Gentoo Linux 新的根目錄掛載點 |
# mkdir /mnt/gentoo
# cd /mnt/gentoo
# tar xvjpf /path/to/stage<TAB>.tar.bz2
|
然後卸載 .iso。您不再需要他了。
Bootstrap 和編譯系統的過程沒什麼差別,只要照著安裝指南來做就好了 :)
您可以加上任何您想要的套件,也可以給您虛擬的 Gentoo system 一個電腦名稱。在
/etc/fstab 中您需要把 /dev/ROOT 設定成
/dev/ubd/0,使用 ext2,ext3,或是 reiserfs 檔案格式。以及把
/dev/SWAP 設定成 /dev/ubd/1,還有讓
/dev/BOOT 註解起來。
這時候,記得要設定 root 密碼。
原始碼 2.3: 設定 root 密碼 |
# passwd
|
現在我們需要改變一些開機 scripts。從開機執行級中移除 consolefont 和 keymaps:
原始碼 2.4: 移除不需要的 initscripts |
# rc-update del consolefont boot
# rc-update del keymaps boot
|
離開變換根目錄模式,卸載所有 bind 掛載,用 tar 把新的 Gentoo 發行版壓縮起來,
然後清除不用的檔案。
原始碼 2.5: 完成安裝 |
# cd /mnt/gentoo
# tar cvjpf ~/gentoo.tbz2 *
# cd
# rm -rf /mnt/gentoo
|
製作 root_fs
新的 Gentoo 環境大約有 300 MB,所以 root_fs 至少需要這麼大。我們使
用 0.5 GB 的合理大小。
原始碼 2.6: 建立 UML 檔案 |
# dd if=/dev/zero of=root_fs seek=500 count=1 bs=1M
# mke2fs -F root_fs
# mount -o loop root_fs /mnt/loop
# tar xvjpf gentoo.tbz2 -C /mnt/loop
# umount /mnt/loop
|
有一個 0.5 GB 的置換分割區也不錯。
原始碼 2.7: 建立置換分割區 |
# dd if=/dev/zero of=swap_fs seek=500 count=1 bs=1M
# mkswap -f swap_fs
|
來看看他可不可以工作!
原始碼 2.8: 啟動 UML 核心執行緒 |
# linux ubd0=root_fs ubd1=swap_fs
|
User-mode linux 使用 xterms 作為開機時的虛擬 consoles,所以您需要確定您執行
user-mode linux 的終端機要正確設定 $DISPLAY 變數(以及 xhost/xauth 權限)。
運氣不錯的話,您應該能登入您的 user-mode linux 了。要讓您的 Gentoo user-mode
linux 版完整發揮功能的話,您需要啟動虛擬機器到主系統之間的網路。
3.
網路
確定主電腦的核心有將底下的設定編譯成模組:
原始碼 3.1: 主電腦的核心設定 |
Networking -->
IP: Netfilter Configuration -->
IP tables support -->
Full NAT -->
<M> MASQUERADE target support
Network Device Support -->
<M> TUN/TAP Support
|
在 主 電腦上執行下列的指令:
原始碼 3.2: 設定網路 |
# modprobe tun
# modprobe iptable_nat
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# echo 1 > /proc/sys/net/ipv4/ip_forward
|
iptables 那一行設定私人網路的 IP Masquerading 讓 user-mode 系統可以連接網際網路
(此例中經由 eth0)。echo 那一行啟動私人網路和連接閘道器的網路介面間的封包
轉送(這裡是用 eth0)。
然後我們啟動 user-mode 系統看看網路是否正常運作。
原始碼 3.3: 啟動 UML |
# linux ubd0=root_fs ubd1=swap_fs eth0=tuntap,,,192.168.0.254
# ifconfig eth0 192.168.0.1 up
# ping -c 2 192.168.0.254
PING 192.168.0.254 (192.168.0.254): 56 octets data
64 octets from 192.168.0.254: icmp_seq=0 ttl=255 time=0.8 ms
64 octets from 192.168.0.254: icmp_seq=1 ttl=255 time=0.6 ms
--- 192.168.0.254 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.6/0.7/0.8 ms
# route add default gw 192.168.0.254
# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 40 0 0 eth0
0.0.0.0 192.168.0.254 0.0.0.0 UG 40 0 0 eth0
# scp user@192.168.0.254:/etc/resolv.conf /etc/resolv.conf
# ping -c 2 www.gentoo.org
PING www.gentoo.org (207.170.82.202): 56 octets data
64 octets from 207.170.82.202: icmp_seq=0 ttl=240 time=119.6 ms
64 octets from 207.170.82.202: icmp_seq=1 ttl=240 time=92.0 ms
--- www.gentoo.org ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 92.0/105.8/119.6 ms
|
在 user-mode 系統中我們指定 user-mode eth0 介面使用私人 IP 192.168.0.1 然後啟動
他。主電腦的私人 IP 是 192.168.0.254,然後我們使用 ping 來確定他的確啟動了。
route 那一行加入預設的閘道器,就是主電腦,然後使用 scp 取的可以使用的
/etc/resolv.conf (如果需要的話),接著 ping www.gentoo.org 確定名稱
解析(以及與網際網路的連結)在 user-mode 系統中正常工作。現在 user-mode 系統可以
開始 emerge !
4.
測試 .iso
或許測試 Gentoo Linux 的理想方法是用 .iso 檔在 user-mode linux 環境下開機,然後
在 user-mode linux 虛擬的系統中執行完整的安裝。
用 .iso 開機,或是說用 .iso 上的 initrd 開機,相當的直接。
原始碼 4.1: 用 ISO 檔開機 |
# mount -o loop /path/to/install-<TAB>.iso /mnt/loop
# cp /mnt/loop/isolinux/gentoo.igz .
# linux load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=22000 \
> initrd=rescue.gz root=/dev/ram0 ubd0=root_fs ubd1=swap_fs \
> ubd2=/dev/cdroms/cdrom0 eth0=tuntap,,,192.168.0.254
|
現在基本上來說您可以按照 Gentoo 安裝文件來安裝,您只需要知道根目錄是在
/dev/ubd/0,置換"分割區"是 /dev/ubd/1,光碟在
/dev/ubd/2。
5.
資源
這份文件是以
Creative Commons - 姓名標示-相同方式分享 授權條款發布
|