grub-devel
[Top][All Lists]
Advanced

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

RE: Re: Getting Started


From: Steve Burtchin
Subject: RE: Re: Getting Started
Date: Sun, 8 Apr 2012 03:50:18 -0400

On Sat, 07 Apr 2012 13:17:15 +0200 Vladimir '?-coder/phcoder' Serbinenko wrote:
------------------------------------------------------------------------------------
On 07.04.2012 11:54, Steve Burtchin wrote:
> GRUB Developers,

> Please help me get started developing GRUB2.  I would like to add some
> additional functionality to the 'parttool' command (functionally
> similar to the code changes I proposed for GRUB-Legacy).
Could you give more details?
------------------------------------------------------------------------------------
 
I had hoped I could answer the details question with a URL link, but I cannot find that bug report now.  If there is an archive of the GRUB Legacy bug reports, please provide a link.  The bug report was #19410 on the Savannah bug tracking system.  See the attachment "GNU GRUB - Bugs bug #19410, Unable to Create Logical Partition___ [Savannah].mht" (this file too seems to be somewhat broken).  http://old.nabble.com/How-To-Write-Extended-Partition-Tables-from-GRUB--to7236236.html is my original discussion with adrian15 leading up to this modification (it is also slightly broken).  The attachment "How To Write Extended Partition Tables from GRUB.doc" contains the missing graphics AFAIK.  The other attachments are the broken attachments of the bug report.  Two of my diff files are also here for reference.
 
Please consider the following in an EXTREMELY DRAFT state!  The syntax of the new functionality MIGHT look similar to (no relationship between these three examples should be implied):
 
parttool (hd0,3)  edittable=p 0xBF  1023  0  1  1023  239  63  148372560   40960080
parttool (hd0,8)  edittable=c 0x07  1023  1  1  1023  239  63         63    6153777
parttool (hd0,8)  edittable=n 0x05  1023  0  1  1023  239  63   16117920    5337360
 
In addition to the new features described in bug report #19410 I think I also intended to add some functionality of the Legacy 'partnew' that may be missing in GRUB2 'parttool', but this is speculation because I have not looked closely at this for a couple months.

On the topic of understanding the code, could you briefly explain how commands from "menu.cfg" (or the command line) are read/interpreted?  Which function begins the process of reading the commands?  Which line of the code or variable or function determines what command (eg. 'parttool') has been requested?  Anything else I should know?
 
Regards.
Steve Burtchin
--- Begin Message --- Subject: GNU GRUB - Bugs: bug #19410, Unable to Create Logical Partition... [Savannah] Date: Sat, 31 Mar 2007 16:26:14 -0500 

bugGNU GRUB - Bugs: bug #19410, Unable to Create Logical Partition...

Show feedback again

bug #19410: Unable to Create Logical Partition with "partnew" Command

Submitted by:  Steve Burtchin <sburtchin>
Submitted on:  Sunday 03/25/2007 at 09:27  
 
Category:  Disk & Partition Severity:  Major
Priority:  5 - Normal Item Group:  None
Status:  None Privacy:  Public
Assigned to:  None Originator Name:  Steve Burtchin
Open/Closed:  Open Release:  0.97
Reproducibility:  Every Time Planned Release: 

Add a New Comment (Rich MarkupRich Markup):
   

 

Sunday 03/25/2007 at 09:27, original submission:

First: The problem described in this bug report has been solved (by creating the "eptedit" function) and thoroughly tested by me on my Compaq Deskpro EN. For reference see How To Write Extended Partition Tables from GRUB?.

Second: I would have thought this to be a feature request, but . . . from the GRUB Legacy Patch Submission Policy:

"If your system is technically impossible to be booted only with existing features and your patch addresses that problem, it is a bugfix."

So maybe this is a bugfix - ??? - I'll let someone else decide that.

Third: If GRUB Legacy maintainers want to classify this as a new feature, I will gladly volunteer my time to become a maintainer for the "eptedit" function.

Why I Need to Create Logical Partitions

The attached files "PriMastr.png" and "SecMastr.png" show the partition layouts for the three HDD's used in my flexible multiboot system. What is obvious is that there are much more than four Primary partitions defined for each of the internal HDD's. The highlighted Primary partitions are standard. The others can be swapped for the standard ones to address specific boot situations. Note also, that this multiboot includes at least two 'non-LBA aware' operating systems, and that the standard Extended partition continues past the 1024th cylinder. The Extended partition on the second HDD also contains three Logical partitions dedicated as 'scratchpads' for sharing data between all operating systems, so it is essential that these three Logical partitions are visible to all of them. The only way this is possible without risking the potential for data corruption, is to define a smaller Extended partition for the 'non-LBA aware' operating systems. I also want to have the DOS5 and Win3.1 partitions contained within the Extended partition, rather than defined as Primary partitions, because this makes it much more convenient for making image backups (as opposed to creating a custom boot configuration to image each OS partition).

How It Will Be Used (Mostly, but see "Other Potential Uses")

The attached file "mbr2std.png" shows what the MPT of the second HDD should look like when booting most of the 'LBA aware' OS's. In this situation, the file "b15_std.png" shows the EPT that should be found at LBA 7680960.

The attached file "mbr2dos5.png" shows what the MPT of the second HDD should look like when booting MS-DOS 5.0, and the file "mbr2Win3.png" shows what the MPT of the second HDD should look like when booting Windows 3.1. In these situations, the file "b15_old.png" shows the EPT that should be found at LBA 7680960. Note that the DOS5 and Windows 3.1 partitions are defined as both Primary and Logical partitions in this configuration. I could have redefined the start of the Extended partition for these two OS's, but the documentation was made simpler by just hiding the Logical definitions (this seems to have no ill effects).

