[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4E39C2CE.1000800@gmail.com>
Date: Wed, 03 Aug 2011 23:51:10 +0200
From: Maarten Lankhorst <m.b.lankhorst@...il.com>
To: Matt Fleming <matt@...sole-pimps.org>
CC: linux-kernel@...r.kernel.org, syslinux@...or.com
Subject: Re: efilinux release 0.8
On 07/28/2011 01:44 PM, Matt Fleming wrote:
> Hi,
>
> I'm pleased to announce release 0.8 of efilinux, a reference
> implementation of a minimal UEFI bootloader. This bootloader has no
> bells or whistles, it is simply a prototype with the minimum amount of
> smarts required to load a linux kernel (though loaders for other formats
> could be added).
>
> Currently it only supports booting x86-64 bzImages but i386 support is
> planned for release 0.9, with a 1.0 release coming after a thorough
> round of testing.
>
> If anyone has the time and inclination I'd really appreciate it if they
> could have a play with it on their machines and report any bugs. Testing
> has mainly been done under qemu up to this point so there are bound to
> be some lurking bugs that only show up on real hardware.
>
> As there is no configuration file parser all config is done via
> command-line arguments. To boot a kernel simply type,
>
> Shell> efilinux -l
> efilinux loader 0.8
> Devices:
>
> 0. "Acpi(PNP0A03,0)/Pci(1|1)/Ata(Primary,Master)"
>
> Shell> efilinux -f Acpi(PNP0A03,0)/Pci(1|1)/Ata(Primary,Master):\bzimage
>
> efilinux understands the LILO-style initrd= kernel command-line
> argument, but the full device path to the initrd is required. A kernel
> command-line can be passed at the end of the command-line, e.g.
>
> Shell> efilinux -f bzimage console=ttyS0 root=/dev/sdb
>
> The latest release is available at,
>
> git://git.kernel.org/pub/scm/boot/efilinux/efilinux.git
>
> This project is a preview of the EFI stub patches that I hope to push
> into the kernel. The EFI stub will allow a bzImage to masquerade as an
> EFI application, such that the firmware will load the bzImage and jump
> to its entry point without requiring a bootloader at all.
>
Yuck, it's case sensitive and it requires you to type all that?
Here's a patch to accept 0:\vmlinuz initrd=0:\initrd.img and zap the sensitivity.
I alter name in file_open, but it seems nothing else requires it anyhow,
so I didn't see a need to copy or revert it.
For what it's worth, it didn't seem to boot on my asrock P67 pro3.
Signed-off-by: Maarten Lankhorst <m.b.lankhorst@...il.com>
---
diff --git a/fs/fs.c b/fs/fs.c
index b799c00..555ced3 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -66,6 +66,21 @@ file_open(CHAR16 *name, struct file **file)
if (!f)
return EFI_OUT_OF_RESOURCES;
+ for (dev_len = 0; name[dev_len]; ++dev_len) {
+ if (name[dev_len] == ':') break;
+ }
+ if (!name[dev_len] || !dev_len)
+ goto notfound;
+ name[dev_len] = 0;
+
+ if (name[0] >= '0' && name[0] <= '9') {
+ i = Atoi(name);
+ if (i >= nr_fs_devices)
+ goto notfound;
+ f->handle = fs_devices[i].fh;
+ goto found;
+ }
+
for (i = 0; i < nr_fs_devices; i++) {
EFI_DEVICE_PATH *path;
CHAR16 *dev;
@@ -73,23 +88,20 @@ file_open(CHAR16 *name, struct file **file)
path = DevicePathFromHandle(fs_devices[i].handle);
dev = DevicePathToStr(path);
- if (!StrnCmp(dev, name, StrLen(dev))) {
+ if (!StriCmp(dev, name)) {
f->handle = fs_devices[i].fh;
- dev_len = StrLen(dev);
free_pool(dev);
break;
}
free_pool(dev);
}
+ if (i == nr_fs_devices)
+ goto notfound;
- if (i == nr_fs_devices) {
- err = EFI_NOT_FOUND;
- goto fail;
- }
-
+found:
/* Strip the device name */
- filename = name + dev_len;
+ filename = name + dev_len + 1;
/* skip any path separators */
while (*filename == ':' || *filename == '\\')
@@ -104,6 +116,8 @@ file_open(CHAR16 *name, struct file **file)
*file = f;
return err;
+notfound:
+ err = EFI_NOT_FOUND;
fail:
Print(L"Unable to open file \"%s\"", name);
free(f);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists