From 3a96085b999220c4da0c5ef7d1f7ba26b9ddfb98 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sun, 31 Dec 2017 18:47:16 +0100 Subject: dec-multia: make netboot possible, add aboot bootloader --- package/aboot/Makefile | 24 + package/aboot/src/COPYING | 339 +++ package/aboot/src/ChangeLog | 214 ++ package/aboot/src/ChangeLog.cvs | 110 + package/aboot/src/INSTALL | 28 + package/aboot/src/Makefile | 150 ++ package/aboot/src/README | 169 ++ package/aboot/src/TODO | 11 + package/aboot/src/aboot.c | 289 +++ package/aboot/src/aboot.conf | 10 + package/aboot/src/aboot.lds | 26 + package/aboot/src/b2c.c | 70 + package/aboot/src/cons.c | 190 ++ package/aboot/src/disk.c | 854 ++++++++ package/aboot/src/doc/faq/.cvsignore | 1 + package/aboot/src/doc/faq/Makefile | 9 + package/aboot/src/doc/faq/SRM-HOWTO.sgml | 2293 ++++++++++++++++++++ package/aboot/src/doc/man/Makefile | 51 + package/aboot/src/doc/man/README | 32 + package/aboot/src/doc/man/aboot.8 | 57 + package/aboot/src/doc/man/aboot.conf.5 | 81 + package/aboot/src/doc/man/aboot.conf.sgml | 106 + package/aboot/src/doc/man/aboot.sgml | 83 + package/aboot/src/doc/man/abootconf.8 | 96 + package/aboot/src/doc/man/abootconf.sgml | 141 ++ package/aboot/src/doc/man/de/Makefile | 46 + package/aboot/src/doc/man/de/aboot.conf.sgml | 108 + package/aboot/src/doc/man/de/aboot.sgml | 89 + package/aboot/src/doc/man/de/abootconf.sgml | 146 ++ .../aboot/src/doc/man/de/docbook2man-de-spec.pl | 1304 +++++++++++ package/aboot/src/doc/man/de/e2writeboot.8 | 45 + package/aboot/src/doc/man/de/isomarkboot.sgml | 92 + package/aboot/src/doc/man/de/netabootwrap.sgml | 107 + package/aboot/src/doc/man/de/sdisklabel.sgml | 247 +++ package/aboot/src/doc/man/de/srmbootfat.sgml | 86 + package/aboot/src/doc/man/de/srmbootraw.sgml | 84 + package/aboot/src/doc/man/de/swriteboot.8 | 61 + package/aboot/src/doc/man/e2writeboot.8 | 42 + package/aboot/src/doc/man/isomarkboot.8 | 58 + package/aboot/src/doc/man/isomarkboot.sgml | 97 + package/aboot/src/doc/man/netabootwrap.sgml | 102 + package/aboot/src/doc/man/sdisklabel.8 | 152 ++ package/aboot/src/doc/man/sdisklabel.copyright | 32 + package/aboot/src/doc/man/sdisklabel.sgml | 246 +++ package/aboot/src/doc/man/swriteboot.8 | 58 + package/aboot/src/fs/dummy.c | 80 + package/aboot/src/fs/ext2.c | 623 ++++++ package/aboot/src/fs/iso.c | 59 + package/aboot/src/fs/ufs.c | 485 +++++ package/aboot/src/head.S | 173 ++ package/aboot/src/include/aboot.h | 47 + package/aboot/src/include/bootfs.h | 25 + package/aboot/src/include/config.h | 12 + package/aboot/src/include/cons.h | 47 + package/aboot/src/include/disklabel.h | 105 + package/aboot/src/include/hwrpb.h | 220 ++ package/aboot/src/include/iso.h | 292 +++ package/aboot/src/include/isolib.h | 30 + package/aboot/src/include/linux/ext2_fs.h | 591 +++++ package/aboot/src/include/pal.h | 51 + package/aboot/src/include/setjmp.h | 68 + package/aboot/src/include/string.h | 31 + package/aboot/src/include/system.h | 326 +++ package/aboot/src/include/ufs.h | 691 ++++++ package/aboot/src/include/utils.h | 24 + package/aboot/src/lib/Makefile | 42 + package/aboot/src/lib/_longjmp.S | 61 + package/aboot/src/lib/_setjmp.S | 36 + package/aboot/src/lib/divide.S | 160 ++ package/aboot/src/lib/isolib.c | 1590 ++++++++++++++ package/aboot/src/lib/memcpy.c | 23 + package/aboot/src/lib/memset.c | 28 + package/aboot/src/lib/string.c | 252 +++ package/aboot/src/lib/vsprintf.c | 317 +++ package/aboot/src/net.c | 146 ++ package/aboot/src/netabootwrap.c | 185 ++ package/aboot/src/netwrap.h | 17 + package/aboot/src/sdisklabel/.cvsignore | 2 + package/aboot/src/sdisklabel/Makefile | 15 + package/aboot/src/sdisklabel/README | 105 + package/aboot/src/sdisklabel/library.c | 79 + package/aboot/src/sdisklabel/library.h | 8 + package/aboot/src/sdisklabel/sdisklabel.c | 241 ++ package/aboot/src/sdisklabel/swriteboot.c | 226 ++ package/aboot/src/srmbootfat/COPYING | 349 +++ package/aboot/src/srmbootfat/Makefile | 24 + package/aboot/src/srmbootfat/README | 5 + package/aboot/src/srmbootfat/msdos.h | 160 ++ package/aboot/src/srmbootfat/srmbootfat.c | 246 +++ package/aboot/src/srmbootfat/srmbootfat.sgml | 85 + package/aboot/src/srmbootfat/srmbootraw.c | 101 + package/aboot/src/srmbootfat/srmbootraw.sgml | 84 + package/aboot/src/tools/.cvsignore | 5 + package/aboot/src/tools/Makefile | 22 + package/aboot/src/tools/abootconf.c | 125 ++ package/aboot/src/tools/bio.c | 178 ++ package/aboot/src/tools/bio.h | 4 + package/aboot/src/tools/e2lib.c | 1473 +++++++++++++ package/aboot/src/tools/e2lib.h | 332 +++ package/aboot/src/tools/e2writeboot.c | 254 +++ package/aboot/src/tools/elfencap.c | 61 + package/aboot/src/tools/isomarkboot.c | 239 ++ package/aboot/src/tools/objstrip.c | 260 +++ package/aboot/src/utils.c | 292 +++ package/aboot/src/zip/gzip.h | 96 + package/aboot/src/zip/inflate.c | 827 +++++++ package/aboot/src/zip/misc.c | 316 +++ package/aboot/src/zip/unzip.c | 139 ++ 108 files changed, 21826 insertions(+) create mode 100644 package/aboot/Makefile create mode 100644 package/aboot/src/COPYING create mode 100644 package/aboot/src/ChangeLog create mode 100644 package/aboot/src/ChangeLog.cvs create mode 100644 package/aboot/src/INSTALL create mode 100644 package/aboot/src/Makefile create mode 100644 package/aboot/src/README create mode 100644 package/aboot/src/TODO create mode 100644 package/aboot/src/aboot.c create mode 100644 package/aboot/src/aboot.conf create mode 100644 package/aboot/src/aboot.lds create mode 100644 package/aboot/src/b2c.c create mode 100644 package/aboot/src/cons.c create mode 100644 package/aboot/src/disk.c create mode 100644 package/aboot/src/doc/faq/.cvsignore create mode 100644 package/aboot/src/doc/faq/Makefile create mode 100644 package/aboot/src/doc/faq/SRM-HOWTO.sgml create mode 100644 package/aboot/src/doc/man/Makefile create mode 100644 package/aboot/src/doc/man/README create mode 100644 package/aboot/src/doc/man/aboot.8 create mode 100644 package/aboot/src/doc/man/aboot.conf.5 create mode 100644 package/aboot/src/doc/man/aboot.conf.sgml create mode 100644 package/aboot/src/doc/man/aboot.sgml create mode 100644 package/aboot/src/doc/man/abootconf.8 create mode 100644 package/aboot/src/doc/man/abootconf.sgml create mode 100644 package/aboot/src/doc/man/de/Makefile create mode 100644 package/aboot/src/doc/man/de/aboot.conf.sgml create mode 100644 package/aboot/src/doc/man/de/aboot.sgml create mode 100644 package/aboot/src/doc/man/de/abootconf.sgml create mode 100644 package/aboot/src/doc/man/de/docbook2man-de-spec.pl create mode 100644 package/aboot/src/doc/man/de/e2writeboot.8 create mode 100644 package/aboot/src/doc/man/de/isomarkboot.sgml create mode 100644 package/aboot/src/doc/man/de/netabootwrap.sgml create mode 100644 package/aboot/src/doc/man/de/sdisklabel.sgml create mode 100644 package/aboot/src/doc/man/de/srmbootfat.sgml create mode 100644 package/aboot/src/doc/man/de/srmbootraw.sgml create mode 100644 package/aboot/src/doc/man/de/swriteboot.8 create mode 100644 package/aboot/src/doc/man/e2writeboot.8 create mode 100644 package/aboot/src/doc/man/isomarkboot.8 create mode 100644 package/aboot/src/doc/man/isomarkboot.sgml create mode 100644 package/aboot/src/doc/man/netabootwrap.sgml create mode 100644 package/aboot/src/doc/man/sdisklabel.8 create mode 100644 package/aboot/src/doc/man/sdisklabel.copyright create mode 100644 package/aboot/src/doc/man/sdisklabel.sgml create mode 100644 package/aboot/src/doc/man/swriteboot.8 create mode 100644 package/aboot/src/fs/dummy.c create mode 100644 package/aboot/src/fs/ext2.c create mode 100644 package/aboot/src/fs/iso.c create mode 100644 package/aboot/src/fs/ufs.c create mode 100644 package/aboot/src/head.S create mode 100644 package/aboot/src/include/aboot.h create mode 100644 package/aboot/src/include/bootfs.h create mode 100644 package/aboot/src/include/config.h create mode 100644 package/aboot/src/include/cons.h create mode 100644 package/aboot/src/include/disklabel.h create mode 100644 package/aboot/src/include/hwrpb.h create mode 100644 package/aboot/src/include/iso.h create mode 100644 package/aboot/src/include/isolib.h create mode 100644 package/aboot/src/include/linux/ext2_fs.h create mode 100644 package/aboot/src/include/pal.h create mode 100644 package/aboot/src/include/setjmp.h create mode 100644 package/aboot/src/include/string.h create mode 100644 package/aboot/src/include/system.h create mode 100644 package/aboot/src/include/ufs.h create mode 100644 package/aboot/src/include/utils.h create mode 100644 package/aboot/src/lib/Makefile create mode 100644 package/aboot/src/lib/_longjmp.S create mode 100644 package/aboot/src/lib/_setjmp.S create mode 100644 package/aboot/src/lib/divide.S create mode 100644 package/aboot/src/lib/isolib.c create mode 100644 package/aboot/src/lib/memcpy.c create mode 100644 package/aboot/src/lib/memset.c create mode 100644 package/aboot/src/lib/string.c create mode 100644 package/aboot/src/lib/vsprintf.c create mode 100644 package/aboot/src/net.c create mode 100644 package/aboot/src/netabootwrap.c create mode 100644 package/aboot/src/netwrap.h create mode 100644 package/aboot/src/sdisklabel/.cvsignore create mode 100644 package/aboot/src/sdisklabel/Makefile create mode 100644 package/aboot/src/sdisklabel/README create mode 100644 package/aboot/src/sdisklabel/library.c create mode 100644 package/aboot/src/sdisklabel/library.h create mode 100644 package/aboot/src/sdisklabel/sdisklabel.c create mode 100644 package/aboot/src/sdisklabel/swriteboot.c create mode 100644 package/aboot/src/srmbootfat/COPYING create mode 100644 package/aboot/src/srmbootfat/Makefile create mode 100644 package/aboot/src/srmbootfat/README create mode 100644 package/aboot/src/srmbootfat/msdos.h create mode 100644 package/aboot/src/srmbootfat/srmbootfat.c create mode 100644 package/aboot/src/srmbootfat/srmbootfat.sgml create mode 100644 package/aboot/src/srmbootfat/srmbootraw.c create mode 100644 package/aboot/src/srmbootfat/srmbootraw.sgml create mode 100644 package/aboot/src/tools/.cvsignore create mode 100644 package/aboot/src/tools/Makefile create mode 100644 package/aboot/src/tools/abootconf.c create mode 100644 package/aboot/src/tools/bio.c create mode 100644 package/aboot/src/tools/bio.h create mode 100644 package/aboot/src/tools/e2lib.c create mode 100644 package/aboot/src/tools/e2lib.h create mode 100644 package/aboot/src/tools/e2writeboot.c create mode 100644 package/aboot/src/tools/elfencap.c create mode 100644 package/aboot/src/tools/isomarkboot.c create mode 100644 package/aboot/src/tools/objstrip.c create mode 100644 package/aboot/src/utils.c create mode 100644 package/aboot/src/zip/gzip.h create mode 100644 package/aboot/src/zip/inflate.c create mode 100644 package/aboot/src/zip/misc.c create mode 100644 package/aboot/src/zip/unzip.c (limited to 'package') diff --git a/package/aboot/Makefile b/package/aboot/Makefile new file mode 100644 index 000000000..e49a773ea --- /dev/null +++ b/package/aboot/Makefile @@ -0,0 +1,24 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(ADK_TOPDIR)/rules.mk + +PKG_NAME:= aboot +PKG_VERSION:= 1.0 +PKG_RELEASE:= 1 +PKG_DESCR:= srm boot loader for alpha machines +PKG_SECTION:= base/boot + +NO_DISTFILES:= 1 + +PKG_ARCH_DEPENDS:= alpha + +include $(ADK_TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,ABOOT,aboot,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION))) + +CONFIG_STYLE:= manual + +aboot-install: + +include $(ADK_TOPDIR)/mk/pkg-bottom.mk diff --git a/package/aboot/src/COPYING b/package/aboot/src/COPYING new file mode 100644 index 000000000..a43ea2126 --- /dev/null +++ b/package/aboot/src/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/package/aboot/src/ChangeLog b/package/aboot/src/ChangeLog new file mode 100644 index 000000000..c46c6fc08 --- /dev/null +++ b/package/aboot/src/ChangeLog @@ -0,0 +1,214 @@ +2004-04-08 Will Woods + * Change include path (should fix compilation for 2.6 kernels) + * Add/fix extra_args patch - allows you to add extra arguments after + the configuration number (e.g. "1 console=ttyS0") + * Fix warning about bcopy + * Version is now 1.0_pre20040408 + +2003-12-01 Will Woods + * Patch for USB console from Jeff.Wiedemeier@hp.com + * Patch to check kernel memory against console memory descriptors, also + from Jeff. These two patches should allow booting on Wildfire. + +2003-11-07 Will Woods + * Changed version number to 1.0pre1 (aboot should hit 1.0 before + they stop making the Alpha, I think) + * Merged doc changes from 0.10 branch + * Reverted 0.10 changes out of HEAD (the tag aboot_010pre2 marks the + state just before the rollback) + +2003-03-21 Will Woods + * Added include/string.h, since we have our own string.c, replaced + #includes of with "string.h" since linux/string.h + no longer has user-includable prototypes. + (thanks to Kelledin for the idea) + * Changed #includes of our headers to use quotes instead of <> + * Don't build with -mcpu=ev4 (default code works on ev4 and is smaller) + * Cleaned up a couple other warnings + +2003-01-14 Will Woods + * Fixed typos in man pages ("True 64") + * Bumped version number to 0.9b + * Released 0.9b. Hooray! + +2002-09-18 Will Woods + * branched the 0.9 tree to add bugfixes + * fixed some compilation errors with newer gcc/glibc versions + * added newer manpages + +2001-11-14 Will Woods + * sdisklabel/sdisklabel.c: fixed my fix to the cylinder counting bug. + oops. also added (currently undocumented) "force" flag, to skip + error checking in sdisklabel. + +2001-10-26 Will Woods + * Released aboot 0.9. Yay! + +2001-10-25 Will Woods + * sdisklabel/sdisklabel.c: fixed cylinder-counting bug + +2001-10-11 Will Woods + * applied a patch from the debian version of aboot. Here's the debian + maintainer's changelog: + + * New upstream (from CVS) + * I am calling this version of aboot from CVS 0.8. + * Minor tweeks to make it compile with kernel 2.4.x headers. + * e2writeboot now returns non-zero on error. Closes: #107757 + -- Gregory W. Johnson Wed, 15 Aug 2001 + + Since he called his version 0.8, I will call this the 0.9 tree, to + avoid confusion. Hence this is aboot 0.9pre1. + +2001-10-09 Will Woods + * aboot.c, disk.c, include/config.c: replaced ABOOT_MINOR and + ABOOT_MAJOR with ABOOT_VERSION. Bumped version number to 0.8pre2. + * aboot.c: fixed ELF header bug that snuck in somewhere. + * fs/ext2.c, Makefile: fixes for proper #includes to allow compilation + of userspace testing aboot against the 2.4 kernel. + +2001-10-08 Will Woods + * fs/ext2.c: Fixed elusive overflow bug. If part of the kernel was + past the 524,287th block (given 4096 bytes per block) the byte offset + was too big to fit in an int. + * sdisklabel/sdisklabel.c: borrowed code from fdisk for getting + the correct size of the disk. + +2001-07-10 Will Woods + * aboot.c, tools/objstrip.c: elf_check_arch takes different arguments + in Linux 2.4 than it did in 2.2; added an aboot_elf_check_arch which + does the right thing based on version info from linux/version.h. + * disk.c: a function called get_options exists in 2.4 kernels, so + aboot's get_options function was renamed get_aboot_options(). + (both changes based on a patch by Christian Groessler ) + +2001-04-26 Will Woods + * disk.c: changed /etc/aboot.conf and aboot.conf back to their + original settings. If it ain't broke, why fix it? + * added the man pages in doc/man, written by Helge Kreutzmann + (Thanks Helge!) + +2001-03-20 Will Woods + * disk.c: swapped position of /etc/aboot.conf and aboot.conf in the + configs array, making /aboot.conf the default. + * isolib.c: added parse_rock_ridge_inode and get_rock_ridge_symlink + adapted from rock.c in the linux kernel source. + * isolib.c: added iso_follow_link and iso_readdir, adapted from + fs/ext2.c + * made minor changes here and there to quiet gcc warnings - + initializing variables to 0, casting variables properly, etc + +2000-06-27 David Huggins-Daines + + * sdisklabel/sdisklabel.c (main): Off-by-one error in argument + checking (not my fault!). + * disk.c (load_raw): This didn't work at all. I've changed it to + use an uncompressed kernel with headers. Eventually it will be + fixed so that it can accept compressed kernels as well (by + checking for gzip magic numbers). + * lib/vsprintf.c (vsprintf): Patch from Matt Wilson, fix the 'h' + format in vsprintf(). + * utils.c: Patch from Matt Wilson , to allow + compiling against linux 2.3 header files. + +2000-05-02 David Huggins-Daines + + * Makefile: Added the ability to build a debugging aboot that runs + as a userspace program. Great for filesystem code debugging. + Also, optimize for size instead of speed. + * aboot.c: Remove a.out support, add multiple ELF pheader + support. Also make the parameter offset, and kernel stack offset + non-hardcoded in order to deal with new, bigger consoles. + * disk.c: Change "plain" to "uncompressed" and load_aout() to + load_uncompressed(). Implement multiple pheaders for raw boot + (untested) and uncompressed boot (tested). Also look for + alternative config files (needed for CD booting and such) + * fs/ext2.c: Cache the root inode, and do proper 64-bit arithmetic + in ext2_iget() so that >2G filesystems work reliably (doh!) + * head.S: make run_kernel() assembly in order to save a few bytes. + * include/aboot.h: prototype run_kernel as attribute((noreturn)), + maybe this will save a few bytes too. + * fs/ufs.c: Implement dummy fstat(). I don't really know if the + UFS code still works, and I'm tempted to remove it. + * include/cons.h: Add a definition of the CTB, though we don't + really use it yet. + * include/iso.h: Rock Ridge constants + * lib/isolib.c: Rock Ridge filenames, code cleanup, and fix the + bug where 2048-byte blocks don't work. + * zip/misc.c: necessary stuff for multiple pheaders. + +2000-04-10 David Huggins-Daines + + * lib/isolib.c (iso_iget): Gar! More stupidity in the ISO code, + now fixed (see comment about *pnt being overwritten). With luck + this should be 0.7 final, so I won't need to do another 0.6 + +2000-04-02 David Huggins-Daines + + * lib/isolib.c: Fix some obvious stupidity in the ISO code (could + cause a failure to load the kernel in some cases due to reading + past the end of the device. + * sdisklabel/swriteboot.c (read_configured_partition): Eek! I + thought I had fixed the problems I created with installing aboot + on new disks. Obviously I didn't. Thanks to Martin Lucina + for inadvertently finding the case I missed. + +2000-03-23 David Huggins-Daines + + * cons.c: Patch from David North , via + Greg W. Johnson (gwj@debian.org), fixes serial console output on + some boxes. + * fs/iso.c: gwj@debian.org: silence compiler warnings + * include/isolib.h: ditto + * lib/string.c: ditto + * sdisklabel/swriteboot.c: add abootconf functionality to + swriteboot (where it probably belongs) + +2000-03-06 David Huggins-Daines + + * aboot-0.6: At long last we have a new aboot. This is somewhat + of an interim release, as it doesn't have all the features I'd + like (it doesn't list directories or follow symlinks on ISO9660 or + UFS filesystems, for example, nor does it support initrd), but it + integrates the large number of patches that have been added by + various distributions, adds symlink-following, initrd, and + directory-listing support on ext2 at least, and generally works + better. + +Sat Aug 17 18:58:36 1996 David Mosberger-Tang + + * disk.c (get_boot_device): New function. If it guesses wrong, + explicitly specify bootdevice= via commandline. + (get_options): Add support for bootdevice= and bootfile= options + to enable Red Hat installation. + + * sdisklabel/library.c (overlaplabel): FORCE is now a bitset. + If bit i is set, overlaps with partition i+1 are allowed. + * sdisklabel/sdisklabel.c (set_partition): Update accordingly. + + * sdisklabel/swriteboot.c (main): Make 1 be the first partition + (not 0) to be consistent with Linux kernel numbering. Make + force_overlap a bitset so we can force more than one overlapping + partition. + + * disk.c (load_kernel): If kernel load fails, drop into + interactive mode. + + * fs/ext2.c (ext2_iget): Make OFFSET a long, not an int so we can + boot from a partition that starts at an offset > 2GB. + +Fri May 10 16:48:25 1996 David Mosberger-Tang + + * main.c: split out disk booting into disk.c and netbooting into + net.c. + +Fairly recently: + * Network booting support added by Dave Larson + + +A long time ago: + * Default commandline argument handling by Michael Schwingen + + +A very long time ago: + * Filesystem support added by David Mosberger diff --git a/package/aboot/src/ChangeLog.cvs b/package/aboot/src/ChangeLog.cvs new file mode 100644 index 000000000..88c7b450b --- /dev/null +++ b/package/aboot/src/ChangeLog.cvs @@ -0,0 +1,110 @@ +2001-07-13 23:06 wwoods + + * ChangeLog, INSTALL, aboot.c, disk.c, lib/isolib.c, + tools/objstrip.c: Incorporated patch from Christian Groessler + to make aboot compile against Linux 2.4 + +2001-04-26 23:39 wwoods + + * ChangeLog, Makefile, README, disk.c, doc/man/Makefile, + doc/man/README, doc/man/aboot.8, doc/man/aboot.conf.5, + doc/man/aboot.conf.sgml, doc/man/aboot.sgml, doc/man/abootconf.8, + doc/man/abootconf.sgml, doc/man/e2writeboot.8, + doc/man/swriteboot.8, include/config.h: Changed default config file + location back to /etc/aboot.conf Added man pages written by Helge + Kreutzmann + +2001-04-02 23:21 wwoods + + * ChangeLog: updated ChangeLog + +2001-04-02 23:11 wwoods + + * Makefile, README, disk.c, fs/iso.c, include/config.h, + include/isolib.h, lib/Makefile, lib/isolib.c: * added full + rockridge support - symlinks and long filenames are now properly + supported on ISO filesystems. * changed default aboot.conf + location to /aboot.conf * fixed crash when booting from a directory + with a long filename on ISO fs + +2000-06-27 18:14 dhd + + * README: Remove reference to documentation directory which no + longer exists + +2000-06-27 18:08 dhd + + * README: Doh! Update the README to the correct version number :-) + +2000-06-27 18:08 dhd + + * aboot.c: If DEBUG is defined, dump the ELF header information + *before* loading the kernel, to aid debugging. + +2000-06-27 18:07 dhd + + * ChangeLog, disk.c: Change "raw" booting to actually work, which + required making it no longer be "raw". + + Okay, so maybe this will be 0.7a for real... + +2000-06-27 16:52 dhd + + * ChangeLog, sdisklabel/sdisklabel.c: Fix sdisklabel to not + segfault with too few arguments. I wonder if anybody actually uses + this program. + +2000-06-27 16:47 dhd + + * ChangeLog, disk.c, utils.c, lib/vsprintf.c: 0.7a release, I + think. Fixes: + + * Concatenating the kernel with aboot in the boot sectors didn't + work. + * aboot didn't compile with Linux 2.3 headers (msw@redhat.com) + * vsprintf() didn't do the right thing in certain obscure cases + (msw@redhat.com) + +2000-06-27 16:44 dhd + + * .cvsignore, sdisklabel/.cvsignore, tools/.cvsignore: Ignore + various generated files + +2000-05-03 05:58 dhd + + * COPYING, ChangeLog, INSTALL, Makefile, README, TODO, aboot.c, + aboot.conf, aboot.lds, cons.c, disk.c, head.S, net.c, utils.c, + fs/dummy.c, fs/ext2.c, fs/iso.c, fs/ufs.c, include/aboot.h, + include/bootfs.h, include/config.h, include/cons.h, + include/disklabel.h, include/iso.h, include/isolib.h, + include/setjmp.h, include/ufs.h, include/utils.h, lib/Makefile, + lib/_longjmp.S, lib/_setjmp.S, lib/divide.S, lib/isolib.c, + lib/memcpy.c, lib/memset.c, lib/string.c, lib/vsprintf.c, + sdisklabel/Makefile, sdisklabel/README, sdisklabel/library.c, + sdisklabel/library.h, sdisklabel/sdisklabel.c, + sdisklabel/swriteboot.8, sdisklabel/swriteboot.c, tools/Makefile, + tools/abootconf.c, tools/bio.c, tools/bio.h, tools/e2writeboot.8, + tools/e2lib.c, tools/e2lib.h, tools/e2writeboot.c, + tools/elfencap.c, tools/isomarkboot.c, tools/objstrip.c, + zip/gzip.h, zip/inflate.c, zip/misc.c, zip/unzip.c: Initial + revision + +2000-05-03 05:58 dhd + + * COPYING, ChangeLog, INSTALL, Makefile, README, TODO, aboot.c, + aboot.conf, aboot.lds, cons.c, disk.c, head.S, net.c, utils.c, + fs/dummy.c, fs/ext2.c, fs/iso.c, fs/ufs.c, include/aboot.h, + include/bootfs.h, include/config.h, include/cons.h, + include/disklabel.h, include/iso.h, include/isolib.h, + include/setjmp.h, include/ufs.h, include/utils.h, lib/Makefile, + lib/_longjmp.S, lib/_setjmp.S, lib/divide.S, lib/isolib.c, + lib/memcpy.c, lib/memset.c, lib/string.c, lib/vsprintf.c, + sdisklabel/Makefile, sdisklabel/README, sdisklabel/library.c, + sdisklabel/library.h, sdisklabel/sdisklabel.c, + sdisklabel/swriteboot.8, sdisklabel/swriteboot.c, tools/Makefile, + tools/abootconf.c, tools/bio.c, tools/bio.h, tools/e2writeboot.8, + tools/e2lib.c, tools/e2lib.h, tools/e2writeboot.c, + tools/elfencap.c, tools/isomarkboot.c, tools/objstrip.c, + zip/gzip.h, zip/inflate.c, zip/misc.c, zip/unzip.c: Initial import + (from 0.7 release) + diff --git a/package/aboot/src/INSTALL b/package/aboot/src/INSTALL new file mode 100644 index 000000000..107940de2 --- /dev/null +++ b/package/aboot/src/INSTALL @@ -0,0 +1,28 @@ +Thu Jun 27 03:23:08 1996 + +- Edit Makefile and include/config.h to suite your needs. For most + purposes, the distributed version should work fine. Note that + the CONFIG_FILE_PARTITION macro is still present like in earlier + version, but since aboot-0.5 allows you to select a partition via + the boot-commandline, the value for that macro is not as critical + anymore. Users of certain versions of gcc (2.96 and later?) + may need to add '-ffreestanding' flag to CFLAGS, in the Makefile. + +- Type "make". + +- To install the newly created aboot image (named "bootlx"), in most cases, + you use swriteboot (found in the sdisklabel directory), like this: + + # swriteboot -c[boot partition #] [boot device] bootlx + + for example, on my system, the kernel images (and aboot.conf) are on my + root partition, /dev/sda2. hence: + + # swriteboot -c2 /dev/sda bootlx + + DON'T DO THIS UNLESS YOU'RE SURE OF THE PARTITION INFO. If you don't know + exactly what you're doing, and your system already boots okay, there's no + reason to be installing a new bootloader. + + For more info, read the SRM HOWTO, in doc/faq/srm.html, or at: + http://www.alphalinux.org/faq/srm.html diff --git a/package/aboot/src/Makefile b/package/aboot/src/Makefile new file mode 100644 index 000000000..12450e735 --- /dev/null +++ b/package/aboot/src/Makefile @@ -0,0 +1,150 @@ +# +# aboot/Makefile +# +# This file is subject to the terms and conditions of the GNU General Public +# License. See the file "COPYING" in the main directory of this archive +# for more details. +# +# Copyright (c) 1995, 1996 by David Mosberger (davidm@cs.arizona.edu) +# + +# location of linux kernel sources (must be absolute path): +KSRC = /usr/src/linux +VMLINUX = $(KSRC)/vmlinux +VMLINUXGZ = $(KSRC)/arch/alpha/boot/vmlinux.gz + +# for userspace testing +#TESTING = yes + +# for boot testing +#CFGDEFS = -DDEBUG_ISO -DDEBUG_ROCK -DDEBUG_EXT2 -DDEBUG + +bindir = $(DESTDIR)/sbin +bootdir = $(DESTDIR)/boot + +export + +# +# There shouldn't be any need to change anything below this line. +# +TOP = $(shell pwd) +LOADADDR = 20000000 + +ifndef $($(CC)) +CC ?= gcc +endif + +ifeq ($(TESTING),) +override CPPFLAGS += $(CFGDEFS) -I$(TOP)/include +override CFLAGS += $(CPPFLAGS) -D__KERNEL__ -mcpu=ev4 -Os -Wall -fno-builtin -Wcast-align -mno-fp-regs -ffixed-8 -fno-builtin-printf +else +override CPPFLAGS += -DTESTING $(CFGDEFS) -I$(TOP)/include +override CFLAGS += $(CPPFLAGS) -O -g3 -Wall -D__KERNEL__ -ffixed-8 +endif + +ABOOT_LDFLAGS = -static -N -Taboot.lds +override ASFLAGS += $(CPPFLAGS) + + +.c.s: + $(CC) $(CFLAGS) -S -o $*.s $< +.s.o: + $(AS) -o $*.o $< +.c.o: + $(CC) $(CFLAGS) -c -o $*.o $< +.S.s: + $(CC) $(ASFLAGS) -D__ASSEMBLY__ -traditional -E -o $*.o $< +.S.o: + $(CC) $(ASFLAGS) -D__ASSEMBLY__ -traditional -c -o $*.o $< + +NET_OBJS = net.o +DISK_OBJS = disk.o fs/ext2.o fs/ufs.o fs/dummy.o fs/iso.o +ifeq ($(TESTING),) +ABOOT_OBJS = \ + head.o aboot.o cons.o utils.o \ + zip/misc.o zip/unzip.o zip/inflate.o +else +ABOOT_OBJS = aboot.o zip/misc.o zip/unzip.o zip/inflate.o +endif +LIBS = lib/libaboot.a + +all: diskboot net_aboot.nh + +diskboot: bootlx sdisklabel/sdisklabel sdisklabel/swriteboot \ + tools/e2writeboot tools/abootconf \ + tools/elfencap + +netboot: vmlinux.bootp + +bootloader.h: net_aboot.nh b2c + ./b2c net_aboot.nh bootloader.h bootloader + +netabootwrap: netabootwrap.c bootloader.h + $(CC) $@.c $(CFLAGS) -o $@ + + +bootlx: aboot tools/objstrip + tools/objstrip -vb aboot bootlx + +install-man: + make -C doc/man install + +install-man-gz: + make -C doc/man install-gz + +install: tools/abootconf tools/e2writeboot \ + sdisklabel/swriteboot + install -d $(bindir) $(bootdir) + install -c tools/abootconf $(bindir) + install -c tools/e2writeboot $(bindir) + install -c sdisklabel/swriteboot $(bindir) + install -c bootlx $(bootdir) + +installondisk: bootlx sdisklabel/swriteboot + sdisklabel/swriteboot -vf0 /dev/sda bootlx vmlinux.gz + +ifeq ($(TESTING),) +aboot: $(ABOOT_OBJS) $(DISK_OBJS) $(LIBS) + $(LD) $(ABOOT_LDFLAGS) $(ABOOT_OBJS) $(DISK_OBJS) -o $@ $(LIBS) +else +aboot: $(ABOOT_OBJS) $(DISK_OBJS) $(LIBS) + $(CC) $(ABOOT_OBJS) $(DISK_OBJS) -o $@ $(LIBS) +endif + +vmlinux.bootp: net_aboot.nh $(VMLINUXGZ) net_pad + cat net_aboot.nh $(VMLINUXGZ) net_pad > $@ + +net_aboot.nh: net_aboot tools/objstrip + $(CROSS)strip net_aboot + tools/objstrip -vb net_aboot $@ + +net_aboot: $(ABOOT_OBJS) $(ABOOT_OBJS) $(NET_OBJS) $(LIBS) + $(LD) $(ABOOT_LDFLAGS) $(ABOOT_OBJS) $(NET_OBJS) -o $@ $(LIBS) + +net_pad: + dd if=/dev/zero of=$@ bs=512 count=1 + +clean: sdisklabel/clean tools/clean lib/clean + rm -f aboot abootconf net_aboot net_aboot.nh net_pad vmlinux.bootp \ + $(ABOOT_OBJS) $(DISK_OBJS) $(NET_OBJS) bootlx \ + include/ksize.h vmlinux.nh b2c bootloader.h netabootwrap + +distclean: clean + find . -name \*~ | xargs rm -f + +lib/%: + make -C lib $* CPPFLAGS="$(CPPFLAGS)" TESTING="$(TESTING)" + +tools/%: + make -C tools $* CPPFLAGS="$(CPPFLAGS)" + +sdisklabel/%: + make -C sdisklabel $* CPPFLAGS="$(CPPFLAGS)" + +vmlinux.nh: $(VMLINUX) tools/objstrip + tools/objstrip -vb $(VMLINUX) vmlinux.nh + +include/ksize.h: vmlinux.nh + echo "#define KERNEL_SIZE `ls -l vmlinux.nh | awk '{print $$5}'` > $@ + +dep: diff --git a/package/aboot/src/README b/package/aboot/src/README new file mode 100644 index 000000000..b5d3f0a2c --- /dev/null +++ b/package/aboot/src/README @@ -0,0 +1,169 @@ +This is release 0.9 of aboot, the Linux/Alpha loader for SRM. + +Aboot is based on the standard Linux/Alpha bootloader, with extensions +by David Mosberger and Michael Schwingen (prompt for arguments, kernel +argument mapping using /etc/aboot.conf file). It is currently maintained +by Will Woods. + +For more information about aboot and SRM, see the SRM Firmware HOWTO, in +doc/faq/srm.html, or at http://www.alphalinux.org/faq/srm.html + +Good luck and enjoy... + +-Will Woods Oct 25, 2001 + +--- + +New with version 0.9: + + - new and (hopefully) improved man pages + - Crash when booting from a path containing a long filename on isofs fixed + - listing directories on isofs works + - symlinks on isofs work + - Failure to boot when kernel was past the 2GB boundary on ext2 fs fixed + - cylinder-counting bug in sdisklabel fixed + +[Note: there was no (official) version 0.8.] + +New with version 0.7: + + - aboot now supports an initial ramdisk, which can be loaded from an + arbitrary file on any supported filesystem. To use this, pass an + 'initrd=/path/to/file' argument in the boot flags, or use the 'i' + command from the interactive menu. + + - a.out support has been removed. + + - (as of 0.7a) "raw" booting no longer is - you must use an + uncompressed ELF kernel. + + - Many bugs in the ISO filesystem code have been found and fixed. + + - swriteboot incorporates the functionality of abootconf. + +New with version 0.6: + + - The various patches from the Red Hat, Debian, and SuSE packages + have been merged back in. + + - ext2 partitions with >1024 byte block sizes and sparse superblocks + are now (hopefully) supported. (from Red Hat?) + + - aboot can now follow symbolic links on ext2 filesystems. + + - aboot no longer passes the bootdevice= and bootfile= flags to the + kernel, as the code for guessing the boot device was completely + broken, and these options are not used at all by current kernels. + + - aboot is now built as an ELF image (since that's what the current + toolchain supports), and code to strip it accordingly has been + added (from Richard Henderson) + + - isomarkboot now has an option to specify the root filesystem image + to be loaded (from Debian) + + - swriteboot tries to preserve the boot partition setting from a + previous aboot installation. + +New with version 0.5: + + - IMPORTANT: e2writeboot now expects a _raw_ file, not an ECOFF + object file. So be sure to write aboot using the command: + + e2writeboot /dev/fd0 bootlx + + This change has been made so e2writeboot and s2writeboot are more + consistent. It also makes it easier to support multiple object + file formats. + + - The location the partition containing /etc/aboot.conf can now be + specified on the commandline: -fl 3:0 selects the aboot.conf line + 0 on partition 3. + + - Booting of ELF object files is now supported. In the process of + adding ELF suport, the build tool has been rewritten from scratch + (it's now a lot simpler despite supporting two object file + formats). + + - Booting from an ext2fs partition that starts at an offset >= 2GB + now works. + + - If the kernel load fails, aboot now drops into interactive mode + instead of + + - swriteboot now supports an option to force installation of aboot even + if there is an overlap between the aboot image and some partition. E.g., + if partition 1 and 3 start at sector 0 (as is commonly the case for disks + partitioned under OSF/1), you can specify: + + swriteboot -f1 -f3 /dev/sdc bootlx + + WARNING: Using -f will obviously destroy any filesystem that may be + present on the specified partition. Use at your own risk. + + - NOTE: I'd like to remove sdisklabel in future distributions (minlabel + should be all you need). Let me know if you feel strongly about this + (one way or the other). + +New with version 0.4: + + - abootconf allows to set (or query) the number of the partition that + aboot will use to lookup /etc/aboot.conf. + - support for net boot added (thanks to Dave Larson ) + - iso9660 filesystem support added (based on Dave Rusling's MILO sources) + +New with version 0.31: + + - e2writeboot is now included in the distribution. + - started with writing man pages for e2writeboot and swriteboot; pretty + cryptic, I believe, but heck, it's the best there is! :-) + +New with version 0.3: + + - The commandline prompt changed to "aboot>". + + - The contents of /etc/aboot.conf can be displayed with a commandline + argument consisting of a single 'h'. After displaying the configuration + file, aboot will prompt for a commandline just like for the 'i' option. + + - At the "aboot>" prompt, the user can enter a single 'h' to display + the configuration file. Entering an empty line or a line consisting + of a single 'i' will keep the user in the "aboot>" prompt loop. + + - Booting of raw (headerless) kernels is now supported again. A raw + boot is requested by specifying a filename consisting of a single + '-' character only. Booting ECOFF kernels off a disk without filesystem + is now supported via partition number 0 (in aboot-0.2, this was incorrectly + called a "raw boot"). For example, to boot a compressed ECOFF file, + one could specify the filename "0/-" (filename "-" on the zeroth + partition). You can use the swriteboot command to write the kernel + for a filesystem-less boot. + + - Booting from floppy disks now works again. + +New with version 0.2: + + - If the kernel commandline consists of a single 'i', aboot prompts for + kernel file and commandline arguments (useful on machines such as + the Jensen, where the SRM limits commandline arguments to 1 argument). + + - If the kernel commandline consists of a single digit, aboot looks up + the default configuration with that number in the file /etc/aboot.conf + on a compile-time defined partition of the bootdrive, and uses the + parameters given there as commandline arguments for the kernel (useful + where the SRM limits default commandline arguments to 8 characters, + and does not support setting a default filename). + + - If the kernel filename consists of a single '-' or is empty, aboot + will perform a raw boot. This involves loading a kernel starting at + the disk sector after the aboot code (currently, 162). This kernel + must be a header-less ("raw") binary without any ECOFF header. + +New with version 0.1: + + - Compressed kernels (using gzip) are supported (faster loading, less + disk usage). + + - You can load the kernel from an UFS or EXT2 filesystem on any partition + of the boot disk. + diff --git a/package/aboot/src/TODO b/package/aboot/src/TODO new file mode 100644 index 000000000..74a99d261 --- /dev/null +++ b/package/aboot/src/TODO @@ -0,0 +1,11 @@ +- more documentation (aboot man page, improve e2writeboot & swriteboot + man pages) + +- I suspect that EOF detection does not work on UFS filesystems - + i.e., reading the configuration file may cause a hang on such a + filesystem when the desired config line is not found. I have not fixed + this since I could not check the changes - look at the top of + iext2_breadi to see how I fixed nblks there MS + +- Netbooting support and UFS may be broken. Either they'll get fixed + or they will be dropped, as neither is particularly useful. diff --git a/package/aboot/src/aboot.c b/package/aboot/src/aboot.c new file mode 100644 index 000000000..90614a72c --- /dev/null +++ b/package/aboot/src/aboot.c @@ -0,0 +1,289 @@ +/* + * aboot.c + * + * This file is part of aboot, the SRM bootloader for Linux/Alpha + * Copyright (C) 1996 Linus Torvalds, David Mosberger, and Michael Schwingen. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include +#include +#include +#include "hwrpb.h" +#include "system.h" + +#include +#include +#include + +#include "aboot.h" +#include "config.h" +#include "cons.h" +#include "setjmp.h" +#include "utils.h" +#include "string.h" + +struct bootfs * bfs = 0; /* filesystem to boot from */ +char * dest_addr = 0; +jmp_buf jump_buffer; + +unsigned long start_addr = START_ADDR; /* default only */ +struct segment* chunks; +int nchunks; + +char boot_file[256] = ""; +char initrd_file[256] = ""; +char kernel_args[256] = ""; +char * bss_start = 0; +long bss_size = 0; /* size of bss */ +unsigned long initrd_start = 0; +unsigned long initrd_size = 0; + +/* Offsets from start_addr (yes, they are negative, because start_addr + is actually the load address plus the text offset) */ +#define PARAM_OFFSET -0x6000 /* load address + 0xa000 */ +#define STACK_OFFSET -0xe000 /* load address + 0x2000 */ + +/* eventually we may have to deal with 44-bit physical addressing and + also possibly larger pages */ +unsigned long page_offset = 0xfffffc0000000000; +unsigned long page_shift = 13; + +static unsigned long entry_addr = START_ADDR; + +/* + * The decompression code calls this function after decompressing the + * first block of the object file. The first block must contain all + * the relevant header information. + */ +long +first_block (const char *buf, long blocksize) +{ + Elf64_Ehdr *elf; + Elf64_Phdr *phdrs; + int i, j; + + elf = (Elf64_Ehdr *) buf; + + if (elf->e_ident[0] != 0x7f + || elf->e_ident[1] != 'E' + || elf->e_ident[2] != 'L' + || elf->e_ident[3] != 'F') + { + /* Fail silently, it might be a compressed file */ + return -1; + } + if (elf->e_ident[EI_CLASS] != ELFCLASS64 + || elf->e_ident[EI_DATA] != ELFDATA2LSB + || elf->e_machine != EM_ALPHA) + { + printf("aboot: ELF executable not for this machine\n"); + return -1; + } + + /* Looks like an ELF binary. */ + if (elf->e_type != ET_EXEC) { + printf("aboot: not an executable ELF file\n"); + return -1; + } + + if (elf->e_phoff + elf->e_phnum * sizeof(*phdrs) > (unsigned) blocksize) + { + printf("aboot: " + "ELF program headers not in first block (%ld)\n", + (long) elf->e_phoff); + return -1; + } + + phdrs = (struct elf_phdr *) (buf + elf->e_phoff); + chunks = malloc(sizeof(struct segment) * elf->e_phnum); + start_addr = phdrs[0].p_vaddr; /* assume they are sorted */ + entry_addr = elf->e_entry; + +#ifdef DEBUG + printf("aboot: %d program headers, start address %#lx, entry %#lx\n", + elf->e_phnum, start_addr, entry_addr); +#endif + + for (i = j = 0; i < elf->e_phnum; ++i) { + int status; + + if (phdrs[i].p_type != PT_LOAD) + continue; + + chunks[j].addr = phdrs[i].p_vaddr; + chunks[j].offset = phdrs[i].p_offset; + chunks[j].size = phdrs[i].p_filesz; + +#ifdef DEBUG + printf("aboot: PHDR %d vaddr %#lx offset %#lx size %#lx\n", + i, chunks[j].addr, chunks[j].offset, chunks[j].size); +#endif + +#ifndef TESTING + status = check_memory(chunks[j].addr, chunks[j].size); + if (status) { + printf("aboot: Can't load kernel.\n" + " Memory at %lx - %lx (PHDR %i) " + "is %s\n", + chunks[j].addr, + chunks[j].addr + chunks[j].size - 1, + i, + (status == -ENOMEM) ? + "Not Found" : + "Busy (Reserved)"); + return -1; + } +#endif + + if (phdrs[i].p_memsz > phdrs[i].p_filesz) { + if (bss_size > 0) { + printf("aboot: Can't load kernel.\n" + " Multiple BSS segments" + " (PHDR %d)\n", i); + return -1; + } + bss_start = (char *) (phdrs[i].p_vaddr + + phdrs[i].p_filesz); + bss_size = (phdrs[i].p_memsz - phdrs[i].p_filesz); + } + + j++; + } + nchunks = j; +#ifdef DEBUG + printf("aboot: bss at 0x%p, size %#lx\n", bss_start, bss_size); +#endif + + return 0; +} + +static void +get_boot_args(void) +{ + long result; + + /* get boot command line: */ +#ifdef TESTING + const char *e; + if ((e = getenv("BOOTED_FILE"))) { + strncpy(boot_file, e, sizeof(boot_file)-1); + boot_file[sizeof(boot_file)-1] = 0; + } else { + strcpy(boot_file, "vmlinux.gz"); + } + if ((e = getenv("BOOTED_OSFLAGS"))) { + strncpy(kernel_args, e, sizeof(kernel_args)-1); + kernel_args[sizeof(kernel_args)-1] = 0; + } else { + strcpy(kernel_args, "i"); + } +#else + result = cons_getenv(ENV_BOOTED_FILE, boot_file, sizeof(boot_file)); + if (result < 0) { + printf("aboot: warning: can't get ENV_BOOTED_FILE " + "(result=%lx)!\n", result); + strcpy(boot_file, "vmlinux.gz"); + } + result = cons_getenv(ENV_BOOTED_OSFLAGS, + kernel_args, sizeof(kernel_args)); + if (result < 0) { + printf("aboot: warning: can't get ENV_BOOTED_OSFLAGS " + "(result=%lx)!\n", result); + strcpy(kernel_args, "i"); + } +#endif /* TESTING */ +} + +#ifdef TESTING +long config_file_partition = 1; +void halt() +{ + exit(0); +} + +void unzip_error(char *x) +{ + printf("unzip: %s\n", x); +} + + +int main() +{ + extern long load_kernel(); + long result; + + get_boot_args(); + result = load_kernel(); + if (result < 0) { + printf("aboot: kernel load failed (%ld)\n", result); + return 0; + } + printf("aboot: starting kernel %s with arguments %s\n", + boot_file, kernel_args); + return 0; +} +#else /* not TESTING */ +/* + * Head transfers control to this function. Don't call it main() to avoid + * gcc doing magic initialization things that we don't want. + */ +void +main_ (void) +{ + extern long load_kernel (void); + long i, result; + + cons_init(); + + printf("aboot: Linux/Alpha SRM bootloader version "ABOOT_VERSION"\n"); + + /* don't know how to deal with this yet */ + if (INIT_HWRPB->pagesize != 8192) { + printf("aboot: expected 8kB pages, got %ldkB\n", + INIT_HWRPB->pagesize >> 10); + + cons_close_console(); + return; + } + + pal_init(); + get_boot_args(); + result = load_kernel(); + if (result < 0) { + printf("aboot: kernel load failed (%ld)\n", result); + cons_close_console(); + return; + } + printf("aboot: starting kernel %s with arguments %s\n", + boot_file, kernel_args); + strcpy((char*)start_addr + PARAM_OFFSET, kernel_args); + *(unsigned long *)(start_addr + PARAM_OFFSET + 0x100) + = initrd_start; + *(unsigned long *)(start_addr + PARAM_OFFSET + 0x108) + = initrd_size; + + cons_close_console(); + run_kernel(entry_addr, start_addr + STACK_OFFSET); + + cons_open_console(); + printf("aboot: kernel returned unexpectedly. Halting slowly...\n"); + for (i = 0 ; i < 0x100000000 ; i++) + /* nothing */; + cons_close_console(); + halt(); +} +#endif /* TESTING */ diff --git a/package/aboot/src/aboot.conf b/package/aboot/src/aboot.conf new file mode 100644 index 000000000..02114138e --- /dev/null +++ b/package/aboot/src/aboot.conf @@ -0,0 +1,10 @@ +# +# aboot default configurations +# +0:3/vmlinux.gz ro root=/dev/sda2 +1:3/vmlinux.old.gz ro root=/dev/sda2 +2:3/vmlinux.new.gz ro root=/dev/sda2 +3:3/vmlinux ro root=/dev/sda2 +8:- ro root=/dev/sda2 # fs less boot of raw kernel +9:0/- ro root=/dev/sda2 # fs less boot of (compressed) ECOFF kernel +- diff --git a/package/aboot/src/aboot.lds b/package/aboot/src/aboot.lds new file mode 100644 index 000000000..415ab80e5 --- /dev/null +++ b/package/aboot/src/aboot.lds @@ -0,0 +1,26 @@ +OUTPUT_FORMAT("elf64-alpha") +ENTRY(__start) +PHDRS { kernel PT_LOAD; } +SECTIONS +{ + . = 0x20000000; + .text : { *(.text) } :kernel + _etext = .; + PROVIDE (etext = .); + .rodata : { *(.rodata) } :kernel + .data : { *(.data) } :kernel + .got : { *(.got) } :kernel + .sdata : { *(.sdata) } :kernel + _edata = .; + PROVIDE (edata = .); + .sbss : { *(.sbss) *(.scommon) } :kernel + .bss : { *(.bss) *(COMMON) } :kernel + _end = . ; + PROVIDE (end = .); + + /DISCARD/ : { *(.eh_frame) } + + .mdebug 0 : { *(.mdebug) } + .note 0 : { *(.note) } + .comment 0 : { *(.comment) } +} diff --git a/package/aboot/src/b2c.c b/package/aboot/src/b2c.c new file mode 100644 index 000000000..0b9318540 --- /dev/null +++ b/package/aboot/src/b2c.c @@ -0,0 +1,70 @@ + + +#include +#include +#include +#include +#include + +void print_usage(void ) +{ + printf("Usage: b2c bin_img tar_file.h symname\n"); + exit(1); +} + +void open_file(char *fn, int *fd, int *sz) +{ + struct stat buf; + + *fd = open(fn, O_RDONLY); + if (fd < 0) { + printf("cannot open %s\n", fn); + exit(1); + } + + fstat(*fd, &buf); + + if (buf.st_size <= 10*1024) { + printf("Is this a right file %s, size = %ld\n", fn, buf.st_size); + exit(1); + } + + *sz = (int)buf.st_size; +} + +int main(int argc, char **argv) +{ + int sfd, ssz, red, i; + int buf[1024]; + char *sfn, *tfn, *symname; + FILE *tfd; + + if (argc != 4) { + print_usage(); + } + + sfn = argv[1]; + tfn = argv[2]; + symname = argv[3]; + + open_file(sfn, &sfd, &ssz); + + tfd = fopen(tfn, "w"); + + fprintf(tfd, "int %s[] = {\n", symname); + + while((red=read(sfd, buf, 1024*sizeof(int)))) { + for (i=0; i + +#include + +#include +#include "hwrpb.h" +#include "system.h" + +#include "aboot.h" +#include "cons.h" +#include "utils.h" +#include "string.h" + +#ifndef CCB_OPEN_CONSOLE /* new callback w/ ARM v4 */ +# define CCB_OPEN_CONSOLE 0x07 +#endif + +#ifndef CCB_CLOSE_CONSOLE /* new callback w/ ARM v4 */ +# define CCB_CLOSE_CONSOLE 0x08 +#endif + +long cons_dev; /* console device */ + +long +cons_puts(const char *str, long len) +{ + long remaining, written; + union ccb_stsdef { + long int l_sts; + struct { + int written; + unsigned discard : 29; + unsigned v_sts0 : 1; + unsigned v_sts1 : 1; + unsigned v_err : 1; + } s; + } ccb_sts; + + for (remaining = len; remaining; remaining -= written) { + ccb_sts.l_sts = dispatch(CCB_PUTS, cons_dev, str, remaining); + if (!ccb_sts.s.v_err) { + written = ccb_sts.s.written; + str += written; + } else { + if (ccb_sts.s.v_sts1) + halt(); /* This is a hard error */ + written = 0; + } + } + return len; +} + +void +cons_putchar(char c) +{ + char buf[2]; + + buf[0] = c; + buf[1] = 0; + cons_puts(buf,1); +} + +int +cons_getchar(void) +{ + long c; + + while ((c = dispatch(CCB_GETC, cons_dev)) < 0) + ; + return c; +} + + +long +cons_getenv(long index, char *envval, long maxlen) +{ + /* + * This may seem silly, but some SRM implementations have + * problems returning values to buffers that are not 8 byte + * aligned. We work around this by always using a buffer + * allocated on the stack (which guaranteed to by 8 byte + * aligned). + */ + char * tmp = alloca(maxlen); + long len; + + len = dispatch(CCB_GET_ENV, index, tmp, maxlen - 1); + if (len >= 0) { + memcpy(envval, tmp, len); + envval[len] = '\0'; + } + return len; +} + + +long +cons_open(const char *devname) +{ + return dispatch(CCB_OPEN, devname, strlen(devname)); +} + + +long +cons_close(long dev) +{ + return dispatch(CCB_CLOSE, dev); +} + + +long +cons_read(long dev, void *buf, long count, long offset) +{ + static char readbuf[SECT_SIZE]; /* minimize frame size */ + + if ((count & (SECT_SIZE-1)) == 0 && (offset & (SECT_SIZE-1)) == 0) { + /* I/O is aligned... this is easy! */ + return dispatch(CCB_READ, dev, count, buf, + offset / SECT_SIZE); + } else { + long bytesleft, iocount, blockoffset, iosize, lbn, retval; + + bytesleft = count; + iocount = 0; + blockoffset = offset % SECT_SIZE; + lbn = offset / SECT_SIZE; + + while (bytesleft > 0) { + if ((blockoffset == 0) && (bytesleft >= SECT_SIZE)) { + /* + * This portion of the I/O is aligned, + * so read it straight in: + */ + iosize = SECT_SIZE; + retval = dispatch(CCB_READ, dev, iosize, buf, + lbn); + if (retval != iosize) { + printf("read error 0x%lx\n",retval); + return -1; + } + } else { + /* + * Not aligned; must read it into a + * temporary buffer and go from there. + */ + retval = dispatch(CCB_READ, dev, SECT_SIZE, + readbuf, lbn); + if (retval != SECT_SIZE) { + printf("read error, lbn %ld: 0x%lx\n", + lbn, retval); + return -1; + } + iosize = bytesleft; + if (blockoffset + iosize >= SECT_SIZE) { + iosize = SECT_SIZE - blockoffset; + } + memcpy(buf, readbuf + blockoffset, iosize); + } + buf += iosize; + iocount += iosize; + bytesleft -= iosize; + blockoffset = 0; + ++lbn; + } + return iocount; + } +} + + +void cons_open_console(void) +{ + dispatch(CCB_OPEN_CONSOLE); +} + +void cons_close_console(void) +{ + dispatch(CCB_CLOSE_CONSOLE); +} + +void +cons_init(void) +{ + char envval[256]; + + if (cons_getenv(ENV_TTY_DEV, envval, sizeof(envval)) < 0) { + halt(); /* better than random crash */ + } + cons_dev = simple_strtoul(envval, 0, 10); + + cons_open_console(); +} diff --git a/package/aboot/src/disk.c b/package/aboot/src/disk.c new file mode 100644 index 000000000..fd9af8f6a --- /dev/null +++ b/package/aboot/src/disk.c @@ -0,0 +1,854 @@ +/* + * aboot/disk.c + * + * This file is part of aboot, the SRM bootloader for Linux/Alpha + * Copyright (C) 1996 Linus Torvalds, David Mosberger, and Michael Schwingen. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +#ifdef TESTING +# include +# include +# include +# include +#endif + +#include "config.h" +#include "aboot.h" +#include "bootfs.h" +#include "cons.h" +#include "disklabel.h" +#include "utils.h" +#include "string.h" + +#include +#include +#include "system.h" + +extern struct bootfs ext2fs; +extern struct bootfs iso; +extern struct bootfs ufs; +extern struct bootfs dummyfs; + +struct disklabel * label; +int boot_part = -1; + +static struct bootfs *bootfs[] = { + &ext2fs, + &iso, + &ufs +}; + +/* + * Attempt a "raw" boot (uncompressed ELF kernel follows right after aboot). + * + * This will eventually be rewritten to accept compressed kernels + * (along with net_aboot). It should also be merged with the other + * load methods as there is some code duplication here we don't want. + */ + +int +load_raw (long dev) +{ + extern char _end; + char *buf; + long aboot_size = &_end - (char *) BOOT_ADDR; + long ksect = (aboot_size + SECT_SIZE - 1) / SECT_SIZE + BOOT_SECTOR; + long nread; + int i; + + printf("aboot: loading kernel from boot sectors...\n"); + + /* We only need the program headers so this should be fine */ + buf = malloc(SECT_SIZE); + + /* Read ELF headers: */ + nread = cons_read(dev, buf, SECT_SIZE, ksect * SECT_SIZE); + if (nread != SECT_SIZE) { + printf("aboot: read returned %ld instead of %ld bytes\n", + nread, (long) SECT_SIZE); + return -1; + } + if (first_block(buf, SECT_SIZE) < 0) { + return -1; + } + + for (i = 0; i < nchunks; ++i) { + char *dest; + + printf("aboot: segment %d, %ld bytes at %#lx\n", i, chunks[i].size, + chunks[i].addr); +#ifdef TESTING + dest = malloc(chunks[i].size); +#else + dest = (char *) chunks[i].addr; +#endif + + nread = cons_read(dev, dest, chunks[i].size, + chunks[i].offset + ksect * SECT_SIZE); + if (nread != chunks[i].size) { + printf("aboot: read returned %ld instead of %ld bytes\n", + nread, chunks[i].size); + return -1; + } + } + return 0; +} + + +int +load_uncompressed (int fd) +{ + long nread, nblocks; + unsigned char *buf; + int i; + + buf = malloc(bfs->blocksize); + + /* read ELF headers: */ + nread = (*bfs->bread)(fd, 0, 1, buf); + if (nread != bfs->blocksize) { + printf("aboot: read returned %ld instead of %ld bytes\n", + nread, sizeof(buf)); + return -1; + } +#ifdef DEBUG + { + int i,j,c; + + for(i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) + printf("%02X ", buf[j+16*i]); + for(j = 0; j < 16; j++) { + c = buf[j+16*i]; + printf("%c", (c >= ' ') ? c : ' '); + } + printf("\n"); + } + } +#endif + if (first_block(buf, bfs->blocksize) < 0) { + return -1; + } + + /* read one segment at a time */ + for (i = 0; i < nchunks; ++i) { + char *dest; + + /* include any unaligned bits of the offset */ + nblocks = (chunks[i].size + (chunks[i].offset & (bfs->blocksize - 1)) + + bfs->blocksize - 1) / bfs->blocksize; + printf("aboot: segment %d, %ld bytes at %#lx\n", i, chunks[i].size, + chunks[i].addr); +#ifdef TESTING + dest = malloc(nblocks * bfs->blocksize); +#else + dest = (char *) chunks[i].addr; +#endif + + nread = (*bfs->bread)(fd, chunks[i].offset / bfs->blocksize, + nblocks, dest); + if (nread != nblocks * bfs->blocksize) { + printf("aboot: read returned %ld instead of %ld bytes\n", + nread, nblocks * bfs->blocksize); + return -1; + } + /* In practice, they will always be aligned */ + if ((chunks[i].offset & (bfs->blocksize - 1)) != 0) + memmove(dest, + dest + (chunks[i].offset & (bfs->blocksize - 1)), + chunks[i].size); + } + return 0; +} + +static long +read_kernel (const char *filename) +{ + volatile int attempt, method; + long len; + int fd; + static struct { + const char *name; + int (*func)(int fd); + } read_method[]= { + {"uncompressed", load_uncompressed}, + {"compressed", uncompress_kernel} + }; + long res; +# define NUM_METHODS ((int)(sizeof(read_method)/sizeof(read_method[0]))) + +#ifdef DEBUG + printf("read_kernel(%s)\n", filename); +#endif + + method = 0; + len = strlen(filename); + if (len > 3 && filename[len - 3] == '.' + && filename[len - 2] == 'g' && filename[len - 1] == 'z') + { + /* if filename ends in .gz we don't try plain method: */ + method = 1; + } + + for (attempt = 0; attempt < NUM_METHODS; ++attempt) { + fd = (*bfs->open)(filename); + if (fd < 0) { + printf("%s: file not found\n", filename); + return -1; + } + printf("aboot: loading %s %s...\n", + read_method[method].name, filename); + + if (!_setjmp(jump_buffer)) { + res = (*read_method[method].func)(fd); + + (*bfs->close)(fd); + if (res >= 0) { + return 0; + } + } + method = (method + 1) % NUM_METHODS; + } + return -1; +} + +long +read_initrd() +{ + int nblocks, nread, fd; + struct stat buf; + + fd = (*bfs->open)(initrd_file); + if (fd < 0) { + printf("%s: file not found\n", initrd_file); + return -1; + } + (*bfs->fstat)(fd, &buf); + initrd_size = buf.st_size; + +#ifdef TESTING + initrd_start = (unsigned long) malloc(initrd_size); +#else + /* put it as high up in memory as possible */ + if (!free_mem_ptr) + free_mem_ptr = memory_end(); + /* page aligned (downward) */ + initrd_start = (free_mem_ptr - initrd_size) & ~(PAGE_SIZE-1); + /* update free_mem_ptr so malloc() still works */ + free_mem_ptr = initrd_start; +#endif + + nblocks = initrd_size / bfs->blocksize; + printf("aboot: loading initrd (%ld bytes/%d blocks) at %#lx\n", + initrd_size, nblocks, initrd_start); + if (nblocks & (bfs->blocksize - 1)) nblocks++; + nread = (*bfs->bread)(fd, 0, nblocks, (char*) initrd_start); + if (nread != nblocks * bfs->blocksize) { + printf("aboot: read returned %d instead of %d (%d*%d) bytes\n", + nread, nblocks * bfs->blocksize, + nblocks, bfs->blocksize); + return -1; + } + return 0; +} + +static void +get_disklabel (long dev) +{ + static char lsect[512]; + long nread; + +#ifdef DEBUG + printf("load_label(dev=%lx)\n", dev); +#endif + nread = cons_read(dev, &lsect, LABELOFFSET + sizeof(*label), + LABELSECTOR); + if (nread != LABELOFFSET + sizeof(*label)) { + printf("aboot: read of disklabel sector failed (nread=%ld)\n", + nread); + return; + } + label = (struct disklabel*) &lsect[LABELOFFSET]; + if (label->d_magic == DISKLABELMAGIC && + label->d_magic2 == DISKLABELMAGIC) + { + printf("aboot: valid disklabel found: %d partitions.\n", + label->d_npartitions); + } else { + printf("aboot: no disklabel found.\n"); + label = 0; + } +} + + +struct bootfs * +mount_fs (long dev, int partition) +{ + struct d_partition * part; + struct bootfs * fs = 0; + int i; + +#ifdef DEBUG + printf("mount_fs(%lx, %d)\n", dev, partition); +#endif + if (partition == 0) { + fs = &dummyfs; + if ((*fs->mount)(dev, 0, 0) < 0) { + printf("aboot: disk mount failed\n"); + return 0; + } + } else if (!label) { + /* floppies and such, no disklabel */ + for (i = 0; i < (int)(sizeof(bootfs)/sizeof(bootfs[0])); ++i) { + if ((*bootfs[i]->mount)(dev, 0, 1) >= 0) { + fs = bootfs[i]; + break; + } + } + if (!fs) { + printf("aboot: unknown filesystem type\n"); + return 0; + } + } else { + if ((unsigned) (partition - 1) >= label->d_npartitions) { + printf("aboot: invalid partition %u\n", partition); + return 0; + } + part = &label->d_partitions[partition - 1]; + for (i = 0; bootfs[i]->fs_type != part->p_fstype; ++i) { + if (i + 1 + >= (int) (sizeof(bootfs)/sizeof(bootfs[0]))) + { + printf("aboot: don't know how to mount " + "partition %d (filesystem type %d)\n", + partition, part->p_fstype); + return 0; + } + } + fs = bootfs[i]; + if ((*fs->mount)(dev, (long)(part->p_offset) * (long)(label->d_secsize), 0) + < 0) { + printf("aboot: mount of partition %d failed\n", + partition); + return 0; + } + } + return fs; +} + +void +list_directory (struct bootfs *fs, char *dir) +{ + int fd = (*fs->open)(dir); + /* yes, our readdir() is not exactly like the real one */ + int rewind = 0; + const char * ent; + + if (fd < 0) { + printf("%s: directory not found\n", dir); + return; + } + + while ((ent = (*fs->readdir)(fd, !rewind++))) { + printf("%s\n", ent); + } + (*fs->close)(fd); +} + +int +open_config_file(struct bootfs *fs) +{ + static const char *configs[] = { + "/etc/aboot.conf", + "/aboot.conf", + "/etc/aboot.cfg", + "/aboot.cfg" + }; + const int nconfigs = sizeof(configs) / sizeof(configs[0]); + int i, fd = -1; + + for (i = 0; i < nconfigs; i++) { + fd = (*fs->open)(configs[i]); + if (fd >= 0) + break; + } + return fd; +} + +void +print_config_file (struct bootfs *fs) +{ + int fd, nread, blkno = 0; + char *buf; + + fd = open_config_file(fs); + if (fd < 0) { + printf("%s: file not found\n", CONFIG_FILE); + return; + } + buf = malloc(fs->blocksize + 1); + if (!buf) { + printf("aboot: malloc failed!\n"); + return; + } + do { + nread = (*fs->bread)(fd, blkno++, 1, buf); + buf[nread] = '\0'; + printf("%s", buf); + } while (nread > 0); + (*fs->close)(fd); +} + + +int +get_default_args (struct bootfs *fs, char *str, int num) +{ + int fd, nread, state, line, blkno = 0; + char *buf, *d, *p; + + *str = '\0'; + fd = open_config_file(fs); + if (fd < 0) { + printf("%s: file not found\n", CONFIG_FILE); + return -1; + } + buf = malloc(fs->blocksize); + if (!buf) { + printf("aboot: malloc failed!\n"); + return -1; + } + d = str; + line = 1; + state = 2; + do { + nread = (*fs->bread)(fd, blkno++, 1, buf); + p = buf; + while (p < buf + nread && *p && state != 5) { + switch (state) { + case 0: /* ignore rest of line */ + case 1: /* in comment */ + if (*p == '\n') state = 2; + break; + + case 2: /* after end of line */ + line++; + if (*p == num) { + state = 3; /* found it... */ + break; + } + if (*p == '#') { + state = 1; /* comment */ + break; + } + if (*p == '-') { + state = 5; /* end-of-file mark */ + break; + } + state = 0; /* ignore rest of line */ + break; + + case 3: /* after matched number */ + if (*p == ':') { + state = 4; /* copy string */ + } else { + state = 2; /* ignore rest */ + printf("aboot: syntax error in line " + "%d: `:' expected\n", line); + } + break; + + case 4: /* copy until EOL */ + if (*p == '\n') { + *d = 0; + state=5; + } else { + *d++ = *p; + } + break; + + default: + break; + } + p++; + } + } while (nread > 0 && state != 5); + (*fs->close)(fd); +#ifdef DEBUG + printf("get_default done\n"); +#endif + + if (state != 5) { + printf("aboot: could not find default config `%c'\n", num); + return -1; + } +#ifdef DEBUG + printf("get_default_args(%s,%d)\n", str, num); +#endif + return 0; +} + + +static void +print_help(void) +{ + printf("Commands:\n" + " h, ? Display this message\n" + " q Halt the system and return to SRM\n" + " p 1-8 Look in partition for configuration/kernel\n" + " l List preconfigured kernels\n" + " d List directory in current filesystem\n" + " b Boot kernel in (- for raw boot)\n" + " i Use as initial ramdisk\n" + " with arguments \n" + " 0-9 Boot preconfiguration 0-9 (list with 'l')\n"); +} + +static void +get_aboot_options (long dev) +{ + int preset = 0; /* no preset */ + int interactive = 0; /* non-interactive */ + char *extra_args = NULL; + +#ifdef DEBUG + printf("get_aboot_options(%lx)\n",dev); + printf("kernel_args=\"%s\"\n",kernel_args); +#endif + + /* Forms of -flags argument from SRM */ + if (kernel_args[0] >= '1' && kernel_args[0] <= '9' + && kernel_args[1] == ':' && kernel_args[2] + && (kernel_args[3] == '\0' || kernel_args[3] == ' ')) + { + /* : - where is an entry + in /etc/aboot.conf (to be found on ), or + 'i' for interactive */ + config_file_partition = kernel_args[0] - '0'; + preset = kernel_args[2]; + if (kernel_args[3]) { + extra_args=&kernel_args[3]; + while (*extra_args == ' ') { extra_args++; } + if (*extra_args == '\0') extra_args = NULL; + } +#ifdef DEBUG + printf("partition:preset = %ld:%c\n", config_file_partition, + preset); +#endif + } else if (kernel_args[0] + && (kernel_args[1] == '\0' || kernel_args[1] == ' ')) { + /* Single character option, for Jensen and friends - + this is either a preconfigured entry in + /etc/aboot.conf or 'i' for interactive*/ + if (kernel_args[0] == 'i') interactive = 1; + else { + preset = kernel_args[0]; + if (kernel_args[1]) { + /* are there actually extra args? */ + extra_args=&kernel_args[1]; + while (*extra_args == ' ') { extra_args++; } + if (*extra_args == '\0') extra_args = NULL; + } + } + } else if (kernel_args[0] == '\0') { + interactive = 1; + } else { + /* attempt to parse the arguments given */ + } + +#ifdef DEBUG + if (extra_args) printf("extra args: \"%s\"\n",extra_args); +#endif + + if (preset || interactive) { + char buf[256], *p; + struct bootfs *fs = 0; + static int first = 1; + int done = 0; + + while (!done) { + /* If we have a setting from /etc/aboot.conf, use it */ + if (preset) { +#ifdef DEBUG + printf("trying preset %c\n", preset); +#endif + if (!fs) { + fs = mount_fs(dev, config_file_partition); + if (!fs) { + preset = 0; + continue; + } + } + if (get_default_args(fs, buf, preset) >= 0) + break; + + /* Doh, keep on going */ + preset = 0; + continue; + } + + /* Otherwise, clear out kernel_args and prompt the user */ + kernel_args[0] = 0; + if (first) { + printf("Welcome to aboot " ABOOT_VERSION "\n"); + print_help(); + first = 0; + } + printf("aboot> "); +#ifdef TESTING + fgets(buf, sizeof(buf), stdin); + buf[strlen(buf)-1] = 0; +#else + getline(buf, sizeof(buf)); +#endif + printf("\n"); + + switch (buf[0]) { + case 'h': + case '?': + print_help(); + break; + case 'q': + halt(); + break; + case 'p': + p = strchr(buf, ' '); + while (p && *p == ' ') ++p; + + if (p && p[0] >= '1' && p[0] <= '8' + && (p[1] == '\0' || p[1] == ' ')) { + config_file_partition = p[0] - '0'; + fs = 0; /* force reread */ + } else { + printf("Please specify a number between 1 and 8\n"); + } + break; + case 'l': + if (!fs) { + fs = mount_fs(dev, config_file_partition); + if (!fs) { + printf("Partition %ld is invalid. " + "Please specify another with 'p'\n", + config_file_partition); + continue; + } + } + print_config_file(fs); + break; + case 'd': + if (!fs) { + fs = mount_fs(dev, config_file_partition); + if (!fs) { + printf("Partition %ld is invalid. " + "Please specify another with 'p'\n", + config_file_partition); + continue; + } + } + /* skip past whitespace */ + p = strchr(buf, ' '); + while (p && *p == ' ') ++p; + if (p) + list_directory(fs, p); + else + list_directory(fs, "/"); + break; + case 'b': + /* skip past whitespace */ + p = strchr(buf, ' '); + while (p && *p == ' ') ++p; + if (p) { + strcpy(buf, p); + done = 1; + } else { + printf("Please specify a file to load the kernel from, " + "or '-' to load the kernel from the boot sector\n"); + } + break; + case 'i': + /* skip past whitespace */ + p = strchr(buf, ' '); + while (p && *p == ' ') ++p; + if (p) + strcpy(initrd_file, p); + else { + printf("Please specify a file to use as initial ramdisk\n"); + } + break; + case '0' ... '9': + preset = buf[0]; + p = strchr(buf, ' '); + while (p && *p == ' ') ++p; + if (p) { + strcpy(kernel_args, p); + extra_args=kernel_args; + } + break; + default: + break; + + } + } + + /* if we have extra args, append them to buf */ + if (extra_args) { + p=buf; while (p && *p) p++; + *p++=' '; + strcpy(p, extra_args); + } + + /* split on space into kernel + args */ + p = strchr(buf, ' '); + if (p) { + /* skip past leading whitespace */ + *p++ = '\0'; + while (p && *p == ' ') ++p; + strcpy(kernel_args, p); + } + strcpy(boot_file, buf); + } + +#ifdef DEBUG + printf("boot_file=\"%s\", kernel_args=\"%s\"\n",boot_file,kernel_args); +#endif + + { + /* parse off initrd= option from kernel_args if any */ + char *p = kernel_args; + /* poor man's strstr */ + do { + if (strncmp(p, "initrd=", 7) == 0) + break; + } while (*p++); + + if (*p) { + char *a = p + 7; /* argument */ + char *e = strchr (a, ' '); + if (e) { + strncpy(initrd_file, a, e-a); + initrd_file[e-a] = 0; + strcpy(p, e); + } else { + strcpy(initrd_file, a); + *p = 0; + } + } + } + + + /* parse off partition number from boot_file if any: */ + if (boot_file[0] >= '0' && boot_file[0] <= '9' && boot_file[1] == '/') + { + boot_part = boot_file[0] - '0'; + strcpy(boot_file, boot_file + 2); + } else { + boot_part = config_file_partition; + } +} + +static long +load (long dev) +{ + char *fname; + +#ifdef DEBUG + printf("load(%lx)\n", dev); +#endif + fname = boot_file; + if (fname[0] == '-' && fname[1] == '\0') { + /* a single "-" implies raw boot: */ + if (load_raw(dev) < 0) { + return -1; + } + } else { + /* if there's no disklabel, boot_part will be ignored anyway */ + bfs = mount_fs(dev, boot_part); + if (!bfs) { + printf("aboot: mount of partition %d failed\n", boot_part); + return -1; + } + if (read_kernel(fname) < 0) { + return -1; + } + } + /* clear bss: */ + printf("aboot: zero-filling %ld bytes at 0x%p\n", bss_size, bss_start); +#ifndef TESTING + memset((char*)bss_start, 0, bss_size); +#endif + + if (initrd_file[0] == 0) + return 0; + + /* work around a bug in the ext2 code */ + bfs = mount_fs(dev, boot_part); + if (!bfs) { + printf("aboot: mount of partition %d failed\n", boot_part); + return -1; + } + if (read_initrd() < 0) { + return -1; + } + return 0; +} + + +long +load_kernel (void) +{ + char envval[256]; + long result; + long dev; + +#ifdef TESTING + const char *e; + if ((e = getenv("BOOTED_DEV"))) { + strncpy(envval, e, sizeof(envval)-1); + envval[sizeof(envval)-1] = 0; + } else { + printf("aboot: Can't get BOOTED_DEV environment variable!\n"); + return -1; + } +#else + if (cons_getenv(ENV_BOOTED_DEV, envval, sizeof(envval)) < 0) { + printf("aboot: Can't get BOOTED_DEV environment variable!\n"); + return -1; + } +#endif + + printf("aboot: booting from device '%s'\n", envval); + dev = cons_open(envval); + if (dev < 0) { + printf("aboot: unable to open boot device `%s': %lx\n", + envval, dev); + return -1; + } + dev &= 0xffffffff; + get_disklabel(dev); + + while (1) { + get_aboot_options(dev); + result = load(dev); + if (result != -1) + break; + /* load failed---query user interactively */ + strcpy(kernel_args, "i"); + } +#ifdef DEBUG + printf("load done\n"); +#endif + cons_close(dev); + return result; +} diff --git a/package/aboot/src/doc/faq/.cvsignore b/package/aboot/src/doc/faq/.cvsignore new file mode 100644 index 000000000..2d19fc766 --- /dev/null +++ b/package/aboot/src/doc/faq/.cvsignore @@ -0,0 +1 @@ +*.html diff --git a/package/aboot/src/doc/faq/Makefile b/package/aboot/src/doc/faq/Makefile new file mode 100644 index 000000000..fc38ddba4 --- /dev/null +++ b/package/aboot/src/doc/faq/Makefile @@ -0,0 +1,9 @@ +all-html : SRM-HOWTO/index.html + +clean : + rm -rf SRM-HOWTO + +SRM-HOWTO/index.html : SRM-HOWTO.sgml + sgmltools --backend=html SRM-HOWTO.sgml + +#.PHONY clean diff --git a/package/aboot/src/doc/faq/SRM-HOWTO.sgml b/package/aboot/src/doc/faq/SRM-HOWTO.sgml new file mode 100644 index 000000000..8093647d4 --- /dev/null +++ b/package/aboot/src/doc/faq/SRM-HOWTO.sgml @@ -0,0 +1,2293 @@ + + + + +
+ + + +SRM Firmware Howto + + + +Rich Payne +
rdp@alphalinux.org
+
+ + +David Huggins-Daines +
dhuggins@linuxcare.com
+
+
+ +v0.8.1, 14 February 2004 + + + +This document describes how to boot Linux/Alpha using the SRM console, +which is the console firmware also used to boot +HP Tru64 Unix +(also known as Digital Unix and OSF/1) and OpenVMS. + + + +
+ + +About this manual + + +Who should read this manual + + +You should read this manual if you are installing Linux on a new +Alpha system that can only boot from the SRM console, or if you are +installing Linux on an older Alpha system that can use the SRM console +and wish to use SRM to boot your Linux installation. + + + +Because SRM is the only way to boot Linux on modern Alpha systems, +and because it provides the proper operating environment for Unix and +Unix-like operating systems (such as Linux), it is the recommended way +of booting Linux on Alpha when available. + + + +Sometimes, it is preferable to use the ARC, ARCSBIOS, or AlphaBIOS +console, such as if you have a machine for which SRM is not available, +if you wish to dual-boot with Windows NT +without switching consoles, +or if you have hardware that is not supported by SRM. On these +machines, you will typically use MILO to boot Linux. For more +information, refer to the MILO Howto, available from +http://www.alphalinux.org/faq/milo.html. + + + + + +Conventions + + +Throughout this manual, we will use the following conventions for +commands to be entered by the user: + + + +SRM console commands will be shown with the characteristic SRM +'>>>' prompt, like this: + + + +On multiprocessor machines, you +will see 'P00>>' instead, or possibly some other number depending on +which processor SRM is running. + + + + + + +>>> boot dva0 -fi linux.gz -fl "root=/dev/fd0 load_ramdisk=1" + + + + + +Unix commands will be shown with the '#' command prompt if they are +to be run as root, or '$' if they are to be run by a normal user, +like this: + + +# swriteboot -f3 /dev/sda /boot/bootlx + + + + + +Aboot commands will be shown with the 'aboot>' command prompt, like +this: + + +aboot> b 6/boot/vmlinuz root=/dev/hda6 + + + + + + + + + +What is SRM? + + +SRM console is used by Alpha systems as +Unix-style boot firmware. Tru64 Unix and +OpenVMS depend on it and +Linux can boot from it. You can recognize SRM console as a blue screen +with a prompt that is presented to you on power-up. + + + +Getting to SRM + + +Most Alpha systems have both the SRM and ARC/AlphaBIOS console in +their firmware. On one of these machines, if your machine starts up +with ARC/AlphaBIOS by default, you can switch to SRM through the +"Console Selection" option in the Advanced CMOS Setup menu. To make +the change permanent, you should set the os_type environment +variable in SRM to "OpenVMS" or "Unix", like this: + + +>>> set os_type Unix + + + + + +Either one will work to boot Linux. However, if you intend to +dual-boot OpenVMS on this machine, you must set os_type to +"OpenVMS". Conversely, to return to ARC/AlphaBIOS, you can set +os_type to "NT". + + + +Some older systems may not have both SRM and ARC in firmware as +shipped. On these systems, you will have to upgrade your firmware. +See http://ftp.digital.com/pub/DEC/Alpha/firmware for the +latest firmware updates and instructions. + + + +A few older systems (primarily evaluation boards such as the 164SX +and 164LX) are "half-flash" systems, whose firmware can hold SRM or +AlphaBIOS, but not both. If you have one of these machines, you will +have to reflash your firmware with the SRM console using the AlphaBIOS +firmware update utility. Again, see +http://ftp.digital.com/pub/DEC/Alpha/firmware for firmware +images and instructions. If you wish to return to AlphaBIOS on these +machines, you may rerun the firmware update utility from a floppy in +SRM using the fwupdate command. You can also start AlphaBIOS +from a floppy using the arc command. + + + + + +Using the SRM console + + +The SRM console works very much like a Unix or OpenVMS shell. It +views your NVRAM and devices as a pseudo-filesystem. You can see this +if you use the ls command. Also, it contains a fairly large set +of diagnostic, setup, and debugging utilities, the details of which +are beyond the scope of this document. As in the Unix shell, you can +pipe the output of one command to the input of another, and there is a +more command that works not unlike the Unix one. To get a full +listing of available commands, run: + + +>>> help | more + + + + + +As well, SRM has environment variables, a number of which are +pre-defined and correspond to locations in NVRAM. You can view the +entire list of environment variables and their values with the +show command (there are quite a few of them, so you will probably +want to pipe its output to more). You can also show variables +matching a "glob" pattern - for example, show boot* will show all +the variables starting in "boot". + + + +Environment variables are categorized as either read-only, +warm non-volatile, or cold non-volatile. The full listing +of pre-defined variables is detailed in the Alpha Architecture +Reference Manual. The most useful pre-defined environment variables +for the purposes of booting Linux are bootdef_dev, +boot_file, boot_flags, and +auto_action, all of which are cold non-volatile. + + + +To set environment variables, use the set command, like this: + + +>>> set bootdef_def dka0 + + + + + +If you set an undefined variable, it will be created for you, however +it will not persist across reboots. + + + +The bootdef_dev variable specifies the device (using +VMS naming conventions - see for an +explanation of these) which will be booted from if no device is +specified on the boot command line, or in an automatic boot. +The boot_file variable contains the filename to be +loaded by the secondary bootloader, while boot_flags +contains any extra flags. auto_action specifies the +action which the console should take on power-up. By default, it is +set to HALT, meaning that the machine will start up in the +SRM console. Once you have configured your bootloader and the +boot-related variables, you can set it to BOOT in order to +boot automatically on power-up. + + + +Finally, two helpful console keystrokes you should know are +ControlC, +which, as in the shell, halts a command in progress (such +as an automatic boot), and +ControlP, +which if issued from the aboot +prompt (or other secondary bootloader) will halt the bootloader and +return you to the SRM console. + + + + + +How Does SRM Boot an OS? + + +All versions of SRM can boot from SCSI disks and the versions for +recent platforms, such as the Noname or AlphaStations can boot from +floppy disks as well. Network booting via bootp is supported. +Note that older SRM versions (notably the one for the Jensen) +cannot boot from floppy disks. Booting from IDE devices +is supported on newer platforms (164SX, 164LX, 164UX, DS20, DS10, DP264, UP2000(+), UP1000, UP1100 etc.). + + + +Booting Linux with SRM is a two step process: first, SRM loads and +transfers control to the secondary bootstrap loader. Then the +secondary bootstrap loader sets up the environment for Linux, reads +the kernel image from a disk filesystem and finally transfers control to Linux. + + + +Currently, there are two secondary bootstrap loaders for Linux: +the raw loader that comes with the Linux kernel and aboot +which is distributed separately. These two loaders are described in +more detail below. + + + + + +Loading The Secondary Bootstrap Loader + + +SRM knows nothing about filesystems or disk-partitions. It simply +expects that the secondary bootstrap loader occupies a consecutive +range of physical disk sector, starting from a given offset. The +information on the size of the secondary bootstrap loader and the +offset of its first disk sector is stored in the first 512 byte +sector. Specifically, the long integer at offset 480 stores the +size of the secondary bootstrap loader (in 512-byte blocks) and +the long at offset 488 gives the sector number at which the +secondary bootstrap loader starts. The first sector also stores a +flag-word at offset 496 which is always 0 and a checksum at offset +504. The checksum is simply the sum of the first 63 long integers in +the first sector. + + + +If the checksum in the first sector is correct, SRM goes ahead and +reads the size sectors starting from the sector given in the +sector number field and places them in virtual memory at +address 0x20000000. If the reading completes successfully, +SRM performs a jump to address 0x20000000. + + + + + + + +SRM Device Naming + +The First Two Letter +The following is based on the example device dkb1.2.3.4.5 taken from a Digital Server 3300 (Whitebox version of +an AS800). + + +Two letter port or class driver designator: + + + DR: RAID set device + DV: Floppy Drive + EW: Ethernet port (TULIP, DEC 21040) + EI: Ethernet port (Intel 82557 or 82559) + PK: SCSI port (controller) + DK: SCSI disk + MK: SCSI tape + PU: DSSI port + DU: DSSI disk + MU: DSSI tape + JK: SCSI monitor (or robot) + DQ: (E)IDE Device (disk or CD-ROM) + + + + +The Rest Of The Device Name + + + + + b->adapter ID (one letter adapter designator) + + + 1->Device number (SCSI unit numbers are forced to 100x Node ID) + + + 2->Bus Node ID + + + 3->Channel Number + + + 4->Channel Number (used for multi-channel devices) + + + 5->Logical Slot number + + + EISA: they correspond to the physical slot numbers (1-3) + PCI: + + slot 5= SCSI controller on system backplane (DS3300) + slot 6= On board VGA (DS3300) + slot 7= PCI to EISA bridge chip (DS3300) + slots 11 - 14 = Correspond to Physical PCI option slots: + PCI11, PCI12, PCI13 and PCI14 (64bit) (DS3300) + + + + + + + 6->Hose number: 0 PCI_0 (32bit PCI); 1 EISA (DS3300) + + + + + + + + +The Raw Loader + + +The sources for this loader can be found in directory +arch/alpha/boot of the Linux kernel source +distribution. It loads the Linux kernel by reading +START_SIZE bytes starting at disk offset +BOOT_SIZE+512 +(also in bytes). The constants +START_SIZE and BOOT_SIZE +are defined in +linux/include/asm-alpha/system.h. +START_SIZE +must be at least as big as the kernel image (i.e., the size of the +.text, .data, and .bss segments). Similarly, +BOOT_SIZE must be at least as big as the image of the +raw bootstrap loader. Both constants should be an integer multiple of the +sector size, which is 512 bytes. The default values are currently 2MB +for START_SIZE and 16KB for +BOOT_SIZE. Note +that if you want to boot from a 1.44MB floppy disk, you have to reduce +START_SIZE to 1400KB and make sure that the kernel you +want to boot is no bigger than that. + + + +To build a raw loader, simply type make rawboot in the top +directory of your linux source tree (typically +/usr/src/linux). This should produce the following files +in arch/alpha/boot: + + + + + + +tools/lxboot: + + +The first +sector on the disk. It contains the offset and size of +the next file in the format described above. + + + + +tools/bootlx: + + +The raw boot loader that +will load the file below. + + + + +vmlinux.nh: + + +The raw kernel image consisting of +the .text, .data, and .bss segments of the +object file in /usr/src/linux/vmlinux. The +extension .nh indicates that this file has no object-file +header. + + + + + + + +The concatenation of these three files should be written to the +disk from which you want to boot. For example, to boot from a floppy, +insert an empty floppy disk in, say, /dev/fd0 and then type: + + +# cat tools/lxboot tools/bootlx vmlinux >/dev/fd0 + + + + + +You can then shutdown the system and boot from the floppy by +issuing the command boot dva0. + + + + + +The aboot Loader + + +When using the SRM firmware, aboot is the preferred way of +booting Linux. It supports: + + + + + + + + + direct booting from various filesystems (ext2, ISO9660, and +UFS, the HP Tru64 filesystem) + + + + + + listing directories and following symbolic links on ext2 (version 0.6 and later) + + + + + + booting of executable object files (both ELF and ECOFF) + + + + + + booting compressed kernels + + + + + + network booting (using bootp) + + + + + + partition tables in HP Tru64 format (which is +compatible with BSD Unix partition tables) + + + + + + interactive booting and default configurations for +SRM consoles that cannot pass long option strings + + + + + + + load initrd images to load modules at boot time (0.7 and later) + + + + + + + + +Getting and Building aboot + + +The latest sources for aboot are available from Sourceforge. They can +also be obtained via anonymous CVS from www.sf.net, to get the latest version from CVS use these commands: + +bash# cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aboot login +bash# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aboot co aboot + +(Note there is no password for the CVS login, just press enter) + + + +The description in this manual applies to aboot version 0.6 +or newer. Please note that many distributions ship aboot with them so +downloading aboot from this directory is probably not neccesary. + + + + Once you downloaded and extracted the latest tar file, take a +look at the README and INSTALL files +for installation hints. In particular, be sure to adjust the variables in +Makefile and in include/config.h +to match your +environment. Normally, you won't need to change anything when +building under Linux, but it is always a good idea to double check. +If you're satisfied with the configuration, simply type make +to build it (if you're not building under Linux, be advised that +aboot requires GNU make). + + + +After running make, the aboot +directory should contain the following files: + + + + + + +aboot + + +This is the actual aboot executable (either an +ECOFF or ELF object file). + + + + +bootlx + + +Same as above, but it contains only the text, data +and bss segments ‐ that is, this file is not an object file. + + + + +sdisklabel/swriteboot + + +Utility to install aboot on a +hard disk. + + + + +tools/e2writeboot + + +Utility to install aboot on an ext2 +filesystem (usually used for floppies only). + + + + +tools/isomarkboot + + +Utility to install aboot on a iso9660 +filesystem (used by CD-ROM distributors). + + + + +tools/abootconf + + +Utility to configure an installed aboot. + + + + + + + + + +Floppy Installation + + + The bootloader can be installed on a floppy using the +e2writeboot command (note: this can't be done on a Jensen +since +its firmware does not support booting from floppy). This command +requires that the disk is not overly fragmented as it needs to find +enough contiguous file blocks to store the entire aboot image +(currently about 90KB). If e2writeboot fails because of this, +reformat the floppy and try again (e.g., with fdformat(1)). +For +example, the following steps install aboot on floppy disk +assuming the floppy is in drive /dev/fd0: + + +# fdformat /dev/fd0 +# mke2fs /dev/fd0 +# e2writeboot /dev/fd0 bootlx + + + + + + + +Harddisk Installation + + +Since the e2writeboot command may fail on highly fragmented +disks and since reformatting a harddisk is not without pain, it is +generally safer to install aboot on a harddisk using the +swriteboot command. +swriteboot requires that the first few +sectors are reserved for booting purposes. We suggest that the disk +be partitioned such that the first partition starts at an offset of +2048 sectors. This leaves 1MB of space for storing aboot. On +a properly partitioned disk, it is then possible to install aboot +as follows (assuming the disk is /dev/sda): + + +# swriteboot /dev/sda bootlx + + + + + +On systems where partition c in the entire disk it will be +necessary to 'force' the write of aboot. In this case use the -f +flag followed by the partition number (in the case of partition c +this is 3): + + +# swriteboot /dev/sda bootlx -f3 + + + + + +On a Jensen, you will want to leave some more space, since you need to +write a kernel to this place, too---2MB should be sufficient when +using compressed kernels. Use swriteboot as described in Section + to write bootlx together with +the Linux kernel. + + + + + +CD-ROM Installation + + + To make a CD-ROM bootable by SRM, simply build aboot as +described above. Then, make sure that the bootlx file is +present on the iso9660 filesystem (e.g., copy bootlx to +the directory that is the filesystem master, then run mkisofs +on that directory). After that, all that remains to be done is to mark the +filesystem as SRM bootable. This is achieved with a command of the +form: + + +# isomarkboot filesystem bootlx + + + + + +The command above assumes that filesystem is a file +containing the iso9660 filesystem and that bootlx has been +copied into the +root directory of that filesystem. That's it! + + + + + +Building the Linux Kernel + + +A bootable Linux kernel can be built with the following steps. +During the make config, be sure to answer "yes" to the +question +whether you want to boot the kernel via SRM (for certain platforms +this is automatically selected). Note that if you build a generic +kernel (by selecting "Generic" as the alpha system type), the kernel +is able to guess whether it is running under SRM or not. + + +# cd /usr/src/linux +# make config +# make dep +# make boot +# make modules (if applicable) +# make modules_install (if applicable) + + + + + +The last command will build the file +arch/alpha/boot/vmlinux.gz which can then be copied to the +disk from which you want to boot from. In our floppy disk example +above, this would entail: + + +# mount /dev/fd0 /mnt +# cp arch/alpha/boot/vmlinux.gz /mnt +# umount /mnt + + + + + + + +Booting Linux + + + With the SRM firmware and aboot installed, Linux is generally +booted with a command of the form: + + +boot devicename -fi filename +-fl flags + + + + + +The filename and flags arguments are optional. If +they are not specified, SRM uses the default values stored in +environment variables BOOTDEF_DEV, +BOOT_OSFILE and +BOOT_OSFLAGS. The +syntax and meaning of these two arguments is described in more detail +below. To list the current values of these variables type +show boot* at the SRM command prompt. This will also show a +boot_dev variable (among others), this variable is +read only +and needs to be changed via the bootdef_dev variable. + + + +Device Naming + + +This corresponds to the device from which SRM will attempt to boot. Examples include: + + + + + + +dva0 + + +- First floppy drive, /dev/fd0 under Linux + + + + +dqa0 + + +- Primary IDE CD-ROM or hard disk as Master, /dev/hda + under Linux + + + + +dqa1 + + +- Primary IDE CD-ROM or hard disk as Slave, /dev/hdb + under Linux + + + + +dka0 + + +- SCSI disk on first bus, Device 0, /dev/sda under Linux + + + + +ewa0 + + +- First Ethernet Device, /dev/eth0 under Linux + + + + + + + +For example to boot from the disk at SCSI id 6, you would enter: + + +>>> boot dka600 + + + + + +To list the devices currently installed in the system type +show dev at the SRM command line. In contrast to Linux +device naming, the +partition number on a disk device is not given as part of the +device name (you may see extra numbers after the device names when +running show dev - these correspond to things like PCI bus and +device numbers and are not useful to the user). Remember, as +mentioned in , that SRM knows nothing +about partitions or disklabels - it merely reads a boot block and +secondary bootstrap from sectors on a disk. Therefore, the partition +number is given as part of the boot filename. + + + + + +Boot Filename + + +The filename argument takes the form: +[n/]filename + + + +n is a single digit in the range 1..8 that gives the partition +number from which to boot from. filename is the path of the file +you want boot. For example to boot a kernel named +vmlinux.gz from the second partition of SCSI +device 6, you would enter: + + +>>> boot dka600 -file 2/vmlinux.gz + + + + + +Or to boot from floppy drive 0, you'd enter: + + +>>> boot dva0 -file vmlinux.gz + + + + + +If a disk has no partition table, aboot pretends the disk +contains one ext2 partition starting at the first diskblock. +This allows booting from floppy disks. + + + +As a special case, partition number 0 is used to request booting +from a disk that does not (yet) contain a file system. When +specifying "partition" number 0, aboot assumes that the Linux +kernel is stored right behind the aboot image. Such a layout +can be achieved with the swriteboot command. For example, to +setup a filesystem-less boot from /dev/sda, one could use +the command: + + +# swriteboot /dev/sda bootlx vmlinux.gz + + + + + +Booting a system in this way is not normally necessary. The +reason this feature exists is to make it possible to get Linux +installed on a systems that can't boot from a floppy disk (e.g., the +Jensen). + + + + + +Boot Flags + + +A number of bootflags can be specified. The syntax is: + + +-flags "options..." + + + + + +Where "options..." is any combination the following options (separated +by blanks). There are many more bootoptions, depending on what +drivers your kernel has installed. The options listed below are +therefore just examples to illustrate the general idea: + + + + + + +load_ramdisk=1 + + +Copy root file system from a (floppy) disk to the RAM disk +before starting the system. The RAM disk will be used in +lieu of the root device. This is useful to bootstrap Linux +on a system with only one floppy drive. + + + + +floppy=str + + +Sets floppy configuration to str. + + + + +root=dev + + +Select device dev as the root-file +system. The device can be specified as a major/minor hex number (e.g., +0x802 for /dev/sda2) or one of a few canonical names (e.g., +/dev/fd0, /dev/sda2). + + + + +single + + +Boot system in single user mode. + + + + +kgdb + + +Enable kernel-gdb (works only if CONFIG_KGDB is +enabled; a second Alpha system needs to be connected over the serial +port in order to make this work) + + + + + + + +Some SRM implementations (e.g., the one for the Jensen) are +handicapped and allow only short option strings (e.g., at most 8 +characters). In such a case, aboot can be booted with the +single-character boot flag "i". With this flag, aboot will +enter interactive mode + + + + + +Using aboot interactively + + +As of version 0.6, aboot supports a simple command-oriented +interactive mode. Note that this is different from the prompt +which previous versions issued when booted with the "i" flag, or after +failing to load a kernel. You can get a summary of the available +commands by typing "h" or "?" at the prompt: + + +>>> boot dka0 -fl i +aboot> ? + h, ? Display this message + q Halt the system and return to SRM + p 1-8 Look in partition <num> for configuration/kernel + l List pre-configured kernels + d <dir> List directory <dir> in current filesystem + b <file> <args> Boot kernel in <file> (- for raw boot) + with arguments <args> + 0-9 Boot pre-configuration 0-9 (list with 'l') +aboot> b 3/vmlinux.gz root=/dev/sda3 single + + + + + + + +The <filename>aboot.conf</filename> configuration file + + +Since booting in that manner quickly becomes tedious, aboot +allows to define short-hands for frequently used command lines. In +particular, a single digit option (0-9) requests that aboot uses +the corresponding option string stored in file +etc/aboot.conf. A sample aboot.conf is shown below: + + +# +# aboot default configurations +# +0:3/vmlinux.gz root=/dev/sda3 +1:3/vmlinux.gz root=/dev/sda3 single +2:3/vmlinux.new.gz root=/dev/sda3 +3:3/vmlinux root=/dev/sda3 +8:- root=/dev/sda3 # fs-less boot of raw kernel +9:0/vmlinux.gz root=/dev/sda3 # fs-less boot of (compressed) ECOFF kernel +- + + + + + +With this configuration file, the command + + +>>> boot dka0 -fl 1 + + +corresponds exactly to the boot command shown above. + + + +Finally, at the aboot prompt, it is possible to enter one of the +single character flags ("0"-"9") to get the same effect as if that +flag had been specified in the boot command line. As noted in the +help text cited above, you can also list the available default +configurations with the "l" command. + + + +Selecting the Partition of <filename>etc/aboot.conf</filename> + + +When installed on a harddisk, aboot needs to know what +partition to search for the /etc/aboot.conf file. A newly +compiled aboot will search the second partition (e.g., +/dev/sda2). Since it would be inconvenient to have to +recompile aboot just to change the partition number, +abootconf allows to directly modify an installed aboot. +Specifically, if you want to change aboot to use the third +partition on disk /dev/sda, you'd use the command: + + +# abootconf /dev/sda 3 + + + + +You can verify the current setting by simply omitting the partition +number. That is: abootconf /dev/sda will print the currently +selected partition number. Note that aboot does have to be +installed already for this command to succeed. As of version 0.6, +swriteboot it will preserve the existing configuration when +installing a new aboot on a hard disk. + + + + +Since aboot version 0.5, it is also possible to select the +aboot.conf partition via the boot command line. This can +be +done with a command line of the form a:b +where a +is the partition that holds etc/aboot.conf and b is a +single-letter option as described above (0-9, i, or +h). For example, if you type +boot -fl "3:h" dka100 the +system boots from SCSI ID 1, loads etc/aboot.conf from the +third partition, prints its contents on the screen and waits for you +to enter the boot options. + + + + + + + + + +Setting up a BOOTP capable server using DHCP + + +The following configuration assumes that the server is running RH-6.2. +Prerequisites packages are, + + + +dhcp-2.0.5 + + + + +tftp-server-0.16.5 + + + + + + + +DHCP & BOOTP configuation + +Once those packages are installed there are a few setup issues to take care of. + + + +Create the default directory to which files will be pulled from using tftp. + + +# mkdir /tftpboot + + + +Create the dhcp.leases file which is not create per default +(though it should be) when +you install the dhcp package so the dhcp server may start. + + + +# mkdir -p /var/state/dhcp +# touch /var/state/dhcp/dhcpd.leases + + + +Configure the inetd to accept the tftp service. Edit your +/etc/inetd.conf file and locate +the following line. Then uncomment it and save the file. + + + +#tftp dgram udp wait root /usr/sbin/tcpd in.tftpd + + + +Create the /etc/dhcp.conf configuation file. An example +config is provided below with the directives which allow BOOTP. + + + +subnet 192.168.1.0 netmask 255.255.255.0 { + option routers 192.168.1.1; + option subnet-mask 255.255.255.0; + option nis-domain "alphalinux.org"; + option domain-name "alphalinux.org"; + option domain-name-servers 192.168.1.2; + range 192.168.1.3 192.168.1.254; + range dynamic-bootp 192.168.1.3 192.168.1.254; + default-lease-time 21600; + max-lease-time 43200; + allow bootp; + allow booting; + filename "/tftpboot/vmlinux.bootp"; +} + + + +Examination of <filename>/etc/dhcp.conf</filename> + +There are four directives that you should be concerned with. + + + + +range dynamic-bootp 192.168.1.3 192.168.1.254; +which defines the range of ip's available for bootp. + + +allow bootp; +which tells the dhcp server to allow the bootp protocol.. + + +allow booting; +which tells the dhcp server to allow the transfer of the file specified +either in the the "filename" directive or passed in the "-file" flag in SRM. + + +filename "/tftpboot/vmlinux.bootp"; + which is the default file which is transferred and executed when no filename +specified in SRM as an argument. + + + + + +Lastly, Restart the inetd daemon so that the changes we made can take effect + +# service inet restart + +You should now have a DHCP server that is capable of BOOTP. + + + + +bootpd configuration + +The bootpd is the older way of making a bootp server and for the most part is not used anymore +in lieu of more modern DHCP servers that are capable of handling the protocol with minimal configuration +and more flexibility. This style of setup does not allow just any client to be granted a BOOTP request. +Instead you must specify the ip address and MAC address of the allowed clients. Naturally this could get +quite tedious if you where say administrating more than a few machines. + + + +bootpd rpms can be found on older versions of RedHat's distributions like version 5.2 and below. Note: +the rpm itself is named bootp though the package does contain the bootpd filename. It is available +for download at your favorite RedHat mirror. +The bootp package requires the tftp-server just as before and the location to where the files are grabbed from is the same. + + + +Once installed you must configure your inetd service to talk to the bootpd daemon. Uncomment the following line in your /etc/inetd.conf. + + +#bootps dgram udp wait root /usr/sbin/tcpd bootpd + + +Then restart the inetd. + + +# service inet restart + + + +Configuring the /etc/bootptab file. The +bootptab file +has one entry describing each client that is allowed to boot from +the server. For example, if you want to boot the machine +voodoo.alphalinux.org, then an entry of the following form would +be needed: + + +voodoo.alphalinux.org:\ + :hd=/tftpboot/:bf=vmlinux.bootp:\ + :ht=ethernet:ha=08012B1C51F8:hn:vm=rfc1048:\ + :ip=192.12.69.254:bs=auto: + + + + + +This entry assumes that the machine's Ethernet address is +08012B1C51F8 and that its IP address is 192.12.69.254. The +Ethernet address can be found with the show device command +of the SRM console or, if Linux is running, with the ifconfig +command. +The entry also defines that if the client does not specify otherwise, +the file that will be booted is vmlinux.bootp in directory +/tftpboot. For more information on configuring bootpd, +please refer to its man page. + + + + + + + + + +Booting Over the Network + + +Three steps are necessary before Linux can be booted via +a network. First you need an Ethernet adapter that is supported by SRM. +Most version of SRM support the DE500 series of cards, with newer +versions (5.6 and later) also supporting the Intel EtherExpress/Pro series +of cards. +Second, you need to set the SRM environment variables to +enable booting via the bootp protocol and third you need to setup +another machine as the your boot server. Enabling bootp in SRM is +usually done by setting the ewa0_protocol (DE500 cards) or eia0_protocol (Intel cards) variable to bootp. + + +>>> set ewa0_protocol bootp + + + + +Also check to see that your ethernet device has a link light to whatever hub or switch it is connected to. If you +do not see a link light try forcing the negotiation of the ethernet device. For example: + + + +>>> set ewa0_mode FastFD + + + Would set the DE500 ethernet card to fast full duplex operation. To see a list of the available modes + + +>>> set ewa0_mode + + + +Netboot using the aboot sources is currently broken though for the curious the steps needed are further below. Instead use the directions for netbooting using the kernel sources. + + + +Netboot using the kernel sources + + + + + +Make sure the kernel you want to boot has already been built + + + + +Execute the following while in the linux source dir: + + + + make bootimage + + + + + make bootpfile + + + + + + +This creates a uncompressed kernel named bootpfile located +in arch/alpha/boot/. Note that this kernel is +significantly larger than that produced by the aboot sources. + + + + +Copy bootpfile to the bootp server's directory. With a default setup the tftp server would look in +/tftpboot so copy bootpfile into +/tftpboot. + + + + + + + + + +Netboot using the aboot sources + + + + +Build aboot with with the command make netboot. + + + + +Make sure the kernel that you want to boot has been built already. + +By default, the aboot Makefile uses the kernel in +/usr/src/linux/arch/alpha/boot/vmlinux.gz (edit the +Makefile if you want to use a different path). The result of +make netboot is a file called +vmlinux.bootp + which contains aboot and the Linux kernel, ready for network booting. + + + + + +Copy vmlinux.bootp to the bootp server's directory. In the +example above, you'd copy it into /tftpboot/vmlinux.bootp. + + + + + +Next, power up the client machine and boot it, specifying the Ethernet adapter as the boot device. Typically, SRM calls the DEC based Ethernet adapter ewa0 and the Intel based adapter +eia0, so to boot from that device, you'd use the command: + + >>> boot ewa0 + + + +The -fi and -fl options can be used as usual. For example, + + + + >>> boot ewa0 -fi bootpfile -fl "root=/dev/hda2" + + + +In particular, you can ask aboot to prompt for Linux kernel arguments by specifying the option +-fl i . + + + +Updating the SRM console through BOOTP + +Updating your SRM console over the network through BOOTP is just as easy as booting the Linux kernel +in the same manner. The hardware prerequisites are the same as netbooting Linux. + + + +First you have to obtain an SRM image that is able to BOOTP over the network. These images normally +have a .exe extension. For DEC/Compaq/HP Alpha products these images can be found at +ftp://ftp.digital.com/pub/Digital/Alpha/firmware/; you will need version 5.8 or later. For access you might need to use an proper ftp client. You can also find these files on the Alpha Systems Firmware Update CD-ROM. API NetWorks did not offer any net bootable SRM image. + + + + + +For example say you had a DS20 and wanted to update it's firmware over the network using BOOTP. You would have to, + +Get the correct firmware image for the DS20 that supported BOOTP execution which in this case the filename is +ds20_v5_8.exe from ftp://gatekeeper.dec.com/pub/DEC/Alpha/firmware/v5.8/. + + +Copy the file to the /tftpboot folder located on the +BOOTP server. + + + + + +To execute the update from SRM you would do the following: + +>>> b ewa0 -fi ds20_v5_8.exe + +SRM would then proceed to upgrade the firmware in the same fashion as if you had done the firmware update from a CD. + + + + + + + + + +Partitioning Disks + + +What is a disklabel? + + +A disk label is a partition table. Unfortunately, there are several +formats the partition table can take, depending on the operating +system. + + + +DOS partition tables are the standard used by Linux and +Windows. AlphaBIOS systems and every Linux kernel can read DOS +partition tables. Unfortunately, the SRM console's boot sector format +overlaps with parts of the DOS partition table on disk, and therefore +DOS partition tables cannot be used with SRM. + + + +BSD disklabels are used by several variants of Unix, including +Tru64. SRM's boot block does not conflict with +the BSD disklabel (in +fact, the BSD disklabel resides entirely within "reserved" areas of +the first sector), and Linux can use a BSD disklabel, provided that +support for BSD disklabels has been compiled into the kernel. + + + +To boot from a disk using SRM, a BSD disklabel is required. If the +disk is not a boot disk, the BSD disklabel is not required. A BSD +disklabel can be created using fdisk, the standard Linux disk +partitioning tool. + + + + + +Partitioning the Easy Way: a DOS Disklabel + + +The simplest way to partition your disk is to let your Linux installer +do it for you, for example by using Red Hat's disk druid or fdisk. On +Red Hat 6.1, this will produce a valid BSD disklabel, but +only if the disk in question previously contained one. In +most cases, this will produce a DOS disklabel. It will be readable by +Linux, but you will not be able to boot from it via SRM. For this +reason, you will probably want to create a BSD disklabel manually in +order to boot Linux + + + + + +Partitioning with a BSD Disklabel + + + + + + + +Start fdisk on the disk you're configuring + + + + + +Choose to make a BSD disklabel - option 'b' (newer versions of +fdisk will detect existing BSD disklabels and automatically enter +disklabel mode) + + + + + +You'll notice some things: Partitions are letters instead of +numbers, from a-h Partition 'c' covers the whole of the disk. This is +the convention, don't touch it. While you can see it, note down the +disk parameters as you'll use them more often than with the +DOS-disklabel approach + + + + + +Creating a new partition uses the same procedure as the +DOS-disklabel approach, except that the partitions are referred to by +letter instead of number. That is, 'n' to make a new partition +followed by the partition letter followed by the starting block +followed by the end block + + + + + +Setting partition type is slightly different, because the +numbering scheme is different (1 is swap, 8 is ext2). + + + + + +When you are finished, write ('w') and quit ('q') as normal. + + + + + + + + +There are some important catches that you must be aware of when +partitioning using a BSD disklabel: + + + + + +Partition 'a' should start about 1M into the disk: don't start +it at sector 1, try starting at sector 10 (for example). This leaves +plenty of space for writing the boot block (see below) + + + + + +There is a bug in some versions of fdisk which makes the disk +look one sector bigger than it actually is. The listing when you +create the BSD disklabel is correct. The last sector of partition 'c' +is correct. The default last sector when creating a new partition is +1 sector too big + + + + + +Always adjust for this extra sector. This bug exists in the +version of fdisk shipped with Red Hat 6.0. Not making an adjustment +for this problem almost always leads to "Access beyond end of device" +errors from the Linux kernel. + + + + + + + + +Once you have made a BSD disklabel, continue the installation. After +installation, you can write a boot block to your disk to make it +bootable from SRM. + + + + + + + + + +Sharing a Disk With <productname>HP Tru64</productname> + + +Unfortunately, HP Tru64 doesn't know anything about Linux, so sharing +a single disk between the two OSes is not entirely trivial. However, +it is not a difficult task if you heed the tips in this section. The +section assumes you are using aboot version 0.5 or newer. + + + +Partitioning the disk + + +First and foremost: never use any of the Linux partitioning +programs (minlabel or fdisk) on a disk that is also +used by HP Tru64. The Linux minlabel program uses the same +partition table format as HP Tru64 disklabel, but there are +some incompatibilities in the data that minlabel fills in, so +HP Tru64 will simply refuse to accept a partition table generated by +minlabel. To setup a Linux ext2 partition under HP Tru64, +you'll have to change the disktab entry for your disk. For the +purpose of this discussion, let's assume that you have an rz26 disk (a +common 1GB drive) on which you want to install Linux. The disktab +entry under HP Tru64 v3.2 looks like this (see file +/etc/disktab): + + +rz26|RZ26|DEC RZ26 Winchester:\ + :ty=winchester:dt=SCSI:ns#57:nt#14:nc#2570:\ + :oa#0:pa#131072:ba#8192:fa#1024:\ + :ob#131072:pb#262144:bb#8192:fb#1024:\ + :oc#0:pc#2050860:bc#8192:fc#1024:\ + :od#393216:pd#552548:bd#8192:fd#1024:\ + :oe#945764:pe#552548:be#8192:fe#1024:\ + :of#1498312:pf#552548:bf#8192:ff#1024:\ + :og#393216:pg#819200:bg#8192:fg#1024:\ + :oh#1212416:ph#838444:bh#8192:fh#1024: + + + + + +The interesting fields here are o?, and +p?, where ? is a letter in the range +a-h (first through 8-th partition). The o +value gives the starting offset of the partition (in sectors) and the +p value gives the size of the partition (also in sectors). +See disktab(4) for more info. Note that HP Tru64 likes to +define overlapping partitions. For the entry above, the partition +layout looks like this (you can verify this by adding up the various +o and p values): + + + a b d e f +|---|-------|-----------|-----------|-----------| + + c +|-----------------------------------------------| + + g h + |-----------------|-----------------| + + + + + +HP Tru64 insists that partition a starts at offset 0 and that +partition c spans the entire disk. Other than that, you can +setup the partition table any way you like. + + + +Let's suppose you have HP Tru64 using partition g and want to +install Linux on partition h with partition b being a +(largish) swap partition. To get this layout without destroying the +existing HP Tru64 partition, you need to set the partition types +explicitly. You can do this by adding a t field for each +partition. In our case, we add the following line to the above +disktab entry. + + + :ta=unused:tb=swap:tg=4.2BSD:th=resrvd8: + + + + + +Now why do we mark partition h as "reservd8" instead of "ext2"? +Well, HP Tru64 doesn't know about Linux. It so happens that partition +type "ext2" corresponds to a numeric value of 8, and HP Tru64 uses the +string "reservd8" for that value. Thus, in HP Tru64 speak, "reservd8" +means "ext2". OK, this was the hard part. Now we just need to +install the updated disktab entry on the disk. Let's assume the disk +has SCSI id 5. In this case, we'd do: + + +# disklabel -rw /dev/rrz5c rz26 + + + + + +You can verify that everything is all right by reading back the +disklabel with disklabel -r /dev/rrz5c. At this point, you +may want to reboot HP Tru64 and make sure the existing HP Tru64 +partition is still alive and well. If that is the case, you can shut +down the machine and start with the Linux installation. Be sure to +skip the disk partitioning step during the install. Since we already +installed a good partition table, you should be able to proceed and +select the 8th partition as the Linux root partition and the 2nd +partition as the swap partition. If the disk is, say, the second SCSI +disk in the machine, then the device name for these partitions would +be /dev/sdb8 and /dev/sdb2, +respectively (note that +Linux uses letters to name the drives and numbers to name the +partitions, which is exactly reversed from what HP Tru64 does; the +Linux scheme makes more sense, of course ;-). + + + + + +Installing <Literal remap="tt">aboot</Literal> + + +First big caveat: with the SRM firmware, you can boot one and +only one operating system per disk. For this reason, it is generally +best to have at least two SCSI disks in a machine that you want to +dual-boot between Linux and HP Tru64. Of course, you could also boot +Linux from a floppy if speed doesn't matter or over the network, if +you have a bootp-capable server. But in this section we assume +you want to boot Linux from a disk that contains one or more HP Tru64 +partitions. + + + +Second big caveat: installing aboot on a disk shared with +HP Tru64 renders the first and third partition unusable (since those +must have a starting offset of 0). For this reason, we recommend +that you change the size of partition a to something that is just +big enough to hold aboot (1MB should be plenty). + + + +Once these two caveats are taken care of, installing aboot is +almost as easy as usual: since partition a and c will +overlap with aboot, we need to tell swriteboot that this is +indeed OK. We can do this under Linux with a command line of the +following form (again, assuming we're trying to install aboot on +the second SCSI disk): + + +# swriteboot -f1 -f3 /dev/sdb bootlx + + + + + +The -f1 means that we want to force writing +bootlx even +though it overlaps with partition 1. The corresponding applies for +partition 3. + + + +This is it. You should now be able to shutdown the system and boot +Linux from the harddisk. In our example, the SRM command line to do +this would be: + + +>>> boot dka5 -fi 8/vmlinux.gz -fl root=/dev/sdb8 + + + + + + + + + +Installation of Distributions + + +RedHat 6.0, 6.1 and 6.2 + + +Installation from the Red Hat 6.0, 6.1 or 6.2 CD + + +Red Hat have made their distribution CD bootable from SRM console + + + +Please note that through the official RedHat CD-ROM is SRM +bootable, copies made by various other companies may not be +bootable. + + + + +To start an installation, put the CD in and type +the following: + + +>>> boot srm-device -file kernels/generic.gz -flags root=linux-device + + + + + +In the above, the SRM device name and Linux device name for your +CD-ROM drive are needed. For Example if the machine had an IDE CD-ROM +installed as primary master the command would look like this: + + +>>> boot dqa0 -file kernels/generic.gz -flags "root=/dev/hda" + + + + + +See the section on conventions if you don't know what these are. + + + + + + + + + +SuSE 6.1 + + +Installation from the SuSE 6.1 CD + + +The SuSE 6.1 CD is not bootable from SRM console. SuSE have an +alternative approach which involves creating two boot floppies, the +images of which are included on the CD. The boot disks can be created +in various ways, depending on the systems you have available + + + +Writing the boot disks from a linux system +The command to use is dd. From the mount-point of SuSE CD 1, the commands are: + + +# dd if=disks/aboot of=/dev/fd0 +# dd if=disks/install of=/dev/fd0 + + + + + +For writing the boot disks from a windows system, the command to use +is rawrite. It is available on the CD. + + + D:\tools\> rawrite + + + + + +The program then prompts for input disk image and output disk +drive. Run this command once for each of the disk images as shown +above. + + + +Starting the SuSE installer from the boot disks +With the floppy disk made from the aboot image in place, type: + + +>>> boot dva0 -file vmlinux.gz -flags "root=/dev/fd0 load_ramdisk=1" + + + + + +This will start the kernel, prompt you for the second boot disk, and start the installer + + + + + + + +SuSE 6.3 + + +Installation from the SuSE 6.3 CD + + +The SuSE 6.3 CD-ROM is SRM bootable much like the RedHat 6.0 and 6.1 CD-ROMs. The best way +to start the install from SRM is to use the following command: + + +>>> boot srm-device -flags 0 + + + + + +In the above, the SRM device names for your +CD-ROM drive is needed. For example if the machine had an IDE CD-ROM +installed as primary master the command would look like this: + + +>>> boot dqa0 -flags 0 + + +SuSE has added support to aboot to allow it to load initrd files. The above command will from the +CD-ROM drive and use config number 0 from the /etc/aboot.conf file. For other variations +on this refer to the SuSE installation guide. + + + + + + + + + + + +Document History + +v0.8.1 14th February 2004 Updated by Helge Kreutzmann kreutzm@physik.uni-hannover.de + + + + +Introduced more SGML-Tags, updated DocBook-Version + + + + +Minor typographic corrections (e.g., whitespaces) + + + + +Fixed some (outdated) URLS + + + + +v0.8 9th November 2000 Changed from Rich Payne rdp@alphalinux.org + + + + Added section on SRM Device names + + + + + + Many spelling/grammer fixes. + + + + + + + +v0.7.1 6th November 2000 Changes from Peter Petrakis ppetrakis@alphalinux.org + + + + + + Cleaned up netbooting section. Avoid duplicate information. + + + + + + Added DHCP/BOOTP server configuration section. + + + + + + Added SRM netbooting section. + + + + + + Put the older bootpd configuration in it's own section and elaborated on it. + + + + + + + + +v0.7 10th July 2000 Changes from Rich Payne rdp@alphalinux.org + + + + + + Updated for RedHat 6.2 + + + + + + Fixed aboot link for alphalinux.org and added CVS information. + + + + + + Added additional netboot information from Peter Petrakis ppetrakis@alphalinux.org + + + + + + + +v0.6.1 21 March 2000 Changes from Rich Payne rdp@alphalinux.org + + + + + + Made the installation hints a new chapter + + + + + + Added information on Netbooting + + + + + + Added to the new section on RedHat 6.1 and BSD disklabels + + + + + + Removed David Mosberger-Tang's name from the authors list + + + + + + Marked a few of the feature as being in 0.6 only + + + + + + Added info for SuSE 6.3 and RedHat 6.1 + + + + + + + + +v0.6 3 March 2000 Changes and information from David Huggins-Daines +dhd@linuxcare.com + + + + + +Moved the notes on MILO vs. SRM to an "About this document" section + + + + + +Added sections on switching to SRM, and basic SRM usage + + + + + +Added section on the new interactive use of aboot + + + + + +Updated the note on DOS partition tables to mention the Red Hat 6.1 +installer's behavior. + + + + + +Normalized the markup, and codified the conventions used for +user-entered commands. + + + + + +Corrected the notes on BSD disklabels (SRM does not +read BSD disklabels, it's just that they don't conflict with the boot +block). + + + + + + + + +v0.5.2 5 December 1999 Added comments and information from Stig Telfer +(stig@alpha-processor.com). + + + + + +Added chart on SRM to Linux name mappings + + + + + +Added RedHat 6.0 and SuSE 6.1 installation information + + + + + +Added Disk Partitioning Information + + + + + + + + +v0.5.1 (Not Released) 13 November 1999 Took the original 0.5 document and updated several parts: + + + + + + + + +Update information on SRM booting from IDE devices + + + + + +Fixed URL to aboot source + + + + + +Update toc page to reflect MILO's future + + + + + +Included information on bootdef_dev and boot_dev to chapter 3 + + + + + +Added this section + + + + + + + + +v0.5 17 August 1996 - Original Document by David Mosberger-Tang + + + + +
diff --git a/package/aboot/src/doc/man/Makefile b/package/aboot/src/doc/man/Makefile new file mode 100644 index 000000000..4ccdd4c0d --- /dev/null +++ b/package/aboot/src/doc/man/Makefile @@ -0,0 +1,51 @@ +# eventually this should have rules for recreating the man pages from the +# sgml source, but since this doesn't work on my machine right now i'm +# leaving it out. + +# if this is a recursive make, and mandir was set in the top-level Makefile, +# use that value. Otherwise default to /usr/man. + +ifeq ($(mandir),) +MANDIR=/usr/man +else +MANDIR=$(mandir) +endif +MAN1=$(MANDIR)/man1 +MAN5=$(MANDIR)/man5 +MAN8=$(MANDIR)/man8 + +all: aboot.8 aboot.conf.5 abootconf.8 isomarkboot.1 sdisklabel.8 netabootwrap.1 + +install: + install -d $(MAN1) $(MAN5) $(MAN8) + install -c isomarkboot.1 netabootwrap.1 $(MAN1) + install -c aboot.conf.5 $(MAN5) + install -c aboot.8 abootconf.8 e2writeboot.8 swriteboot.8 sdisklabel.8 $(MAN8) +install-gz: install + gzip -f9 $(MAN1)/isomarkboot.1 $(MAN1)/netabootwrap.1 + gzip -f9 $(MAN5)/aboot.conf.5 + gzip -f9 $(MAN8)/aboot.8 $(MAN8)/abootconf.8 $(MAN8)/e2writeboot.8 \ + $(MAN8)/swriteboot.8 $(MAN8)/sdisklabel.8 +install-gzip: install-gz + +clean: + rm -f aboot.8 aboot.conf.5 abootconf.8 isomarkboot.1 sdisklabel.8 netabootwrap.1 manpage.log manpage.links manpage.refs + +aboot.8: aboot.sgml + nsgmls aboot.sgml | sgmlspl sgmlspl-specs/docbook2man-spec.pl + +aboot.conf.5: aboot.conf.sgml + nsgmls aboot.conf.sgml | sgmlspl sgmlspl-specs/docbook2man-spec.pl + +abootconf.8: abootconf.sgml + nsgmls abootconf.sgml | sgmlspl sgmlspl-specs/docbook2man-spec.pl + +isomarkboot.1: isomarkboot.sgml + nsgmls isomarkboot.sgml | sgmlspl sgmlspl-specs/docbook2man-spec.pl + +netabootwrap.1: netabootwrap.sgml + nsgmls netabootwrap.sgml | sgmlspl sgmlspl-specs/docbook2man-spec.pl + +sdisklabel.8: sdisklabel.sgml + nsgmls sdisklabel.sgml | sgmlspl sgmlspl-specs/docbook2man-spec.pl + diff --git a/package/aboot/src/doc/man/README b/package/aboot/src/doc/man/README new file mode 100644 index 000000000..f2af31271 --- /dev/null +++ b/package/aboot/src/doc/man/README @@ -0,0 +1,32 @@ +This compilation contains man pages for various boot aspects on the Linux/Alpha +platform. They are licensed under the GPL. Comments, suggestions and patches +should be forwarded either to me or to the current aboot maintainer. + +The following files are included: + +README this document +aboot.8 man pages for aboot +aboot.sgml sgml-source for man page for aboot +aboot.conf.5 man page for configuration file etc/aboot.conf +aboot.conf.sgml sgml-source for above man page +abootconf.8 man page for abootconf +abootconf.sgml sgml-source for man page for abootconf +e2writeboot.8 man page for e2writeboot (from aboot 7a tarball, modified) +swriteboot.8 man page for swriteboot (from debian distribution, modified) +isomarkboot.sgml sgml-source for man page for isomarkboot +isomarkboot.8 man page for isomarkboot +sdisklabel.sgml sgml-source for man page for sdisklabel +sdisklabel.8 man page for sdisklabel + +Since I have no experience regarding e2writeboot and swriteboot I made only +small modifications in these man pages. + +The list of authors was verified as best as possible (by contacting all +person still reachable via email), if you feel this is not complete/accureate +please contact me. + +Technical note: +To create the nroff version from the SGML sources, nsgml was used like + nsgmls abootconf.sgml | sgmlspl sgmlspl-specs/docbook2man-spec.pl + +Hannover, Germany, January 17th 2003 diff --git a/package/aboot/src/doc/man/aboot.8 b/package/aboot/src/doc/man/aboot.8 new file mode 100644 index 000000000..5aa86a568 --- /dev/null +++ b/package/aboot/src/doc/man/aboot.8 @@ -0,0 +1,57 @@ +.\" This manpage has been automatically generated by docbook2man-spec +.\" from a DocBook document. docbook2man-spec can be found at: +.\" +.\" Please send any bug reports, improvements, comments, patches, +.\" etc. to Steve Cheng . +.TH "ABOOT" "8" "11 Juli 2002" "aboot" "" +.SH NAME +aboot \- The secondary boot loader for Linux/Alpha +.SH "COPYRIGHT" +.PP +\fBaboot\fR is Copyright (C) 1996 Linus Torvalds, David Mosberger-Tang and Michael Schwingen +.SH "DESCRIPTION" +.PP + +\fBaboot\fR is the secondary boot loader needed if +the Linux/Alpha system is booted via SRM. It is usually installed during +system installation by \fBswriteboot\fR(8). +.PP +To automate the booting process predefined boot configurations can be stored +in \fIetc/aboot.conf\fR(5). +.PP +\fBaboot\fR can also be used interactively by issuing +.PP +\fBboot \fIdka0 -fl "i"\fB\fR +.PP +at the SRM-Prompt where dka0 has to be replaced by the device used. +.PP +In the interactive mode you can use the command h to show your current +\fIetc/aboot.conf\fR and then the appropriate number +(or a complete boot command as in SRM) to boot Linux. +.PP +If you do not want to use the \fIetc/aboot.conf\fR as set +up by \fBabootconf\fR you can explicitly tell +\fBaboot\fR where to look for \fIetc/aboot.conf\fR by prepending the number of the configuration with the proper +partition, i.e. if your \fIetc/aboot.conf\fR is on your +second partition and you want to boot the entry labeled three you would +issue +.PP +\fBboot \fIdqa -fl "2:3"\fB\fR +.PP +Note that this applies to Linux booting via SRM only as +VMS, Tru64, *BSD and +Windows NT each have their own secondary boot loader. +Furthermore \fBaboot\fR is also not needed if the system is booted via +\fBmilo\fR. +.SH "AUTHOR" +.PP +This man page was written by Helge Kreutzmann + for the Debian GNU/Linux project +but may be used by others. +.SH "FILES" +.PP +\fIetc/aboot.conf\fR +.SH "SEE ALSO" +.PP +\fBabootconf\fR(8), \fIaboot.conf\fR(5), +\fBswriteboot\fR(8), HP SRM Manual diff --git a/package/aboot/src/doc/man/aboot.conf.5 b/package/aboot/src/doc/man/aboot.conf.5 new file mode 100644 index 000000000..b3cb49393 --- /dev/null +++ b/package/aboot/src/doc/man/aboot.conf.5 @@ -0,0 +1,81 @@ +.\" This manpage has been automatically generated by docbook2man-spec +.\" from a DocBook document. docbook2man-spec can be found at: +.\" +.\" Please send any bug reports, improvements, comments, patches, +.\" etc. to Steve Cheng . +.TH "ABOOT.CONF" "5" "16 Juli 2003" "aboot.conf" "" +.SH NAME +aboot.conf \- The configuration file for aboot(8) +.SH "DESCRIPTION" +.PP + +\fIaboot.conf\fR contains a list of boot settings +for \fBaboot\fR(8). Each boot setting +has a unique number which can be supplied at the SRM-Prompt. +. +.PP +\fIaboot.conf\fR must be in a directory called +\fIetc\fR on the \fBsame partition\fR +as your kernels reside on unless you explicitly list the partitions +for your kernels (see below for details). So if you create a separate +boot partition (called \fI/boot\fR) then +\fIaboot.conf\fR should reside in \fI/boot/etc/\fR. +.PP +In the following example the kernels reside on a different partition (hda4) +then \fI/\fR belongs to (hda5) while in the fourth +line \fI/boot\fR is on the same partition (hda6) as +\fI/\fR. +Therefore \fIaboot.conf\fR can be located on any of the +three partitions but \fBalways\fR in a directory +\fIetc\fR at the top level of the file system on that +partition. You can change the partition to use with +\fBabootconf\fR(8). +.PP +.SS "EXAMPLE ABOOT.CONF" +.sp +.RS +.sp +.nf +0:4/vmlinuz root=/dev/hda5 +1:4/vmlinuz root=/dev/hda5 single +2:4/vmlinuz.old ro root=/dev/hda5 +3:4/vmlinuz-2.4.9-32 root=/dev/sdc3 initrd=/initrd-2.4.9-32.img console=tty0 +8:6/boot/vmlinuz ro root=/dev/hda6 +.sp +.fi +.RE +.sp +.PP +The first number is a unique identifier for each boot configuration. +To boot a certain configuration at the SRM-Prompt you would issue +.PP +\fBboot \fIdka0 -fl "0"\fB\fR +.PP +where dka0 has to be replaced by your boot device and the boot configuration +(0 in this case) can be replaced by any defined in +\fIetc/aboot.conf\fR. +.PP +After the colon the number of the partition the kernel resides on is given. 1 +corresponds to the BSD partition labeled A:, 2 to B: and so on. +.PP +After the slash the name of the kernel to boot is given, including a possible +path. If your kernel does not reside on a file system but is located directly +after \fBaboot\fR at the beginning of the hard disk +you would omit the number, the slash and the kernel name. +.PP +Next the name of the partition to mount as \fI/\fR is given. +Other kernel parameters follow as required. As shown also an initrd can be +specified. +.PP +The contents of this file can be shown before booting if necessary by +using the interactive +mode of \fBaboot\fR(8) (booting with the flag "i") +and then issuing "h" at the \fBaboot\fR-prompt. +.SH "AUTHOR" +.PP +This man page was written by Helge Kreutzmann + for the Debian GNU/Linux project but +may be used by others. +.SH "SEE ALSO" +.PP +\fBaboot\fR(8), \fBabootconf\fR(8), \fBswriteboot\fR(8), HP SRM Manual diff --git a/package/aboot/src/doc/man/aboot.conf.sgml b/package/aboot/src/doc/man/aboot.conf.sgml new file mode 100644 index 000000000..f29813e7f --- /dev/null +++ b/package/aboot/src/doc/man/aboot.conf.sgml @@ -0,0 +1,106 @@ + + + + +aboot.conf +5 +aboot.conf + + + +aboot.conf +The configuration file for aboot(8) + + + +DESCRIPTION + +aboot.conf +aboot.conf contains a list of boot settings +for aboot(8). Each boot setting +has a unique number which can be supplied at the SRM-Prompt. +SRM. + + +aboot.conf must be in a directory called +etc on the same partition +as your kernels reside on unless you explicitly list the partitions +for your kernels (see below for details). So if you create a separate +boot partition (called /boot) then +aboot.conf should reside in /boot/etc/. + + +In the following example the kernels reside on a different partition (hda4) +then / belongs to (hda5), while in the fifth +line /boot is on the same partition (hda6) as +/. +Therefore aboot.conf can be located on any of the +three partitions but always in a directory +etc at the top level of the file system on that +partition. You can change the partition to use with +abootconf(8). + + +Example <filename>aboot.conf</filename> +
+ +0:4/vmlinuz root=/dev/hda5 +1:4/vmlinuz root=/dev/hda5 single +2:4/vmlinuz.old ro root=/dev/hda5 +3:4/vmlinuz-2.4.9-32 root=/dev/sdc3 initrd=/initrd-2.4.9-32.img console=tty0 +8:6/boot/vmlinuz ro root=/dev/hda6 + +
+
+ +The first number is a unique identifier for each boot configuration. +To boot a certain configuration at the SRM-Prompt you would issue + + + +boot dka0 -fl "0" + + + +where dka0 has to be replaced by your boot device and the boot configuration +(0 in this case) can be replaced by any defined in +etc/aboot.conf. + + + +After the colon the number of the partition the kernel resides on is given. 1 +corresponds to the BSD partition labeled A:, 2 to B: and so on. + + + +After the slash the name of the kernel to boot is given, including a possible +path. If your kernel does not reside on a file system but is located directly +after aboot(8) at the beginning of the hard disk +you would omit the number, the slash and the kernel name. + + + +Next the name of the partition to mount as / is given. +Other kernel parameters follow as required. As shown also an initrd can be +specified. + + + +The contents of this file can be shown before booting if necessary by +using the interactive +mode of aboot(8) (booting with the flag "i") +and then issuing "h" at the aboot-prompt. + + +
+AUTHOR + +This man page was written by Helge Kreutzmann +debian@helgefjell.de for the Debian GNU/Linux project but +may be used by others. + + +SEE ALSO +aboot(8), abootconf(8), swriteboot(8), HP SRM Manual () + +
diff --git a/package/aboot/src/doc/man/aboot.sgml b/package/aboot/src/doc/man/aboot.sgml new file mode 100644 index 000000000..d54d3ad8c --- /dev/null +++ b/package/aboot/src/doc/man/aboot.sgml @@ -0,0 +1,83 @@ + + + + +aboot +8 +aboot + + + +aboot +The secondary boot loader for Linux/Alpha + + +COPYRIGHT + +aboot is Copyright (C) 1996 Linus Torvalds, David Mosberger-Tang and Michael Schwingen + + + +DESCRIPTION + +aboot +aboot is the secondary boot loader needed if +the Linux/Alpha system is booted via SRM. It is usually installed during +system installation by swriteboot(8). + + +To automate the booting process predefined boot configurations can be stored +in etc/aboot.conf(5). + + +aboot can also be used interactively by issuing + + +boot dka0 -fl "i" + + +at the SRM-Prompt where dka0 has to be replaced by the device used. + + +In the interactive mode you can use the command l to show your current +etc/aboot.conf and then the appropriate number +(or a complete boot command as in SRM) to boot Linux. + + +If you do not want to use the etc/aboot.conf as set +up by abootconf(8) you can explicitly tell +aboot where to look for etc/aboot.conf by prepending the number of the configuration with the proper +partition, i.e. if your etc/aboot.conf is on your +second partition and you want to boot the entry labeled three you would +issue + + +boot dqa -fl "2:3" + + +Note that this applies to Linux booting via SRM only as +VMS, Tru64, *BSD and +Windows NT each have their own secondary boot loader. +Furthermore aboot is also not needed if the system is booted via +milo. + + + + +AUTHOR + +This man page was written by Helge Kreutzmann +debian@helgefjell.de for the Debian GNU/Linux project +but may be used by others. + + + +FILES +etc/aboot.conf + + +SEE ALSO +abootconf(8), aboot.conf(5), +swriteboot(8), HP SRM Manual () + + diff --git a/package/aboot/src/doc/man/abootconf.8 b/package/aboot/src/doc/man/abootconf.8 new file mode 100644 index 000000000..cb0f00624 --- /dev/null +++ b/package/aboot/src/doc/man/abootconf.8 @@ -0,0 +1,96 @@ +.\" This manpage has been automatically generated by docbook2man-spec +.\" from a DocBook document. docbook2man-spec can be found at: +.\" +.\" Please send any bug reports, improvements, comments, patches, +.\" etc. to Steve Cheng . +.TH "ABOOTCONF" "8" "26 Oktober 2003" "abootconf" "" +.SH NAME +abootconf \- Configure the location of the configuration file for the secondary bootloader aboot(8) for Linux/Alpha. +.SH SYNOPSIS +.sp +\fBabootconf\fR \fB/dev/xxx num\fR +.SH "COPYRIGHT" +.PP +\fBabootconf\fR is Copyright (C) 1996 Linus Torvalds, David Mosberger-Tang and Michael Schwingen +.SH "DESCRIPTIONS" +.PP + + +\fBabootconf\fR is used to change the partition +the alpha Linux boot loader \fBaboot\fR(8) +looks for its configuration file in. The configuration file is stored +in \fIetc/aboot.conf\fR(5) +relative to the root of the file system in this partition. +.PP +\fBabootconf\fR requires the boot device +(e.g. \fI/dev/hdb\fR, \fI/dev/sda\fR) and the +partition +to be used (e.g. 3). Thus if you want to boot from partition E: on your second +SCSI disk you would enter +.PP +\fBabootconf \fI/dev/sdb 5\fB\fR +.SH "NOTES" +.PP +\fBabootconf\fR is not needed if you are booting +your alpha system via \fBmilo\fR. +.PP +For each disk one partition can be activated to contain the configuration +for \fBaboot\fR(8) which is located in +\fIetc/aboot.conf\fR(5). +The disk chosen to boot from is selected at +the SRM prompt as the second argument, e.g. +.PP +\fBboot \fIdqa\fB\fR +.PP +to boot from your first IDE hard disk. See the HP SRM-Manual and +\fBaboot\fR(8) +for details. +.PP +\fBaboot\fR(8) can load a kernel from an +arbitrary partition and can even use a different +root partition than the one \fIetc/aboot.conf\fR +belongs to. Hence you would usually +set up one \fIetc/aboot.conf\fR with all combinations and +would not require \fBabootconf\fR except for initial +set up. You can then +boot the requested +Linux kernel by giving the appropriate flags at the SRM prompt, e.g. to boot +the entry labeled 2 you would use +.PP +\fBboot \fIdqa -fl "2"\fB\fR +.PP +See the HP SRM manual and \fIaboot.conf\fR(5) +for details. +.PP +To show the current setting simply omit the last argument (i.e. the partition +number). +.PP +Note that you have to rerun \fBabootconf\fR if you updated +\fBaboot\fR. +.PP +Strictly speaking \fBabootconf\fR is not necessary as +you can specify the partition which \fIetc/aboot.conf\fR +resides on at the SRM-Prompt by prepending the partition number and a colon +in the flags-parameter, i.e. if \fIetc/aboot.conf\fR +resided on the fourth partition and you want to boot the entry labeled 2 +you could also issue +.PP +\fBboot \fIdqa -fl "4:2"\fB\fR +.PP +at the SRM prompt. +.PP +Note that this applies to Linux only as VMS, Tru64, *BSD and +Windows NT each have their own secondary boot loader. +.PP +Also note that for initial hard disk setup \fBabootconf\fR +is no longer needed as \fBswriteboot\fR(8) contains the +entire functionality of \fBabootconf\fR. +.SH "AUTHOR" +.PP +This man page was written by Helge Kreutzmann for the Debian GNU/Linux project but may be used by others. +.SH "FILES" +.PP +\fIetc/aboot.conf\fR +.SH "SEE ALSO" +.PP +\fBaboot\fR(8), \fBswriteboot\fR(8), \fIaboot.conf\fR(5), HP SRM Manual diff --git a/package/aboot/src/doc/man/abootconf.sgml b/package/aboot/src/doc/man/abootconf.sgml new file mode 100644 index 000000000..5281cd323 --- /dev/null +++ b/package/aboot/src/doc/man/abootconf.sgml @@ -0,0 +1,141 @@ + + + + +abootconf +8 +abootconf + + + +abootconf + +Configure the location of the configuration file for the secondary boot +loader aboot(8) for Linux/Alpha. + + + + + + abootconf /dev/xxx num + + + +COPYRIGHT + +abootconf is Copyright (C) 1996 Linus Torvalds, David Mosberger-Tang and Michael Schwingen + + + +DESCRIPTIONS + +abootconf +aboot +abootconf is used to change the partitionpartition + +the alpha Linux boot loader aboot(8) +looks for its configuration file in. The configuration file is stored +in etc/aboot.conf(5) +relative to the root of the file system in this partition. + + +abootconf requires the boot device +(e.g. /dev/hdb, /dev/sda) and the +partition +to be used (e.g. 3). Thus if you want to boot from partition E: on your second +SCSI disk you would enter + + +abootconf /dev/sdb 5 + + + +NOTES + +abootconf is not needed if you are booting +your alpha system via milo. + + +For each disk one partition can be activated to contain the configuration +for aboot(8) which is located in +etc/aboot.conf(5). +The disk chosen to boot from is selected at +the SRM prompt as the second argument, e.g. + + + +boot dqa + + + +to boot from your first IDE hard disk. See the HP SRM-Manual and +aboot(8) +for details. + + +aboot(8) can load a kernel from an +arbitrary partition and can even use a different +root partition than the one etc/aboot.conf +belongs to. Hence you would usually +set up one etc/aboot.conf with all combinations and +would not require abootconf except for initial +set up. You can then +boot the requested +Linux kernel by giving the appropriate flags at the SRM prompt, e.g. to boot +the entry labeled 2 you would use + + + +boot dqa -fl "2" + + + +See the HP SRM manual and aboot.conf(5) +for details. + + +To show the current setting simply omit the last argument (i.e. the partition +number). + + +Note that you have to rerun abootconf if you updated +aboot(8). + + +Strictly speaking abootconf is not necessary as +you can specify the partition which etc/aboot.conf +resides on at the SRM-Prompt by prepending the partition number and a colon +in the flags-parameter, i.e. if etc/aboot.conf +resided on the fourth partition and you want to boot the entry labeled 2 +you could also issue + + + +boot dqa -fl "4:2" + + + +at the SRM prompt. + + +Note that this applies to Linux only as VMS, Tru64, *BSD and +Windows NT each have their own secondary boot loader. + + +Also note that for initial hard disk setup abootconf +is no longer needed as swriteboot(8) contains the +entire functionality of abootconf. + + +AUTHOR + +This man page was written by Helge Kreutzmann debian@helgefjell.de for the Debian GNU/Linux project but may be used by others. + + +FILES +etc/aboot.conf + +SEE ALSO +aboot(8), swriteboot(8), aboot.conf(5), HP SRM Manual () + + diff --git a/package/aboot/src/doc/man/de/Makefile b/package/aboot/src/doc/man/de/Makefile new file mode 100644 index 000000000..22ef583a1 --- /dev/null +++ b/package/aboot/src/doc/man/de/Makefile @@ -0,0 +1,46 @@ +all: srmbootraw.de.8 aboot.de.8 aboot.conf.de.5 abootconf.de.8 isomarkboot.de.1 sdisklabel.de.8 srmbootfat.de.1 e2writeboot.de.8 swriteboot.de.8 netabootwrap.de.1 + +aboot.de.8: aboot.sgml + nsgmls aboot.sgml | sgmlspl docbook2man-de-spec.pl + mv aboot.8 aboot.de.8 + +aboot.conf.de.5: aboot.conf.sgml + nsgmls aboot.conf.sgml | sgmlspl docbook2man-de-spec.pl + mv aboot.conf.5 aboot.conf.de.5 + +abootconf.de.8: abootconf.sgml + nsgmls abootconf.sgml | sgmlspl docbook2man-de-spec.pl + mv abootconf.8 abootconf.de.8 + +netabootwrap.de.1: netabootwrap.sgml + nsgmls netabootwrap.sgml | sgmlspl docbook2man-de-spec.pl + mv netabootwrap.1 netabootwrap.de.1 + +isomarkboot.de.1: isomarkboot.sgml + nsgmls isomarkboot.sgml | sgmlspl docbook2man-de-spec.pl + mv isomarkboot.1 isomarkboot.de.1 + +sdisklabel.de.8: sdisklabel.sgml + nsgmls sdisklabel.sgml | sgmlspl docbook2man-de-spec.pl + mv sdisklabel.8 sdisklabel.de.8 + +srmbootfat.de.1: srmbootfat.sgml + nsgmls srmbootfat.sgml | sgmlspl docbook2man-de-spec.pl + mv srmbootfat.1 srmbootfat.de.1 + +srmbootraw.de.8: srmbootraw.sgml + nsgmls srmbootraw.sgml | sgmlspl docbook2man-de-spec.pl + mv srmbootraw.8 srmbootraw.de.8 + +e2writeboot.de.8: e2writeboot.8 + ln -s e2writeboot.8 e2writeboot.de.8 + +swriteboot.de.8: swriteboot.8 + ln -s swriteboot.8 swriteboot.de.8 + +clean : + rm -f *.html *.de.? srmbootraw.8 srmbootfat.1 sdisklabel.8 isomarkboot.8 abootconf.8 aboot.conf.5 aboot.8 netabootwrap.1 manpage.links manpage.log manpage.refs + rm -rf SRM-HOWTO + + +#.PHONY clean diff --git a/package/aboot/src/doc/man/de/aboot.conf.sgml b/package/aboot/src/doc/man/de/aboot.conf.sgml new file mode 100644 index 000000000..5702c70db --- /dev/null +++ b/package/aboot/src/doc/man/de/aboot.conf.sgml @@ -0,0 +1,108 @@ + + + + +aboot.conf +5 +aboot.conf + + + +aboot.conf +Die Konfigurationsdatei für aboot(8) + + + +BESCHREIBUNG + +aboot.conf +aboot.conf enthält eine Liste von Boot-Einstellungen +für aboot(8). Jede Boot-Einstellung hat eine +eindeutige Zahl, die am SRM-Prompt angegeben werden kann. +SRM. + + +aboot.conf muß sich in einem Verzeichnis names +etc auf der gleichen Partition +wie Ihre Kernel befinden, es sei den, Sie geben explizit die Partition +für Ihre Kernel an (siehe dazu die Ausführungen weiter unten). Falls Sie +also eine seperate Boot-Partition (namens /boot) +erzeugen, dann sollte aboot.conf in +/boot/etc/ liegen. + + +Im folgenden Beispiel liegen die Kernel auf einer anderen Partition (hda4) +als / (hda5), während in der fünften Zeile +/boot auf der gleichen Partition (hda6) wie +/ liegt. Daher kann sich aboot.conf +auf einer der drei Partitionen befinden, muß aber immer +in einem Verzeichnis namens etc relativ zur obersten +Verzeichnisebene auf dieser Partition angelegt sein. Die zu verwendene +Partition können Sie mittels abootconf(8) +ändern. + + +BEISPIEL <filename>aboot.conf</filename> +
+ +0:4/vmlinuz root=/dev/hda5 +1:4/vmlinuz root=/dev/hda5 single +2:4/vmlinuz.old ro root=/dev/hda5 +3:4/vmlinuz-2.4.9-32 root=/dev/sdc3 initrd=/initrd-2.4.9-32.img console=tty0 +8:6/boot/vmlinuz ro root=/dev/hda6 + +
+
+ +Die erste Zahl ist ein eindeutige Identifikation für jede Boot-Konfiguration. +Um eine bestimmte Konfiguration am SRM-Prompt zu booten, geben Sie + + + +boot dka0 -fl "0" + + + +ein, wobei dka0 durch Ihr Boot-Gerät und die 0 durch die zur bootende, +in etc/aboot.conf angegegebene Konfigurationszahl +ersetzt werden muß. + + + +Nach dem Doppelpunkt ist die Partition, auf der sich der Kernel befindet, +angegeben. 1 entspricht der BSD-Partition mit Namen A:, 2 B: und so weiter. + + + +Nach dem Schrägstrich ist der Name (ggf. inklusive des zugehörigen Pfads) +des zu bootenden Kernels angegeben. Falls sich Ihr Kernel nicht in einem +Dateisystem, sondern direkt nach aboot(8) am Anfang +der Festplatte befindet lassen Sie die Zahl, den Schrägstrich und den +Kernelnamen weg. + + + +Als nächstes ist die als / zu montierende Partition +angegeben. Andere benötigte Kernel-Parameter folgen. Wie gezeigt kann auch +eine initrd angegeben werden. + + + +Der Inhalt dieser Datei kann vor dem Booten mittels des interaktiven +Modus -- durch Booten mit dem Paramter "i" -- +von aboot(8) und der Angabe von +"h" am aboot-Prompt angezeigt werden. + + +
+AUTOR + +Diese Handbuchseite wurde von Helge Kreutzmann +debian@helgefjell.de für das Debian GNU/Linux-Projekt +geschrieben, sie darf aber auch von anderen verwendet werden. + + +SIEHE AUCH +aboot(8), abootconf(8), swriteboot(8), HP SRM Handbuch () + +
diff --git a/package/aboot/src/doc/man/de/aboot.sgml b/package/aboot/src/doc/man/de/aboot.sgml new file mode 100644 index 000000000..49fa124e6 --- /dev/null +++ b/package/aboot/src/doc/man/de/aboot.sgml @@ -0,0 +1,89 @@ + + + + +aboot +8 +aboot + + + +aboot +Der Bootloader (Urlader) der zweiten Stufe auf Linux/Alpha + + +COPYRIGHT + +aboot unterliegt dem Copyright (C) 1996 Linus Torvalds, David Mosberger-Tang und Michael Schwingen + + + +BESCHREIBUNG + +aboot +aboot wird als Bootloader (Urlader) der zweiten +Stufe benötigt, falls das System via SRM gebootet wird. Er wird normalerweise +während der Systeminstallation durch +swriteboot(8) installiert. + + +Um den Bootprozess zu automatisieren können vordefinierte Boot-Konfigurationen +in etc/aboot.conf(5) eingetragen werden. + + +aboot kann durch die Angabe von + + +boot dka0 -fl "i" + + +am SRM-Prompt auch interaktiv verwendet werden, wobei dka0 durch das +verwendete Gerät ersetzt werden muß. + + +Im interaktiven Modus können Sie das Kommando l zur Anzeige der derzeitigen +etc/aboot.conf verwenden, und durch die Angabe der +entsprechenden Zahl (oder des kompletten Boot-Kommandos wie bei SRM) +Linux booten. + + +Falls Sie nicht die von abootconf(8) erstellte +etc/aboot.conf verwenden wollen, können Sie +aboot explizit angeben, wo es nach der +etc/aboot.conf suchen soll, indem Sie vor die +Zahl der Konfiguration die passende Partition angeben, d.h. falls +Ihre etc/aboot.conf sich auf Ihrer zweiten Partition +befindet und Sie den mit 3 benannten Eintrag booten wollen, dann gäben +Sie an + + +boot dqa -fl "2:3" + + +Beachten Sie, daß dies nur für das Booten von Linux via SRM zutrifft, da +VMS, Tru64, *BSD und +Windows NT jeweils über ihren eigenen Bootloader +für die zweite Stufe verfügen. Desweiteren wird aboot +nicht benötigt, falls das System mittels milo +gebootet wird. + + + + +AUTOR + +Diese Handbuchseite wurde von Helge Kreutzmann +debian@helgefjell.de für das Debian GNU/Linux-Projekt +geschrieben, sie darf aber auch von anderen verwendet werden. + + + +DATEIEN +etc/aboot.conf + + +SIEHE AUCH +abootconf(8), aboot.conf(5), +swriteboot(8), HP SRM Handbuch () + + diff --git a/package/aboot/src/doc/man/de/abootconf.sgml b/package/aboot/src/doc/man/de/abootconf.sgml new file mode 100644 index 000000000..21cbe5ebf --- /dev/null +++ b/package/aboot/src/doc/man/de/abootconf.sgml @@ -0,0 +1,146 @@ + + + + +abootconf +8 +abootconf + + + +abootconf + +Konfiguration des Ortes der Konfigurationsdatei für den Bootloader der zweiten Stufe aboot(8) von Linux/Alpha. + + + + + + abootconf /dev/xxx num + + + +COPYRIGHT + +abootconf unterliegt dem Copyright (C) 1996 Linus Torvalds, David Mosberger-Tang und Michael Schwingen + + + +BESCHREIBUNG + +abootconf +aboot +abootconf wird zur Änderung der +Partitionpartition, in der der Linux +Boot-Loader (Urlader) aboot(8) nach seiner +Konfigurationsdatei schaut, verwendet. Die Konfiguration wird in +etc/aboot.conf(5) relativ zur Wurzel des Dateisystems +auf dieser Partition gespeichert. + + +abootconf benötigt das Boot-Gerät (bspw. +/dev/hdb, /dev/sda) und die +zu verwendende Partition (z.B. 3). Wollen Sie daher von Partition E: +auf Ihrer zweiten SCSI-Festplatte booten, dann geben Sie + + +abootconf /dev/sdb 5 + + + +ein. + + +HINWEISE + +abootconf wird nicht benötigt, wenn Sie Ihr +alpha-System mittels milo booten. + + +Auf jeder Festplatte kann eine Partition aktiviert werden, die die +Konfiguration für aboot(8) enthält, welche +unter etc/aboot.conf(5) liegt. Die zu bootende +Festplatte wird am SRM-Prompt als zweites Argument ausgewählt, also +beispielsweise + + + +boot dqa + + + +um von der ersten IDE-Festplatte zu booten. Lesen Sie bitte das +HP SRM-Handbuch und aboot(8) für weitere +Informationen. + + +aboot(8) kann einen Kernel von einer beliebiegen +Partition laden und kann soger eine andere Root-Partition verwenden, als die +zu der etc/aboot.conf gehört. Daher sollten Sie +normalerweise eine etc/aboot.conf mit allen Kombinationen +erstellen und benötigten abootconf außer für +die Erstinstallation nicht. Sie können dann den gewünschten Linuxkernel über +die entsprechenden Parameter am SRM-Prompt booten, z.B. um den mit 2 +bezeichneten Eintrag zu booten würden Sie + + + +boot dqa -fl "2" + + + +verwenden. Bitte lesen Sie das HP SRM-Handbuch und +aboot.conf(5) für weitere Informationen. + + +Um die derzeitigen Einstellungen anzuzeigen, lassen Sie einfach das letzte +Argument fort (d.h. die Partitionsnummer). + + +Beachten Sie, daß Sie abootconf erneut ausführen +müssen, wenn Sie aboot(8) aktualisiert haben. + + +Streng genommen wird abootconf nicht benötigt, +da Sie die Partition, auf der etc/aboot.conf liegt +auf dem SRM-Prompt spezifizieren können, indem Sie den Flags-Parameter mit +der Partitions-Nummer, gefolgt vom einem Doppelpunkt, einleiten, d.h. +falls etc/aboot.conf auf der vierten Partition liegt +und Sie den Eintrag mit der Nummer 2 booten wollen, dann könnte Sie am +SRM-Prompt auch + + + +boot dqa -fl "4:2" + + + +eingeben. + + +Beachten Sie, daß dies nur auf Linux zutrifft, da +VMS, Tru64, *BSD und +Windows NT jeweils über Ihren eigenen Bootloader +der zweiten Stufe verfügen. + + +Beachten Sie desweiteren, daß für das erstmalige Aufsetzen auf der Festplatte +abootconf ebenfalls nicht mehr benötigt wird, da +swriteboot(8) über die gesamte Funktionalität +von abootconf verfügt. + + +AUTOR + +Diese Handbuchseite wurde von Helge Kreutzmann +debian@helgefjell.de für das Debian GNU/Linux-Projekt +geschrieben, sie darf aber auch von anderen verwendet werden. + + +DATEIEN +etc/aboot.conf + +SIEHE AUCH +aboot(8), swriteboot(8), aboot.conf(5), HP SRM Handbuch () + + diff --git a/package/aboot/src/doc/man/de/docbook2man-de-spec.pl b/package/aboot/src/doc/man/de/docbook2man-de-spec.pl new file mode 100644 index 000000000..2eed9015e --- /dev/null +++ b/package/aboot/src/doc/man/de/docbook2man-de-spec.pl @@ -0,0 +1,1304 @@ +=head1 NAME + +docbook2man-spec - convert DocBook RefEntries to Unix manpages + +=head1 SYNOPSIS + +The SGMLSpm package from CPAN. This contains the sgmlspl script which +is used to grok this file. Use it like this: + +nsgmls some-docbook-document.sgml | sgmlspl sgmlspl-specs/docbook2man-spec.pl + +=head1 OPTIONS + +=over 4 + +=item --section