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