Configure Open vSwitch on Proxmox Virtual Environment
因為研究的關係,會需要在 Proxmox Virtual Environment(PVE) 上安裝 Open vSwitch(OVS) 由於 PVE 把 Linux 原生的 bridge 內鍵在 kernel 中了, 所以無法用 OVS 來取代 Linux 的 bridge 造成 PVE 中的 Kernel Virtual Machine(KVM) 無法使用 OVS。 因此,要此重心 make PVE 的 kernel 後,把 bridge 的設為模組(module), 好讓我們在安裝 OVS 的時候,可以取代它。
環境
- Proxmox VE 2.3
- Open vSwitch 1.4.0
1.安裝必要的套件
[root@www ~]# apt-get install -y python-simplejson python-qt4 python-twisted-conch autoconf gcc uml-utilities libtool pkg-config automake build-essential openssl libssl-dev bridge-utils rpm2cpio lintian libncurses5-dev unzip
2.利用 git clone PVE 的 Kernel
抓回來後放置在 /usr/src 資料夾內,這邊我們抓的是 pve-kernel-2.6.32 的版本。
[root@www ~]# git clone git://git.proxmox.com/git/pve-kernel-2.6.32.git pve-kernel
[root@www ~]# mv pve-kernel /usr/src
3.取得 PVE 的 source code
在剛剛的 pve-kernel 資料夾內下 make 它就會自動把 source code 抓回來囉 抓回來的 source code 會放置在 /usr/src/pve-kernel/linux-2.6-2.6.32
[root@www ~]# cd /usr/src/pve-kernel
[root@www pve-kernel]# make
4.清除暫存檔
先切換進去 linux-2.6-2.6.32 資料夾內,先清除暫存檔後,就可以開始 make kernel 了
# 把 source code 中的目標檔刪除
[root@www linux2.6.2-6.32]# make mrproper
# 清除暫存檔
[root@www linux2.6.2-6.32]# make clean
[root@www linux2.6.2-6.32]# make menuconfig
5.Linux Kernel Configuration
然後就會開始出現藍底白字畫面了,如下:
先在 General setup ->> Local version – append to kernel release 設定你這次編譯的名稱
Networking support -> Networking options -> 把 802.1d Ethernet Bridging * 改為 M
最後,按下 Save an Alternate Configuration File 保留 config 檔,並離開 Linux Kernel Configuration
6.Make Kernel
#先編譯核心
[root@www linux-2.6-2.6.32]# make bzImage
#再編譯模組
[root@www linux-2.6-2.6.32]# make modules
#實際安裝模組
[root@www linux-2.6-2.6.32]# make modules_install
7.設定 GRUB 多重核心選單
由於害怕剛剛編譯完的核心不能正常的開機,所以通常都是手動來設定成多重開機的選單, 好讓我們如果發生錯誤的設定,可以直接再次開機來進入 Linux 系統。
可以先看一下 /lib/modules/ 資料夾下確定我們載的是哪個 kernel 的版本
[root@www /boot]# ll /lib/modules/
2.6.32-26-pve/ 2.6.32-19-pvebridge/
可以確定的 2.6.32-19-pvebridge 就是我們剛剛 make 好的 kernel modules 設複製剛剛 make 好的 bzImage 如 config 檔到 /boot 資料夾下
[root@www /boot]# cp /usr/src/pve-kernel/linux-2.6-2.6.32/arch/x86_64/boot/bzImage /boot/vmlinuz-2.6.32-19-pvebridge
[root@www /boot]# cp /usr/src/pve-kernel/linux-2.6-2.6.32/.config /boot/config-2.6.32-19-pvebridge
8.建立相對應的 Initial Ram Disk(initrd)
[root@www /boot]# mkinitramfs -o /boot/initrd.img-2.6.32-19-pvebridge 2.6.32-19-pvebridge
9.編輯 GRUG 開機多重選單
在 GRUB 選單內加入我們這個版本的 Kernel, 可以參考一下列的寫法。
in /boot/grub/grub.cfg
menuentry 'Proxmox Virtual Environment GNU/Linux, with Linux 2.6.32-19-pvebridge' --class proxmox --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 9cc709ff-7275-461e-8e91-505d0b1c158f
echo 'Loading Linux 2.6.32-19-pvebridge ...'
linux /vmlinuz-2.6.32-19-pvebridge root=/dev/mapper/pve-root ro quiet
echo 'Loading initial ramdisk ...'
initrd /initrd.img-2.6.32-19-pvebridge
}
10.最後
再來你就可以重開機了, 重啟之後利 uname -r 查看你的 Kernel 版本是不是你剛剛編的
Open vSwitch 的部份,請參考 Install and Configuring Open vSwitch on Ubuntu 12.04