FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Gentoo > Gentoo User

 
 
LinkBack Thread Tools
 
Old 05-07-2008, 02:26 AM
Sven Köhler
 
Default grub weirdness

When you emerged grub-0.97-r5, this was displayed on your console:
WARN: postinst
*** IMPORTANT NOTE: you must run grub and install
the new version's stage1 to your MBR. Until you do,
stage1 and stage2 will still be the old version, but
later stages will be the new version, which could
cause problems such as an unbootable system.


Yes, the ebuild writes that to the screen.

But silently, in the background (because every output is piped to
/dev/null - how evil!), the ebuild calls grub with some commands inside
your grub.conf.


If there's a setup-command in your grub.conf, it is indeed executed. So
if that command is outdated (something you won't notice, since that
command is not used by grub in any situation i know), the ebuild will
execute that setup-command and write to some device's boot sector. How
evil, again!


Regards,
Sven

P.S.: here's the code from grub-0.97-r5.ebuild:

if [[ -e ${dir}/grub.conf ]] ; then
egrep
-v
'^[[:space:]]*(#|$|default|fallback|initrd|password|splashimage |timeout|title)'


"${dir}"/grub.conf |
/sbin/grub --batch
--device-map="${dir}"/device.map
> /dev/null
fi
 
Old 05-07-2008, 02:57 AM
Wolf Canis
 
Default grub weirdness

Sven Köhler wrote:
>> When you emerged grub-0.97-r5, this was displayed on your console:
>> WARN: postinst
>> *** IMPORTANT NOTE: you must run grub and install
>> the new version's stage1 to your MBR. Until you do,
>> stage1 and stage2 will still be the old version, but
>> later stages will be the new version, which could
>> cause problems such as an unbootable system.
>
> Yes, the ebuild writes that to the screen.
>
> But silently, in the background (because every output is piped to
> /dev/null - how evil!), the ebuild calls grub with some commands
> inside your grub.conf.

I just updated grub to version 0.97-r5 and this was,
at the end, displayed:

To avoid automounting and autoinstalling with /boot,
just export the DONT_MOUNT_BOOT variable.


Your boot partition was not mounted as /boot, but portage
was able to mount it without additional intervention.
Files will be installed there for grub to function correctly.

*** IMPORTANT NOTE: you must run grub and install
the new version's stage1 to your MBR. Until you do,
stage1 and stage2 will still be the old version, but
later stages will be the new version, which could
cause problems such as an unbootable system.
Copying files from /lib/grub and /usr/lib/grub to //boot/grub
To install grub files to another device (like a usb stick), just run:
emerge --config =grub-0.97-r5

>
> If there's a setup-command in your grub.conf, it is indeed executed.
> So if that command is outdated (something you won't notice, since that
> command is not used by grub in any situation i know), the ebuild will
> execute that setup-command and write to some device's boot sector. How
> evil, again!
>
> Regards,
> Sven
>
> P.S.: here's the code from grub-0.97-r5.ebuild:
>
> if [[ -e ${dir}/grub.conf ]] ; then
> egrep
> -v
> '^[[:space:]]*(#|$|default|fallback|initrd|password|splashimage |timeout|title)'
>
> "${dir}"/grub.conf |
> /sbin/grub --batch
> --device-map="${dir}"/device.map
> > /dev/null
> fi
And following the code of the functions which does the job:
found in ebuild: /usr/portage/sys-boot/grub/grub-0.97-r5.ebuild

