FS#10002 - Initcpio can't handle acpi_os_name="Microsoft Windows XP"
Attached to Project:
Arch Linux
Opened by Matthias Dienstbier (fs4000) - Friday, 28 March 2008, 21:49 GMT
Last edited by Roman Kyrylych (Romashka) - Saturday, 27 December 2008, 14:21 GMT
Opened by Matthias Dienstbier (fs4000) - Friday, 28 March 2008, 21:49 GMT
Last edited by Roman Kyrylych (Romashka) - Saturday, 27 December 2008, 14:21 GMT
|
Details
Description:
I tried to boot with acpi_os_name="Microsoft Windows XP" as described here: http://forums.gentoo.org/viewtopic.php?t=122145 and got an error from Initcpio: :: Loading Initramfs export: 44: XP": bad variable name Kernel panic - not syncing: Attempted to kill init! Additional info: * package version(s) mkinitcpio 0.5.17-2 |
This task depends upon
I don't know very much about shell-scripts, but the problem must be in this line:
for cmd in $CMDLINE; do
then the line
export "${cmd}=y"
must try to do this: export "XP"=y"
However, /init parses the commadline word-wise, so now acpi_os_name="Microsoft is exported, then Windows=y is exported and then it tries to export XP"=y. It cannot handle quoting. I cannot think of a proper quick fix for the quoting, but I can provide you with a workaround:
Insert this line between line 21 and 22 in /lib/initcpio/init:
*\"*) ;;
Then regenerate your image with 'mkinitcpio -p kernel26'. Make a copy of your old image in case you break it. That is not a proper fix for the issue, it only ignores the XP" on the commandline and should make your system boot correctly, hopefully.
I wonder if the following would work:
acpi_os_name=Microsoft\ Windows\ XP
We should still respect quoting when parsing the commandline, as Linux does it as well ...
The first progress within years, perhaps I will get it working some day. ;-)
I tested acpi_os_name=Microsoft\ Windows\ XP
ACPI: Overriding _OS definition to 'Microsoft'
I tried to boot with your initcpio-fix, but got this:
http://mwd.bplaced.net/up/boot.jpg
I removed the acpi_os_name option and it worked again. I have no idea why!
PS: The Computer didn't suspend with the correct acpi_os_name either. :-(
# acpi_os_name="Microsoft Windows XP"
now. I tested this at that time, too, but somehow it didn't prevent initcpio from parsing. Now it does.
However I didn't get Suspend working until now. The BIOS must be really buggy.