SuSE tips之备份内核

距上次成功编译SLED 10.0的内核有点时日了,手有点生,今天编译SuSE 10.2内核直接导致我的SuSE面临重装,原因不是别的,搞的显卡驱动没有了,重装驱动也装不上了,唉,又要忙碌个大半天。当初要是做了内核的备份就好了,备份内核相当的简单,下面就是步骤,英文也很简单,相信准备对内核有所动作的人都能轻易看懂,我就懒的翻译了。虽然是针对SuSE写的,其它linux发行版本也大同小异:

1) open terminal
2) su to root
3) change directory to /boot
#cd /boot
4) see what are the names of running kernels
#ls
5) make backup copy of your kernel and System.map
#cp vmlinuz-2.6.18.8-0.1-default vmlinuz-2.6.18.8-0.1-bak
#cp System.map-2.6.18.8-0.1-default System.map-2.6.18.8-0.1-bak
#cp -R /lib/modules/2.6.18.8-0.1-default /lib/modules/2.6.18.8-0.1-bak
6) create initrd
#mkinitrd -s 1024×768
7) check if new initrd was created:
#ls
and look for initrd-2.6.18.8-0.1-bak

8) make backup of your current GRUB menu (in the case that you may screw up editing)
#cp /boot/grub/menu.lst /boot/grub/menu.lst_bak
9) edit grub menu whatever editor (I use vi, but you may use kedit.gedit, joe, pico and so on as long as you run editor with root privileges)
boot/grub/menu.lst

10) add new entry at the end of the file (copy original entry for SUSE LINUX 10.2):
title SUSE LINUX 10.2 kernel backup
root (hd0,0)
kernel /vmlinuz-2.6.18.8-0.1-bak root=/dev/sda2 vga=0×317 vga=normal video=vesa:1024×768@60 resume=/dev/sda3 elevator=deadline splash=silent showopts
initrd /initrd-2.6.18.8-0.1-bak

important changes are marked bold. You may not have the other stuff or it may be different. Simply keep the rest of the file exactly the same as in the original entry for SUSE LINUX 10.2

11) save the file
12) restart computer and select from GRUB menu “SUSE LINUX 10.2 kernel backup”

if system boots successfully you have working kernel backup, now if suse updates kernel next time and new kernel will not boot properly, you can always boot to SUSE LINUX 10.2 kernel backup which will never be modified (and safe from screwed updates)

———-我是超级分割线———-

举一反三的令一种方法:

ideally would be do something different:
1) install kernel sources
2) su to root
3) copy kernel sources to the new direcory:
#cp -R /usr/src/linux-2.6.18.8-0.1 /usr/src/linux-2.6.18.8-0.1-bak
4) change directory to /usr/src/linux-2.6.18.8-0.1-bak
#cd /usr/src/linux-2.6.18.8-0.1-bak
5) create config file
#make oldconfig
6) change kernel name (super important!!!)
by editing .config file (in /usr/src/linux-2.6.18.8-0.1-bak) Tehre is a dot before “config”
scroll down to the line:
#
# General setup
#
CONFIG_LOCALVERSION=”"
and change local kernel name version by adding:
CONFIG_LOCALVERSION=”-bak”

if there is anything already written in the line

CONFIG_LOCALVERSION=”"
delete old name remember that new name must have quotation marks.

7) save file
8) compile kernel
#make bzImage && make modules && make modules_install && make install

You just created a new kernel! Exactly the same as the running one but the name will have “-bak” at the end

there is nothing more required. in your GRUB menu will appear a new entry pointing to the new kernel. Old kernel will not be affected (if you did exactly as I suggested)

new kernel is invisible to Yast and will never be changed.

Because the latest kernel upgrade is a real disaster I would make backup copy of grub menu (as root):
#cp /boot/grub/menu.lst /boot/grub/menu.lst_bak

now you can boot to the new kernel
you will get to command line (when booting to the new kernel) if you installed nvidia/ati drivers,

That is easy to fix of course. what is important, you have working suse setup in spite of all suse devs efforts to screw you up

饮水不忘思源,该方法原作是forums.suselinuxsupport.de的broch。

再次提醒各位用linux的朋友,办事前先备份~

相关文章:
  1. SuSE Linux 书籍下载
  2. SUSE Linux Enterprise 10 Service Pack 2
  3. SuSE Linux 10.2,10.3的字体次像素平滑
  4. SuSE Linux编译安装aMule CVS
  1. Anonymous

    好的,不错,收藏了。

say