移植root到LVM上但grub無法找到/dev

這個版面主要討論 debian 在 server 端的應用問題, server 種類繁多..舉凡 Web Server 、 File Server、 DHCP Server..等等。

版主: 阿信

移植root到LVM上但grub無法找到/dev

文章lueo » 週一 2月 28, 2005 4:29 pm

小弟準備將root (ext3 on /dev/hda1) 移植到LVM上。

    建立一個新的Logical Volume在 /dev/rootvg/rootlv
    在LV上建立reiserfs。
    mount 它到 /mnt/newroot。
    複製系統檔案
    代碼: 選擇全部
    find / -xdev | cpio -pvmd /mnt/newroot
    編輯 /boot/grub/menu.lst
    代碼: 選擇全部
    title           LVM - Debian GNU/Linux, kernel 2.6.8-2-686
    root            (hd0,1)
    kernel          /vmlinuz-2.6.8-2-686 root=/dev/rootvg/roolv ro acpi=off ramdisk_size=8192
    initrd          /initrd.img-2.6.8-2-686
    savedefault
    boot
結果:
grub啟動了,也進入kernel了,可是最後他就說找不到 /dev,kernel panic!
我想會不會是LVM新分區中是以 -xdev 建立的,所以/dev下沒有LVM的連結。於是
代碼: 選擇全部
cp -aR /dev/rootvg /mnt/newroot/dev/
cp -aR /dev/mapper/rootvg* /mnt/newroot/dev/mapper/

結果:還是一樣。
是不是要產生一個適用於LVM的initrd呢?
lueo
懵懂的國中生
懵懂的國中生
 
文章: 121
註冊時間: 週六 1月 31, 2004 11:52 pm

文章redjoe » 週一 2月 28, 2005 10:25 pm

/dev/hda1的grub
應該是 root (hd0,0)吧..
redjoe
快樂的大學生
快樂的大學生
 
文章: 518
註冊時間: 週一 4月 07, 2003 10:15 pm
來自: Taiwan

文章lueo » 週二 3月 01, 2005 3:41 am

redjoe 寫:/dev/hda1的grub
應該是 root (hd0,0)吧..

不好意思,忘了說明,
grub裝在mbr,
/boot在/dev/hda2
/在/dev/hda1

不過…我重灌了。
為了要看d-i是如何將/裝在lvm上。

結果:
原來LVM是這樣指定(因為/dev/rootvg/rootlv這種dev是捷徑)
代碼: 選擇全部
root=/dev/mapper/rootvg-rootlv

它是用 lilo 裝的。我查了一下網路上關於grub和LVM的資源,好像grub要以HEX CODE指定root所在的LVM才有可能抓到。
lilo.conf現在放上給大家參考:
代碼: 選擇全部
# /etc/lilo.conf - See: `lilo(8)' and `lilo.conf(5)',
# ---------------       `install-mbr(8)', `/usr/share/doc/lilo/',
#                       and `/usr/share/doc/mbr/'.

# +---------------------------------------------------------------+
# |                        !! Reminder !!                         |
# |                                                               |
# | Don't forget to run `lilo' after you make changes to this     |
# | conffile, `/boot/bootmess.txt' (if you have created it), or   |
# | install a new kernel.  The computer will most likely fail to  |
# | boot if a kernel-image post-install script or you don't       |
# | remember to run `lilo'.                                       |
# |                                                               |
# +---------------------------------------------------------------+

# Specifies the boot device.  This is where Lilo installs its boot
# block.  It can be either a partition, or the raw device, in which
# case it installs in the MBR, and will overwrite the current MBR.
#
boot=/dev/hda

# Specifies the device that should be mounted as root. (`/')
#
root=/dev/mapper/rootvg-rootlv

# Enable map compaction:
# Tries to merge read requests for adjacent sectors into a single
# read request. This drastically reduces load time and keeps the
# map smaller.  Using `compact' is especially recommended when
# booting from a floppy disk.  It is disabled here by default
# because it doesn't always work.
#
# compact

# Installs the specified file as the new boot sector
# You have the choice between: text, bmp, and menu
# Look in lilo.conf(5) manpage for details
#
#install=menu

# Specifies the location of the map file
#
map=/boot/map

# You can set a password here, and uncomment the `restricted' lines
# in the image definitions below to make it so that a password must
# be typed to boot anything but a default configuration.  If a
# command line is given, other than one specified by an `append'
# statement in `lilo.conf', the password will be required, but a
# standard default boot will not require one.
#
# This will, for instance, prevent anyone with access to the
# console from booting with something like `Linux init=/bin/sh',
# and thus becoming `root' without proper authorization.
#
# Note that if you really need this type of security, you will
# likely also want to use `install-mbr' to reconfigure the MBR
# program, as well as set up your BIOS to disallow booting from
# removable disk or CD-ROM, then put a password on getting into the
# BIOS configuration as well.  Please RTFM `install-mbr(8)'.
#
# password=tatercounter2000

# Specifies the number of deciseconds (0.1 seconds) LILO should
# wait before booting the first image.
#
delay=20

# You can put a customized boot message up if you like.  If you use
# `prompt', and this computer may need to reboot unattended, you
# must specify a `timeout', or it will sit there forever waiting
# for a keypress.  `single-key' goes with the `alias' lines in the
# `image' configurations below.  eg: You can press `1' to boot
# `Linux', `2' to boot `LinuxOLD', if you uncomment the `alias'.
#
# message=/boot/bootmess.txt
#       prompt
#       delay=100
#       timeout=100

# Specifies the VGA text mode at boot time. (normal, extended, ask, <mode>)
#
# vga=ask
# vga=9
#
vga=normal

# Kernel command line options that apply to all installed images go
# here.  See: The `boot-prompt-HOWTO' and `kernel-parameters.txt' in
# the Linux kernel `Documentation' directory.
#
# append=""

# If you used a serial console to install Debian, this option should be
# enabled by default.
# serial=

#
# Boot up Linux by default.
#
default=Linux

image=/vmlinuz
        label=Linux
        read-only
#       restricted
#       alias=1
    append="acpi=off"
        initrd=/initrd.img

image=/vmlinuz.old
        label=LinuxOLD
        read-only
        optional
#       restricted
#       alias=2
    append="acpi=off"
        initrd=/initrd.img.old


# If you have another OS on this machine to boot, you can uncomment the
# following lines, changing the device name on the `other' line to
# where your other OS' partition is.
#
# other=/dev/hda4
#       label=HURD
#       restricted
#       alias=3
lueo
懵懂的國中生
懵懂的國中生
 
文章: 121
註冊時間: 週六 1月 31, 2004 11:52 pm

Re: 移植root到LVM上但grub無法找到/dev

文章阿信 » 週二 3月 01, 2005 8:40 am

lueo 寫:小弟準備將root (ext3 on /dev/hda1) 移植到LVM上。

    建立一個新的Logical Volume在 /dev/rootvg/rootlv
    在LV上建立reiserfs。
    mount 它到 /mnt/newroot。
    複製系統檔案
    代碼: 選擇全部
    find / -xdev | cpio -pvmd /mnt/newroot
    編輯 /boot/grub/menu.lst
    代碼: 選擇全部
    title           LVM - Debian GNU/Linux, kernel 2.6.8-2-686
    root            (hd0,1)
    kernel          /vmlinuz-2.6.8-2-686 root=/dev/rootvg/roolv ro acpi=off ramdisk_size=8192
    initrd          /initrd.img-2.6.8-2-686
    savedefault
    boot
結果:
grub啟動了,也進入kernel了,可是最後他就說找不到 /dev,kernel panic!
我想會不會是LVM新分區中是以 -xdev 建立的,所以/dev下沒有LVM的連結。於是
代碼: 選擇全部
cp -aR /dev/rootvg /mnt/newroot/dev/
cp -aR /dev/mapper/rootvg* /mnt/newroot/dev/mapper/

結果:還是一樣。
是不是要產生一個適用於LVM的initrd呢?


由於您的root(/)已經改變,initrd.img 可能無法找到新的root dir,有可能認成舊的。

假設您的 newer root fs 在 /dev/rootvg/rootlv,請執行
mkinitrd -o /boo/initrd.img -r /dev/rootvg/rootlv

重新設定 grub 設定中的 initrd 選項指定到新的 initrd.img,如果您想知道 該img做了什麼事情,在產生指令時加入 -k(keep),到/tmp下找暫存的資料。或者mount -o loop xxx.img /where 來檢查。img檔案中的script有詳細說明如果掛載root fs on LVM/MD.
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義


回到 debian server

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客

cron