diff --git a/AUTHORS b/AUTHORS index c67e46d4f..31d663a15 100644 --- a/AUTHORS +++ b/AUTHORS @@ -12,7 +12,10 @@ bugs, added symbolic link support to shared_src/fsys_ext2fs.c, and began the implementation of /sbin/grub. OKUJI Yoshinori contributed many bugfixes and new features, such as -working LBA support, and /sbin/grub support for configuration files. +working LBA support, /sbin/grub support for configuration files, the +script /sbin/grub-install, the utility /bin/mbchk, the new engine for +builtin commands, disk swapping support, keyboard configuration support, +network support, online help support, and command-line history support. Peter Astrand added support for a color menu. @@ -22,3 +25,6 @@ support for the grub shell, and configure process cleanups. Klaus Reichl wrote stage2/fsys_minix.c. Per Lundberg added graphics support to the Multiboot Specification. + +Jochen Hoenicke rewrote stage2/fsys_fat.c and wrote +stage2/fsys_reiserfs.c. diff --git a/ChangeLog b/ChangeLog index d6815440b..9e802b13b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,54 @@ +2000-04-15 Jochen Hoenicke + + * configure.in: Added --disable-reiserfs option. + * stage2/Makefile.am (libgrub_a_SOURCES): Added fsys_reiserfs.c. + (libgrub_a_CFLAGS): Added -DFSYS_REISERFS=1. + (pkgdata_DATA): Added reiserfs_stage1_5. + (noinst_PROGRAMS): Added reiserfs_stage1_5.exec. + (pre_stage2_exec_SOURCES): Added fsys_reiserfs.c. + (reiserfs_stage1_5_exec_SOURCES): New variable. + (reiserfs_stage1_5_exec_CFLAGS): Likewise. + (reiserfs_stage1_5_exec_LDFLAGS): Likewise. + * stage2/disk_io.c (fsys_table): Added reiserfs entry. + * stage2/filesys.h (FSYS_REISERFS_NUM): New macro. + [FSYS_REISERFS] (reiserfs_mount, reiserfs_read, reiserfs_dir, + reiserfs_embed): Declare external function from fsys_reiserfs.c. + [!NUM_FSYS] (NUM_FSYS): Added FSYS_REISERFS_NUM. + * stage2/builtins.c (setup_func): Added reiserfs to + STAGE1_5_MAP. + * stage2/shared.h (STAGE2_ID_REISERFS_STAGE1_5): New macro. + [STAGE1_5] [FSYS_REISERFS] (STAGE2_ID): Defined to + STAGE2_ID_REISERFS_STAGE1_5. + * stage2/fsys_reiserfs.c: New file. + + * stage2/builtins.c (embed_func): Call open_device instead of + open_partition. + Don't check if the filesystem is FFS. Instead, check if + FSYS_TABLE[FSYS_TYPE].EMBED_FUNC is NULL and, if not, call it. + (find_func): When CURRENT_SLICE is not a BSD slice, check if the + file can be opened, only if open_device succeeds. + * stage2/filesys.h (fsys_table): New entry embed_func. + (ffs_embed): Declared. + * stage2/disk_io.c (fsys_table): Fill embed_func entries. The + entry for FFS is ffs_embed and the others are NULLs. + * stage2/fsys_ffs.c (ffs_embed): New function. + + * stage2/shared.h (SECTOR_SHIFT): New constant with + (1 << SECTOR_SHIFT) == SECTOR_SIZE. + * stage2/shared.h [!NO_BLOCK_FILES] (block_files): No longer + extern. + * stage2/disk_io.c [!NO_BLOCK_FILES] (block_files): Likewise. + (rawread, devread): Use SECTOR_BITS. + (rawread): Fixed calculation of BUFADDR if an error occured. Set + it to BUFFERADDR + BYTE_OFFSET instead of BUFFERSEG + + BYTE_OFFSET. + (grub_close) [!NO_BLOCK_FILES]: If BLOCK_FILE is non-zero, + return immediately. + (grub_close): Don't check if FSYS_TYPE is NUM_FSYS. + * stage2/fsys_fat.c (log2): New inline function. + (fat_mount): Use log2 instead of calculating the size/bit by a + loop. + 2000-04-12 OKUJI Yoshinori * configure.in: Use AC_PATH_PROG instead of AC_PATH_TOOL, diff --git a/Makefile.in b/Makefile.in index 711ff5a8d..2612cf7f3 100644 --- a/Makefile.in +++ b/Makefile.in @@ -31,8 +31,6 @@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include -DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ diff --git a/NEWS b/NEWS index c6d3a2796..fa122233c 100644 --- a/NEWS +++ b/NEWS @@ -9,6 +9,7 @@ New in 0.5.95 - XXXX-XX-XX: "multiboot". Actually, this option will be necessary only if you want to load a NetBSD ELF kernel, because GRUB can automatically determine a kernel type in the other cases. +* ReiserFS support is added. New in 0.5.94 - 2000-03-06: * Stage 1 supports both the LBA mode and the CHS mode. diff --git a/configure b/configure index 5a86009ac..bce781531 100644 --- a/configure +++ b/configure @@ -32,6 +32,8 @@ ac_help="$ac_help --disable-ffs disable FFS support in Stage 2" ac_help="$ac_help --disable-minix disable Minix fs support in Stage 2" +ac_help="$ac_help + --disable-reiserfs disable ReiserFS support in Stage 2" ac_help="$ac_help --disable-gunzip disable decompression in Stage 2" ac_help="$ac_help @@ -645,7 +647,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:649: checking for a BSD compatible install" >&5 +echo "configure:651: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -698,7 +700,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:702: checking whether build environment is sane" >&5 +echo "configure:704: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile @@ -770,7 +772,7 @@ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:774: checking for $ac_word" >&5 +echo "configure:776: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -800,7 +802,7 @@ test -n "$AWK" && break done echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:804: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:806: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -935,7 +937,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:939: checking host system type" >&5 +echo "configure:941: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -969,7 +971,7 @@ esac # echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:973: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:975: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval="$enable_maintainer_mode" @@ -995,7 +997,7 @@ if test "x$enable_maintainer_mode" = xyes; then # Extract the first word of "perl", so it can be a program name with args. set dummy perl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:999: checking for $ac_word" >&5 +echo "configure:1001: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1042,7 +1044,7 @@ fi # echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:1046: checking build system type" >&5 +echo "configure:1048: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -1068,7 +1070,7 @@ fi # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1072: checking for $ac_word" >&5 +echo "configure:1074: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1100,7 +1102,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1104: checking for $ac_word" >&5 +echo "configure:1106: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1130,7 +1132,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1134: checking for $ac_word" >&5 +echo "configure:1136: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1181,7 +1183,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1185: checking for $ac_word" >&5 +echo "configure:1187: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1213,7 +1215,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1217: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1219: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1224,12 +1226,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 1228 "configure" +#line 1230 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1235: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1255,12 +1257,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1259: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1261: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1264: checking whether we are using GNU C" >&5 +echo "configure:1266: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1269,7 +1271,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1273: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1275: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1288,7 +1290,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1292: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1294: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1321,7 +1323,7 @@ fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1325: checking how to run the C preprocessor" >&5 +echo "configure:1327: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1336,13 +1338,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1346: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1348: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1353,13 +1355,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1363: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1365: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1370,13 +1372,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1380: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1382: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1409,7 +1411,7 @@ echo "$ac_t""$CPP" 1>&6 depcc="$CC" depcpp="$CPP" echo $ac_n "checking dependency style of $depcc""... $ac_c" 1>&6 -echo "configure:1413: checking dependency style of $depcc" >&5 +echo "configure:1415: checking dependency style of $depcc" >&5 if eval "test \"`echo '$''{'am_cv_CC_dependencies_compiler_type'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1465,7 +1467,7 @@ if test "x$with_binutils" != x; then # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1469: checking for $ac_word" >&5 +echo "configure:1471: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1502,7 +1504,7 @@ else # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1506: checking for $ac_word" >&5 +echo "configure:1508: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1542,7 +1544,7 @@ if test "x$ac_cv_prog_gcc" = xyes; then STAGE1_CFLAGS="-O2" GRUB_CFLAGS="-O2" echo $ac_n "checking whether optimization for size works""... $ac_c" 1>&6 -echo "configure:1546: checking whether optimization for size works" >&5 +echo "configure:1548: checking whether optimization for size works" >&5 if eval "test \"`echo '$''{'size_flag'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1550,14 +1552,14 @@ else saved_CFLAGS=$CFLAGS CFLAGS="-Os -g" cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:1563: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* size_flag=yes else @@ -1591,7 +1593,7 @@ if test "x$with_binutils" != x; then # Extract the first word of "objcopy", so it can be a program name with args. set dummy objcopy; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1595: checking for $ac_word" >&5 +echo "configure:1597: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_OBJCOPY'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1627,7 +1629,7 @@ else # Extract the first word of "${ac_tool_prefix}objcopy", so it can be a program name with args. set dummy ${ac_tool_prefix}objcopy; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1631: checking for $ac_word" >&5 +echo "configure:1633: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1661,7 +1663,7 @@ fi # Defined in acinclude.m4. echo $ac_n "checking if C symbols get an underscore after compilation""... $ac_c" 1>&6 -echo "configure:1665: checking if C symbols get an underscore after compilation" >&5 +echo "configure:1667: checking if C symbols get an underscore after compilation" >&5 if eval "test \"`echo '$''{'grub_cv_asm_uscore'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1674,7 +1676,7 @@ func (int *list) } EOF -if { ac_try='${CC-cc} ${CFLAGS} -S conftest.c'; { (eval echo configure:1678: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.s; then +if { ac_try='${CC-cc} ${CFLAGS} -S conftest.c'; { (eval echo configure:1680: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.s; then true else { echo "configure: error: ${CC-cc} failed to produce assembly code" 1>&2; exit 1; } @@ -1700,7 +1702,7 @@ fi echo "$ac_t""$grub_cv_asm_uscore" 1>&6 echo $ac_n "checking whether ${OBJCOPY} works for absolute addresses""... $ac_c" 1>&6 -echo "configure:1704: checking whether ${OBJCOPY} works for absolute addresses" >&5 +echo "configure:1706: checking whether ${OBJCOPY} works for absolute addresses" >&5 if eval "test \"`echo '$''{'grub_cv_prog_objcopy_absolute'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1712,21 +1714,21 @@ cmain (void) } EOF -if { (eval echo configure:1716: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.o; then : +if { (eval echo configure:1718: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.o; then : else { echo "configure: error: ${CC-cc} cannot compile C source code" 1>&2; exit 1; } fi grub_cv_prog_objcopy_absolute=yes for link_addr in 2000 8000 7C00; do - if { ac_try='${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec'; { (eval echo configure:1722: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then : + if { ac_try='${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec'; { (eval echo configure:1724: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then : else { echo "configure: error: ${CC-cc} cannot link at address $link_addr" 1>&2; exit 1; } fi - if { ac_try='${OBJCOPY-objcopy} -O binary conftest.exec conftest'; { (eval echo configure:1726: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then : + if { ac_try='${OBJCOPY-objcopy} -O binary conftest.exec conftest'; { (eval echo configure:1728: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then : else { echo "configure: error: ${OBJCOPY-objcopy} cannot create binary files" 1>&2; exit 1; } fi - if test ! -f conftest.old || { ac_try='cmp -s conftest.old conftest'; { (eval echo configure:1730: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + if test ! -f conftest.old || { ac_try='cmp -s conftest.old conftest'; { (eval echo configure:1732: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then mv -f conftest conftest.old else grub_cv_prog_objcopy_absolute=no @@ -1743,7 +1745,7 @@ fi echo $ac_n "checking whether addr32 must be in the same line as the instruction""... $ac_c" 1>&6 -echo "configure:1747: checking whether addr32 must be in the same line as the instruction" >&5 +echo "configure:1749: checking whether addr32 must be in the same line as the instruction" >&5 if eval "test \"`echo '$''{'grub_cv_asm_prefix_requirement'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1752,7 +1754,7 @@ else l1: addr32 movb %al, l1 EOF -if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'; { (eval echo configure:1756: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.o; then +if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'; { (eval echo configure:1758: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.o; then grub_cv_asm_prefix_requirement=yes else grub_cv_asm_prefix_requirement=no @@ -1784,7 +1786,7 @@ echo "$ac_t""$grub_cv_asm_prefix_requirement" 1>&6 echo $ac_n "checking for .code16 addr32 assembler support""... $ac_c" 1>&6 -echo "configure:1788: checking for .code16 addr32 assembler support" >&5 +echo "configure:1790: checking for .code16 addr32 assembler support" >&5 if eval "test \"`echo '$''{'grub_cv_asm_addr32'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1799,7 +1801,7 @@ else sed -e s/@ADDR32@/addr32\;/ < conftest.s.in > conftest.s fi -if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'; { (eval echo configure:1803: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.o; then +if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'; { (eval echo configure:1805: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.o; then grub_cv_asm_addr32=yes else grub_cv_asm_addr32=no @@ -1816,19 +1818,19 @@ fi echo $ac_n "checking if start is defined by the compiler""... $ac_c" 1>&6 -echo "configure:1820: checking if start is defined by the compiler" >&5 +echo "configure:1822: checking if start is defined by the compiler" >&5 if eval "test \"`echo '$''{'grub_cv_check_start_symbol'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* grub_cv_check_start_symbol=yes else @@ -1852,19 +1854,19 @@ echo "$ac_t""$grub_cv_check_start_symbol" 1>&6 echo $ac_n "checking if _start is defined by the compiler""... $ac_c" 1>&6 -echo "configure:1856: checking if _start is defined by the compiler" >&5 +echo "configure:1858: checking if _start is defined by the compiler" >&5 if eval "test \"`echo '$''{'grub_cv_check_uscore_start_symbol'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1870: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* grub_cv_check_uscore_start_symbol=yes else @@ -1893,19 +1895,19 @@ fi echo $ac_n "checking if __bss_start is defined by the compiler""... $ac_c" 1>&6 -echo "configure:1897: checking if __bss_start is defined by the compiler" >&5 +echo "configure:1899: checking if __bss_start is defined by the compiler" >&5 if eval "test \"`echo '$''{'grub_cv_check_uscore_uscore_bss_start_symbol'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* grub_cv_check_uscore_uscore_bss_start_symbol=yes else @@ -1929,19 +1931,19 @@ echo "$ac_t""$grub_cv_check_uscore_uscore_bss_start_symbol" 1>&6 echo $ac_n "checking if _edata is defined by the compiler""... $ac_c" 1>&6 -echo "configure:1933: checking if _edata is defined by the compiler" >&5 +echo "configure:1935: checking if _edata is defined by the compiler" >&5 if eval "test \"`echo '$''{'grub_cv_check_uscore_edata_symbol'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* grub_cv_check_uscore_edata_symbol=yes else @@ -1965,19 +1967,19 @@ echo "$ac_t""$grub_cv_check_uscore_edata_symbol" 1>&6 echo $ac_n "checking if edata is defined by the compiler""... $ac_c" 1>&6 -echo "configure:1969: checking if edata is defined by the compiler" >&5 +echo "configure:1971: checking if edata is defined by the compiler" >&5 if eval "test \"`echo '$''{'grub_cv_check_edata_symbol'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1983: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* grub_cv_check_edata_symbol=yes else @@ -2007,19 +2009,19 @@ fi echo $ac_n "checking if end is defined by the compiler""... $ac_c" 1>&6 -echo "configure:2011: checking if end is defined by the compiler" >&5 +echo "configure:2013: checking if end is defined by the compiler" >&5 if eval "test \"`echo '$''{'grub_cv_check_end_symbol'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* grub_cv_check_end_symbol=yes else @@ -2043,19 +2045,19 @@ echo "$ac_t""$grub_cv_check_end_symbol" 1>&6 echo $ac_n "checking if _end is defined by the compiler""... $ac_c" 1>&6 -echo "configure:2047: checking if _end is defined by the compiler" >&5 +echo "configure:2049: checking if _end is defined by the compiler" >&5 if eval "test \"`echo '$''{'grub_cv_check_uscore_end_symbol'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* grub_cv_check_uscore_end_symbol=yes else @@ -2093,7 +2095,7 @@ fi # Get the filename or the whole disk and open it. # Known to work on NetBSD. echo $ac_n "checking for opendisk in -lutil""... $ac_c" 1>&6 -echo "configure:2097: checking for opendisk in -lutil" >&5 +echo "configure:2099: checking for opendisk in -lutil" >&5 ac_lib_var=`echo util'_'opendisk | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2101,7 +2103,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lutil $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2140,7 +2142,7 @@ fi # Unless the user specify --without-curses, check for curses. if test "x$with_curses" != "xno"; then echo $ac_n "checking for wgetch in -lncurses""... $ac_c" 1>&6 -echo "configure:2144: checking for wgetch in -lncurses" >&5 +echo "configure:2146: checking for wgetch in -lncurses" >&5 ac_lib_var=`echo ncurses'_'wgetch | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2148,7 +2150,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lncurses $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2182,7 +2184,7 @@ EOF else echo "$ac_t""no" 1>&6 echo $ac_n "checking for wgetch in -lcurses""... $ac_c" 1>&6 -echo "configure:2186: checking for wgetch in -lcurses" >&5 +echo "configure:2188: checking for wgetch in -lcurses" >&5 ac_lib_var=`echo curses'_'wgetch | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2190,7 +2192,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lcurses $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2207: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2236,17 +2238,17 @@ for ac_hdr in string.h strings.h ncurses/curses.h ncurses.h curses.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2240: checking for $ac_hdr" >&5 +echo "configure:2242: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2250: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2335,6 +2337,17 @@ if test x"$enable_minix" != xno; then FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_MINIX=1" fi +# Check whether --enable-reiserfs or --disable-reiserfs was given. +if test "${enable_reiserfs+set}" = set; then + enableval="$enable_reiserfs" + : +fi + + +if test x"$enable_reiserfs" != xno; then + FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_REISERFS=1" +fi + # Check whether --enable-gunzip or --disable-gunzip was given. if test "${enable_gunzip+set}" = set; then diff --git a/configure.in b/configure.in index 5ad93bb9b..24c5b4d0e 100644 --- a/configure.in +++ b/configure.in @@ -201,6 +201,13 @@ if test x"$enable_minix" != xno; then FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_MINIX=1" fi +AC_ARG_ENABLE(reiserfs, + [ --disable-reiserfs disable ReiserFS support in Stage 2]) + +if test x"$enable_reiserfs" != xno; then + FSYS_CFLAGS="$FSYS_CFLAGS -DFSYS_REISERFS=1" +fi + dnl AC_ARG_ENABLE(tftp, dnl [ --enable-tftp enable TFTP support in Stage 2]) dnl diff --git a/debian/Makefile.in b/debian/Makefile.in index c2b8c6a54..f1c646a7b 100644 --- a/debian/Makefile.in +++ b/debian/Makefile.in @@ -31,8 +31,6 @@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include -DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ diff --git a/docs/Makefile.in b/docs/Makefile.in index 80ec9ea54..b15816905 100644 --- a/docs/Makefile.in +++ b/docs/Makefile.in @@ -31,8 +31,6 @@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include -DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ diff --git a/grub/Makefile.in b/grub/Makefile.in index 7608840ab..b8f03e4b2 100644 --- a/grub/Makefile.in +++ b/grub/Makefile.in @@ -31,8 +31,6 @@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include -DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ diff --git a/lib/Makefile.in b/lib/Makefile.in index 074c7bd38..a8e9918ea 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -31,8 +31,6 @@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include -DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ diff --git a/netboot/Makefile.in b/netboot/Makefile.in index 8b22e7bae..e573b97a6 100644 --- a/netboot/Makefile.in +++ b/netboot/Makefile.in @@ -31,8 +31,6 @@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include -DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ diff --git a/stage1/Makefile.in b/stage1/Makefile.in index b3125485e..ad6d4545b 100644 --- a/stage1/Makefile.in +++ b/stage1/Makefile.in @@ -30,8 +30,6 @@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include - -DESTDIR = pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ diff --git a/stage2/Makefile.am b/stage2/Makefile.am index 6a4b35dcc..09dc403f3 100644 --- a/stage2/Makefile.am +++ b/stage2/Makefile.am @@ -15,18 +15,19 @@ INCLUDES = -I$(top_srcdir)/stage1 noinst_LIBRARIES = libgrub.a libgrub_a_SOURCES = boot.c builtins.c common.c char_io.c cmdline.c \ disk_io.c gunzip.c fsys_ffs.c fsys_ext2fs.c fsys_fat.c \ - fsys_minix.c stage2.c + fsys_minix.c fsys_reiserfs.c stage2.c libgrub_a_CFLAGS = $(GRUB_CFLAGS) -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 \ - -DFSYS_FAT=1 -DFSYS_FFS=1 -DFSYS_MINIX=1 -fwritable-strings + -DFSYS_FAT=1 -DFSYS_FFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \ + -fwritable-strings # Stage 2 and Stage 1.5's. pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) pkgdata_DATA = stage2 e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 \ - minix_stage1_5 + minix_stage1_5 reiserfs_stage1_5 noinst_DATA = pre_stage2 start -noinst_PROGRAMS = pre_stage2.exec start.exec \ - e2fs_stage1_5.exec fat_stage1_5.exec \ - ffs_stage1_5.exec minix_stage1_5.exec +noinst_PROGRAMS = pre_stage2.exec start.exec e2fs_stage1_5.exec \ + fat_stage1_5.exec ffs_stage1_5.exec minix_stage1_5.exec \ + reiserfs_stage1_5.exec MOSTLYCLEANFILES = $(noinst_PROGRAMS) PRE_STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8200 @@ -44,7 +45,8 @@ STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 # For stage2 target. pre_stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c common.c \ char_io.c cmdline.c disk_io.c gunzip.c fsys_ext2fs.c \ - fsys_fat.c fsys_ffs.c fsys_minix.c smp-imps.c stage2.c + fsys_fat.c fsys_ffs.c fsys_minix.c fsys_reiserfs.c smp-imps.c \ + stage2.c pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK) @@ -103,6 +105,13 @@ minix_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \ -DNO_BLOCK_FILES=1 minix_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) +# For reiserfs_stage1_5 target. +reiserfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ + disk_io.c stage1_5.c fsys_reiserfs.c bios.c +reiserfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_REISERFS=1 \ + -DNO_BLOCK_FILES=1 +reiserfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) + # General rule for making a raw binary. %: %.exec $(OBJCOPY) -O binary $< $@ diff --git a/stage2/Makefile.in b/stage2/Makefile.in index a722d3c50..e2c3e843b 100644 --- a/stage2/Makefile.in +++ b/stage2/Makefile.in @@ -30,8 +30,6 @@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include - -DESTDIR = pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ @@ -106,21 +104,22 @@ INCLUDES = -I$(top_srcdir)/stage1 noinst_LIBRARIES = libgrub.a libgrub_a_SOURCES = boot.c builtins.c common.c char_io.c cmdline.c \ disk_io.c gunzip.c fsys_ffs.c fsys_ext2fs.c fsys_fat.c \ - fsys_minix.c stage2.c + fsys_minix.c fsys_reiserfs.c stage2.c libgrub_a_CFLAGS = $(GRUB_CFLAGS) -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 \ - -DFSYS_FAT=1 -DFSYS_FFS=1 -DFSYS_MINIX=1 -fwritable-strings + -DFSYS_FAT=1 -DFSYS_FFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \ + -fwritable-strings # Stage 2 and Stage 1.5's. pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor) pkgdata_DATA = stage2 e2fs_stage1_5 fat_stage1_5 ffs_stage1_5 \ - minix_stage1_5 + minix_stage1_5 reiserfs_stage1_5 noinst_DATA = pre_stage2 start -noinst_PROGRAMS = pre_stage2.exec start.exec \ - e2fs_stage1_5.exec fat_stage1_5.exec \ - ffs_stage1_5.exec minix_stage1_5.exec +noinst_PROGRAMS = pre_stage2.exec start.exec e2fs_stage1_5.exec \ + fat_stage1_5.exec ffs_stage1_5.exec minix_stage1_5.exec \ + reiserfs_stage1_5.exec MOSTLYCLEANFILES = $(noinst_PROGRAMS) @@ -136,7 +135,8 @@ STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 # For stage2 target. pre_stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c common.c \ char_io.c cmdline.c disk_io.c gunzip.c fsys_ext2fs.c \ - fsys_fat.c fsys_ffs.c fsys_minix.c smp-imps.c stage2.c + fsys_fat.c fsys_ffs.c fsys_minix.c fsys_reiserfs.c smp-imps.c \ + stage2.c pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS) pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK) @@ -186,6 +186,15 @@ minix_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_MINIX=1 \ -DNO_BLOCK_FILES=1 minix_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) + +# For reiserfs_stage1_5 target. +reiserfs_stage1_5_exec_SOURCES = start.S asm.S common.c char_io.c \ + disk_io.c stage1_5.c fsys_reiserfs.c bios.c + +reiserfs_stage1_5_exec_CFLAGS = $(STAGE1_5_COMPILE) -DFSYS_REISERFS=1 \ + -DNO_BLOCK_FILES=1 + +reiserfs_stage1_5_exec_LDFLAGS = $(STAGE1_5_LINK) subdir = stage2 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h @@ -203,7 +212,7 @@ am_libgrub_a_OBJECTS = libgrub_a-boot.o libgrub_a-builtins.o \ libgrub_a-common.o libgrub_a-char_io.o libgrub_a-cmdline.o \ libgrub_a-disk_io.o libgrub_a-gunzip.o libgrub_a-fsys_ffs.o \ libgrub_a-fsys_ext2fs.o libgrub_a-fsys_fat.o libgrub_a-fsys_minix.o \ -libgrub_a-stage2.o +libgrub_a-fsys_reiserfs.o libgrub_a-stage2.o libgrub_a_OBJECTS = $(am_libgrub_a_OBJECTS) AR = ar PROGRAMS = $(noinst_PROGRAMS) @@ -247,10 +256,19 @@ pre_stage2_exec-char_io.o pre_stage2_exec-cmdline.o \ pre_stage2_exec-disk_io.o pre_stage2_exec-gunzip.o \ pre_stage2_exec-fsys_ext2fs.o pre_stage2_exec-fsys_fat.o \ pre_stage2_exec-fsys_ffs.o pre_stage2_exec-fsys_minix.o \ -pre_stage2_exec-smp-imps.o pre_stage2_exec-stage2.o +pre_stage2_exec-fsys_reiserfs.o pre_stage2_exec-smp-imps.o \ +pre_stage2_exec-stage2.o pre_stage2_exec_OBJECTS = $(am_pre_stage2_exec_OBJECTS) @NETBOOT_SUPPORT_TRUE@pre_stage2_exec_DEPENDENCIES = \ @NETBOOT_SUPPORT_TRUE@../netboot/libdrivers.a +am_reiserfs_stage1_5_exec_OBJECTS = reiserfs_stage1_5_exec-start.o \ +reiserfs_stage1_5_exec-asm.o reiserfs_stage1_5_exec-common.o \ +reiserfs_stage1_5_exec-char_io.o reiserfs_stage1_5_exec-disk_io.o \ +reiserfs_stage1_5_exec-stage1_5.o \ +reiserfs_stage1_5_exec-fsys_reiserfs.o reiserfs_stage1_5_exec-bios.o +reiserfs_stage1_5_exec_OBJECTS = $(am_reiserfs_stage1_5_exec_OBJECTS) +reiserfs_stage1_5_exec_LDADD = $(LDADD) +reiserfs_stage1_5_exec_DEPENDENCIES = am_start_exec_OBJECTS = start_exec-start.o start_exec_OBJECTS = $(am_start_exec_OBJECTS) start_exec_LDADD = $(LDADD) @@ -264,7 +282,7 @@ LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ DIST_SOURCES = $(libgrub_a_SOURCES) $(e2fs_stage1_5_exec_SOURCES) \ $(fat_stage1_5_exec_SOURCES) $(ffs_stage1_5_exec_SOURCES) \ $(minix_stage1_5_exec_SOURCES) $(pre_stage2_exec_SOURCES) \ -$(start_exec_SOURCES) +$(reiserfs_stage1_5_exec_SOURCES) $(start_exec_SOURCES) DATA = $(noinst_DATA) $(pkgdata_DATA) HEADERS = $(noinst_HEADERS) @@ -296,8 +314,9 @@ $(DEPDIR)/libgrub_a-builtins.Po $(DEPDIR)/libgrub_a-char_io.Po \ $(DEPDIR)/libgrub_a-cmdline.Po $(DEPDIR)/libgrub_a-common.Po \ $(DEPDIR)/libgrub_a-disk_io.Po $(DEPDIR)/libgrub_a-fsys_ext2fs.Po \ $(DEPDIR)/libgrub_a-fsys_fat.Po $(DEPDIR)/libgrub_a-fsys_ffs.Po \ -$(DEPDIR)/libgrub_a-fsys_minix.Po $(DEPDIR)/libgrub_a-gunzip.Po \ -$(DEPDIR)/libgrub_a-stage2.Po $(DEPDIR)/minix_stage1_5_exec-asm.Po \ +$(DEPDIR)/libgrub_a-fsys_minix.Po $(DEPDIR)/libgrub_a-fsys_reiserfs.Po \ +$(DEPDIR)/libgrub_a-gunzip.Po $(DEPDIR)/libgrub_a-stage2.Po \ +$(DEPDIR)/minix_stage1_5_exec-asm.Po \ $(DEPDIR)/minix_stage1_5_exec-bios.Po \ $(DEPDIR)/minix_stage1_5_exec-char_io.Po \ $(DEPDIR)/minix_stage1_5_exec-common.Po \ @@ -315,17 +334,26 @@ $(DEPDIR)/pre_stage2_exec-fsys_ext2fs.Po \ $(DEPDIR)/pre_stage2_exec-fsys_fat.Po \ $(DEPDIR)/pre_stage2_exec-fsys_ffs.Po \ $(DEPDIR)/pre_stage2_exec-fsys_minix.Po \ +$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Po \ $(DEPDIR)/pre_stage2_exec-gunzip.Po \ $(DEPDIR)/pre_stage2_exec-smp-imps.Po \ -$(DEPDIR)/pre_stage2_exec-stage2.Po $(DEPDIR)/start_exec-start.Po +$(DEPDIR)/pre_stage2_exec-stage2.Po \ +$(DEPDIR)/reiserfs_stage1_5_exec-asm.Po \ +$(DEPDIR)/reiserfs_stage1_5_exec-bios.Po \ +$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Po \ +$(DEPDIR)/reiserfs_stage1_5_exec-common.Po \ +$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Po \ +$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Po \ +$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Po \ +$(DEPDIR)/reiserfs_stage1_5_exec-start.Po $(DEPDIR)/start_exec-start.Po DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in compile DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) GZIP_ENV = --best -SOURCES = $(libgrub_a_SOURCES) $(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) $(ffs_stage1_5_exec_SOURCES) $(minix_stage1_5_exec_SOURCES) $(pre_stage2_exec_SOURCES) $(start_exec_SOURCES) -OBJECTS = $(am_libgrub_a_OBJECTS) $(am_e2fs_stage1_5_exec_OBJECTS) $(am_fat_stage1_5_exec_OBJECTS) $(am_ffs_stage1_5_exec_OBJECTS) $(am_minix_stage1_5_exec_OBJECTS) $(am_pre_stage2_exec_OBJECTS) $(am_start_exec_OBJECTS) +SOURCES = $(libgrub_a_SOURCES) $(e2fs_stage1_5_exec_SOURCES) $(fat_stage1_5_exec_SOURCES) $(ffs_stage1_5_exec_SOURCES) $(minix_stage1_5_exec_SOURCES) $(pre_stage2_exec_SOURCES) $(reiserfs_stage1_5_exec_SOURCES) $(start_exec_SOURCES) +OBJECTS = $(am_libgrub_a_OBJECTS) $(am_e2fs_stage1_5_exec_OBJECTS) $(am_fat_stage1_5_exec_OBJECTS) $(am_ffs_stage1_5_exec_OBJECTS) $(am_minix_stage1_5_exec_OBJECTS) $(am_pre_stage2_exec_OBJECTS) $(am_reiserfs_stage1_5_exec_OBJECTS) $(am_start_exec_OBJECTS) all: all-redirect .SUFFIXES: @@ -367,6 +395,7 @@ libgrub_a-fsys_ffs.o: fsys_ffs.c libgrub_a-fsys_ext2fs.o: fsys_ext2fs.c libgrub_a-fsys_fat.o: fsys_fat.c libgrub_a-fsys_minix.o: fsys_minix.c +libgrub_a-fsys_reiserfs.o: fsys_reiserfs.c libgrub_a-stage2.o: stage2.c libgrub.a: $(libgrub_a_OBJECTS) $(libgrub_a_DEPENDENCIES) @@ -452,12 +481,27 @@ pre_stage2_exec-fsys_ext2fs.o: fsys_ext2fs.c pre_stage2_exec-fsys_fat.o: fsys_fat.c pre_stage2_exec-fsys_ffs.o: fsys_ffs.c pre_stage2_exec-fsys_minix.o: fsys_minix.c +pre_stage2_exec-fsys_reiserfs.o: fsys_reiserfs.c pre_stage2_exec-smp-imps.o: smp-imps.c pre_stage2_exec-stage2.o: stage2.c pre_stage2.exec: $(pre_stage2_exec_OBJECTS) $(pre_stage2_exec_DEPENDENCIES) @rm -f pre_stage2.exec $(LINK) $(pre_stage2_exec_LDFLAGS) $(pre_stage2_exec_OBJECTS) $(pre_stage2_exec_LDADD) $(LIBS) +reiserfs_stage1_5_exec-start.o: start.S + $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-start.o `test -f start.S || echo '$(srcdir)/'`start.S +reiserfs_stage1_5_exec-asm.o: asm.S + $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-asm.o `test -f asm.S || echo '$(srcdir)/'`asm.S +reiserfs_stage1_5_exec-common.o: common.c +reiserfs_stage1_5_exec-char_io.o: char_io.c +reiserfs_stage1_5_exec-disk_io.o: disk_io.c +reiserfs_stage1_5_exec-stage1_5.o: stage1_5.c +reiserfs_stage1_5_exec-fsys_reiserfs.o: fsys_reiserfs.c +reiserfs_stage1_5_exec-bios.o: bios.c + +reiserfs_stage1_5.exec: $(reiserfs_stage1_5_exec_OBJECTS) $(reiserfs_stage1_5_exec_DEPENDENCIES) + @rm -f reiserfs_stage1_5.exec + $(LINK) $(reiserfs_stage1_5_exec_LDFLAGS) $(reiserfs_stage1_5_exec_OBJECTS) $(reiserfs_stage1_5_exec_LDADD) $(LIBS) start_exec-start.o: start.S $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(start_exec_CFLAGS) $(CFLAGS) -c -o start_exec-start.o `test -f start.S || echo '$(srcdir)/'`start.S @@ -552,6 +596,7 @@ maintainer-clean-tags: @AMDEP@include $(DEPDIR)/libgrub_a-fsys_fat.Po @AMDEP@include $(DEPDIR)/libgrub_a-fsys_ffs.Po @AMDEP@include $(DEPDIR)/libgrub_a-fsys_minix.Po +@AMDEP@include $(DEPDIR)/libgrub_a-fsys_reiserfs.Po @AMDEP@include $(DEPDIR)/libgrub_a-gunzip.Po @AMDEP@include $(DEPDIR)/libgrub_a-stage2.Po @AMDEP@include $(DEPDIR)/minix_stage1_5_exec-asm.Po @@ -574,9 +619,18 @@ maintainer-clean-tags: @AMDEP@include $(DEPDIR)/pre_stage2_exec-fsys_fat.Po @AMDEP@include $(DEPDIR)/pre_stage2_exec-fsys_ffs.Po @AMDEP@include $(DEPDIR)/pre_stage2_exec-fsys_minix.Po +@AMDEP@include $(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Po @AMDEP@include $(DEPDIR)/pre_stage2_exec-gunzip.Po @AMDEP@include $(DEPDIR)/pre_stage2_exec-smp-imps.Po @AMDEP@include $(DEPDIR)/pre_stage2_exec-stage2.Po +@AMDEP@include $(DEPDIR)/reiserfs_stage1_5_exec-asm.Po +@AMDEP@include $(DEPDIR)/reiserfs_stage1_5_exec-bios.Po +@AMDEP@include $(DEPDIR)/reiserfs_stage1_5_exec-char_io.Po +@AMDEP@include $(DEPDIR)/reiserfs_stage1_5_exec-common.Po +@AMDEP@include $(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Po +@AMDEP@include $(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Po +@AMDEP@include $(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Po +@AMDEP@include $(DEPDIR)/reiserfs_stage1_5_exec-start.Po @AMDEP@include $(DEPDIR)/start_exec-start.Po mostlyclean-depend: @@ -687,6 +741,14 @@ libgrub_a-fsys_minix.o: fsys_minix.c @AMDEP@CCDEPMODE = @CCDEPMODE@ +libgrub_a-fsys_reiserfs.o: fsys_reiserfs.c +@AMDEP@ source='fsys_reiserfs.c' object='libgrub_a-fsys_reiserfs.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP@ depfile='$(DEPDIR)/libgrub_a-fsys_reiserfs.Po' tmpdepfile='$(DEPDIR)/libgrub_a-fsys_reiserfs.TPo' @AMDEPBACKSLASH@ +@AMDEP@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgrub_a_CFLAGS) $(CFLAGS) -c -o libgrub_a-fsys_reiserfs.o `test -f fsys_reiserfs.c || echo '$(srcdir)/'`fsys_reiserfs.c + +@AMDEP@CCDEPMODE = @CCDEPMODE@ + libgrub_a-stage2.o: stage2.c @AMDEP@ source='stage2.c' object='libgrub_a-stage2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP@ depfile='$(DEPDIR)/libgrub_a-stage2.Po' tmpdepfile='$(DEPDIR)/libgrub_a-stage2.TPo' @AMDEPBACKSLASH@ @@ -983,6 +1045,14 @@ pre_stage2_exec-fsys_minix.o: fsys_minix.c @AMDEP@CCDEPMODE = @CCDEPMODE@ +pre_stage2_exec-fsys_reiserfs.o: fsys_reiserfs.c +@AMDEP@ source='fsys_reiserfs.c' object='pre_stage2_exec-fsys_reiserfs.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP@ depfile='$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Po' tmpdepfile='$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.TPo' @AMDEPBACKSLASH@ +@AMDEP@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-fsys_reiserfs.o `test -f fsys_reiserfs.c || echo '$(srcdir)/'`fsys_reiserfs.c + +@AMDEP@CCDEPMODE = @CCDEPMODE@ + pre_stage2_exec-smp-imps.o: smp-imps.c @AMDEP@ source='smp-imps.c' object='pre_stage2_exec-smp-imps.o' libtool=no @AMDEPBACKSLASH@ @AMDEP@ depfile='$(DEPDIR)/pre_stage2_exec-smp-imps.Po' tmpdepfile='$(DEPDIR)/pre_stage2_exec-smp-imps.TPo' @AMDEPBACKSLASH@ @@ -996,6 +1066,54 @@ pre_stage2_exec-stage2.o: stage2.c @AMDEP@ depfile='$(DEPDIR)/pre_stage2_exec-stage2.Po' tmpdepfile='$(DEPDIR)/pre_stage2_exec-stage2.TPo' @AMDEPBACKSLASH@ @AMDEP@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-stage2.o `test -f stage2.c || echo '$(srcdir)/'`stage2.c + +@AMDEP@CCDEPMODE = @CCDEPMODE@ + +reiserfs_stage1_5_exec-common.o: common.c +@AMDEP@ source='common.c' object='reiserfs_stage1_5_exec-common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP@ depfile='$(DEPDIR)/reiserfs_stage1_5_exec-common.Po' tmpdepfile='$(DEPDIR)/reiserfs_stage1_5_exec-common.TPo' @AMDEPBACKSLASH@ +@AMDEP@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-common.o `test -f common.c || echo '$(srcdir)/'`common.c + +@AMDEP@CCDEPMODE = @CCDEPMODE@ + +reiserfs_stage1_5_exec-char_io.o: char_io.c +@AMDEP@ source='char_io.c' object='reiserfs_stage1_5_exec-char_io.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP@ depfile='$(DEPDIR)/reiserfs_stage1_5_exec-char_io.Po' tmpdepfile='$(DEPDIR)/reiserfs_stage1_5_exec-char_io.TPo' @AMDEPBACKSLASH@ +@AMDEP@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-char_io.o `test -f char_io.c || echo '$(srcdir)/'`char_io.c + +@AMDEP@CCDEPMODE = @CCDEPMODE@ + +reiserfs_stage1_5_exec-disk_io.o: disk_io.c +@AMDEP@ source='disk_io.c' object='reiserfs_stage1_5_exec-disk_io.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP@ depfile='$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.Po' tmpdepfile='$(DEPDIR)/reiserfs_stage1_5_exec-disk_io.TPo' @AMDEPBACKSLASH@ +@AMDEP@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-disk_io.o `test -f disk_io.c || echo '$(srcdir)/'`disk_io.c + +@AMDEP@CCDEPMODE = @CCDEPMODE@ + +reiserfs_stage1_5_exec-stage1_5.o: stage1_5.c +@AMDEP@ source='stage1_5.c' object='reiserfs_stage1_5_exec-stage1_5.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP@ depfile='$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.Po' tmpdepfile='$(DEPDIR)/reiserfs_stage1_5_exec-stage1_5.TPo' @AMDEPBACKSLASH@ +@AMDEP@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-stage1_5.o `test -f stage1_5.c || echo '$(srcdir)/'`stage1_5.c + +@AMDEP@CCDEPMODE = @CCDEPMODE@ + +reiserfs_stage1_5_exec-fsys_reiserfs.o: fsys_reiserfs.c +@AMDEP@ source='fsys_reiserfs.c' object='reiserfs_stage1_5_exec-fsys_reiserfs.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP@ depfile='$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.Po' tmpdepfile='$(DEPDIR)/reiserfs_stage1_5_exec-fsys_reiserfs.TPo' @AMDEPBACKSLASH@ +@AMDEP@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-fsys_reiserfs.o `test -f fsys_reiserfs.c || echo '$(srcdir)/'`fsys_reiserfs.c + +@AMDEP@CCDEPMODE = @CCDEPMODE@ + +reiserfs_stage1_5_exec-bios.o: bios.c +@AMDEP@ source='bios.c' object='reiserfs_stage1_5_exec-bios.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP@ depfile='$(DEPDIR)/reiserfs_stage1_5_exec-bios.Po' tmpdepfile='$(DEPDIR)/reiserfs_stage1_5_exec-bios.TPo' @AMDEPBACKSLASH@ +@AMDEP@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(reiserfs_stage1_5_exec_CFLAGS) $(CFLAGS) -c -o reiserfs_stage1_5_exec-bios.o `test -f bios.c || echo '$(srcdir)/'`bios.c check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; \ srcdir=$(srcdir); export srcdir; \ diff --git a/stage2/builtins.c b/stage2/builtins.c index 52baabcbf..e79bdc3fb 100644 --- a/stage2/builtins.c +++ b/stage2/builtins.c @@ -831,7 +831,7 @@ embed_func (char *arg, int flags) if (errnum) return 1; - + size = (len + SECTOR_SIZE - 1) / SECTOR_SIZE; /* Get the device where the Stage 1.5 will be embedded. */ @@ -874,35 +874,22 @@ embed_func (char *arg, int flags) } else { - /* Embed it in the bootloader block in the FFS. */ - + /* Embed it in the bootloader block in the filesystem. */ + int start_sector; + /* Open the partition. */ - if (! open_partition ()) + if (! open_device ()) return 1; - /* Check if the current slice is a BSD slice. */ - if (grub_strcmp (fsys_table[fsys_type].name, "ffs") != 0) + /* Check if the current slice supports embedding. */ + if (fsys_table[fsys_type].embed_func == 0 + || ! fsys_table[fsys_type].embed_func (&start_sector, size)) { errnum = ERR_DEV_VALUES; return 1; } - /* Sanity check. */ - if (size > 14) - { - errnum = ERR_BAD_VERSION; - return 1; - } - - /* XXX: I don't know this is really correct. Someone who is - familiar with BSD should check for this. */ - sector = part_start + 1; -#if 1 - /* FIXME: Disable the embedding in FFS until someone checks if - the code above is correct. */ - errnum = ERR_DEV_VALUES; - return 1; -#endif + sector = part_start + start_sector; } /* Clear the cache. */ @@ -1003,7 +990,18 @@ find_func (char *arg, int flags) { errnum = ERR_NONE; current_partition = (slice << 16) | 0xFFFF; - if (! open_device () && IS_PC_SLICE_TYPE_BSD (current_slice)) + if (open_device ()) + { + errnum = ERR_NONE; + saved_drive = current_drive; + saved_partition = current_partition; + if (grub_open (filename)) + { + grub_close (); + grub_printf (" (hd%d,%d)", drive - 0x80, slice); + } + } + else if (IS_PC_SLICE_TYPE_BSD (current_slice)) { unsigned long part; @@ -1024,17 +1022,6 @@ find_func (char *arg, int flags) } } } - else - { - errnum = ERR_NONE; - saved_drive = current_drive; - saved_partition = current_partition; - if (grub_open (filename)) - { - grub_close (); - grub_printf (" (hd%d,%d)", drive - 0x80, slice); - } - } } } @@ -2587,7 +2574,8 @@ setup_func (char *arg, int flags) {"ext2fs", "/boot/grub/e2fs_stage1_5"}, {"ffs", "/boot/grub/ffs_stage1_5"}, {"fat", "/boot/grub/fat_stage1_5"}, - {"minix", "/boot/grub/minix_stage1_5"} + {"minix", "/boot/grub/minix_stage1_5"}, + {"reiserfs", "/boot/grub/reiserfs_stage1_5"} }; /* Initialize some strings. */ @@ -2689,10 +2677,10 @@ setup_func (char *arg, int flags) else goto fail; } - else if (grub_strcmp (fsys, "ffs") == 0) + else if (fsys_table[fsys_type].embed_func != 0) { /* We can embed the Stage 1.5 into the "bootloader" - area in the FFS partition. */ + area in the FFS or ReiserFS partition. */ /* FIXME */ } diff --git a/stage2/disk_io.c b/stage2/disk_io.c index ed6914ed2..ae543e0c1 100644 --- a/stage2/disk_io.c +++ b/stage2/disk_io.c @@ -42,23 +42,26 @@ struct fsys_entry fsys_table[NUM_FSYS + 1] = { /* TFTP should come first because others don't handle net device. */ # ifdef FSYS_TFTP - {"tftp", tftp_mount, tftp_read, tftp_dir, tftp_close}, + {"tftp", tftp_mount, tftp_read, tftp_dir, tftp_close, 0}, # endif # ifdef FSYS_FAT - {"fat", fat_mount, fat_read, fat_dir, 0}, + {"fat", fat_mount, fat_read, fat_dir, 0, 0}, # endif # ifdef FSYS_EXT2FS - {"ext2fs", ext2fs_mount, ext2fs_read, ext2fs_dir, 0}, + {"ext2fs", ext2fs_mount, ext2fs_read, ext2fs_dir, 0, 0}, # endif # ifdef FSYS_MINIX - {"minix", minix_mount, minix_read, minix_dir, 0}, + {"minix", minix_mount, minix_read, minix_dir, 0, 0}, +# endif +# ifdef FSYS_REISERFS + {"reiserfs", reiserfs_mount, reiserfs_read, reiserfs_dir, 0, reiserfs_embed}, # endif /* XX FFS should come last as it's superblock is commonly crossing tracks on floppies from track 1 to 2, while others only use 1. */ # ifdef FSYS_FFS - {"ffs", ffs_mount, ffs_read, ffs_dir, 0}, + {"ffs", ffs_mount, ffs_read, ffs_dir, 0, ffs_embed}, # endif - {0, 0, 0, 0, 0} + {0, 0, 0, 0, 0, 0} }; @@ -85,7 +88,7 @@ int bsd_evil_hack; /* filesystem type */ int fsys_type = NUM_FSYS; #ifndef NO_BLOCK_FILES -int block_file = 0; +static int block_file = 0; #endif /* NO_BLOCK_FILES */ /* these are the translated numbers for the open partition */ @@ -107,7 +110,7 @@ int filemax; int rawread (int drive, int sector, int byte_offset, int byte_len, char *buf) { - int slen = (byte_offset + byte_len + SECTOR_SIZE - 1) / SECTOR_SIZE; + int slen = (byte_offset + byte_len + SECTOR_SIZE - 1) >> SECTOR_BITS; if (byte_len <= 0) return 1; @@ -172,7 +175,7 @@ rawread (int drive, int sector, int byte_offset, int byte_len, char *buf) sector, slen, BUFFERSEG)) errnum = ERR_READ; - bufaddr = BUFFERSEG + byte_offset; + bufaddr = BUFFERADDR + byte_offset; } } else @@ -216,7 +219,8 @@ devread (int sector, int byte_offset, int byte_len, char *buf) * Check partition boundaries */ if (sector < 0 - || (sector + ((byte_offset + byte_len - 1) / SECTOR_SIZE)) >= part_length) + || ((sector + ((byte_offset + byte_len - 1) >> SECTOR_BITS)) + >= part_length)) { errnum = ERR_OUTSIDE_PART; return 0; @@ -225,11 +229,8 @@ devread (int sector, int byte_offset, int byte_len, char *buf) /* * Get the read to the beginning of a partition. */ - while (byte_offset >= SECTOR_SIZE) - { - byte_offset -= SECTOR_SIZE; - sector++; - } + sector += byte_offset >> SECTOR_BITS; + byte_offset &= SECTOR_SIZE - 1; #if !defined(STAGE1_5) if (disk_read_hook && debug) @@ -1502,11 +1503,11 @@ dir (char *dirname) void grub_close (void) { - if (fsys_type == NUM_FSYS) +#ifndef NO_BLOCK_FILES + if (block_file) return; +#endif /* NO_BLOCK_FILES */ - if (fsys_table[fsys_type].close_func == 0) - return; - - (*(fsys_table[fsys_type].close_func)) (); + if (fsys_table[fsys_type].close_func != 0) + (*(fsys_table[fsys_type].close_func)) (); } diff --git a/stage2/filesys.h b/stage2/filesys.h index 282b3863f..324039985 100644 --- a/stage2/filesys.h +++ b/stage2/filesys.h @@ -2,7 +2,7 @@ /* * GRUB -- GRand Unified Bootloader * Copyright (C) 1996 Erich Boleyn - * Copyright (C) 1999 Free Software Foundation, Inc. + * Copyright (C) 1999, 2000 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 @@ -26,6 +26,7 @@ int ffs_mount (void); int ffs_read (char *buf, int len); int ffs_dir (char *dirname); +int ffs_embed (int *start_sector, int needed_sectors); #else #define FSYS_FFS_NUM 0 #endif @@ -57,6 +58,16 @@ int minix_dir (char *dirname); #define FSYS_MINIX_NUM 0 #endif +#ifdef FSYS_REISERFS +#define FSYS_REISERFS_NUM 1 +int reiserfs_mount (void); +int reiserfs_read (char *buf, int len); +int reiserfs_dir (char *dirname); +int reiserfs_embed (int *start_sector, int needed_sectors); +#else +#define FSYS_REISERFS_NUM 0 +#endif + #ifdef FSYS_TFTP #define FSYS_TFTP_NUM 1 int tftp_mount (void); @@ -70,7 +81,7 @@ void tftp_close (void); #ifndef NUM_FSYS #define NUM_FSYS \ (FSYS_FFS_NUM + FSYS_FAT_NUM + FSYS_EXT2FS_NUM + FSYS_MINIX_NUM \ - + FSYS_TFTP_NUM) + + FSYS_REISERFS_NUM + FSYS_TFTP_NUM) #endif /* defines for the block filesystem info area */ @@ -94,6 +105,7 @@ struct fsys_entry int (*read_func) (char *buf, int len); int (*dir_func) (char *dirname); void (*close_func) (void); + int (*embed_func) (int *start_sector, int needed_sectors); }; #ifdef STAGE1_5 diff --git a/stage2/fsys_fat.c b/stage2/fsys_fat.c index 8aecaf298..f672e2a19 100644 --- a/stage2/fsys_fat.c +++ b/stage2/fsys_fat.c @@ -54,11 +54,19 @@ struct fat_superblock #define FAT_CACHE_SIZE 2048 +static __inline__ unsigned long +log2 (unsigned long word) +{ + __asm__ ("bsfl %1,%0" + : "=r" (word) + : "r" (word)); + return word; +} + int fat_mount (void) { struct fat_bpb bpb; - int i; /* Check partition type for harddisk */ if (((current_drive & 0x80) || (current_slice != 0)) @@ -75,12 +83,9 @@ fat_mount (void) if (bpb.sects_per_clust == 0) return 0; - for (i = 0; (1 << i) < FAT_CVT_U16 (bpb.bytes_per_sect); i++) - ; - FAT_SUPER->sectsize_bits = i; - for (i = 0; (1 << i) < bpb.sects_per_clust; i++) - ; - FAT_SUPER->clustsize_bits = FAT_SUPER->sectsize_bits + i; + FAT_SUPER->sectsize_bits = log2 (FAT_CVT_U16 (bpb.bytes_per_sect)); + FAT_SUPER->clustsize_bits + = FAT_SUPER->sectsize_bits + log2 (bpb.sects_per_clust); /* Fill in info about super block */ FAT_SUPER->num_sectors = FAT_CVT_U16 (bpb.short_sectors) diff --git a/stage2/fsys_ffs.c b/stage2/fsys_ffs.c index 29408bb51..0333e9f87 100644 --- a/stage2/fsys_ffs.c +++ b/stage2/fsys_ffs.c @@ -1,6 +1,7 @@ /* * GRUB -- GRand Unified Bootloader - * Copyright (C) 1996 Erich Boleyn + * Copyright (C) 1996 Erich Boleyn + * Copyright (C) 2000 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 @@ -293,4 +294,22 @@ loop: goto loop; } +int +ffs_embed (int *start_sector, int needed_sectors) +{ + /* XXX: I don't know if this is really correct. Someone who is + familiar with BSD should check for this. */ + if (needed_sectors > 14) + return 0; + + *start_sector = 1; +#if 1 + /* FIXME: Disable the embedding in FFS until someone checks if + the code above is correct. */ + return 0; +#else + return 1; +#endif +} + #endif /* FSYS_FFS */ diff --git a/stage2/shared.h b/stage2/shared.h index e5b3dcaaa..16cc33fa6 100644 --- a/stage2/shared.h +++ b/stage2/shared.h @@ -169,8 +169,9 @@ extern char *grub_scratch_mem; * General disk stuff */ -#define SECTOR_SIZE 0x200 -#define BIOS_FLAG_FIXED_DISK 0x80 +#define SECTOR_SIZE 0x200 +#define SECTOR_BITS 9 +#define BIOS_FLAG_FIXED_DISK 0x80 #define BOOTSEC_LOCATION RAW_ADDR (0x7C00) #define BOOTSEC_SIGNATURE 0xAA55 @@ -202,6 +203,7 @@ extern char *grub_scratch_mem; #define STAGE2_ID_E2FS_STAGE1_5 2 #define STAGE2_ID_FAT_STAGE1_5 3 #define STAGE2_ID_MINIX_STAGE1_5 4 +#define STAGE2_ID_REISERFS_STAGE1_5 5 #ifndef STAGE1_5 # define STAGE2_ID STAGE2_ID_STAGE2 @@ -214,6 +216,8 @@ extern char *grub_scratch_mem; # define STAGE2_ID STAGE2_ID_FAT_STAGE1_5 # elif defined(FSYS_MINIX) # define STAGE2_ID STAGE2_ID_MINIX_STAGE1_5 +# elif defined(FSYS_REISERFS) +# define STAGE2_ID STAGE2_ID_REISERFS_STAGE1_5 # else # error "unknown Stage 2" # endif @@ -477,10 +481,6 @@ extern unsigned long current_partition; extern int fsys_type; -#ifndef NO_BLOCK_FILES -extern int block_file; -#endif /* NO_BLOCK_FILES */ - /* The information for a disk geometry. The CHS information is only for DOS/Partition table compatibility, and the real number of sectors is stored in TOTAL_SECTORS. */ diff --git a/util/Makefile.in b/util/Makefile.in index a3c2ff181..a10542082 100644 --- a/util/Makefile.in +++ b/util/Makefile.in @@ -31,8 +31,6 @@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include -DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@