help-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Embedding a file into core.img


From: Arbiel (gmx)
Subject: Re: Embedding a file into core.img
Date: Wed, 20 Mar 2013 20:36:36 +0100
User-agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130221 Thunderbird/17.0.3

In fact, this is a first try. My goal is to look for a partition name, and not a UUID. And when the partition has been found, I will boot immediately, without any user action. The USB keys are to be "regular" NTFS or FAT keys, without any track of Linux

Regarding the list of modules to include, I relied on the Grub Manual which reads, in point 5.4

After the embedded configuration file (if any) is executed, GRUB will load the ‘normal’ module (see normal), which will then read the real configuration file from $prefix/grub.cfg. By this point, the root variable will also have been set to the root device name. For example, prefix might be set to ‘(hd0,1)/boot/grub’, and root might be set to ‘hd0,1’. Thus, in most cases, the embedded configuration file only needs to set the prefix and root variables, and then drop through to GRUB's normal processing. A typical example of this might look like this:

     search.fs_uuid 01234567-89ab-cdef-0123-456789abcdef root
     set prefix=($root)/boot/grub

(The ‘search_fs_uuid’ module must be included in the core image for this example to work.)

And this was confirmed by the file /boot/grub/moddep.lst and more precisely on the result of the command

cat /boot/grup/moddep.lst | grep search

which reads

search_fs_uuid:
search_fs_file:
search: search_fs_uuid extcmd search_fs_file search_label
search_label:

which makes me understand I only need the search_fs_uuid module (or the search_label module to look for a partition by its name).

Where can I find reliable information ?


Le 20/03/2013 18:40, Andrey Borzenkov a écrit :
В Wed, 20 Mar 2013 10:34:46 +0100
"Arbiel (gmx)" <address@hidden> пишет:

Hi

I try to record in the MBR of USB keys an autonomous MBR (no support of
any other directory or file) to boot a PC with the system located on a
partition whose name is predefined "cielos", and in case this fails, to
chainload to the hd0's MBR.

I've understood from Grub's Manual that to achieve such a goal, I have
to embed the file using option -c of grub-mkimage.

I have now modified the --grub-mkimage option to point to the shell
script which creates /media/maisonnette/grub/core.img and from there I
have been able to imbed the file and launch a boot process. However,
this process failed, with a "no such device : the uuid I used in my
search.fs_uuid command" whereas such a device exists on my external device


You need to include much more of grub modules than you did. At least
you need disk driver and filesystem driver to read UUID.

grub-install creates exactly the same embedded config. Why do not you
simply use it?

The imbedded file reads

search.fs_uuid 0aceef09-a694-4105-bade-2dca95a09a08 root
set prefix=(root)/boot/grub

and a sudo blkid | grep 0aceef09-a694-4105-bade-2dca95a09a08 responds

/dev/sdb5: LABEL="cielos" UUID="0aceef09-a694-4105-bade-2dca95a09a08"
TYPE="ext4"

I try to understand why the search fails.

Le 20/03/2013 04:18, Andrey Borzenkov a écrit :
В Wed, 20 Mar 2013 00:15:07 +0100
"Arbiel (gmx)" <address@hidden> пишет:

Hi

I'm trying to embed a file into core.img. I followed instructions from
GNU Grub Manual's 5.4 Embedding a configuration file into Grub and tried
to replicate the example given there with a config file figuring two lines

        search.fs_uuid the_uuid_of_my_partition root
        set prefix=($root)/boot/grub


I used the following commands

#! /bin/bash
cd "${1}"
cat 1> grub/embed.cfg <<EOF
search.fs_uuid 0aceef09-a694-4105-bade-2dca95a09a08 root
set prefix=($root)/boot/grub
EOF
sudo grub-mkimage -c 'grub/embed.cfg' -o 'grub/grub-image' -O i386-pc -d
'/usr/lib/grub/i386-pc' -C none search_fs_uuid

-O and -d together are redundant.

sudo chmod +x 'grub/grub-image'
sudo grub-install --boot-directory=/media/maisonnette
--grub-mkimage=grub/grub-image /dev/sdb 2>grub/msg.log


--grub-mkimage points to program to create image, not to image itself.

You do not explain what you attempt to achieve. May be using grub-rescue
to build ISO image that includes full grub and can optionally include
arbitrary files would be easier?

I get the following error message

grub/grub-image: 1: grub/grub-image: Syntax error: word unexpected
(expecting ")")

Can anybody tell me what's wrong, knowing that my partition
/media/maisonnette has nothing to do with the
0aceef09-a694-4105-bade-2dca95a09a08 partition.

Thank you

I used the following command





_______________________________________________
Help-grub mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/help-grub





reply via email to

[Prev in Thread] Current Thread [Next in Thread]