Hello and thanks for your reply. See my answers below. On 09/15/2010 10:30 AM, Alexander Kurtz wrote:
> * grub-pc 1.98_20100602-1
> This version make grub-probe work with / on btrfs[1]. Note that this
> does not mean GRUB can boot from btrfs, you'll still need a separate
> boot partition. Also note that currently only the single-device case
> is supported.
I have:
ii grub-common 1.98+20100804-4
ii grub-pc 1.98+20100804-4
So these versions are supposed to work with btrfs.
> * btrfs-tools 0.19-11
> This version adds initramfs integration[2]. Without this package your
> initramfs will simply not contain the btrfs kernel module so the
> kernel won't be able to mount the root fs.
I have:
btrfs-tools:
Installed: 0.19+20100601-3
Candidate: 0.19+20100601-3
This is the latest available on sid.
> * klibc-utils 1.5.18-1
> This version adds support for btrfs to the
> `/usr/lib/klibc/bin/fstype' program[3]. This is needed for
> example if you use cryptsetup to encrypt your root fs.
klibc-utils:
Installed: 1.5.20-1
Candidate: 1.5.20-1
Note that I do not use cryptsetup.
> You'll probably already have all these packages installed in the
> required versions, but please re-check.
OK.
> As mentioned above GRUB does not really support btrfs (otherwise you
> wouldn't need a separate /boot partition). However it should support
> correctly writing the root device into `/boot/grub/grub.cfg'. I assume
> that is precisely your problem, right?
Yes, this is correct.
> So can you try these commands as root and send me the output:
>
> mount
> grub-probe --target=device --verbose /
# mount
/dev/sda1 on / type btrfs (rw)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sda3 on /boot type ext3 (rw,commit=0)
/dev/sda4 on /home type btrfs (rw)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc
(rw,noexec,nosuid,nodev)
# grub-probe --target=device --verbose /
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: the size of hd0 is 625142448.
grub-probe: info: changing current directory to /dev.
grub-probe: info: changing current directory to mapper.
grub-probe: info: changing current directory to disk.
grub-probe: info: changing current directory to by-label.
grub-probe: info: changing current directory to by-uuid.
grub-probe: info: changing current directory to by-id.
grub-probe: info: changing current directory to by-path.
grub-probe: info: changing current directory to snd.
grub-probe: info: changing current directory to by-path.
grub-probe: info: changing current directory to bsg.
grub-probe: info: changing current directory to bus.
grub-probe: info: changing current directory to usb.
grub-probe: info: changing current directory to 002.
grub-probe: info: changing current directory to 004.
grub-probe: info: changing current directory to 005.
grub-probe: info: changing current directory to 003.
grub-probe: info: changing current directory to 001.
grub-probe: info: changing current directory to input.
grub-probe: info: changing current directory to hdaps.
grub-probe: info: changing current directory to by-path.
grub-probe: info: changing current directory to block.
grub-probe: info: changing current directory to char.
grub-probe: info: changing current directory to dri.
grub-probe: info: changing current directory to cpu.
grub-probe: info: changing current directory to net.
grub-probe: info: changing current directory to shm.
grub-probe: info: changing current directory to pts.
grub-probe: error: cannot find a device for / (is /dev mounted?).
>> *********************** BEGIN /proc/mounts
>> /dev/root / btrfs rw,relatime 0 0
>> /dev/sda3 /boot ext3
>> rw,relatime,errors=continue,commit=5,barrier=0,data=writeback 0 0
>> /dev/sda4 /home btrfs rw,relatime 0 0
>> *********************** END /proc/mounts
>
> Hmm `/dev/root' sounds strange to me. Are you using any special hw (raid
> controller etc.)? Or what does this mean?
> Please give a short short overview over your partitions, e.g.
> /dev/sda1 contains /boot, /dev/sda2 contains /, /dev/sda3 contains
> swap, etc.
I'm not sure what it means, I'm not using anything too special here. But
maybe I have a configuration error somewhere that somehow was silent before.
# cat /proc/mounts
rootfs / rootfs rw 0 0
/dev/root / btrfs rw,relatime 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,relatime,mode=755 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev tmpfs rw,relatime,size=10240k,mode=755 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620 0 0
/dev/sda3 /boot ext3
rw,relatime,errors=continue,commit=5,barrier=0,data=writeback 0 0
/dev/sda4 /home btrfs rw,relatime 0 0
fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc
rw,nosuid,nodev,noexec,relatime 0 0
# grep -v "^#" /etc/fstab
/dev/sda3 /boot ext3 defaults 0 2
/dev/sda1 / btrfs defaults 0 1
/dev/sda6 none swap sw 0 0
/dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/sda4 /home btrfs defaults 0 2
And here is the current entry I have in /boot/grub/grub.cfg:
menuentry 'Debian GNU/Linux, with Linux 2.6.35.4+' --class debian
--class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set a5119f8f-c400-4374-8732-d934fd75eea2
echo 'Loading Linux 2.6.35.4+ ...'
linux /vmlinuz-2.6.35.4+ root=/dev/sda1 ro acpi_sleep=s3_bios quiet
}
> Can you please show how your grub.cfg looks like, before manually
> altering it?
Beside the specific entry above that I had to edit manually, please find
attached the full grub.cfg. It works fine, the only problem is that I
can't get grub-mkconfig to generate it automatically.
> Finally did you do anything special when migrating your / to btrfs? Any
> config files you changed (for example something under
> `/etc/initramfs-tools' or `/etc/grub.d') or any scripts you hacked (for
> example some of the grub scripts), etc.?
Yes, I did something special. I have two partitions with /. /dev/sda5
and /dev/sda1. /dev/sda5 was in xfs and I decided to copy it entirely to
/dev/sda1 that was formatted in btrfs, and then to edit grub.cfg to boot
on that partition, the rest being unchanged. That worked but then I
couldn't get grub-mkconfig to work. Depending on which entry I chose at
the time of boot, I can boot on /dev/sda1 or /dev/sda5.
I didn't hack any of the grub scripts, I think I only added an entry in
grub.cfg. Didn't edit /etc/initramfs-tools/ or /etc/grub.d/.
Thanks a lot for your help
--
Nico
GPG FBFA4781
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
load_env
fi
set default="0"
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function load_video {
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
}
insmod part_msdos
insmod ext2
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set 172faeaf-7bfc-47a6-a91d-670823328b72
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=1400x1050
load_video
insmod gfxterm
fi
terminal_output gfxterm
insmod part_msdos
insmod ext2
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set a5119f8f-c400-4374-8732-d934fd75eea2
set locale_dir=($root)/grub/locale
set lang=en
insmod gettext
set timeout=5
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
insmod part_msdos
insmod ext2
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set a5119f8f-c400-4374-8732-d934fd75eea2
insmod png
if background_image /grub/1019wallpaper-15_1600.png ; then
set color_normal=black/black
set color_highlight=magenta/black
else
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
fi
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Debian GNU/Linux, with Linux 2.6.35.4+ sda1' --class debian --class
gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set a5119f8f-c400-4374-8732-d934fd75eea2
echo 'Loading Linux 2.6.35.4+ ...'
linux /vmlinuz-2.6.35.4+ root=/dev/sda1 ro acpi_sleep=s3_bios quiet
}
menuentry 'Debian GNU/Linux, with Linux 2.6.35.4+' --class debian --class
gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set a5119f8f-c400-4374-8732-d934fd75eea2
echo 'Loading Linux 2.6.35.4+ ...'
linux /vmlinuz-2.6.35.4+ root=/dev/sda5 ro acpi_sleep=s3_bios quiet
}
menuentry 'Debian GNU/Linux, with Linux 2.6.35.4+ (recovery mode)' --class
debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set a5119f8f-c400-4374-8732-d934fd75eea2
echo 'Loading Linux 2.6.35.4+ ...'
linux /vmlinuz-2.6.35.4+ root=/dev/sda5 ro single acpi_sleep=s3_bios
}
menuentry 'Debian GNU/Linux, with Linux 2.6.35.3+' --class debian --class
gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set a5119f8f-c400-4374-8732-d934fd75eea2
echo 'Loading Linux 2.6.35.3+ ...'
linux /vmlinuz-2.6.35.3+ root=/dev/sda5 ro acpi_sleep=s3_bios quiet
}
menuentry 'Debian GNU/Linux, with Linux 2.6.35.3+ (recovery mode)' --class
debian --class gnu-linux --class gnu --class os {
insmod part_msdos
insmod ext2
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set a5119f8f-c400-4374-8732-d934fd75eea2
echo 'Loading Linux 2.6.35.3+ ...'
linux /vmlinuz-2.6.35.3+ root=/dev/sda5 ro single acpi_sleep=s3_bios
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
signature.asc
Description: OpenPGP digital signature

