這部分的資料在網路上找了很久還是都沒有,
只得知 PVE 把 Linux 原生的 bridge 設定內建的,
無法用 Open vswitch 去取代它。
最後只好…來挑戰一下 make linux kernel 了
首先利用 git 把 pve 的 kernel 抓回來,並放置在 /usr/src/ 資料夾內
下 make ,它就會自動的把 source code 給抓回來
source code 的目錄為 /usr/src/pve-kernel/linux-2.6-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 [root@www ~]$ cd pve-kernel [root@www ~]$ make
再來,切換進去 linux-2.6-2.6.32 資料夾內,
開始 make 我們的 kernel 了。
先下
# 把 source code 中的目標檔刪除 [root@www ~]$ make mrproper # 清除暫存檔 [root@www ~]$ make clean [root@www ~]$ make menuconfig
就會開始出現藍底白字的畫面了,如下
可以先在 General setup ->> Local version – append to kernel release 設定你這次編譯的名稱
選擇 Networking support -> Network options
把 bridge * 改為 M
最後,按下 save an alternate configureation file
保留 config 檔,並離開設定
再來,就可以編譯我們的 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
每一個步驟花的時間都滿長的,請耐心等候…
都編譯好後,就可以開始來設定 Grub 多重核心選單了
我們先複製我們的 kernel 到 /boot 底下
#複製 kernel [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 #複製 config 檔 [root@www /boot]$ cp /usr/src/pve-kernel/linux-2.6-2.6.32/.config \ > /boot/config-2.6.32-19-pvebridge
建立相對應的 Initial Ram Disk(initrd)
[root@www /boot]$ mkinitramfs -o /boot/initrd.img-2.6.32-19-pvebridge 2.6.32-19-pvebridge
編輯開機選單 grub 加入
vim /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 }
再來就可以重開機了~~~~
重開機後利用 uname -r 查看你的 kernel 版本是不是你剛剛編的
安裝 openvswitch 的部分,
請參考 Install and Configuring OpenvSwitch on ubuntu 12.04
參考資料: