Wow. Very easy solution after all. I compiled my own kernel to get around
that problem, but this is much more convenient.

On Mon, Oct 26, 2009 at 4:19 PM, Tom Fisher <t...@0hz.net> wrote:

> the default arch linux kernel's initrd scripts do not like this quoted
> string parameter and will not boot if it is present.
>
> In summary (if you don't care about what's going on) another solution is to
> put a # on the command line prior to the acpi_osi flag, as in this example
> grub 'kernel' line:
> kernel /boot/vmlinuz26 root=/dev/sda1 ro vga=773 # acpi_osi="!Windows 2006"
>
> explanation:
>
> the offending code in the initrd's /bin/init script is this for loop:
>
> read CMDLINE </proc/cmdline
> ...
> for cmd in ${CMDLINE}; do
>    case "${cmd}" in
>        \#*) break ;; # ignore everything after a # in the commandline
>        # The kernel passes those to the kernel on its own
>        [0123456Ss]) ;;
>        single) ;;
>        #Allow "init=X" to pass-through
>        init=*) kinit_params="${kinit_params} ${cmd}" ;;
>        # only export stuff that does work with dash :)
>        *=*) cmd="$(replace -s= "${cmd}" '.' '_')"
>             cmd="$(replace -s= "${cmd}" '-' '_')"
>             export "${cmd}"
>             ;;
>        *)   cmd="$(replace "${cmd}" '.' '_')"
>             cmd="$(replace "${cmd}" '-' '_')"
>             export "${cmd}=y"
>           ;;
>    esac
> done
>
> without that # addition, its the last case match, *, where it finds the
> 2006" parameter and tries to export 2006"=y which the shell does not like.
> then the machine halts :)
>
> Other solutions are building your own kernel without initrd at all, or
> someone else reported that you can compile this acpi_osi flag into the
> kernel and the initrd would no longer process it.
>
> There's a bug in arch to fix this, but it looks like its been there for a
> while and might be low priority considering I am the only one that voted for
> it: http://bugs.archlinux.org/task/13900
>
> I modified the arch /bin/init script to be able to properly handle quoted
> strings, but then rebooted with my new initrd and realized their shell is
> actually dash. I don't know how to do things like ${cmd%\"*} in dash.
>
> so the easiest solution turned out to much easier than all that anyway
> because there's a match on the command line argument '#' that breaks from
> the loop! just drop that in prior to any arguments you know the export
> statement won't like/need and...problem solved. I was also worried that the
> kernel might complain if it sees a random unexpected hash symbol on its
> command line, but it doesn't seem to.
>
> _______________________________________________
> Mailing list: 
> https://launchpad.net/~sony-vaio-z-series<https://launchpad.net/%7Esony-vaio-z-series>
> Post to     : sony-vaio-z-series@lists.launchpad.net
> Unsubscribe : 
> https://launchpad.net/~sony-vaio-z-series<https://launchpad.net/%7Esony-vaio-z-series>
> More help   : https://help.launchpad.net/ListHelp
>
_______________________________________________
Mailing list: https://launchpad.net/~sony-vaio-z-series
Post to     : sony-vaio-z-series@lists.launchpad.net
Unsubscribe : https://launchpad.net/~sony-vaio-z-series
More help   : https://help.launchpad.net/ListHelp

Reply via email to