← Back to team overview

sony-vaio-z-series team mailing list archive

Re: grub2 and acpi_osi

 

Hello Norbert,

Am Freitag, den 09.10.2009, 05:49 +0200 schrieb Norbert Preining:
> On Do, 08 Okt 2009, Raphael Gradenwitz wrote:
> > My /boot/grub/grub.cfg has the same entry like yours but the quotes do
> > not survive the boot process, the quotes are removed in /proc/cmdline
> > and that results in wrong interpretation by the kernel.
> 
> I'm not sure whether this counts, I mean what you see in /proc/cmdline.
> The cmd line arguments there are anyway merged together, I still believe
> that the kernel gets the right argument, although the /proc/cmdline
> does not show the quotes. And in fact that is right, because the
> quotes are not part of the argument.

The *Quotes* are not part of the argument but the *Space* between
Windows and 2006 is.

And /proc/cmdline is parsed in a way like:

for ARG in $(cat /proc/cmdline)
do
    echo "${ARG}"|grep -q "=" && ${ARG%=*}=${ARG##*=}
done

and as you can see, that would result in
acpi_osi=!Windows
and 2006 wil be interpreted as a (not understood) alone standing word.

There are more such words without a '=' like ro, splash, quiet (etc..)

There is no way for the kernel other than "guessing" if the next word is
part of the argument and if not. OK, it could check the result with a
database of possible values but what if !Windows is a possible value
too? And we know that this "guessing" is not part of the comandline
parsing process.

> 
> And in fact here on my laptop switching works without any problems.

Is the led on the stamina-speed slider burning on your vaio after a
reboot? Even if your /proc/cmdline had the argument without quotes the
boot before?

For me it does *not*.

> 
> So are you sure that these additional quotes are necessary? I am not.

I am absolutely sure, at least for the Kernel and the grub-pc version I
am using!

When booting with grub legacy:
:~$ cat /proc/cmdline
root=UUID=b4acd5c9-258f-47fc-8a8c-0f497f6f5137 ro splash vga=791 acpi_osi="!Windows 2006" acpi_backlight=vendor

and after a boot with grub2:
:~$ cat /proc/cmdline
root=UUID=b4acd5c9-258f-47fc-8a8c-0f497f6f5137 ro splash vga=791 acpi_osi=!Windows 2006 acpi_backlight=vendor

When I boot with grub2 and edit the comandline in the grub shell by hand
puting a backslash in front of those quote-signs:
acpi_osi=\"!Windows 2006\"
than it works.
Understand me right please, I have tried a lot, even changing the
script /etc/grub.d/10_linux (for testing) and after executing

sudo /usr/sbin/grub-mkconfig

it resulted in a /boot/grub/grub.cfg like:

root=UUID=b4acd5c9-258f-47fc-8a8c-0f497f6f5137 ro splash vga=791 acpi_osi=\"!Windows 2006\" acpi_backlight=vendor

and even this I have tried:

root=UUID=b4acd5c9-258f-47fc-8a8c-0f497f6f5137 ro splash vga=791 acpi_osi=\\\"!Windows 2006\\\" acpi_backlight=vendor

but, no matter what I have done, after a normal boot, the backslashes
where all gone and not visible in the grub shell nor in
the /boot/grub/grub.cfg. only the alone standing quotes.

Raphael
-- 
(Please post and/or answer >if possible< with
Reply-to: sony-vaio-z-series@xxxxxxxxxxxxxxxxxxx
Thanks)

Attachment: smime.p7s
Description: S/MIME cryptographic signature


Follow ups

References