The most significance differences between these two situations is the size of the Extended partition, and the EPT at LBA 7680960. The "partnew" command is used to fix the MPT. The "eptedit" command is used to zero out the second slot of the EPT at LBA 7680960 for booting MS-DOS 5.0 and Windows 3.1, and to put the data back into this EPT for booting the 'LBA aware' OS's. See the file "MenuItms.txt" for excerpts from my "menu.lst".

You may be wondering why the "geometry" function is called within my "menu.lst" file. In the process of testing this new function, I discovered another bug: GRUB apparently forgets at least some of the geometry information. When the "eptedit" function performs validation checks on some of the input parameters, a check against invalid information in memory results in "Error 18". Issuing the "geometry" command refreshes the geometry information for the disk, and avoids the error. I could easily avoid the error by not performing input data validation, but I don't like hiding problems.

The Patch

The syntax is like this:

Most parameters are easily calculated or obtained with freeware utilities. "SLOT" can be "C" (current) or "N" (next). "PART" and "TYPE" are as for the "parttype" function.

Most of the new "eptedit" function is based on code borrowed from the "parttype" and "partnew" functions. See the attached "builtins.c" file.

Other Potential Uses for "eptedit"

  1. "eptedit" can be used to avoid the DOS/Win9x "last logical partition" bug. These os's must see the last logical partition as FAT/FAT16/FAT32 or data corruption could result. If you wish to format the last logical partition as something else, then the same solution can be applied such that DOS/Win9x see a shorter extended partition ending in one of these recognized file systems.
  1. If you want to thoroughly hide a Logical partition (rather than just changing the filesystem type), you could use "eptedit" to edit the 'Next' slot of the previous EPT to jump past it. Then it would appear to be unpartitioned space within the Extended partition.
  1. I have found that some Microsoft operating systems can get confused in certain situations when there are too many Logical partitions. By jumping over one or more Logical partitions as explained previously, the number can be effectively reduced. I had to do this with manual disk edits the last time I migrated to new HDD's. I could have saved a lot of tedious work if I had had "eptedit" at that time.
  1. Many older operating systems cannot see past 128GiB. Having an Extended partition stradling this limit can lead to filesystem corruption with these older OS's. "eptedit" could be used for them in the same way that I use it now to prevent DOS5 and Win3.1 from seeing past the 1024th cylinder.
  1. Another situation deals with data recovery. If the partition tables happen to become corrupted, fixing these errors can be the first and best step to data recovery. There are tools for doing this, but a much quicker approach would be to add a "Restore All Partition Tables" selection to the GRUB menu. This is easily scripted in "menu.lst" using a combination of "partnew" and "eptedit" commands.
  1. I have not tested this yet, but I think it should be possible to parition a HDD from a bootable GRUB floppy or CD by using a combination of "partnew" and "eptedit" commands - just by pressing <Enter>! The required "menu.lst" is very easy to create (see Re: How To Write Extended Partition Tables from GRUB? - sburtchin Feb 1, 2007; 11:51pm). I will post back my test results.

What Next?

I will agree to maintain the "eptedit" function if that is necessary.

I should write the information for the GRUB Manual. What file do I edit for that?

Can someone help me get started writing ChangeLog? Is there a template or standard format I have to follow?

What other files do I need to attach to this bug report?

What do I have to do to get the "eptedit" function into GRUB 2. Is it stable enough yet that I can test it on my working computer? How do I get involved with GRUB 2 development?

Steve Burtchin <sburtchin>

 

(Note: upload size limit is set to 512 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

Attached Files
file #12291:  builtins.c added by sburtchin (122kB - text/plain)
file #12287:  mbr2dos5.png added by sburtchin (4kB - image/x-png)
file #12288:  mbr2Win3.png added by sburtchin (4kB - image/x-png)
file #12289:  b15_old.png added by sburtchin (3kB - image/x-png)
file #12290:  MenuItms.txt added by sburtchin (2kB - text/plain)
file #12283:  PriMastr.png added by sburtchin (22kB - image/x-png)
file #12284:  mbr2std.png added by sburtchin (4kB - image/x-png)
file #12285:  SecMastr.png added by sburtchin (25kB - image/x-png)
file #12286:  b15_std.png added by sburtchin (3kB - image/x-png)

 

Depends on the following items: None found

Items that depend on this one: None found

 

(Note: for Savannah users, you can use their login name rather than their email addresses.)

Add Email Addresses (comma as separator):
   
Comment:
   

Carbon-Copy List
  • DeleteSteve Burtchin <sburtchin> added by sburtchin (Submitted the item)
  • Deleteadrian15 <adrian15> added by sburtchin
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independantly of the priority of the item set by tracker managers.

    Your vote:
        / 100 remaining votes

     

     

     

    Follow 10 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Sunday 03/25/2007 at 09:38 sburtchin Attached File - => Added builtins.c, #12291
    Sunday 03/25/2007 at 09:31 sburtchin Attached File - => Added mbr2dos5.png, #12287
        Attached File - => Added mbr2Win3.png, #12288
        Attached File - => Added b15_old.png, #12289
        Attached File - => Added MenuItms.txt, #12290
    Sunday 03/25/2007 at 09:27 sburtchin Attached File - => Added PriMastr.png, #12283
        Attached File - => Added mbr2std.png, #12284
        Attached File - => Added SecMastr.png, #12285
        Attached File - => Added b15_std.png, #12286
        Carbon-Copy - => Added adrian15
    Show feedback again

    Back to the top

    Powered by Savane SVN (toward 3.1)
    BODY {
            FONT-FAMILY: sans-serif
    }
    IMG {
            BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN-BOTTOM: 
    -0.2em; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none
    }
    P {
            PADDING-RIGHT: 0.2em; PADDING-LEFT: 0.2em; TEXT-ALIGN: justify
    }
    STRONG {
            FONT-WEIGHT: bold
    }
    .bold {
            FONT-WEIGHT: bold
    }
    EM {
            FONT-STYLE: italic
    }
    .italic {
            FONT-STYLE: italic
    }
    .verbatim {
            BORDER-RIGHT: #e5e297 thin solid; BORDER-TOP: #e5e297 thin solid; 
    MARGIN-LEFT: 0.5em; BORDER-LEFT: #e5e297 thin solid; COLOR: black! important; 
    BORDER-BOTTOM: #e5e297 thin solid; FONT-FAMILY: monospace; BACKGROUND-COLOR: 
    #fffca8! important
    }
    .block {
            DISPLAY: block
    }
    .smaller {
            FONT-SIZE: smaller
    }
    .small {
            FONT-SIZE: small
    }
    .xsmall {
            FONT-SIZE: xx-small
    }
    .large {
            FONT-SIZE: large
    }
    .error {
            FONT-WEIGHT: bold; COLOR: #c12424
    }
    .warn {
            COLOR: #c12424
    }
    .footer {
            CLEAR: both; FONT-SIZE: x-small
    }
    .icon {
            MARGIN-BOTTOM: -0.2em; WIDTH: 1em; HEIGHT: 1em
    }
    .pageicon {
            PADDING-RIGHT: 0.5em; MARGIN-BOTTOM: -0.5em
    }
    .minusorplus {
            FONT-SIZE: xx-small; VERTICAL-ALIGN: middle; FONT-FAMILY: monospace
    }
    .minusorplus:unknown {
            content: " "
    }
    .feedbackimage {
            VERTICAL-ALIGN: middle; WIDTH: 1em
    }
    .feedback {
            BORDER-RIGHT: #005d23 thin solid; BORDER-TOP: #005d23 thin solid; 
    FONT-WEIGHT: normal; FONT-SIZE: smaller; RIGHT: 9%; LEFT: 24%; VERTICAL-ALIGN: 
    middle; BORDER-LEFT: #005d23 thin solid; CURSOR: pointer; COLOR: #005d23; 
    BOTTOM: auto; BORDER-BOTTOM: #005d23 thin solid; POSITION: fixed; TOP: 1%; 
    BACKGROUND-COLOR: #e7ffe8; TEXT-ALIGN: left; opacity: 0.9
    }
    .feedback:hover {
            BACKGROUND-COLOR: #f1fff2
    }
    .feedbacktitle {
            PADDING-RIGHT: 0.1em; PADDING-LEFT: 0.1em; FONT-WEIGHT: bold; FLOAT: 
    left; VERTICAL-ALIGN: middle; WIDTH: 20%; COLOR: white; TEXT-INDENT: 0px; 
    MARGIN-RIGHT: 0.5em; BACKGROUND-COLOR: #005d23; TEXT-ALIGN: center; opacity: 0.9
    }
    .feedbackerror {
            BORDER-RIGHT: #871b00 thin solid; BORDER-TOP: #871b00 thin solid; 
    FONT-WEIGHT: normal; RIGHT: 9%; LEFT: 24%; VERTICAL-ALIGN: middle; BORDER-LEFT: 
    #871b00 thin solid; CURSOR: pointer; COLOR: #871b00; BOTTOM: auto; 
    BORDER-BOTTOM: #871b00 thin solid; POSITION: fixed; TOP: 1%; BACKGROUND-COLOR: 
    #ffeae5; TEXT-ALIGN: left; opacity: 0.9
    }
    .feedbackerror:hover {
            BACKGROUND-COLOR: #ffefeb
    }
    .feedbackerrortitle {
            PADDING-RIGHT: 0.1em; PADDING-LEFT: 0.1em; FONT-WEIGHT: bold; FLOAT: 
    left; VERTICAL-ALIGN: middle; WIDTH: 20%; COLOR: white; TEXT-INDENT: 0px; 
    MARGIN-RIGHT: 0.5em; BACKGROUND-COLOR: #871b00; TEXT-ALIGN: center; opacity: 0.9
    }
    .feedbackerrorandsuccess {
            BORDER-RIGHT: #804206 thin solid; BORDER-TOP: #804206 thin solid; 
    FONT-WEIGHT: normal; FONT-SIZE: smaller; RIGHT: 9%; LEFT: 24%; BORDER-LEFT: 
    #804206 thin solid; CURSOR: pointer; COLOR: #804206; BOTTOM: auto; 
    BORDER-BOTTOM: #804206 thin solid; POSITION: fixed; TOP: 1%; BACKGROUND-COLOR: 
    #ffd1a5; TEXT-ALIGN: left; opacity: 0.9
    }
    .feedbackerrorandsuccess:hover {
            BACKGROUND-COLOR: #ffe3c7
    }
    .feedbackerrorandsuccesstitle {
            PADDING-RIGHT: 0.1em; PADDING-LEFT: 0.1em; FONT-WEIGHT: bold; FLOAT: 
    left; WIDTH: 20%; COLOR: white; TEXT-INDENT: 0px; MARGIN-RIGHT: 0.5em; 
    BACKGROUND-COLOR: #804206; TEXT-ALIGN: center; opacity: 0.9
    }
    .feedbackback {
            BORDER-RIGHT: #adadad thin solid; PADDING-RIGHT: 0.2em; BORDER-TOP: 
    #adadad thin solid; PADDING-LEFT: 0.2em; FONT-SIZE: smaller; RIGHT: 1em; 
    VISIBILITY: hidden; BORDER-LEFT: #adadad thin solid; CURSOR: pointer; COLOR: 
    #727272; BORDER-BOTTOM: #adadad thin solid; WHITE-SPACE: nowrap; POSITION: 
    fixed; TOP: 1%; BACKGROUND-COLOR: #d5d5d5; opacity: 0.9
    }
    .feedbackback:hover {
            BACKGROUND-COLOR: #e6e6e6
    }
    .nextprev {
            TEXT-ALIGN: center
    }
    .nextprev A {
            DISPLAY: inline
    }
    .debug {
            BORDER-RIGHT: #871b00 thin solid; BORDER-TOP: #871b00 thin solid; 
    FONT-WEIGHT: normal; FONT-SIZE: xx-small; BORDER-LEFT: #871b00 thin solid; 
    WIDTH: 80%; COLOR: #871b00; BORDER-BOTTOM: #871b00 thin solid; 
    BACKGROUND-COLOR: #ffbfaf; TEXT-ALIGN: center
    }
    .unavailable {
            CURSOR: default; TEXT-DECORATION: line-through! important
    }
    .unavailable:hover {
            CURSOR: default; TEXT-DECORATION: line-through! important
    }
    .help {
            CURSOR: help; TEXT-DECORATION: underline
    }
    .preinput {
            FONT-STYLE: italic
    }
    HR {
            BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 
    0px; HEIGHT: 1px; BACKGROUND-COLOR: black
    }
    H3 A {
            DISPLAY: block
    }
    H5 A {
            DISPLAY: block
    }
    .quote {
            PADDING-LEFT: 1em; FONT-STYLE: italic
    }
    .center {
            TEXT-ALIGN: center
    }
    .left {
            TEXT-ALIGN: left
    }
    .right {
            TEXT-ALIGN: right
    }
    .justify {
            TEXT-ALIGN: justify
    }
    .backtotop {
            CLEAR: both; TEXT-ALIGN: right
    }
    .indexcenter {
            VERTICAL-ALIGN: top; WIDTH: 80%
    }
    .indexright {
            FONT-SIZE: small; FLOAT: right; VERTICAL-ALIGN: top; WIDTH: 19%
    }
    .splitleft {
            MARGIN-LEFT: 1%; MARGIN-RIGHT: 51%
    }
    .splitright {
            DISPLAY: block; FLOAT: right; VERTICAL-ALIGN: top; OVERFLOW: hidden; 
    WIDTH: 49%; MARGIN-RIGHT: 1%
    }
    .trash {
            FLOAT: right; VERTICAL-ALIGN: top; MARGIN-RIGHT: 0px; HEIGHT: 1em; 
    TEXT-ALIGN: right
    }
    .clear {
            CLEAR: both
    }
    .clearl {
            CLEAR: left
    }
    .clearr {
            CLEAR: right
    }
    .realbody {
            VERTICAL-ALIGN: top
    }
    .highlight {
            COLOR: black; BACKGROUND-COLOR: #f7c58f
    }
    .main {
            BORDER-RIGHT: medium none; BORDER-TOP: medium none; DISPLAY: block; 
    MARGIN-LEFT: 16%; VERTICAL-ALIGN: top; BORDER-LEFT: medium none; WIDTH: 80%; 
    BORDER-BOTTOM: medium none; border-spacing: 0
    }
    .menu {
            BORDER-RIGHT: medium none; BORDER-TOP: medium none; MARGIN-TOP: 0px; 
    PADDING-LEFT: 0px; FONT-SIZE: small; FLOAT: left; MARGIN-LEFT: 0px; 
    VERTICAL-ALIGN: top; BORDER-LEFT: medium none; WIDTH: 15%; BORDER-BOTTOM: 
    medium none; border-spacing: 0
    }
    .menulogo {
            FONT-SIZE: larger; LIST-STYLE-TYPE: none; TEXT-ALIGN: center
    }
    .menutitle {
            MARGIN-TOP: 15px; VERTICAL-ALIGN: top; PADDING-TOP: 0px; 
    LIST-STYLE-TYPE: none
    }
    .menuitem {
            LIST-STYLE-POSITION: inside; FONT-SIZE: small; MARGIN-LEFT: 0px; 
    VERTICAL-ALIGN: middle; TEXT-INDENT: 0px; LIST-STYLE-TYPE: none
    }
    .menu A {
            DISPLAY: block
    }
    .menusearch {
            FONT-SIZE: smaller; TEXT-INDENT: 0px; LIST-STYLE-TYPE: none; 
    TEXT-ALIGN: right
    }
    .relatedrecipes {
            LIST-STYLE-POSITION: inside; MARGIN-LEFT: 0px; VERTICAL-ALIGN: middle; 
    TEXT-INDENT: 0px; LIST-STYLE-TYPE: none; TEXT-ALIGN: left
    }
    .relatedrecipesitem {
            FONT-SIZE: xx-small; MARGIN-LEFT: 1em
    }
    .topmenu {
            FONT-SIZE: small; MARGIN-RIGHT: 6em
    }
    .topmenutitle {
            PADDING-RIGHT: 1%; PADDING-LEFT: 1%; FLOAT: left; WIDTH: 15%
    }
    .topmenuitem {
            BORDER-RIGHT: medium none; BORDER-TOP: medium none; PADDING-LEFT: 15%; 
    BORDER-LEFT: medium none; BORDER-BOTTOM: medium none
    }
    #topmenu {
            Z-INDEX: 1
    }
    #topmenu UL {
            PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 
    0px; PADDING-TOP: 0px
    }
    #topmenu LI {
            PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 
    0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
    }
    LI.topmenuitemmainitem {
            DISPLAY: inline; FLOAT: left; POSITION: relative
    }
    LI.topmenuitemmainitem A {
            PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px
    }
    UNKNOWN {
            VISIBILITY: visible
    }
    UL.topmenuitemsubmenu {
            BORDER-RIGHT: #f1f1f1 thin solid; BORDER-TOP: #f1f1f1 thin solid; 
    DISPLAY: block; Z-INDEX: 100; LEFT: -0.3em; VISIBILITY: hidden; BORDER-LEFT: 
    #f1f1f1 thin solid; WIDTH: 13em; BORDER-BOTTOM: #f1f1f1 thin solid; POSITION: 
    absolute; TOP: 1.1em; TEXT-ALIGN: left
    }
    UL.topmenuitemsubmenu LI {
            BORDER-RIGHT: #f1f1f1 thin solid; BORDER-TOP: medium none; DISPLAY: 
    block; BORDER-LEFT: #e2e2e2 0.4em solid; BORDER-BOTTOM: #f1f1f1 thin solid
    }
    UL.topmenuitemsubmenu LI A {
            DISPLAY: block; MARGIN: 0px; LINE-HEIGHT: normal; TEXT-DECORATION: none
    }
    LI.topmenuitemsubmenuseparator {
            LINE-HEIGHT: 2px
    }
    #topmenunooverlap {
            PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: red; FLOAT: right; 
    VISIBILITY: hidden; PADDING-BOTTOM: 0px; MARGIN-RIGHT: 50%; PADDING-TOP: 0px; 
    HEIGHT: 0.5em
    }
    #topmenunooverlapbis {
            CLEAR: right; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; VISIBILITY: 
    hidden; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; HEIGHT: 0.5em
    }
    .boxoptions {
            MARGIN-TOP: 1em
    }
    #website {
            DISPLAY: none; VISIBILITY: hidden
    }
    .box {
            BORDER-RIGHT: 0px; BORDER-TOP: 0px; MARGIN-LEFT: 2%; VERTICAL-ALIGN: 
    top; BORDER-LEFT: 0px; WIDTH: 96%; MARGIN-RIGHT: 2%; BORDER-BOTTOM: 0px; 
    border-spacing: 1px
    }
    .boxli {
            BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: 
    0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; PADDING-TOP: 0px; 
    BORDER-BOTTOM: 0px; border-spacing: 0
    }
    .boxtitle {
            FONT-WEIGHT: bold; TEXT-TRANSFORM: capitalize; TEXT-ALIGN: center
    }
    .boxtitle A {
            DISPLAY: block
    }
    .boxitem {
            PADDING-LEFT: 1%; TEXT-INDENT: 0px; LIST-STYLE-TYPE: none; TEXT-ALIGN: 
    left
    }
    .boxitemextra {
            FONT-SIZE: smaller; VERTICAL-ALIGN: top; TEXT-ALIGN: right
    }
    .boxitemalt {
            PADDING-LEFT: 1%; TEXT-INDENT: 0px; LIST-STYLE-TYPE: none; TEXT-ALIGN: 
    left
    }
    .boxitemaltextra {
            FONT-SIZE: smaller; VERTICAL-ALIGN: top; TEXT-ALIGN: right
    }
    .boxoptions {
            PADDING-RIGHT: 1%; PADDING-LEFT: 1%; FONT-SIZE: small; PADDING-BOTTOM: 
    1%; WIDTH: 95%; PADDING-TOP: 1%; TEXT-ALIGN: left
    }
    #boxoptionslinkshow {
            DISPLAY: none; CURSOR: pointer
    }
    #boxoptionslinkhide {
            CURSOR: pointer
    }
    .boxoptionssubmit {
            FLOAT: right; VERTICAL-ALIGN: bottom; HEIGHT: 1em; TEXT-ALIGN: right
    }
    .boxhighlight {
            PADDING-LEFT: 1%; COLOR: black; TEXT-INDENT: 0px; LIST-STYLE-TYPE: 
    none; BACKGROUND-COLOR: #f7c58f; TEXT-ALIGN: left
    }
    .boxhighlightextra {
            FONT-SIZE: smaller; VERTICAL-ALIGN: top; TEXT-ALIGN: right
    }
    .trackersoriginalsubmission {
            PADDING-LEFT: 0.2em; PADDING-BOTTOM: 0.5em; BORDER-LEFT: #b5b5b5 thin 
    solid; PADDING-TOP: 0.5em
    }
    .priora {
            BORDER-RIGHT: #ef6e6e thin solid; BORDER-TOP: #ef6e6e thin solid; 
    BORDER-LEFT: #ef6e6e thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #ef6e6e thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #fff2f2
    }
    .priorb {
            BORDER-RIGHT: #ef6e6e thin solid; BORDER-TOP: #ef6e6e thin solid; 
    BORDER-LEFT: #ef6e6e thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #ef6e6e thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #ffe8e8
    }
    .priorc {
            BORDER-RIGHT: #ef6e6e thin solid; BORDER-TOP: #ef6e6e thin solid; 
    BORDER-LEFT: #ef6e6e thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #ef6e6e thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #ffe0e0
    }
    .priord {
            BORDER-RIGHT: #ef6e6e thin solid; BORDER-TOP: #ef6e6e thin solid; 
    BORDER-LEFT: #ef6e6e thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #ef6e6e thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #ffd8d8
    }
    .priore {
            BORDER-RIGHT: #ef6e6e thin solid; BORDER-TOP: #ef6e6e thin solid; 
    BORDER-LEFT: #ef6e6e thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #ef6e6e thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #ffcece
    }
    .priorf {
            BORDER-RIGHT: #ef6e6e thin solid; BORDER-TOP: #ef6e6e thin solid; 
    BORDER-LEFT: #ef6e6e thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #ef6e6e thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #ffc6c6
    }
    .priorg {
            BORDER-RIGHT: #ef6e6e thin solid; BORDER-TOP: #ef6e6e thin solid; 
    BORDER-LEFT: #ef6e6e thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #ef6e6e thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #ffbfbf
    }
    .priorh {
            BORDER-RIGHT: #ef6e6e thin solid; BORDER-TOP: #ef6e6e thin solid; 
    BORDER-LEFT: #ef6e6e thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #ef6e6e thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #ffb7b7
    }
    .priori {
            BORDER-RIGHT: #ef6e6e thin solid; BORDER-TOP: #ef6e6e thin solid; 
    BORDER-LEFT: #ef6e6e thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #ef6e6e thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #ffadad
    }
    .prioraclosed {
            BORDER-RIGHT: #51da96 thin solid; BORDER-TOP: #51da96 thin solid; 
    BORDER-LEFT: #51da96 thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #51da96 thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #f5ffeb
    }
    .priorbclosed {
            BORDER-RIGHT: #51da96 thin solid; BORDER-TOP: #51da96 thin solid; 
    BORDER-LEFT: #51da96 thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #51da96 thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #edffe6
    }
    .priorcclosed {
            BORDER-RIGHT: #51da96 thin solid; BORDER-TOP: #51da96 thin solid; 
    BORDER-LEFT: #51da96 thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #51da96 thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #eeffe1
    }
    .priordclosed {
            BORDER-RIGHT: #51da96 thin solid; BORDER-TOP: #51da96 thin solid; 
    BORDER-LEFT: #51da96 thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #51da96 thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #e0ffd5
    }
    .prioreclosed {
            BORDER-RIGHT: #51da96 thin solid; BORDER-TOP: #51da96 thin solid; 
    BORDER-LEFT: #51da96 thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #51da96 thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #ccffbb
    }
    .priorfclosed {
            BORDER-RIGHT: #51da96 thin solid; BORDER-TOP: #51da96 thin solid; 
    BORDER-LEFT: #51da96 thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #51da96 thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #c6ffb9
    }
    .priorgclosed {
            BORDER-RIGHT: #51da96 thin solid; BORDER-TOP: #51da96 thin solid; 
    BORDER-LEFT: #51da96 thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #51da96 thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #c0ffb2
    }
    .priorhclosed {
            BORDER-RIGHT: #51da96 thin solid; BORDER-TOP: #51da96 thin solid; 
    BORDER-LEFT: #51da96 thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #51da96 thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #adffa4
    }
    .prioriclosed {
            BORDER-RIGHT: #51da96 thin solid; BORDER-TOP: #51da96 thin solid; 
    BORDER-LEFT: #51da96 thin solid; TEXT-INDENT: 0px; BORDER-BOTTOM: #51da96 thin 
    solid; LIST-STYLE-TYPE: none; BACKGROUND-COLOR: #a0ff9d
    }
    H2.priora {
            text-shadow: 0.1em 0.1em #f89b9b
    }
    H2.priorb {
            text-shadow: 0.1em 0.1em #f89b9b
    }
    H2.priorc {
            text-shadow: 0.1em 0.1em #f89b9b
    }
    H2.priord {
            text-shadow: 0.1em 0.1em #f89b9b
    }
    H2.priore {
            text-shadow: 0.1em 0.1em #f89b9b
    }
    H2.priorf {
            text-shadow: 0.1em 0.1em #f89b9b
    }
    H2.priorg {
            text-shadow: 0.1em 0.1em #f89b9b
    }
    H2.priorh {
            text-shadow: 0.1em 0.1em #f89b9b
    }
    H2.priori {
            text-shadow: 0.1em 0.1em #f89b9b
    }
    H2.prioraclosed {
            text-shadow: 0.1em 0.1em #8cf2bf
    }
    H2.priorbclosed {
            text-shadow: 0.1em 0.1em #8cf2bf
    }
    H2.priorcclosed {
            text-shadow: 0.1em 0.1em #8cf2bf
    }
    H2.priordclosed {
            text-shadow: 0.1em 0.1em #8cf2bf
    }
    H2.prioreclosed {
            text-shadow: 0.1em 0.1em #8cf2bf
    }
    H2.priorfclosed {
            text-shadow: 0.1em 0.1em #8cf2bf
    }
    H2.priorgclosed {
            text-shadow: 0.1em 0.1em #8cf2bf
    }
    H2.priorhclosed {
            text-shadow: 0.1em 0.1em #8cf2bf
    }
    H2.prioriclosed {
            text-shadow: 0.1em 0.1em #8cf2bf
    }
    TR.priora A {
            DISPLAY: block
    }
    TR.priorb A {
            DISPLAY: block
    }
    TR.priorc A {
            DISPLAY: block
    }
    TR.priord A {
            DISPLAY: block
    }
    TR.priore A {
            DISPLAY: block
    }
    TR.priorf A {
            DISPLAY: block
    }
    TR.priorg A {
            DISPLAY: block
    }
    TR.priorh A {
            DISPLAY: block
    }
    TR.priori A {
            DISPLAY: block
    }
    TR.prioraclosed A {
            DISPLAY: block
    }
    TR.priorbclosed A {
            DISPLAY: block
    }
    TR.priorcclosed A {
            DISPLAY: block
    }
    TR.priordclosed A {
            DISPLAY: block
    }
    TR.prioreclosed A {
            DISPLAY: block
    }
    TR.priorfclosed A {
            DISPLAY: block
    }
    TR.priorgclosed A {
            DISPLAY: block
    }
    TR.priorhclosed A {
            DISPLAY: block
    }
    TR.prioriclosed A {
            DISPLAY: block
    }
    .menu .priore {
            BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium 
    none; BORDER-BOTTOM: medium none
    }
    
    @import url( internal/base.css );
    BODY {
            MARGIN: 0px; COLOR: #333333; FONT-FAMILY: arial,helvetica; 
    BACKGROUND-COLOR: #ffffff
    }
    A {
            COLOR: #641212; TEXT-DECORATION: none
    }
    A:hover {
            COLOR: #c40f0f; TEXT-DECORATION: underline
    }
    A:active {
            COLOR: #ff0000
    }
    .unavailable {
            COLOR: #905050; TEXT-DECORATION: none
    }
    .unavailable:hover {
            COLOR: #b07070
    }
    .footer {
            BORDER-RIGHT: #e0c080 thin solid; BORDER-TOP: #e0c080 0px solid; 
    MARGIN-LEFT: 1%; BORDER-LEFT: #e0c080 0px solid; COLOR: #333333; MARGIN-RIGHT: 
    1%; BORDER-BOTTOM: #e0c080 thin solid; BACKGROUND-COLOR: #ffe4b7; TEXT-ALIGN: 
    center
    }
    .warn {
            COLOR: #aa2200
    }
    .error {
            FONT-WEIGHT: bold; COLOR: #aa2200
    }
    H2 {
            TEXT-INDENT: 0.3em
    }
    H3 {
            TEXT-INDENT: 1em; BORDER-BOTTOM: #e0c080 thin solid; BACKGROUND-COLOR: 
    #fff0d0
    }
    H5 {
            BORDER-RIGHT: #ffe4b2 thin solid; BORDER-TOP: #ffe4b2 thin solid; 
    FONT-WEIGHT: normal; BORDER-LEFT: #ffe4b2 thin solid; BORDER-BOTTOM: #ffe4b2 
    thin solid; BACKGROUND-COLOR: #fff7ea
    }
    .highlight {
            BORDER-RIGHT: #e0c080 thin dotted; BORDER-LEFT: #e0c080 thin dotted; 
    COLOR: #333333; BORDER-BOTTOM: #e0c080 thin dotted; BACKGROUND-COLOR: #ffe0db
    }
    .realbody {
            BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium 
    none; BORDER-BOTTOM: medium none; border-spacing: 0px
    }
    .main {
            PADDING-RIGHT: 0px; PADDING-LEFT: 1%; MARGIN-LEFT: 160px; WIDTH: auto; 
    MARGIN-RIGHT: 0px; PADDING-TOP: 10px; BACKGROUND-COLOR: #ffffff
    }
    .menu {
            PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; WIDTH: 
    150px; PADDING-TOP: 5px; BACKGROUND-COLOR: #ffe4b7
    }
    .menutitle {
            FONT-WEIGHT: bold; COLOR: #333333; BORDER-BOTTOM: #e0c080 thin dotted; 
    TEXT-ALIGN: left
    }
    .menuitem {
            PADDING-RIGHT: 3%; COLOR: #333333; BORDER-BOTTOM: #e0c080 thin dotted; 
    LIST-STYLE-TYPE: none; TEXT-ALIGN: right
    }
    .topmenu {
            BORDER-RIGHT: medium none; BORDER-TOP: #000000 thin solid; BORDER-LEFT: 
    #000000 thin solid; WIDTH: auto; BORDER-BOTTOM: #000000 thin solid; 
    BACKGROUND-COLOR: #f9e4a2
    }
    .topmenutitle {
            FONT-STYLE: italic
    }
    UL.topmenuitemsubmenu LI {
            BORDER-RIGHT: #e0c080 1px dotted; BORDER-TOP: #e0c080 1px dotted; 
    BORDER-LEFT: #e0c080 1px dotted; BORDER-BOTTOM: #e0c080 1px dotted; 
    BACKGROUND-COLOR: #ffeecc
    }
    LI.topmenuitemsubmenu:hover {
            TEXT-DECORATION: underline
    }
    .tabselect {
            COLOR: #000000; TEXT-DECORATION: underline
    }
    .tabselect:hover {
            TEXT-DECORATION: underline
    }
    .box {
            MARGIN-LEFT: 1%; WIDTH: 98%; MARGIN-RIGHT: 1%
    }
    .boxtitle {
            BORDER-RIGHT: #641212 thin outset; BORDER-TOP: #641212 thin outset; 
    BACKGROUND-IMAGE: url(/images/Savannah.theme/leopard.png); BORDER-LEFT: #641212 
    thin outset; COLOR: #000000; BORDER-BOTTOM: #641212 thin outset; 
    BACKGROUND-COLOR: #eddb5a
    }
    .boxitem {
            BORDER-RIGHT: #e0c080 thin dotted; PADDING-RIGHT: 1%; PADDING-LEFT: 1%; 
    PADDING-BOTTOM: 1%; BORDER-LEFT: #e0c080 thin dotted; COLOR: #333333; 
    PADDING-TOP: 1%; BORDER-BOTTOM: #e0c080 thin dotted; BACKGROUND-COLOR: #fffbed
    }
    .boxitemalt {
            BORDER-RIGHT: #e0c080 thin dotted; PADDING-RIGHT: 1%; PADDING-LEFT: 1%; 
    PADDING-BOTTOM: 1%; BORDER-LEFT: #e0c080 thin dotted; COLOR: #333333; 
    PADDING-TOP: 1%; BORDER-BOTTOM: #e0c080 thin dotted; BACKGROUND-COLOR: #ffeecc
    }
    .boxhighlight {
            BORDER-RIGHT: #e0c080 thin dotted; BORDER-LEFT: #e0c080 thin dotted; 
    COLOR: #333333; BORDER-BOTTOM: #e0c080 thin dotted; BACKGROUND-COLOR: #ffe0db
    }
    .boxoptions {
            BORDER-RIGHT: #e0c080 thin dotted; BORDER-TOP: #e0c080 thin dotted; 
    BORDER-LEFT: #e0c080 thin dotted; COLOR: #333333; BORDER-BOTTOM: #e0c080 thin 
    dotted; BACKGROUND-COLOR: #ffeecc
    }
    INPUT {
            COLOR: #841212; BACKGROUND-COLOR: #fff9e0
    }
    INPUT:hover {
            COLOR: #ff0000
    }
    SELECT {
            COLOR: #841212; BACKGROUND-COLOR: #fff9e0
    }
    TEXTAREA {
            COLOR: #000000; BACKGROUND-COLOR: #fff9e0
    }
    TEXTAREA:hover {
            COLOR: #ff0000
    }
    DIV.inputfield {
            MARGIN: 10px 1px
    }
    .preinput {
            COLOR: #727272; FONT-STYLE: italic
    }
    
    .main {
            MARGIN-LEFT: 0.5%; OVERFLOW: visible; WIDTH: 80%; POSITION: absolute
    }
    .menu {
            PADDING-RIGHT: 5px; MARGIN-TOP: 2px; PADDING-LEFT: 5px; PADDING-BOTTOM: 
    5px; MARGIN-LEFT: 2px; WIDTH: 14%
    }
    .indexcenter {
            WIDTH: 100%
    }
    .feedbackback {
            DISPLAY: none; MARGIN-LEFT: 70%; WIDTH: 15%
    }
    .feedback {
            MARGIN-TOP: 1em; MARGIN-BOTTOM: 1em; CURSOR: default
    }
    .feedbackerror {
            MARGIN-TOP: 1em; MARGIN-BOTTOM: 1em; CURSOR: default
    }
    H1 {
            MARGIN-LEFT: 2%; WIDTH: 96%
    }
    H2 {
            MARGIN-LEFT: 2%; WIDTH: 96%
    }
    H3 {
            MARGIN-LEFT: 2%; WIDTH: 96%
    }
    H4 {
            MARGIN-LEFT: 2%; WIDTH: 96%
    }
    H5 {
            MARGIN-LEFT: 2%; WIDTH: 96%
    }
    .feedback {
            MARGIN-LEFT: 2%; WIDTH: 96%
    }
    .feedbackerror {
            MARGIN-LEFT: 2%; WIDTH: 96%
    }
    #topmenu {
            PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; FLOAT: left; PADDING-BOTTOM: 
    1em; MARGIN: 0px
    }
    #topmenuitem {
            PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; FLOAT: left; PADDING-BOTTOM: 
    0px; MARGIN: 0px; LINE-HEIGHT: 1em; LIST-STYLE-TYPE: none
    }
    .topmenuitem {
            PADDING-LEFT: 0px; FLOAT: left; OVERFLOW: visible; WIDTH: 80%
    }
    LI.topmenuitemmainitem {
            POSITION: static
    }
    LI.topmenuitemmainitem A {
            DISPLAY: block
    }
    UL.topmenuitemsubmenu {
            LEFT: -999em; VISIBILITY: visible; TOP: auto
    }
    .hover UL {
            LEFT: auto
    }
    .sfhover UL {
            LEFT: auto
    }
    .topmenuitemsubmenu {
            BACKGROUND: #fbffff
    }
    

    --- End Message ---

    Attachment: How To Write Extended Partition Tables from GRUB.doc
    Description: MS-Word document

    Attachment: file #12291 builtins.c.txt
    Description: Text document

    Attachment: file #12284 mbr2std.png
    Description: PNG image

    Attachment: file #12285 SecMastr.png
    Description: PNG image

    Attachment: file #12286 b15_std.png
    Description: PNG image

    Attachment: file #12287 mbr2dos5.png
    Description: PNG image

    Attachment: file #12288 mbr2Win3.png
    Description: PNG image

    Attachment: file #12289 b15_old.png
    Description: PNG image

    Attachment: file #12290 MenuItms.txt
    Description: Text document

    Attachment: file #12283 PriMastr.png
    Description: PNG image

    Attachment: grub.texi.ee.diff
    Description: Binary data

    Attachment: ChangeLog.ee.diff
    Description: Binary data


    reply via email to

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