Skip to contentSkip to conversation

New gnu-efi package and new boot loader available

Linux-ia64 Bill Nottingham 4 participants 4 messages Apr 20, 2001 – Apr 26, 2001

lore
Share & tools
lore
#0 lore raw
Quoted 6 lines · Stephane Eranian

This version of the gnu-efi package includes a new version of the boot loader which represents the merge of ELI and LILO into ELILO.
Most features of each have been merged. This means that ELI's config file (a la LILO/ia-32) is supported, for instance.

Support and development on the bootloader will now focus on this new version.

A few ELILO patches - one bugfix:
- elilo-makefile.patch
Tweaks the dependency rules in the Makefile so it will rebuild OK if you change one file.

one behavior change:
- elilo-image.patch
Appends extra command-line parameters to any image parameters, instead of overriding all of them. Overriding things like 'ro' or 'root=' should still work, AFAIK.

and two things catering to my personal preferences :) :
- elilo-query.patch
Makes the '-q' behavior the default, and adds a '-Q' to turn on querying.
- elilo-verbosity.patch
Wraps many messages with 'if (elilo_opt.verbose)'; also
turns off the timeout if an image was specified on the command line

Comments?

Bill

Make.rules +3 -0
diff -ru gnu-efi-2.0-old/Make.rules gnu-efi-2.0/Make.rules
@@ -4,3 +4,6 @@
 
 %.so: %.o
 	$(LD) $(LDFLAGS) $^ -o $@ $(LOADLIBES)
+
+%.o: %.c
+	$(CC) $(CFLAGS) $(CPPFLAGS) -c $^ -o $@
elilo/Makefile +5 -1
diff -ru gnu-efi-2.0-old/elilo/Makefile gnu-efi-2.0/elilo/Makefile
@@ -36,11 +36,15 @@
 
 all:	$(TARGETS)
 
+elilo.efi: elilo.so
+
 elilo.so: getopt.o strchr.o loader.o gzip_loader.o gzip.o  \
          plain_loader.o localfs.o netfs.o fileops.o util.o alloc.o fpswa.o \
 	 memset.o memcpy.o config.o initrd.o alternate.o
 
-gzip.o : inflate.c
+gzip.o: gzip.c inflate.c
+	$(CC) $(CFLAGS) $(CPPFLAGS) -c gzip.c -o $@
+
 
 clean:
 	rm -f $(TARGETS) *~ *.o *.so
