bug-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GRUB 0.93 on Solaris 9/x86...


From: Matthias Pfützner - Sun Professional Services Germany - Frankfurt
Subject: GRUB 0.93 on Solaris 9/x86...
Date: Thu, 3 Apr 2003 17:42:06 +0200 (MEST)

Hi,

last night I started to compile GRUB (because the Solaris bootloader isn't
very beautiful and lilo does contain to many references to #include
<linux/...>) under Solaris 9 /x86. I had success, but I had to do some things,
to get there:

First: I can't compile with the native Sun Compiler (because the GRUB code too
heavily relies on GNU CC, GNU MAKE, GNU AS and GNU LD). On the Solaris
Companion CD, these tools are distributed, and will install under
/opt/sfw. But: all the gnu tools do get a "g" in front (which is no problem
for gcc and shouldn't be a problem for "gas", but as Linux most of the times
does NOT use the "g" (as in "as", which normally, as distributed by the FSF,
is standard "gas", and it because a problem with "objcopy" which is installed
as "gobjcopy" under Solaris (Solaris does not have an "objcopy", so I do not
understand that policy on the Software Companion CD... ;-(), I had to rename
some of the "standard solaris tools", to be able to use the gnu tools.

Who is the maintainer of the configure part of GRUB? Perhaps you can enhance
that part?

        mv /opt/sfw/bin/gobjcopy /opt/sfw/bin/objcopy

        mv /usr/ccs/bin/ld /usr/ccs/bin/ld_old
        mv /opt/sfw/bin/gld /opt/sfw/bin/ld

        mv /usr/ccs/bin/as /usr/ccs/bin/as_old
        mv /opt/sfw/bin/gas /opt/sfw/bin/as

        mv /usr/ccs/bin/make /usr/ccs/bin/make_old
        mv /opt/sfw/bin/gmake /opt/sfw/bin/make

        mv /opt/SUNWspro/bin/cc /opt/SUNWspro/bin/cc_old
        mv /opt/sfw/bin/gcc /opt/sfw/bin/cc

Then, as GRUB is partly linked dynamic (with shared libs!), I needed to add
the LDFLAGS (because the ncurses lib is under /opt/sfw/lib, as Solaris does
not have a ncurses lib, only curses, perhaps I could have used that...)

So, here is my call to configure:

        LDFLAGS='-L/opt/sfw/lib -R/opt/sfw/lib' ./configure --enable-ext2fs 
--enable-fat --enable-ffs --enable-minix --enable-reiserfs --enable-vstafs 
--enable-jfs --enable-xfs --enable--gunzip --enable-md5-password 
--enable-packet-retransmission


Then I had to patch file

        grub/asmstub.c

because Solaris is SVR4, and therefore does not have the call

        cfmakeraw()

A small search on google gave me:

==============================================================================
*** grub/asmstub.c.orig Tue Dec  3 00:20:45 2002
--- grub/asmstub.c      Wed Apr  2 22:42:23 2003
***************
*** 1131,1137 ****
--- 1131,1145 ----
      goto fail;
  
    /* Raw mode.  */
+ #if 0
    cfmakeraw (&termios);
+ #else
+   termios.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
+   termios.c_oflag &= ~OPOST;
+   termios.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
+   termios.c_cflag &= ~(CSIZE|PARENB);
+   termios.c_cflag |= CS8;
+ #endif
  
    /* Set the speed.  */
    termios_speed = get_termios_speed (speed);
==============================================================================

BTW: "__svr4__" and "sun" are defined... ;-)

Now, I can compile, and start grub.

Tonight I will try to see, whether I can really install that on the MBR and
get something to boot... (I assume, bsd ufs might work, but I doubt that...,
because of the slices in FDISK partitions...)

Then, there are problems with the way, Solaris does handle disks (IDE, SCSI,
Floppies) (I should have said: There are problems with the assumptions that
GRUB makes on the setting up of disk devices... ;-)). Solaris uses::

        /dev/rdiskette0

        /dev/dsk/c0d0p0 (fdisk partition)
        /dev/dsk/c0d0s0 (solaris partition in the FDISK Partition with Solaris
                         flag (IDE))
        /dev/dsk/c0t0d0s0 (solaris partition in the FDISK Partition with
                        Solaris flag (SCSI)) cntr 0, target 0 disk 0 slice 0

All the numbers are free! (but most start at 0, except the t0, which is the
SCSI id!) t*d0 is used most of the times, as I haven't seen any LUNS on disk
(wrong, big boxes, like EMC Symmetrix, IBm Shark will have something different
like 0 here!).

I've thoroughly scanned the handling in grub, and was amused to see an awful
lot of assumptions, that are not documented:

        ONLY 8 IDE disks
        ONLY 16 SCSI disk (all at the same controller!)

That's not the way, we should program things like that... ;-)

Stay tuned...

BTW: Anybody out there, who has grub in use "running from Solaris"? Not
running from Linux to boot Solaris... (Yet, there is no Linux on that
box... It's only Windows XP (because that came preinstalled) and Solaris9/x86
12/02

        Matthias
-- 
***********************************************************************
Matthias Pfützner
Project Engineer - Community-Leader High End Server & High Availability
Sun Professional Services
Sun Microsystems GmbH
Ampèrestraße 6                        Tel: (++49 6103) 752-394 (x65394)
63225 Langen                          Fax: (++49 6103) 752-167
Germany                               mailto:address@hidden
***********************************************************************




reply via email to

[Prev in Thread] Current Thread [Next in Thread]