From 0e1430737f900e2115732de35eefb2f7ffc5efb7 Mon Sep 17 00:00:00 2001 From: okuji Date: Sun, 7 Aug 2005 14:59:56 +0000 Subject: [PATCH] 2005-08-07 Yoshinori K. Okuji * util/i386/pc/grub-install.in (grub_probefs): New variable. (modules): Likewise. (usage): Added descriptions for --modules and --grub-probefs. Handle --modules and --grub-probefs. Save the arguments in MODULES and GRUB_PROBEFS, respectively. Auto-detect a filesystem module against GRUBDIR. If the result is empty and modules are not specified explicitly, abort the installation. Add the result to MODULES. * DISTLIST: Removed boot/powerpc/ieee1275/ieee1275.c, disk/powerpc/ieee1275/ofdisk.c, include/grub/powerpc/ieee1275/init.h and term/powerpc/ieee1275/ofconsole.c. Added disk/ieee1275/ofdisk.c, kern/ieee1275/of.c and term/ieee1275/ofconsole.c. * include/grub/powerpc/ieee1275/console.h: Resurrected. * COPYING: Upgraded to the latest version. Only the address of the FSF office has changed. --- COPYING | 8 ++-- ChangeLog | 23 ++++++++++ DISTLIST | 7 ++- NEWS | 2 + README | 19 +------- include/grub/powerpc/ieee1275/console.h | 59 +++++++++++++++++++++++++ util/i386/pc/grub-install.in | 25 ++++++++--- 7 files changed, 113 insertions(+), 30 deletions(-) create mode 100644 include/grub/powerpc/ieee1275/console.h diff --git a/COPYING b/COPYING index eeb586b39..3912109b5 100644 --- a/COPYING +++ b/COPYING @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - Copyright (C) 19yy + Copyright (C) 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 @@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found. 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. @@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. diff --git a/ChangeLog b/ChangeLog index e9b4ac19b..351c36968 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,26 @@ +2005-08-07 Yoshinori K. Okuji + + * util/i386/pc/grub-install.in (grub_probefs): New variable. + (modules): Likewise. + (usage): Added descriptions for --modules and --grub-probefs. + Handle --modules and --grub-probefs. Save the arguments in MODULES + and GRUB_PROBEFS, respectively. + Auto-detect a filesystem module against GRUBDIR. If the result is + empty and modules are not specified explicitly, abort the + installation. Add the result to MODULES. + + * DISTLIST: Removed boot/powerpc/ieee1275/ieee1275.c, + disk/powerpc/ieee1275/ofdisk.c, + include/grub/powerpc/ieee1275/init.h and + term/powerpc/ieee1275/ofconsole.c. + Added disk/ieee1275/ofdisk.c, kern/ieee1275/of.c and + term/ieee1275/ofconsole.c. + + * include/grub/powerpc/ieee1275/console.h: Resurrected. + + * COPYING: Upgraded to the latest version. Only the address of the + FSF office has changed. + 2005-08-07 Yoshinori K. Okuji * conf/powerpc-ieee1275.rmk (grubof_SOURCES): Replaced diff --git a/DISTLIST b/DISTLIST index 21fa67c58..a755c7248 100644 --- a/DISTLIST +++ b/DISTLIST @@ -30,7 +30,6 @@ boot/i386/pc/diskboot.S boot/i386/pc/pxeboot.S boot/powerpc/ieee1275/cmain.c boot/powerpc/ieee1275/crt0.S -boot/powerpc/ieee1275/ieee1275.c commands/i386/pc/halt.c commands/i386/pc/reboot.c commands/ieee1275/halt.c @@ -50,7 +49,7 @@ conf/i386-pc.rmk conf/powerpc-ieee1275.mk conf/powerpc-ieee1275.rmk disk/i386/pc/biosdisk.c -disk/powerpc/ieee1275/ofdisk.c +disk/ieee1275/ofdisk.c disk/loopback.c font/manager.c fs/ext2.c @@ -81,7 +80,6 @@ include/grub/powerpc/ieee1275/util/biosdisk.h include/grub/powerpc/ieee1275/biosdisk.h include/grub/powerpc/ieee1275/console.h include/grub/powerpc/ieee1275/ieee1275.h -include/grub/powerpc/ieee1275/init.h include/grub/powerpc/ieee1275/kernel.h include/grub/powerpc/ieee1275/loader.h include/grub/powerpc/ieee1275/multiboot.h @@ -122,6 +120,7 @@ kern/i386/pc/init.c kern/i386/pc/lzo1x.S kern/i386/pc/startup.S kern/i386/dl.c +kern/ieee1275/of.c kern/powerpc/ieee1275/init.c kern/powerpc/ieee1275/openfw.c kern/powerpc/cache.S @@ -163,7 +162,7 @@ partmap/pc.c partmap/sun.c term/i386/pc/console.c term/i386/pc/vga.c -term/powerpc/ieee1275/ofconsole.c +term/ieee1275/ofconsole.c util/i386/pc/biosdisk.c util/i386/pc/getroot.c util/i386/pc/grub-install.in diff --git a/NEWS b/NEWS index d3f290ca0..2770f1d15 100644 --- a/NEWS +++ b/NEWS @@ -9,6 +9,8 @@ New in 1.90: PowerPC-based machines as well, if they use IEEE 1275 (Open Firmware). +* Too many changes to describe. Look at ChangeLog for more details. + New in 0.7: diff --git a/README b/README index b6543a3b7..a1a968aed 100644 --- a/README +++ b/README @@ -2,10 +2,6 @@ This is GRUB 2, the second version of the GRand Unified Bootloader. GRUB 2 is rewritten from scratch to make GNU GRUB cleaner, safer, more robust, more powerful, and more portable. -Because GRUB 2 was formerly developed under the project PUPA, there -remain still many places where PUPA is used instead of GRUB 2. So -suppose that PUPA is a synonym of GRUB 2 for now. - See the file NEWS for a description of recent changes to GRUB 2. See the file INSTALL for instructions on how to build and install the @@ -14,16 +10,5 @@ GRUB 2 data and program files. Please visit the official web page of GRUB 2, for more information. The URL is . - - -Because GRUB 2 is still in developmental stage, GRUB 2 is not for general -use (yet). For now, you can install GRUB 2 into a floppy by these -instructions: - -$ configure && make -$ ./grub-mkimage -v -d . -o core.img _chain ext2 -$ dd if=boot.img of=/dev/fd0 bs=512 count=1 -$ dd if=core.img of=/dev/fd0 bs=512 seek=1 - -It would be easier to use Bochs than a real -machine. +For now, there is not much documentation yet. Please look at the GRUB +Wiki for testing procedures. diff --git a/include/grub/powerpc/ieee1275/console.h b/include/grub/powerpc/ieee1275/console.h new file mode 100644 index 000000000..d9256412d --- /dev/null +++ b/include/grub/powerpc/ieee1275/console.h @@ -0,0 +1,59 @@ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 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. + */ + +#ifndef GRUB_CONSOLE_MACHINE_HEADER +#define GRUB_CONSOLE_MACHINE_HEADER 1 + +/* Define scan codes. */ +#define GRUB_CONSOLE_KEY_LEFT 0x4B00 +#define GRUB_CONSOLE_KEY_RIGHT 0x4D00 +#define GRUB_CONSOLE_KEY_UP 0x4800 +#define GRUB_CONSOLE_KEY_DOWN 0x5000 +#define GRUB_CONSOLE_KEY_IC 0x5200 +#define GRUB_CONSOLE_KEY_DC 0x5300 +#define GRUB_CONSOLE_KEY_BACKSPACE 0x0008 +#define GRUB_CONSOLE_KEY_HOME 0x4700 +#define GRUB_CONSOLE_KEY_END 0x4F00 +#define GRUB_CONSOLE_KEY_NPAGE 0x4900 +#define GRUB_CONSOLE_KEY_PPAGE 0x5100 + +#ifndef ASM_FILE + +#include +#include + +/* These are global to share code between C and asm. */ +extern grub_uint8_t grub_console_cur_color; +void grub_console_real_putchar (int c); +int EXPORT_FUNC(grub_console_checkkey) (void); +int EXPORT_FUNC(grub_console_getkey) (void); +grub_uint16_t grub_console_getxy (void); +void grub_console_gotoxy (grub_uint8_t x, grub_uint8_t y); +void grub_console_cls (void); +void grub_console_setcursor (int on); + +/* Initialize the console system. */ +void grub_console_init (void); + +/* Finish the console system. */ +void grub_console_fini (void); + +#endif + +#endif /* ! GRUB_CONSOLE_MACHINE_HEADER */ diff --git a/util/i386/pc/grub-install.in b/util/i386/pc/grub-install.in index 2d746f1f9..cdffc4be0 100644 --- a/util/i386/pc/grub-install.in +++ b/util/i386/pc/grub-install.in @@ -33,8 +33,10 @@ pkgdatadir=${datadir}/${PACKAGE_TARNAME}/${host_cpu}-${host_vendor} grub_setup=${sbindir}/grub-setup grub_mkimage=${sbindir}/grub-mkimage grub_mkdevicemap=${sbindir}/grub-mkdevicemap +grub_probefs=${sbindir}/grub-probefs rootdir= grub_prefix=/boot/grub +modules= install_device= no_floppy= @@ -51,11 +53,13 @@ Install GRUB on your drive. -h, --help print this message and exit -v, --version print the version information and exit + --modules=MODULES pre-load specified modules MODULES --root-directory=DIR install GRUB images under the directory DIR instead of the root directory --grub-setup=FILE use FILE as grub-setup --grub-mkimage=FILE use FILE as grub-mkimage --grub-mkdevicemap=FILE use FILE as grub-mkdevicemap + --grub-probefs=FILE use FILE as grub-probefs --no-floppy do not probe any floppy drive --recheck probe a device map even if it already exists @@ -78,6 +82,8 @@ for option in "$@"; do -v | --version) echo "grub-install (GNU GRUB ${PACKAGE_VERSION})" exit 0 ;; + --modules=*) + modules=`echo "$option" | sed 's/--modules=//'` ;; --root-directory=*) rootdir=`echo "$option" | sed 's/--root-directory=//'` ;; --grub-setup=*) @@ -85,7 +91,9 @@ for option in "$@"; do --grub-mkimage=*) grub_mkimage=`echo "$option" | sed 's/--grub-mkimage=//'` ;; --grub-mkdevicemap=*) - grub_setup=`echo "$option" | sed 's/--grub-mkdevicemap=//'` ;; + grub_mkdevicemap=`echo "$option" | sed 's/--grub-mkdevicemap=//'` ;; + --grub-probefs=*) + grub_probefs=`echo "$option" | sed 's/--grub-probefs=//'` ;; --no-floppy) no_floppy="--no-floppy" ;; --recheck) @@ -198,10 +206,17 @@ for file in ${pkgdatadir}/*.mod ${pkgdatadir}/*.lst ${pkgdatadir}/*.img; do cp -f $file ${grubdir} || exit 1 done -# Create the core image. -modules="_chain pc" -# XXX This must be dynamic. I'm still thinking how to implement this. -modules="$modules fat" +# Create the core image. First, auto-detect the filesystme module. +fs_module=`$grub_probefs --device-map=${device_map} ${grubdir}` +if test "x$fs_module" = x -a "x$modules" = x; then + echo "Auto-detection of a filesystem module failed." 1>&2 + echo "Please specify the module with the option `--modules' explicitly." 1>&2 + exit 1 +fi + +# Typically, _chain and pc are required. +modules="$modules $fs_module _chain pc" + $grub_mkimage --output=${grubdir}/core.img $modules || exit 1 # Now perform the installation.