elilo/elilo.c renamed from elilo/elilo.c.verbosity +1 -1
@@ -367,7 +370,7 @@
 	 * config file 
 	 */
 	if (argc > 1+index) {
-		StrCpy(args, argv[++index]);
+		/* StrCpy(args, argv[++index]); */
 		while (++index < argc) {
 			StrCat(args, W2U(L" "));
 			StrCat(args, argv[index]);
elilo/elilo.c renamed from elilo/elilo.c.ook +7 -2
@@ -71,7 +71,9 @@
 	UINTN initrd_size;		/* how big is the initial ramdisk */
 };
 
-elilo_opt_t elilo_opt;
+elilo_opt_t elilo_opt = {
+	noquery: 1
+};
 
 EFI_SYSTEM_TABLE *systab;
 
@@ -622,13 +622,16 @@
 
 	argc = argify(info->LoadOptions,info->LoadOptionsSize, argv); 
 
-	while ((c=Getopt(argc, argv, W2U(L"C:adqht:i:vVf"))) != -1 ) {
+	while ((c=Getopt(argc, argv, W2U(L"C:adQqht:i:vVf"))) != -1 ) {
 		switch(c) {
 			case 'a':
 				elilo_opt.always_alt=1;
 				break;
 			case 'd':
 				elilo_opt.debug=1;
+				break;
+			case 'Q':
+				elilo_opt.noquery=0;
 				break;
 			case 'q':
 				elilo_opt.noquery=1;
elilo/elilo.txt renamed from elilo/elilo.txt.ook +5 -2
@@ -37,10 +37,13 @@
 	-v	Turn on verbose mode. LILO prints more message about what it 
 		is doing.
 
-	-q	Do not ask for a keypress when invoked in interactive mode. 
+	-Q	Ask for a keypress when invoked in interactive mode. 
 		The interactive mode is entered when LILO is invoked with 
 		command line arguments or when it is interrupted in the middle
-		of loading an image. 
+		of loading an image.
+
+	-q	Do not ask for a keypress when invoked in interactive mode. 
+		(This option is the default.)
 
 	-a	Always check for alternate kernel image. When LILO detects that
 		it has been invoked with some command line argument, the 
elilo/elilo.c renamed from elilo/elilo.c.verbosity +34 -13

109 lines not on this page · raw message

elilo/plain_loader.c renamed from elilo/plain_loader.c.verbosity +6 -4
@@ -101,7 +101,7 @@
 }
 
 static INTN
-load_elf(INTN fd, fileops_t *fops, VOID *kentry, VOID *kend)
+load_elf(INTN fd, fileops_t *fops, VOID *kentry, VOID *kend, CHAR16 *kname)
 {
 	Elf64_Ehdr ehdr;
 	Elf64_Phdr *phdrs;
@@ -226,8 +226,10 @@
 	 * virtual address where the kernel code starts
 	 */
 
-    	Print(W2U(L"Press any key to interrupt\r\n"));
-    	Print(W2U(L"Loading kernel.."));
+	if (elilo_opt.verbose) {
+    		Print(W2U(L"Press any key to interrupt\r\n"));
+	}
+	Print(W2U(L"Loading %s..."), kname);
 	
 	/* Second pass:
 	 * Walk through the program headers
@@ -311,7 +313,7 @@
 	status = fops->fops_open(dev, kname, &fd);
 	if (EFI_ERROR(status)) return ELILO_BOOT_ERROR;
 
-	ret = load_elf(fd, fops, kentry, kend);
+	ret = load_elf(fd, fops, kentry, kend, kname);
 
 	fops->fops_close(fd);
 
elilo/util.c renamed from elilo/util.c.verbosity +4 -2
@@ -96,14 +96,16 @@
 		return ELILO_BOOT_ABORTED;
 	}
 	
-	Print(W2U(L"Press ENTER to continue or ANY other key to cancel\r\n"));
+	if (elilo_opt.verbose)
+		Print(W2U(L"Press ENTER to continue or ANY other key to cancel\r\n"));
 
 	list[0] = timer;
 	list[1] = systab->ConIn->WaitForKey;
 
 	do {
 
-		Print(W2U(L"%s autoboot in %-3d seconds\r"), kernel_name, timeout);
+		if (elilo_opt.verbose)
+			Print(W2U(L"%s autoboot in %-3d seconds\r"), kernel_name, timeout);
 		status = BS->WaitForEvent(2, list, &idx);
 		if (EFI_ERROR(status)) {
 			PRINT_ERR((W2U(L"waitkey WaitForEvent failed %r"), status));
#1 lore raw

Bill,

Quoted 4 lines

A few ELILO patches - one bugfix:
- elilo-makefile.patch
Tweaks the dependency rules in the Makefile so it will rebuild OK if you change one file.

Good.

Quoted 6 lines

one behavior change:
- elilo-image.patch
Appends extra command-line parameters to any image parameters, instead of overriding all of them. Overriding things like 'ro' or 'root=' should still work, AFAIK.

I did not check how LILO was behaving for comparison and you just gave me the answer.

Quoted 8 lines

and two things catering to my personal preferences :) :
- elilo-query.patch
Makes the '-q' behavior the default, and adds a '-Q' to turn on querying.
- elilo-verbosity.patch
Wraps many messages with 'if (elilo_opt.verbose)'; also
turns off the timeout if an image was specified on the command line

Fine.

I will integrate your patches into the new version of ELILO. I'll try to remember to protect Print() with the verbose test. Also the new ELILO will have a config file parsing that will be much cleaner and closer to the PC LILO. I adapted the code and remove some options which did not make sense. I just need to integrate it to ELILO now. The new ELILO will also have netbooting support.

Also for now DO NOT USE THE initrd fix I submitted a few days back. We are moving allocations around between ELILO and the kernel and at this point we don't have a final answer. Probably the new kernel and ELILO will have the right stuff and changes will be transparent to users. I am also planning on separating ELILO from the rest of the gnu-efi package because they don't evolve at the same pace.

Thanks for your contributions.

#2 lore raw

RE: [Linux-ia64] Re: New gnu-efi package and new boot loader avai

In reply to Bill Nottingham

This doesn't seem to be hurting anything as far as I can tell, but is there a way to fix this?

Warning: EFI system table major version mismatch: got 1.02, expected 0.92 EFI v1.02 by INTEL: SALsystab=0x7ff266e0 ACPI=0x7fe99cc8 ACPI 2.0=0x7fe99f00 MPS
=0x7ffd0000 SMBIOS=0xf00a0

-----Original Message-----
From: Stephane Eranian [mailto:[email protected]]
Sent: Friday, April 20, 2001 7:27 PM
To: [email protected]
Subject: Re: [Linux-ia64] Re: New gnu-efi package and new boot loader available

Bill,

Quoted 4 lines

A few ELILO patches - one bugfix:
- elilo-makefile.patch
Tweaks the dependency rules in the Makefile so it will rebuild OK if you change one file.

Good.

Quoted 6 lines

one behavior change:
- elilo-image.patch
Appends extra command-line parameters to any image parameters, instead of overriding all of them. Overriding things like 'ro' or 'root=' should still work, AFAIK.

I did not check how LILO was behaving for comparison and you just gave me the
answer.

Quoted 4 lines

and two things catering to my personal preferences :) :
- elilo-query.patch
Makes the '-q' behavior the default, and adds a '-Q' to turn on

querying.

Quoted 4 lines

- elilo-verbosity.patch
Wraps many messages with 'if (elilo_opt.verbose)'; also turns off the timeout if an image was specified on the command line

Fine.

I will integrate your patches into the new version of ELILO. I'll try to remember
to protect Print() with the verbose test. Also the new ELILO will have a config
file parsing that will be much cleaner and closer to the PC LILO. I adapted the code and remove some options which did not make sense. I just need to integrate it to ELILO now. The new ELILO will also have netbooting support.

Also for now DO NOT USE THE initrd fix I submitted a few days back. We are moving allocations around between ELILO and the kernel and at this point we don't have a final answer. Probably the new kernel and ELILO will have the right
stuff and changes will be transparent to users. I am also planning on separating
ELILO from the rest of the gnu-efi package because they don't evolve at the same pace.

Thanks for your contributions.

_______________________________________________
Linux-IA64 mailing list
[email protected]
http://lists.linuxia64.org/lists/listinfo/linux-ia64

#3 lore raw

RE: [Linux-ia64] Re: New gnu-efi package and new boot loader avai

In reply to Bill Nottingham
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line · Ray

Ray> This doesn't seem to be hurting anything as far as I can tell, Ray> but is there a way to fix this?

Ray> Warning: EFI system table major version mismatch: got 1.02, Ray> expected 0.92 EFI v1.02 by INTEL: SALsystab=0x7ff266e0 Ray> ACPI=0x7fe99cc8 ACPI 2.0=0x7fe99f00 MPS =0x7ffd0000 Ray> SMBIOS=0xf00a0

This should be fixed in the latest kernel (2.4.3 + ia64).

	--david