Find the answer to your Linux question:
Results 1 to 7 of 7
I recently installed Arch on my laptop, with a complicated partitioning scheme and MBR style partitioning. My /boot and swap are primary partitions, and my / and /home are logical ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1
    Just Joined!
    Join Date
    Jan 2011
    Posts
    42

    Grub complains of missing files


    I recently installed Arch on my laptop, with a complicated partitioning scheme and MBR style partitioning. My /boot and swap are primary partitions, and my / and /home are logical partitions. The root and home partitions are ext4, the boot partition is JFS.

    Everything functionally works fine, and nothing I can see is broken, but on boot Grub says "/grub/i386-pc/search_fs_uuid.mod is missing."

    The file is in (from the perspective of the running system) /boot/grub/i386-pc. my grub.cfg file is:

    Code:
    ### BEGIN /etc/grub.d/00_header ###
    #insmod part_gpt
    insmod part_msdos
    
    if [ -s $prefix/grubenv ]; then
      load_env
    fi
    if [ "${next_entry}" ] ; then
       set default="${next_entry}"
       set next_entry=
       save_env next_entry
       set boot_once=true
    else
       set default="0"
    fi
    
    if [ x"${feature_menuentry_id}" = xy ]; then
      menuentry_id_option="--id"
    else
      menuentry_id_option=""
    fi
    
    export menuentry_id_option
    
    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 {
      if [ x$feature_all_video_module = xy ]; then
        insmod all_video
      else
        insmod efi_gop
        insmod efi_uga
        insmod ieee1275_fb
        insmod vbe
        insmod vga
        insmod video_bochs
        insmod video_cirrus
      fi
    }
    
    if [ x$feature_default_font_path = xy ] ; then
       font=unicode
    else
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos6'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos6 --hint-efi=hd0,msdos6 --hint-baremetal=ahci0,msdos6  ae6e8d4d-4f50-466d-884b-ded30d2695ef
      font="/usr/share/grub/unicode.pf2"
    else
      search --no-floppy --fs-uuid --set=root ae6e8d4d-4f50-466d-884b-ded30d2695ef
    fi
    fi
    
    if loadfont $font ; then
      set gfxmode=auto
      load_video
      insmod gfxterm
      set locale_dir="/grub/locale"
      set lang=en@quot
      insmod gettext
    fi
    terminal_input console
    terminal_output gfxterm
    set timeout=5
    ### END /etc/grub.d/00_header ###
    
    ### BEGIN /etc/grub.d/10_linux ###
    menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-true-ae6e8d4d-4f50-466d-884b-ded30d2695ef' {
    	load_video
    	set gfxpayload=keep
    	insmod gzio
    	insmod part_msdos
    	insmod jfs
    	insmod ext2
    	set root='hd0,msdos1'
    	if [ x$feature_platform_search_hint = xy ]; then
    	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  9803711f-83ba-4b2f-8916-d7915206a01f
    	else
    	  search --no-floppy --fs-uuid --set=root 9803711f-83ba-4b2f-8916-d7915206a01f
    	fi
    	echo	'Loading Linux core repo kernel ...'
    	linux	/vmlinuz-linux root=UUID=ae6e8d4d-4f50-466d-884b-ded30d2695ef ro  quiet
    	echo	'Loading initial ramdisk ...'
    	initrd	/initramfs-linux.img
    }
    menuentry 'Arch Linux -- failsafe initramfs' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-fallback-ae6e8d4d-4f50-466d-884b-ded30d2695ef' {
    	load_video
    	set gfxpayload=keep
    	insmod gzio
    	insmod part_msdos
    	insmod jfs
    	insmod ext2
    	set root='hd0,msdos1'
    	if [ x$feature_platform_search_hint = xy ]; then
    	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  9803711f-83ba-4b2f-8916-d7915206a01f
    	else
    	  search --no-floppy --fs-uuid --set=root 9803711f-83ba-4b2f-8916-d7915206a01f
    	fi
    	echo	'Loading Linux core repo kernel ...'
    	linux	/vmlinuz-linux root=UUID=ae6e8d4d-4f50-466d-884b-ded30d2695ef ro  quiet
    	echo	'Loading initial ramdisk ...'
    	initrd	/initramfs-linux-fallback.img
    }
    
    ### 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  ${config_directory}/custom.cfg ]; then
      source ${config_directory}/custom.cfg
    elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
      source $prefix/custom.cfg;
    fi
    ### END /etc/grub.d/41_custom ###
    
    ### BEGIN /etc/grub.d/60_memtest86+ ###
    ### END /etc/grub.d/60_memtest86+ ###
    The message "/grub/i386-pc/search_fs_uuid.mod is missing" appears on the same screen as "Loading Kernel Repo", first thing. Any ideas why this is happening?

  2. #2
    Super Moderator devils casper's Avatar
    Join Date
    Jun 2006
    Location
    Chandigarh, India
    Posts
    24,729
    Check if UUIDs of root and boot partitions used in grub.cfg are correct or not.
    It is amazing what you can accomplish if you do not care who gets the credit.
    New Users: Read This First

  3. #3
    Just Joined!
    Join Date
    Jan 2011
    Posts
    42
    As far as I can tell they are correct. ae6e8d4d-4f50-466d-884b-ded30d2695ef is the root partition, 9803711f-83ba-4b2f-8916-d7915206a01f is the boot partition.

    I'm not entirely sure how to read grub.cfg files, though (and I don't know much bash, either). I've assumed that the grub has a 'root' partition it uses for finding things, could it be that it is switching that root partition to the linux root partition (which does NOT contain any of grub's files) before it is trying to load the missing mod file? Or is that not how it works at all?

  4. #4
    Linux Guru
    Join Date
    Oct 2007
    Location
    Tucson AZ
    Posts
    3,190
    Grub doesn't 'have' a root partition, it points to the root partition. If you installed Grub2 to the mbr with a separate boot partition, when your system boots, the mbr points to the boot partition where the Grub files and the kernel reside. The example grub.cfg entry below shows the set root pointing to sda5 and the line below also points to sda5 with the set=root line as there is no separate boot partition. That is the uuid for sda5. You can run the blkid command to get the correct uuid for all partitions. You haven't posted the contents of your grub.cfg file or the output of blkid so there's not much else we can tell you.

    set root='(hd0,msdos5)'
    search --no-floppy --fs-uuid --set=root 47891df9-aa27-4df9-99ac-aa96276780ac

  5. #5
    Just Joined!
    Join Date
    Jan 2011
    Posts
    42
    I did post my grub.cfg, in the first post.

    The blkid command doesn't output anything unless I direct it to a partition, strangely. The output when directed to my partitions is:

    Code:
    $ blkid -o list /dev/sda1
    device                                             fs_type         label            mount point                                            UUID
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    /dev/sda1                                                                           /boot                                                  
    $ blkid -o list /dev/sda2
    device                                             fs_type         label            mount point                                            UUID
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    /dev/sda2                                                                           (not mounted)                                          
    $ blkid -o list /dev/sda3
    device                                             fs_type         label            mount point                                            UUID
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    /dev/sda3                                                                           <swap>                                                 
    $ blkid -o list /dev/sda4
    device                                             fs_type         label            mount point                                            UUID
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    $ blkid -o list /dev/sda5
    device                                             fs_type         label            mount point                                            UUID
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    /dev/sda5                                                                           /home                                                  
    $ blkid -o list /dev/sda6
    device                                             fs_type         label            mount point                                            UUID
    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    /dev/sda6                                                                           /
    Which seems rather unhelpful. I going the other direction:

    Code:
    $ blkid -U 9803711f-83ba-4b2f-8916-d7915206a01f
    /dev/sda1
    $ blkid -U ae6e8d4d-4f50-466d-884b-ded30d2695ef
    /dev/sda6
    Which seems correct to me, I suppose. It does look strange that it is setting the root to /dev/sda6, my root partition, early on though. Is that the problem, why can't find the files that are on the boot partition? Or should it be doing that? Should it ever be setting the root to the boot partition?

  6. #6
    Linux Guru
    Join Date
    Oct 2007
    Location
    Tucson AZ
    Posts
    3,190
    Your blkid output doesn't tell anything. Did you run it as root? I've never used a separate boot partition so I'm not really sure what the grub.cfg entry should look like.

  7. #7
    Just Joined!
    Join Date
    Jan 2011
    Posts
    42
    Oh...no, I did not. Here is the output as root:

    Code:
    /dev/sda1: UUID="9803711f-83ba-4b2f-8916-d7915206a01f" TYPE="jfs" 
    /dev/sda3: UUID="420ced1e-a006-4420-80df-e8d2f04b9a93" TYPE="swap" 
    /dev/sda5: UUID="73f4a19f-e4f5-42bb-97ed-c1986ef7173d" TYPE="ext4" 
    /dev/sda6: UUID="ae6e8d4d-4f50-466d-884b-ded30d2695ef" TYPE="ext4"
    Which is what I expected, I think the problem is in the grub.cfg. I've never used a seperate boot partition before either.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •