[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GRUB2 / pxe
From: |
Marco Gerards |
Subject: |
Re: GRUB2 / pxe |
Date: |
Sun, 27 Jun 2004 14:11:36 +0200 |
User-agent: |
Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux) |
"lode leroy" <address@hidden> writes:
> I managed to boot grub2 over PXE/TFTP/DHCP using the following code.
> Could someone add this to grub2, please?
This would be quite useful to me for testing, great!
Using your code I made the patch I included at the end of the email.
I've also regenerated the `conf/i386-pc.mk' file, in case you don't
have ruby installed. Can you please test this patch? Is it ok for
you this way?
> -- lode
> ps: it's a mix between pxeloader.S from grub0.94, abd boot.S from grub2
Okuji, can I commit this patch when it works for Lode? Are there
copyright issues?
Thanks,
Marco
2004-05-24 Marco Gerards <address@hidden>
* conf/i386-pc.rmk (pkgdata_IMAGE): Add pxeboot.img.
(pxeboot_img_SOURCES): New variable.
(pxeboot_img_ASFLAGS): Likewise.
(pxeboot_img_LDFLAGS): Likewise.
* boot/i386/pc/pxeboot.S: New file. Based on pxeloader.S from
GRUB Legacy and boot.S. Adopted for GRUB 2 by lode leroy
<address@hidden>.
Index: boot/i386/pc/pxeboot.S
===================================================================
RCS file: boot/i386/pc/pxeboot.S
diff -N boot/i386/pc/pxeboot.S
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ boot/i386/pc/pxeboot.S 27 Jun 2004 12:07:46 -0000
@@ -0,0 +1,43 @@
+/* -*-Asm-*- */
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 1999,2000,2001,2002,2004 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <grub/boot.h>
+#include <grub/machine/boot.h>
+
+/*
+* defines for the code go here
+*/
+
+ .file "pxeboot.S"
+
+ .text
+
+ /* Tell GAS to generate 16-bit instructions so that this code works
+ in real mode. */
+ .code16
+
+.globl _start; _start:
+ /*
+ * _start is loaded at 0x7c00 and is jumped to with CS:IP 0:0x7c00
+ */
+ ljmp $0, $0x8200
+
+ . = 0x8000 - 0x7C00 -1
+ .byte 0
Index: conf/i386-pc.mk
===================================================================
RCS file: /cvsroot/grub/grub2/conf/i386-pc.mk,v
retrieving revision 1.14
diff -u -p -u -p -r1.14 i386-pc.mk
--- conf/i386-pc.mk 24 May 2004 21:32:20 -0000 1.14
+++ conf/i386-pc.mk 27 Jun 2004 12:07:47 -0000
@@ -4,7 +4,7 @@ COMMON_ASFLAGS = -nostdinc -fno-builtin
COMMON_CFLAGS = -fno-builtin -mrtd -mregparm=3
# Images.
-pkgdata_IMAGES = boot.img diskboot.img kernel.img
+pkgdata_IMAGES = boot.img diskboot.img kernel.img pxeboot.img
# For boot.img.
boot_img_SOURCES = boot/i386/pc/boot.S
@@ -28,6 +28,28 @@ boot_img-boot_i386_pc_boot.d: boot/i386/
boot_img_ASFLAGS = $(COMMON_ASFLAGS)
boot_img_LDFLAGS = -nostdlib -Wl,-N,-Ttext,7C00
+# For pxeboot.img
+pxeboot_img_SOURCES = boot/i386/pc/pxeboot.S
+CLEANFILES += pxeboot.img pxeboot.exec pxeboot_img-boot_i386_pc_pxeboot.o
+MOSTLYCLEANFILES += pxeboot_img-boot_i386_pc_pxeboot.d
+
+pxeboot.img: pxeboot.exec
+ $(OBJCOPY) -O binary -R .note -R .comment $< $@
+
+pxeboot.exec: pxeboot_img-boot_i386_pc_pxeboot.o
+ $(CC) -o $@ $^ $(LDFLAGS) $(pxeboot_img_LDFLAGS)
+
+pxeboot_img-boot_i386_pc_pxeboot.o: boot/i386/pc/pxeboot.S
+ $(CC) -Iboot/i386/pc -I$(srcdir)/boot/i386/pc $(CPPFLAGS) -DASM_FILE=1
$(ASFLAGS) $(pxeboot_img_ASFLAGS) -c -o $@ $<
+
+pxeboot_img-boot_i386_pc_pxeboot.d: boot/i386/pc/pxeboot.S
+ set -e; $(CC) -Iboot/i386/pc -I$(srcdir)/boot/i386/pc
$(CPPFLAGS) -DASM_FILE=1 $(ASFLAGS) $(pxeboot_img_ASFLAGS) -M $< | sed
's,pxeboot\.o[ :]*,pxeboot_img-boot_i386_pc_pxeboot.o $@ : ,g' > $@; [ -s
$@ ] || rm -f $@
+
+-include pxeboot_img-boot_i386_pc_pxeboot.d
+
+pxeboot_img_ASFLAGS = $(COMMON_ASFLAGS)
+pxeboot_img_LDFLAGS = -nostdlib -Wl,-N,-Ttext,8000
+
# For diskboot.img.
diskboot_img_SOURCES = boot/i386/pc/diskboot.S
CLEANFILES += diskboot.img diskboot.exec diskboot_img-boot_i386_pc_diskboot.o
Index: conf/i386-pc.rmk
===================================================================
RCS file: /cvsroot/grub/grub2/conf/i386-pc.rmk,v
retrieving revision 1.14
diff -u -p -u -p -r1.14 i386-pc.rmk
--- conf/i386-pc.rmk 24 May 2004 21:32:21 -0000 1.14
+++ conf/i386-pc.rmk 27 Jun 2004 12:07:47 -0000
@@ -4,13 +4,18 @@ COMMON_ASFLAGS = -nostdinc -fno-builtin
COMMON_CFLAGS = -fno-builtin -mrtd -mregparm=3
# Images.
-pkgdata_IMAGES = boot.img diskboot.img kernel.img
+pkgdata_IMAGES = boot.img diskboot.img kernel.img pxeboot.img
# For boot.img.
boot_img_SOURCES = boot/i386/pc/boot.S
boot_img_ASFLAGS = $(COMMON_ASFLAGS)
boot_img_LDFLAGS = -nostdlib -Wl,-N,-Ttext,7C00
+# For pxeboot.img
+pxeboot_img_SOURCES = boot/i386/pc/pxeboot.S
+pxeboot_img_ASFLAGS = $(COMMON_ASFLAGS)
+pxeboot_img_LDFLAGS = -nostdlib -Wl,-N,-Ttext,8000
+
# For diskboot.img.
diskboot_img_SOURCES = boot/i386/pc/diskboot.S
diskboot_img_ASFLAGS = $(COMMON_ASFLAGS)
- GRUB2 / pxe, lode leroy, 2004/06/21
- Re: GRUB2 / pxe,
Marco Gerards <=