setup_boot_dir() {
local boot_dir=$1
local dir=${boot_dir}

[[ ! -e ${dir} ]] && die "${dir} does not exist!"
[[ ! -L ${dir}/boot ]] && ln -s . "${dir}/boot"
dir="${dir}/grub"
if [[ ! -e ${dir} ]] ; then
mkdir "${dir}" || die "${dir} does not exist!"
fi

# change menu.lst to grub.conf
if [[ ! -e ${dir}/grub.conf ]] && [[ -e ${dir}/menu.lst ]] ; then
mv -f "${dir}"/menu.lst "${dir}"/grub.conf
ewarn
ewarn "*** IMPORTANT NOTE: menu.lst has been renamed to grub.conf"
ewarn
fi

if [[ -e ${dir}/stage2 ]] ; then
mv "${dir}"/stage2{,.old}
ewarn "*** IMPORTANT NOTE: you must run grub and install"
ewarn "the new version's stage1 to your MBR. Until you do,"
ewarn "stage1 and stage2 will still be the old version, but"
ewarn "later stages will be the new version, which could"
ewarn "cause problems such as an unbootable system."
ebeep
fi

einfo "Copying files from /lib/grub and /usr/lib/grub to ${dir}"
for x in "${ROOT}"/lib*/grub/*/* "${ROOT}"/usr/lib*/grub/*/* ; do
[[ -f ${x} ]] && cp -p "${x}" "${dir}"/
done

if [[ -e ${dir}/grub.conf ]] ; then
egrep
-v
'^[[:space:]]*(#|$|default|fallback|initrd|password|splashimage |timeout|title)'

"${dir}"/grub.conf |
/sbin/grub --batch
--device-map="${dir}"/device.map
> /dev/null
fi

# the grub default commands silently piss themselves if
# the default file does not exist ahead of time
if [[ ! -e ${dir}/default ]] ; then
grub-set-default --root-directory="${boot_dir}" default
fi
}


How you can see isn't the message piped to /dev/null, only
the command "/sbin/grub -batch -device-map...".

Have fun,
W. Canis
 
Old 05-07-2008, 09:22 AM
Neil Bothwick
 
Default grub weirdness

On Tue, 6 May 2008 20:24:34 -0400 (EDT), Ian Hilt wrote:

> 7. GRUB GRUB GRUB GRUB GRUB ...

Did anyone else find themselves singing this to the tune of the Monty
Python spam song ;-)


--
Neil Bothwick

Change is inevitable. Except from a vending machine.
 
Old 05-07-2008, 10:13 AM
Sven Köhler
 
Default grub weirdness

To avoid automounting and autoinstalling with /boot,
just export the DONT_MOUNT_BOOT variable.


Which /boot partition? I don't have any ...


If there's a setup-command in your grub.conf, it is indeed executed.
So if that command is outdated (something you won't notice, since that
command is not used by grub in any situation i know), the ebuild will
execute that setup-command and write to some device's boot sector. How
evil, again!

Regards,
Sven

P.S.: here's the code from grub-0.97-r5.ebuild:

if [[ -e ${dir}/grub.conf ]] ; then
egrep
-v
'^[[:space:]]*(#|$|default|fallback|initrd|password|splashimage |timeout|title)'

"${dir}"/grub.conf |
/sbin/grub --batch
--device-map="${dir}"/device.map
> /dev/null
fi

And following the code of the functions which does the job:
found in ebuild: /usr/portage/sys-boot/grub/grub-0.97-r5.ebuild

setup_boot_dir() {
local boot_dir=$1
local dir=${boot_dir}

[[ ! -e ${dir} ]] && die "${dir} does not exist!"
[[ ! -L ${dir}/boot ]] && ln -s . "${dir}/boot"
dir="${dir}/grub"
if [[ ! -e ${dir} ]] ; then
mkdir "${dir}" || die "${dir} does not exist!"
fi

# change menu.lst to grub.conf
if [[ ! -e ${dir}/grub.conf ]] && [[ -e ${dir}/menu.lst ]] ; then
mv -f "${dir}"/menu.lst "${dir}"/grub.conf
ewarn
ewarn "*** IMPORTANT NOTE: menu.lst has been renamed to grub.conf"
ewarn
fi

if [[ -e ${dir}/stage2 ]] ; then
mv "${dir}"/stage2{,.old}
ewarn "*** IMPORTANT NOTE: you must run grub and install"
ewarn "the new version's stage1 to your MBR. Until you do,"
ewarn "stage1 and stage2 will still be the old version, but"
ewarn "later stages will be the new version, which could"
ewarn "cause problems such as an unbootable system."
ebeep
fi

einfo "Copying files from /lib/grub and /usr/lib/grub to ${dir}"
for x in "${ROOT}"/lib*/grub/*/* "${ROOT}"/usr/lib*/grub/*/* ; do
[[ -f ${x} ]] && cp -p "${x}" "${dir}"/
done

if [[ -e ${dir}/grub.conf ]] ; then
egrep
-v
'^[[:space:]]*(#|$|default|fallback|initrd|password|splashimage |timeout|title)'

"${dir}"/grub.conf |
/sbin/grub --batch
--device-map="${dir}"/device.map
> /dev/null
fi

# the grub default commands silently piss themselves if
# the default file does not exist ahead of time
if [[ ! -e ${dir}/default ]] ; then
grub-set-default --root-directory="${boot_dir}" default
fi
}


How you can see isn't the message piped to /dev/null, only
the command "/sbin/grub -batch -device-map...".


Why should i worry about the message being piped to /dev/null?

I worry about a message saying "you have to do it by hand" although some
harmful "magic" is going on behind the scenes (the egrep+grub command)
although we are not informed about it (command is piped to /dev/null,
not message about it, etc.).
 
Old 05-08-2008, 04:47 AM
»Q«
 
Default grub weirdness

On Wed, 07 May 2008 12:13:47 +0200
Sven Köhler <skoehler@upb.de> wrote:

> > To avoid automounting and autoinstalling with /boot,
> > just export the DONT_MOUNT_BOOT variable.
>
> Which /boot partition? I don't have any ...

I believe you've already avoided it being mounted, then.


--
gentoo-user@lists.gentoo.org mailing list
 

Thread Tools




All times are GMT. The time now is 09:59 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright ©2007 - 2008, www.linux-archive.org