Thank you for your reply.

I am using GRUB 1.99 as distributed in Debian GNU/Linux 7.0 "wheezy" amd64.
Distro package version: 1.99-27+deb7u1

Replies to specific parts of the message follow inline.

On 06/23/2013 07:22 AM, Andrey Borzenkov wrote:
> В Sat, 22 Jun 2013 22:44:53 +0100
> João Ricardo Sares Teles de Matos <[email protected]> пишет:
>
>> I couldn't find a reliable way to do something like this:
>>
>> if drive_exists_p (hd1); then
>>   menuentry_to_chainload_drive (hd1)
>> fi
>>
>> Where the missing piece is the pseudo-command "drive_exists_p", which has a 
>> zero return when the device exists.
>>
>> The "probe --driver" command sort of does the job, but it prints error 
>> messages and causes a "Press any key to continue..." prompt when the device 
>> doesn't exist.
>>
> I cannot reproduce it, at least using current trunk. probe command
> simply fails without any "Press any key ...".
Upon further testing, I found that the prompt only shows up if the test happens 
within a submenu, as such:

submenu "foo" {
  if probe --driver (hd1); then
     menuentry "Chainload drive (hd1)"{
        chainload_drive "(hd1)"
     }
  fi
  # filler entry to ensure the submenu has at least one entry.
  menuentry "bar" { true }
}

The prompt happens when that specific submenu is entered and only if probe 
fails.

>> The idea is having automatically (dis)appearing menu entries to chainload 
>> devices that may be (un)plugged, which is useful in an environment where USB 
>> thumb drives are frequently used as boot devices.
>>
> I think in this case search would be more useful. You cannot predict
> device names, but using something like
>
> search --set usb1 --fs-uuid XXXX
> search --set usb2 --fs-uuid XXXX
> ...
> if [ -n "$usb1" ]; then
>  ... code to deal with USB media 1
> fi
> ... etc ...
>
> Would allow you to quite reliably detect presence of devices.
That solution requires that the devices contain filesystems with UUIDs known at 
the time of the generation of grub.cfg.
The idea was being able to chainload any new arbitrary device that the system 
had no prior contact with.

In any case, the search command has the same problem as the probe command: if 
one of them fails, a prompt to press any key is presented before the submenu 
entries.
>> The test command with -e or -d doesn't work unless the device contains a 
>> filesystem that GRUB can read.
>>
>> Am I missing something, or is this something that can't be done without 
>> extending GRUB?
>>
>> By the way, is this sort of message appropriate for this mailing list?
>> I'd hate to be spamming the list with offtopic queries.
>>


-- 
João Ricardo Sares Teles de Matos
[email protected]

Administração de Sistemas da Rede das Novas Licenciaturas
Instituto Superior Técnico

web: https://www.rnl.ist.utl.pt
email: [email protected]
telefone: +351 218 41 77 71


Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Help-grub mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-grub

Reply via email to