Linux下相同配置的機(jī)器間內(nèi)核拷貝
若干臺(tái)相同配置,已安裝相同操作系統(tǒng)的機(jī)器,現(xiàn)在需要更新所有機(jī)器上的內(nèi)核,可以采用在一臺(tái)上編譯好內(nèi)核,然后拷貝相關(guān)文件至其它機(jī)器上的策略:
總結(jié)操作步驟如下:
。0)選擇某臺(tái)機(jī)器,編譯好內(nèi)核
。1) 拷貝啟動(dòng)相關(guān)文件/boot/vmlinuz-2.6.34.7 /boot/initrd-2.6.34.7.img(/boot/System.map-2.6.34.7)
。2) 拷貝模塊文件所在目錄/lib/modules/2.6.34.7
拷貝之前,我們查看一下目錄,我們發(fā)現(xiàn)有兩個(gè)軟鏈接指向了 內(nèi)核的源碼,他們是 build 和 source,模塊文件如下:
[root@gd86 2.6.34.7]# ll /lib/modules/2.6.34.7總計(jì) 1492 lrwxrwxrwx 1 root root 33 2010-10-07 build -> /local/kernel-perf/linux-2.6.34.7 drwxr-xr-x 10 root root 4096 2010-10-07 kernel -rw-r——r—— 1 root root 350090 2010-10-07 modules.alias -rw-r——r—— 1 root root 4859 2010-10-07 modules.builtin -rw-r——r—— 1 root root 69 2010-10-07 modules.ccwmap -rw-r——r—— 1 root root 164911 2010-10-07 modules.dep -rw-r——r—— 1 root root 147 2010-10-07 modules.ieee1394map -rw-r——r—— 1 root root 218 2010-10-07 modules.inputmap -rw-r——r—— 1 root root 3161 2010-10-07 modules.isapnpmap -rw-r——r—— 1 root root 74 2010-10-07 modules.ofmap -rw-r——r—— 1 root root 37267 2010-10-07 modules.order -rw-r——r—— 1 root root 220774 2010-10-07 modules.pcimap -rw-r——r—— 1 root root 463 2010-10-07 modules.seriomap -rw-r——r—— 1 root root 142681 2010-10-07 modules.symbols -rw-r——r—— 1 root root 541379 2010-10-07 modules.usbmap lrwxrwxrwx 1 root root 33 2010-10-07 source -> /local/kernel-perf/linux-2.6.34.7若使用 scp 命令直接拷貝 /lib/modules/2.6.34.7 目錄到其它機(jī)器上< scp -r /lib/modules/2.6.34.7 /lib/modules >,它會(huì)將 build,source所指向的真實(shí)目錄拷貝到其它機(jī)器上?截愡^去后,新機(jī)器上的 /lib/modules/2.6.34.7 目錄下將會(huì)有 build 和 source 兩個(gè)目錄,而不再是軟鏈接了,目錄下的內(nèi)容也就是原機(jī)器上的 /local/kernel-perf/linux-2.6.34.7 下的內(nèi)核源碼。由于源碼較大,所以這樣拷貝兩次會(huì)消耗很大時(shí)間,所以不建議這樣做。
我們可以將 /lib/modules/2.6.34.7 目錄打包后傳送到目標(biāo)機(jī)器上(使用scp或者ftp),然后再目標(biāo)機(jī)器上進(jìn)行解壓,解壓后的 /lib/modules/2.6.34.7 下仍會(huì)有 build 和 source 兩個(gè)軟鏈接。而此后,我們只需要將內(nèi)核源碼拷貝到目標(biāo)機(jī)器上就可以了(第3步),操作步驟如下:
gd86:
[root@gd86 modules]# cd /lib/modules/ [root@gd86 modules]# tar czvf 2.6.34.7.tar.gz 2.6.34.7 [root@gd86 modules]# scp 2.6.34.7.tar.gz gd87:/lib/modules/ gd87:
[root@gd86 modules]# cd /lib/modules/ [root@gd86 modules]# tar zxvf 2.6.34.7.tar.gz (解壓成功后目錄下仍有 source 和 build 兩個(gè)軟鏈接)
。3) 拷貝內(nèi)核源碼/local/kernel-perf/linux-2.6.34.7
可以先壓縮后再拷貝。
。4)修改 /etc/grub.conf 文件
title 2.6.34.7 root (hd0,0)
kernel /vmlinuz-2.6.34.7 root=LABEL=/ ro initrd /initrd-2.6.34.7.img
附:Linux 軟鏈接復(fù)制相關(guān)知識(shí)
在某臺(tái)機(jī)器下,若存在一個(gè)目錄A,目錄中存在軟鏈接,該軟鏈接指向當(dāng)前機(jī)器的其它目錄,當(dāng)在本機(jī)器中拷貝目錄A時(shí),拷貝完畢后,軟鏈接仍有效。
[root@gd86 ~]# ll cp_test總計(jì) 0 -rw-r——r—— 1 root root 0 10-31 08:30 a -rw-r——r—— 1 root root 0 10-31 08:31 b lrwxrwxrwx 1 root root 14 10-31 08:31 data_1 -> /root/zkl/data lrwxrwxrwx 1 root root 14 10-31 08:31 data_2 -> /root/zkl/data
[root@gd86 ~]# cp -r cp_test cp_test1 [root@gd86 ~]# ll cp_test1總計(jì) 0 -rw-r——r—— 1 root root 0 10-31 08:32 a -rw-r——r—— 1 root root 0 10-31 08:32 b lrwxrwxrwx 1 root root 14 10-31 08:32 data_1 -> /root/zkl/data lrwxrwxrwx 1 root root 14 10-31 08:32 data_2 -> /root/zkl/data若將本機(jī)器的A目錄拷貝到其它機(jī)器上,scp -r cp_test gd87:~/ 則會(huì)將軟鏈接指向的真實(shí)目錄拷貝到目標(biāo)機(jī)器上
[root@gd87 ~]# ll cp_test/總計(jì) 8 -rw-r——r—— 1 root root 0 10-31 08:34 a -rw-r——r—— 1 root root 0 10-31 08:34 b drwxr-xr-x 2 root root 4096 10-31 08:34 data_1 目錄下是真實(shí)內(nèi)容,data_1 不再是軟鏈接了。
drwxr-xr-x 2 root root 4096 10-31 08:34 data_2若想復(fù)制成功后,原目錄下的軟鏈接不變,則需要先將目錄打包,然后傳送過去后做解壓。