diff options
Diffstat (limited to 'system-build')
243 files changed, 18227 insertions, 0 deletions
diff --git a/system-build/CHANGELOG.txt b/system-build/CHANGELOG.txt new file mode 100644 index 0000000..315c2f1 --- /dev/null +++ b/system-build/CHANGELOG.txt @@ -0,0 +1,101 @@ +2016-11-15 Daniel Baumann <daniel.baumann@open-infrastructure.net> + + * Releasing version 20161115. + * Backward incompatible changes: + - renames output files from live-system* to system*. + - renames source tarballs from tar and debian.tar to orig.tar and config.tar. + - renames chroot stage on disk to system. + + [ Daniel Baumann ] + * Setting live-image-name by default to system instead of live-system. + * Renaming upstream source tarball to orig.tar. + * Renaming system-build config tarball to config.tar. + * Renaming config/chroot to config/system. + * Renaming license file for consistency. + * Renaming version file for consistency. + * Removing manpage translations in order to rewrite manpage from scratch. + * Adding chroot hook to remove auto-generated kernel autoremove file. + * Adding chroot hook to remove systemd journal database. + * Including ca-certificates too when including apt-transport-https. + * Correcting https check in archive lists to cover both list and lists.* files. + * Using deb.debian.org with https as default mirror. + * Removing trailing slash in mirror defaults. + +2016-11-01 Daniel Baumann <daniel.baumann@open-infrastructure.net> + + * Releasing version 20161101. + + [ Daniel Baumann ] + * Using references to system-build instead of live-build. + * Using system-boot instead of live-boot. + * Using system-config instead of live-config. + * Dropping references to live-tools. + * Making config check for https in archive list files silent. + + [ Chris Lamb ] + * Exposing exposes the SOURCE_DATE_EPOCH variable when running scripts inside the chroot, otherwise the chroot operation resets the environment (Closes: #833118). + + [ Daniel Baumann ] + * Removing automatic mode setting. + * Adding workaround for user-setup. + * Setting default debian mirrors to deb.debian.org. + + [ Sophie Brun ] + * Handling packages.chroot with an explicitly trusted file:// repository. + +2016-07-01 Daniel Baumann <daniel.baumann@open-infrastructure.net> + + * Releasing version 20160701. + + [ Daniel Baumann ] + * Adding commit messages to previous changelog. + * Removing support for using aptitude instead of apt. + * Including apt-transport-https if archives are used with https. + + [ Kristian Klausen ] + * Fixing typo in binary_syslinux (Closes: #832686). + * Switching d-i.debian.org URIs from http to https (Closes: #832680). + * Disabling ext4 64bit features when using extlinux. + + [ Chris Lamb ] + * Setting xorriso's "modification time" to SOURCE_DATE_EPOCH as a first step for reproducible ISO images (Closes: #832689). + +2016-06-01 Daniel Baumann <daniel.baumann@open-infrastructure.net> + + * Releasing version 20160601. + + [ Carlos Zuferri ] + * Adding missing file extension to hdd images. + + [ Adrian Gibanel Lopez ] + * Adding multi bootloader support. + * Adding loopback cfg support. + + [ Maximilian Mehnert ] + * Forcing link creation when diverting flash-kernel. + * Starting partition at specific place for old BIOSes. + * Fixing coding style in binary_hdd. + + [ Carlos Zuferri ] + * Using 'Live Systems Project' as default project in .pot files. + + [ trebmuh ] + * Adding French manpage translations. + + [ Ben Armstrong ] + * Removing 586 flavour for i386 architecture (Closes: #832705). + + [ Raphaël Hertzog ] + * Better handling empty package lists. + * Dropping ixp4xx from available armel flavors. + * Adding symlinks for libgpl.c32 and libmenu.c32. + + [ Kristian Klausen ] + * Including ext{3,4} journal size when calculating image size (Closes: #832671). + + [ Daniel Baumann ] + * Correcting version string in changelog. + +2016-05-01 Daniel Baumann <daniel.baumann@open-infrastructure.net> + + * Releasing version 20160501. diff --git a/system-build/LICENSE.txt b/system-build/LICENSE.txt new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/system-build/LICENSE.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + 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 +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + 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 3 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, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program 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, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU 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 Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/system-build/Makefile b/system-build/Makefile new file mode 100644 index 0000000..71ec0f2 --- /dev/null +++ b/system-build/Makefile @@ -0,0 +1,70 @@ +# Makefile + +SHELL := sh -e + +SCRIPTS = frontend/* functions/* examples/auto/* examples/hooks/* scripts/*.sh scripts/*/* share/bin/* share/hooks/*/* + +all: build + +test: + @echo -n "Checking for syntax errors" + + @for SCRIPT in $(SCRIPTS); \ + do \ + sh -n $${SCRIPT}; \ + echo -n "."; \ + done + + @echo " done." + + @echo -n "Checking for bashisms" + + @if [ -x /usr/bin/checkbashisms ]; \ + then \ + for SCRIPT in $(SCRIPTS); \ + do \ + checkbashisms -f -x $${SCRIPT}; \ + echo -n "."; \ + done; \ + else \ + echo "WARNING: skipping bashism test - you need to install devscripts."; \ + fi + + @echo " done." + +build: + @echo "Nothing to build." + +install: + # Installing shared data + mkdir -p $(DESTDIR)/usr/share/live/build + cp -r data functions VERSION.txt $(DESTDIR)/usr/share/live/build + cp -r share/* $(DESTDIR)/usr/share/live/build + + # Installing executables + mkdir -p $(DESTDIR)/usr/bin + cp -a frontend/* $(DESTDIR)/usr/bin + + mkdir -p $(DESTDIR)/usr/lib/live + cp -a scripts/* $(DESTDIR)/usr/lib/live + + # Installing documentation + mkdir -p $(DESTDIR)/usr/share/doc/live-build + cp -r LICENSE.txt examples $(DESTDIR)/usr/share/doc/live-build + +uninstall: + # Uninstalling shared data + rm -rf $(DESTDIR)/usr/share/live/build + rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/live > /dev/null 2>&1 || true + + # Uninstalling executables + rm -f $(DESTDIR)/usr/bin/lb $(DESTDIR)/usr/bin/live-build + + # Uninstalling documentation + rm -rf $(DESTDIR)/usr/share/doc/live-build + +clean: + +distclean: + +reinstall: uninstall install diff --git a/system-build/VERSION.txt b/system-build/VERSION.txt new file mode 100644 index 0000000..8a548db --- /dev/null +++ b/system-build/VERSION.txt @@ -0,0 +1 @@ +20161115 diff --git a/system-build/data/debian-cd/jessie b/system-build/data/debian-cd/jessie new file mode 120000 index 0000000..20f08b4 --- /dev/null +++ b/system-build/data/debian-cd/jessie @@ -0,0 +1 @@ +squeeze
\ No newline at end of file diff --git a/system-build/data/debian-cd/sid b/system-build/data/debian-cd/sid new file mode 120000 index 0000000..20f08b4 --- /dev/null +++ b/system-build/data/debian-cd/sid @@ -0,0 +1 @@ +squeeze
\ No newline at end of file diff --git a/system-build/data/debian-cd/squeeze/amd64_businesscard_udeb_include b/system-build/data/debian-cd/squeeze/amd64_businesscard_udeb_include new file mode 100644 index 0000000..0089df0 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/amd64_businesscard_udeb_include @@ -0,0 +1,4 @@ +choose-mirror +netcfg +ethdetect +pcmciautils-udeb diff --git a/system-build/data/debian-cd/squeeze/amd64_netinst_udeb_include b/system-build/data/debian-cd/squeeze/amd64_netinst_udeb_include new file mode 100644 index 0000000..1553277 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/amd64_netinst_udeb_include @@ -0,0 +1,3 @@ +netcfg +ethdetect +pcmciautils-udeb diff --git a/system-build/data/debian-cd/squeeze/amd64_udeb_include b/system-build/data/debian-cd/squeeze/amd64_udeb_include new file mode 100644 index 0000000..1553277 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/amd64_udeb_include @@ -0,0 +1,3 @@ +netcfg +ethdetect +pcmciautils-udeb diff --git a/system-build/data/debian-cd/squeeze/arm_businesscard_udeb_include b/system-build/data/debian-cd/squeeze/arm_businesscard_udeb_include new file mode 100644 index 0000000..6326d6c --- /dev/null +++ b/system-build/data/debian-cd/squeeze/arm_businesscard_udeb_include @@ -0,0 +1,3 @@ +choose-mirror +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/arm_netinst_udeb_include b/system-build/data/debian-cd/squeeze/arm_netinst_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/arm_netinst_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/arm_udeb_include b/system-build/data/debian-cd/squeeze/arm_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/arm_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/exclude-udebs b/system-build/data/debian-cd/squeeze/exclude-udebs new file mode 100644 index 0000000..ba3ed4f --- /dev/null +++ b/system-build/data/debian-cd/squeeze/exclude-udebs @@ -0,0 +1,139 @@ +# These udebs build the d-i cdrom initrd. As such, there is no reason +# to keep another copy of them on the CD in udeb form. +# +# This duplicates data found in the file build/pkg-lists/kernel, in d-i svn +kernel-image-* +# build/pkg-lists/base in d-i svn +archdetect +rootskel +main-menu +cdebconf-udeb +udpkg +anna +di-utils +di-utils-shell +di-utils-reboot +lowmemcheck +# build/pkg-lists/cdrom/common, in d-i svn (also included in the +# root+cd-drivers floppies) +busybox-udeb +installation-locale +localechooser +iso-3166-udeb +hw-detect +cdrom-detect +cdrom-retriever +load-cdrom +cdrom-checker +bogl-bterm-udeb +di-utils-terminfo +cdebconf-priority +cdebconf-newt-udeb +usb-discover +preseed-common +initrd-preseed +file-preseed +nano-udeb +floppy-retriever +libfribidi0-udeb +# Already on the initrd as dependencies +libdebconfclient0-udeb +libdebian-installer4-udeb +libdebian-installer-extra4-udeb +# These udebs are only useful in building the boot floppy image +busybox-floppy-udeb +rootskel-bootfloppy +# Graphical installer: common udebs included in initrd +rootskel-gtk +cdebconf-gtk-udeb +fontconfig-udeb +gtk2-engines-udeb +libatk1.0-udeb +libexpat1-udeb +libfreetype6-udeb +libglib2.0-udeb +libgtk2-engines-udeb +libpango1.0-udeb +libpcre3-udeb +libpixman-1-0-udeb +libpng12-0-udeb +libsdl1.2debian-udeb +mouse-modules-* +ttf-* +fbset-udeb +# Graphical installer: udebs for directfb +libdirectfb-*-udeb +libcairo-directfb2-udeb +libgtk-directfb-2.0-0-udeb +# Graphical installer: udebs for X.Org +xserver-xorg-core-udeb +xserver-xorg-input-evdev-udeb +xserver-xorg-video-fbdev-udeb +x11-xkb-utils-udeb +xkb-data-udeb +libcairo2-udeb +libdrm2-udeb +libfontenc1-udeb +libgtk-x11-udeb +libpciaccess0-udeb +libx11-6-udeb +libxau6-udeb +libxcb1-udeb +libxcursor1-udeb +libxdmcp6-udeb +libxext6-udeb +libxfixes3-udeb +libxfont1-udeb +libxft2-udeb +libxi6-udeb +libxinerama1-udeb +libxkbfile1-udeb +libxrender1-udeb +# Graphical installer: terminal support is included in initrd +cdebconf-gtk-terminal +libvte9-udeb +# Not currently used +cdebootstrap-udeb +hdparm-udeb +dhcp-client-udeb +# This package is only useful in the d-i-demo +di-utils-exit-installer +# No need for these loaders. +download-installer +load-floppy +# Only useful in the hd-media initrd +iso-scan +load-iso +# Nothing currently depends on this, and it seems not useful on its own +reiserfsprogs-udeb +# These are not really needed, the regular netcfg subsumes them +netcfg-static +# skolelinux stuff, not for the stock CDs +debian-edu-install-udeb +debian-edu-profile-udeb +debian-edu-archive-keyring-udeb +ltsp-client-builder +autopartkit +# live CD stuff +live-installer +simple-cdd-profiles +# If needed, will be on the initrd already +module-init-tools-udeb +env-preseed +rescue-check +cdebconf-text-udeb +brltty-udeb +klibc-utils-udeb +libklibc-udeb +udev-udeb +udev-gtk-udeb +ai-choosers +auto-install +libslang2-udeb +kbd-chooser +kbd-udeb +# Currently unused +nbd-client-udeb +pwgen-udeb +# Eh? +gnumach-udeb diff --git a/system-build/data/debian-cd/squeeze/exclude-udebs-amd64 b/system-build/data/debian-cd/squeeze/exclude-udebs-amd64 new file mode 100644 index 0000000..8f81f6e --- /dev/null +++ b/system-build/data/debian-cd/squeeze/exclude-udebs-amd64 @@ -0,0 +1,43 @@ +# These udebs are in the d-i cdrom initrd and the hd-media initrd. +# As such, there is no reason to keep another copy of them on the CD +# in udeb form. +console-keymaps-at +console-keymaps-usb +kbd-chooser +acpi-modules-* +ata-modules-* +cdrom-core-modules-* +core-modules-* +fat-modules-* +fb-modules-* +ide-core-modules-* +ide-modules-* +input-modules-* +isofs-modules-* +mmc-modules-* +nls-core-modules-* +parport-modules-* +pcmcia-modules-* +sata-modules-* +scsi-common-modules-* +scsi-core-modules-* +scsi-modules-* +serial-modules-* +speakup-modules-* +usb-modules-* +usb-serial-modules-* +usb-storage-modules-* +zlib-modules-* +# Not used on amd64 +console-keymaps-acorn +console-keymaps-amiga +console-keymaps-atari +console-keymaps-dec +console-keymaps-sun +# Not needed with the 2.6 kernel on amd64. +userdevfs +# Only needed on arches that use partconf or autopartkit. +partconf-mkfstab +# Not needed on arches that use partman +mdcfg +lvmcfg diff --git a/system-build/data/debian-cd/squeeze/exclude-udebs-i386 b/system-build/data/debian-cd/squeeze/exclude-udebs-i386 new file mode 100644 index 0000000..b3af1c9 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/exclude-udebs-i386 @@ -0,0 +1,45 @@ +# These udebs are in the d-i cdrom initrd and the cd-drivers+root floppies. +# As such, there is no reason to keep another copy of them on the CD +# in udeb form. +console-keymaps-at +console-keymaps-usb +kbd-chooser +acpi-modules-* +ata-modules-* +cdrom-core-modules-* +core-modules-* +fat-modules-* +fb-modules-* +ide-core-modules-* +ide-modules-* +input-modules-* +isofs-modules-* +mmc-modules-* +nls-core-modules-* +parport-modules-* +pcmcia-modules-* +sata-modules-* +scsi-common-modules-* +scsi-core-modules-* +scsi-modules-* +serial-modules-* +speakup-modules-* +usb-modules-* +usb-serial-modules-* +usb-storage-modules-* +zlib-modules-* +# 686-bigmem kernel udebs are only used for the Xen netboot image +*-686-bigmem-di !xen +# Not used on i386 +console-keymaps-acorn +console-keymaps-amiga +console-keymaps-atari +console-keymaps-dec +console-keymaps-sun +# Not needed with the 2.4 kernel on i386. +userdevfs +# Only needed on arches that use partconf or autopartkit. +partconf-mkfstab +# Not needed on arches that use partman +mdcfg +lvmcfg diff --git a/system-build/data/debian-cd/squeeze/exclude-udebs-powerpc b/system-build/data/debian-cd/squeeze/exclude-udebs-powerpc new file mode 100644 index 0000000..5a7df81 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/exclude-udebs-powerpc @@ -0,0 +1,28 @@ +# These udebs build the d-i cdrom initrd. As such, there is no reason +# to keep another copy of them on the CD in udeb form. +# +# This duplicates data found in the file build/pkg-lists/cdrom/powerpc, +# in d-i Subversion. + +cdrom-core-modules-* +console-keymaps-at +console-keymaps-usb +eject-udeb +firewire-core-modules-* +fs-common-modules-* +ide-modules-* +input-modules-* +kbd-chooser +scsi-common-modules-* +scsi-core-modules-* +scsi-modules-* +socket-modules-* +usb-modules-* +usb-storage-modules-* +# Not needed with the 2.4 kernel on powerpc. +userdevfs +# Only needed on arches that use partconf or autopartkit. +partconf-mkfstab +# Not needed on arches that use partman +mdcfg +lvmcfg diff --git a/system-build/data/debian-cd/squeeze/exclude-udebs-s390 b/system-build/data/debian-cd/squeeze/exclude-udebs-s390 new file mode 100644 index 0000000..e075e4b --- /dev/null +++ b/system-build/data/debian-cd/squeeze/exclude-udebs-s390 @@ -0,0 +1,3 @@ +# S/390 does not support loading udebs off the CD image, +# so we can exclude all udebs from it +* diff --git a/system-build/data/debian-cd/squeeze/exclude-udebs-sparc b/system-build/data/debian-cd/squeeze/exclude-udebs-sparc new file mode 100644 index 0000000..d11a81b --- /dev/null +++ b/system-build/data/debian-cd/squeeze/exclude-udebs-sparc @@ -0,0 +1,5 @@ +# Only needed on arches that use partconf or autopartkit. +partconf-mkfstab +# Not needed on arches that use partman +mdcfg +lvmcfg diff --git a/system-build/data/debian-cd/squeeze/i386_businesscard_udeb_include b/system-build/data/debian-cd/squeeze/i386_businesscard_udeb_include new file mode 100644 index 0000000..0089df0 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/i386_businesscard_udeb_include @@ -0,0 +1,4 @@ +choose-mirror +netcfg +ethdetect +pcmciautils-udeb diff --git a/system-build/data/debian-cd/squeeze/i386_netinst_udeb_include b/system-build/data/debian-cd/squeeze/i386_netinst_udeb_include new file mode 100644 index 0000000..1553277 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/i386_netinst_udeb_include @@ -0,0 +1,3 @@ +netcfg +ethdetect +pcmciautils-udeb diff --git a/system-build/data/debian-cd/squeeze/i386_udeb_include b/system-build/data/debian-cd/squeeze/i386_udeb_include new file mode 100644 index 0000000..1553277 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/i386_udeb_include @@ -0,0 +1,3 @@ +netcfg +ethdetect +pcmciautils-udeb diff --git a/system-build/data/debian-cd/squeeze/ia64_businesscard_udeb_include b/system-build/data/debian-cd/squeeze/ia64_businesscard_udeb_include new file mode 100644 index 0000000..6326d6c --- /dev/null +++ b/system-build/data/debian-cd/squeeze/ia64_businesscard_udeb_include @@ -0,0 +1,3 @@ +choose-mirror +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/ia64_netinst_udeb_include b/system-build/data/debian-cd/squeeze/ia64_netinst_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/ia64_netinst_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/ia64_udeb_include b/system-build/data/debian-cd/squeeze/ia64_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/ia64_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/m68k_businesscard_udeb_include b/system-build/data/debian-cd/squeeze/m68k_businesscard_udeb_include new file mode 100644 index 0000000..6326d6c --- /dev/null +++ b/system-build/data/debian-cd/squeeze/m68k_businesscard_udeb_include @@ -0,0 +1,3 @@ +choose-mirror +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/m68k_netinst_udeb_include b/system-build/data/debian-cd/squeeze/m68k_netinst_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/m68k_netinst_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/m68k_udeb_include b/system-build/data/debian-cd/squeeze/m68k_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/m68k_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/mips_businesscard_udeb_include b/system-build/data/debian-cd/squeeze/mips_businesscard_udeb_include new file mode 100644 index 0000000..6326d6c --- /dev/null +++ b/system-build/data/debian-cd/squeeze/mips_businesscard_udeb_include @@ -0,0 +1,3 @@ +choose-mirror +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/mips_netinst_udeb_include b/system-build/data/debian-cd/squeeze/mips_netinst_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/mips_netinst_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/mips_udeb_include b/system-build/data/debian-cd/squeeze/mips_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/mips_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/mipsel_businesscard_udeb_include b/system-build/data/debian-cd/squeeze/mipsel_businesscard_udeb_include new file mode 100644 index 0000000..6326d6c --- /dev/null +++ b/system-build/data/debian-cd/squeeze/mipsel_businesscard_udeb_include @@ -0,0 +1,3 @@ +choose-mirror +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/mipsel_netinst_udeb_include b/system-build/data/debian-cd/squeeze/mipsel_netinst_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/mipsel_netinst_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/mipsel_udeb_include b/system-build/data/debian-cd/squeeze/mipsel_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/mipsel_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/powerpc_businesscard_udeb_include b/system-build/data/debian-cd/squeeze/powerpc_businesscard_udeb_include new file mode 100644 index 0000000..6326d6c --- /dev/null +++ b/system-build/data/debian-cd/squeeze/powerpc_businesscard_udeb_include @@ -0,0 +1,3 @@ +choose-mirror +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/powerpc_netinst_udeb_include b/system-build/data/debian-cd/squeeze/powerpc_netinst_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/powerpc_netinst_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/powerpc_udeb_include b/system-build/data/debian-cd/squeeze/powerpc_udeb_include new file mode 100644 index 0000000..1553277 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/powerpc_udeb_include @@ -0,0 +1,3 @@ +netcfg +ethdetect +pcmciautils-udeb diff --git a/system-build/data/debian-cd/squeeze/s390_businesscard_udeb_include b/system-build/data/debian-cd/squeeze/s390_businesscard_udeb_include new file mode 100644 index 0000000..6326d6c --- /dev/null +++ b/system-build/data/debian-cd/squeeze/s390_businesscard_udeb_include @@ -0,0 +1,3 @@ +choose-mirror +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/s390_netinst_udeb_include b/system-build/data/debian-cd/squeeze/s390_netinst_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/s390_netinst_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/s390_udeb_include b/system-build/data/debian-cd/squeeze/s390_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/s390_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/sparc_businesscard_udeb_include b/system-build/data/debian-cd/squeeze/sparc_businesscard_udeb_include new file mode 100644 index 0000000..6326d6c --- /dev/null +++ b/system-build/data/debian-cd/squeeze/sparc_businesscard_udeb_include @@ -0,0 +1,3 @@ +choose-mirror +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/sparc_netinst_udeb_include b/system-build/data/debian-cd/squeeze/sparc_netinst_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/sparc_netinst_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/sparc_udeb_include b/system-build/data/debian-cd/squeeze/sparc_udeb_include new file mode 100644 index 0000000..6f1c801 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/sparc_udeb_include @@ -0,0 +1,2 @@ +netcfg +ethdetect diff --git a/system-build/data/debian-cd/squeeze/udeb_exclude b/system-build/data/debian-cd/squeeze/udeb_exclude new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/system-build/data/debian-cd/squeeze/udeb_exclude @@ -0,0 +1 @@ + diff --git a/system-build/data/debian-cd/stretch b/system-build/data/debian-cd/stretch new file mode 120000 index 0000000..20f08b4 --- /dev/null +++ b/system-build/data/debian-cd/stretch @@ -0,0 +1 @@ +squeeze
\ No newline at end of file diff --git a/system-build/examples/auto/build b/system-build/examples/auto/build new file mode 100755 index 0000000..f8d8346 --- /dev/null +++ b/system-build/examples/auto/build @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +lb build noauto "${@}" 2>&1 | tee build.log diff --git a/system-build/examples/auto/clean b/system-build/examples/auto/clean new file mode 100755 index 0000000..7b5ed5e --- /dev/null +++ b/system-build/examples/auto/clean @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +lb clean noauto "${@}" + +rm -f config/binary config/bootstrap config/system config/common config/source +rm -f build.log diff --git a/system-build/examples/auto/config b/system-build/examples/auto/config new file mode 100755 index 0000000..c6d68c6 --- /dev/null +++ b/system-build/examples/auto/config @@ -0,0 +1,6 @@ +#!/bin/sh + +set -e + +lb config noauto \ + "${@}" diff --git a/system-build/examples/gitignore b/system-build/examples/gitignore new file mode 100644 index 0000000..c718546 --- /dev/null +++ b/system-build/examples/gitignore @@ -0,0 +1,31 @@ +binary/ +binary*.iso +binary*.img +binary*.tar* +binary*.contents +binary*.packages +binary*.zsync + +.build/ +build.log + +cache/ + +chroot/ +chroot.packages.* + +config/binary +config/bootstrap +config/system +config/common +config/source + +config/control + +source/ +source*.iso +source*.img +source*.tar* +source*.contents +source*.packages +source*.zsync diff --git a/system-build/examples/hooks/minimal.hook.chroot b/system-build/examples/hooks/minimal.hook.chroot new file mode 100755 index 0000000..d13ba42 --- /dev/null +++ b/system-build/examples/hooks/minimal.hook.chroot @@ -0,0 +1,33 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Removing unused packages +for PACKAGE in apt-utils aptitude man-db manpages info wget +do + if ! apt-get remove --purge --yes "${PACKAGE}" + then + echo "WARNING: ${PACKAGE} isn't installed" + fi +done + +apt-get autoremove --yes || true + +# Removing unused files +find . -name *~ -print0 | xargs -0 rm -f + +rm -rf /var/cache/man/* + +# Truncating logs +for FILE in $(find /var/log/ -type f) +do + : > ${FILE} +done diff --git a/system-build/examples/hooks/stripped.hook.chroot b/system-build/examples/hooks/stripped.hook.chroot new file mode 100755 index 0000000..ade2390 --- /dev/null +++ b/system-build/examples/hooks/stripped.hook.chroot @@ -0,0 +1,52 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# WARNING: Using this hook will result in a stripped system, means, +# it may very well be possible that other packages are depending +# on certain files that get removed here. +# Therefore, this hooks is merely an inspiration for what could be +# removed and not a generic nor recommendet solution to get the +# image filesize down. In any event, using this hook can lead to +# unforseen bugs and breakages in other packages and you should +# be prepared to find and fix it for your own images. + +# Removing unused packages +for PACKAGE in apt-utils aptitude man-db manpages info wget dselect +do + if ! apt-get remove --purge --yes "${PACKAGE}" + then + echo "WARNING: ${PACKAGE} isn't installed" + fi +done + +apt-get autoremove --yes || true + +# Removing unused files +find . -name *~ -print0 | xargs -0 rm -f + +rm -rf /usr/include/* +#rm -rf /usr/share/groff/* +rm -rf /usr/share/doc/* +rm -rf /usr/share/locale/* +rm -rf /usr/share/man/* +rm -rf /usr/share/i18n/* +rm -rf /usr/share/info/* +rm -rf /usr/share/lintian/* +rm -rf /usr/share/linda/* +rm -rf /usr/share/zoneinfo/* +rm -rf /var/cache/man/* + +# Truncating logs +for FILE in $(find /var/log/ -type f) +do + : > ${FILE} +done diff --git a/system-build/frontend/lb b/system-build/frontend/lb new file mode 100755 index 0000000..03ab043 --- /dev/null +++ b/system-build/frontend/lb @@ -0,0 +1,90 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'utility to build live systems')" +HELP="FIXME" +USAGE="FIXME" + +case "${1}" in + -h|--help) + if [ -x "$(which man 2>/dev/null)" ] + then + man lb + exit 0 + else + ${0} --usage + exit 0 + fi + ;; + + ""|-u|--usage) + Usage + ;; + + -v|--version) + echo "${VERSION}" + exit 0 + ;; + + *) + COMMAND="${1}" + shift + + ENV="" + + if [ "${COMMAND}" != "config" ] + then + # Checking user account + if [ "$(id -u)" -ne "0" ] + then + Echo_error "need root privileges" + exit 1 + fi + fi + + for _FILE in config/environment config/environment.binary + do + if [ -e "${_FILE}" ] + then + ENV="${ENV} $(grep -v '^#' ${_FILE})" + fi + done + + if [ -x "${LIVE_BUILD}/scripts/build/${COMMAND}" ] + then + # User has live-build copied locally in the system + SCRIPT="${LIVE_BUILD}/scripts/build/${COMMAND}" + elif [ -x "local/live-build/scripts/build/${COMMAND}" ] + then + # User has live-build copied locally in the config + SCRIPT="local/live-build/scripts/build/${COMMAND}" + elif [ -x /usr/lib/live/build/${COMMAND} ] + then + # User has live-build installed in the system + SCRIPT=/usr/lib/live/build/"${COMMAND}" + elif [ -x "$(which ${COMMAND} 2>/dev/null)" ] + then + # User has live-build commands in path + SCRIPT="${COMMAND}" + else + Echo_error "no such script: ${COMMAND}" + exit 1 + fi + + Echo "[%s] %s" "$(date +'%F %T')" "lb ${COMMAND} $(echo ${@})" + ${ENV} exec "${SCRIPT}" "${@}" + ;; +esac diff --git a/system-build/frontend/live-build b/system-build/frontend/live-build new file mode 100755 index 0000000..52b8437 --- /dev/null +++ b/system-build/frontend/live-build @@ -0,0 +1,37 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## 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 3 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, see <http://www.gnu.org/licenses/>. +## +## The complete text of the GNU General Public License +## can be found in /usr/share/common-licenses/GPL-3 file. + + +set -e + +if [ -x "$(which man 2>/dev/null)" ] +then + man live-build +else + +cat << EOF +live-build contains the scripts to build a live system from a configuration +directory. + +An introduction to live-build can be found in the live-build(7) manpage. +EOF + +fi diff --git a/system-build/functions/aliases.sh b/system-build/functions/aliases.sh new file mode 100755 index 0000000..3df028f --- /dev/null +++ b/system-build/functions/aliases.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Find_files () +{ + (ls "${@}" | grep -qs .) > /dev/null 2>&1 +} + +In_list () +{ + NEEDLES="${1}" + shift + + for ITEM in ${@} + do + for NEEDLE in ${NEEDLES} + do + if [ "${NEEDLE}" = "${ITEM}" ] + then + return 0 + fi + done + done + + return 1 +} + +Truncate () +{ + for FILE in ${@} + do + if [ ! -L ${FILE} ] + then + : > ${FILE} + fi + done +} diff --git a/system-build/functions/architectures.sh b/system-build/functions/architectures.sh new file mode 100755 index 0000000..7c6c48c --- /dev/null +++ b/system-build/functions/architectures.sh @@ -0,0 +1,124 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Check_architectures () +{ + ARCHITECTURES="${@}" + VALID="false" + + for ARCHITECTURE in ${ARCHITECTURES} + do + if [ "$(echo ${LB_ARCHITECTURES} | grep ${ARCHITECTURE})" ] + then + VALID="true" + break + fi + done + + if [ "${ARCHITECTURES}" = "${LB_BOOTSTRAP_QEMU_ARCHITECTURES}" ] + then + VALID="true" + + if [ ! -e "${LB_BOOTSTRAP_QEMU_STATIC}" ] + then + Echo_warning "skipping %s, qemu-static binary ${LB_BOOTSTRAP_QEMU_ARCHITECTURES} was not found" + VALID="false" + fi + + if [ ! -x "${LB_BOOTSTRAP_QEMU_STATIC}" ] + then + Echo_warning "skipping %s, qemu-static binary ${LB_BOOTSTRAP_QEMU_STATIC} is not executable" + VALID="false" + fi + + fi + + if [ "${VALID}" = "false" ] + then + Echo_warning "skipping %s, foreign architecture(s)." "${0}" + exit 0 + fi +} + +Check_crossarchitectures () +{ + if [ -x /usr/bin/dpkg ] + then + HOST="$(dpkg --print-architecture)" + else + HOST="$(uname -m)" + fi + + case "${HOST}" in + amd64|i386|x86_64) + CROSS="amd64 i386" + ;; + + powerpc|ppc64) + CROSS="powerpc ppc64" + ;; + + *) + CROSS="${HOST}" + ;; + esac + + if [ "${LB_ARCHITECTURES}" = "${LB_BOOTSTRAP_QEMU_ARCHITECTURES}" ] + then + + if [ ! -e "${LB_BOOTSTRAP_QEMU_STATIC}" ] + then + Echo_warning "skipping %s, qemu-static binary ${LB_BOOTSTRAP_QEMU_ARCHITECTURES} was not found" + exit 0 + fi + + if [ ! -x "${LB_BOOTSTRAP_QEMU_STATIC}" ] + then + Echo_warning "skipping %s, qemu-static binary ${LB_BOOTSTRAP_QEMU_STATIC} is not executable" + exit 0 + fi + return + fi + + + Check_architectures "${CROSS}" +} + +Check_multiarchitectures () +{ + if [ "$(echo ${LB_ARCHITECTURES} | wc -w)" -gt "1" ] + then + # First, only support multiarch on iso + case "${LIVE_IMAGE_TYPE}" in + iso*) + # Assemble multi-arch + case "${LB_CURRENT_ARCHITECTURE}" in + amd64) + DESTDIR="${DESTDIR}.amd" + DESTDIR_LIVE="${DESTDIR_LIVE}.amd" + DESTDIR_INSTALL="${DESTDIR_INSTALL}.amd" + ;; + + i386) + DESTDIR="${DESTDIR}.386" + DESTDIR_LIVE="${DESTDIR_LIVE}.386" + DESTDIR_INSTALL="${DESTDIR_INSTALL}.386" + ;; + + powerpc) + DESTDIR="${DESTDIR}.ppc" + DESTDIR_LIVE="${DESTDIR_LIVE}.ppc" + DESTDIR_INSTALL="${DESTDIR_INSTALL}.ppc" + ;; + esac + ;; + esac + fi +} diff --git a/system-build/functions/arguments.sh b/system-build/functions/arguments.sh new file mode 100755 index 0000000..eede5c5 --- /dev/null +++ b/system-build/functions/arguments.sh @@ -0,0 +1,82 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Arguments () +{ + ARGUMENTS="$(getopt --longoptions breakpoints,conffile:,debug,force,help,quiet,usage,verbose,version --name=${PROGRAM} --options c:huv --shell sh -- "${@}")" + + if [ "${?}" != "0" ] + then + Echo_error "terminating" >&2 + exit 1 + fi + + eval set -- "${ARGUMENTS}" + + while true + do + case "${1}" in + --breakpoints) + _BREAKPOINTS="true" + shift + ;; + + -c|--conffile) + _CONFFILE="${2}" + shift 2 + ;; + + --debug) + _DEBUG="true" + shift + ;; + + --force) + _FORCE="true" + shift + ;; + + -h|--help) + Man + shift + ;; + + --quiet) + _QUIET="true" + shift + ;; + + -u|--usage) + Usage + shift + ;; + + --verbose) + _VERBOSE="true" + shift + ;; + + -v|--version) + echo "${VERSION}" + exit 0 + ;; + + --) + shift + break + ;; + + *) + Echo_error "internal error %s" "${0}" + exit 1 + ;; + esac + done +} diff --git a/system-build/functions/breakpoints.sh b/system-build/functions/breakpoints.sh new file mode 100755 index 0000000..55f4d42 --- /dev/null +++ b/system-build/functions/breakpoints.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Breakpoint () +{ + NAME="${1}" + + if [ "${_BREAKPOINTS}" = "true" ] + then + Echo_message "Waiting at %s" "${NAME}" + read WAIT + fi +} diff --git a/system-build/functions/cache.sh b/system-build/functions/cache.sh new file mode 100755 index 0000000..467a674 --- /dev/null +++ b/system-build/functions/cache.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Restore_cache () +{ + DIRECTORY="${1}" + + if [ "${LB_CACHE}" = "true" ] && [ "${LB_CACHE_PACKAGES}" = "true" ] + then + if [ -e "${DIRECTORY}" ] + then + # Restore old cache + if [ "$(stat --printf %d ${DIRECTORY}/)" = "$(stat --printf %d chroot/var/cache/apt/archives/)" ] + then + # with hardlinks + find "${DIRECTORY}" -name "*.deb" | xargs cp -fl -t chroot/var/cache/apt/archives + else + # without hardlinks + find "${DIRECTORY}" -name "*.deb" | xargs cp -t chroot/var/cache/apt/archives + fi + fi + fi +} + +Save_cache () +{ + DIRECTORY="${1}" + + if [ "${LB_CACHE}" = "true" ] && [ "${LB_CACHE_PACKAGES}" = "true" ] + then + # Cleaning current cache + # In case of interrupted or incomplete builds, this may return an error, + # but we still do want to save the cache. + Chroot chroot "apt-get autoclean" || true + + if ls chroot/var/cache/apt/archives/*.deb > /dev/null 2>&1 + then + # Creating cache directory + mkdir -p "${DIRECTORY}" + + # Saving new cache + for PACKAGE in chroot/var/cache/apt/archives/*.deb + do + if [ -e "${DIRECTORY}"/"$(basename ${PACKAGE})" ] + then + rm -f "${PACKAGE}" + else + mv "${PACKAGE}" "${DIRECTORY}" + fi + done + fi + else + # Purging current cache + rm -f chroot/var/cache/apt/archives/*.deb + fi +} diff --git a/system-build/functions/chroot.sh b/system-build/functions/chroot.sh new file mode 100755 index 0000000..88c5466 --- /dev/null +++ b/system-build/functions/chroot.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Chroot () +{ + CHROOT="${1}"; shift + COMMANDS="${@}" + + # Executing commands in chroot + Echo_debug "Executing: %s" "${COMMANDS}" + + ENV="" + + for _FILE in config/environment config/environment.chroot + do + if [ -e "${_FILE}" ] + then + ENV="${ENV} $(grep -v '^#' ${_FILE})" + fi + done + + # Only pass SOURCE_DATE_EPOCH if its already set + if [ "${SOURCE_DATE_EPOCH:-}" != "" ] + then + ENV="${ENV} SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH}" + fi + + ${_LINUX32} chroot "${CHROOT}" /usr/bin/env -i HOME="/root" PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" TERM="${TERM}" DEBIAN_FRONTEND="${LB_DEBCONF_FRONTEND}" DEBIAN_PRIORITY="${LB_DEBCONF_PRIORITY}" DEBCONF_NONINTERACTIVE_SEEN="true" DEBCONF_NOWARNINGS="true" ${ENV} ${COMMANDS} + + return "${?}" +} diff --git a/system-build/functions/chroot_bind_path.sh b/system-build/functions/chroot_bind_path.sh new file mode 100755 index 0000000..b296f69 --- /dev/null +++ b/system-build/functions/chroot_bind_path.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Chroot_bind_path () +{ + CHROOT="$(readlink -f ${1})" + BIND_SRC="$(readlink -f ${2})" + + BIND_DEST=$(echo "${BIND_SRC}" | sed -e 's|/\+||') + if [ ! -d "${CHROOT}/${BIND_DEST}" -o \ + -z "$(cat /proc/mounts | awk -vdir="${CHROOT}/${BIND_DEST}" '$2 ~ dir { print $2}')" ] + then + Echo_message "Binding local repository path" + mkdir -p "${CHROOT}/${BIND_DEST}" + mount --bind "${LB_PARENT_MIRROR_CHROOT#file:}" \ + "${CHROOT}/${BIND_DEST}" + fi +} + +Chroot_unbind_path () +{ + CHROOT="$(readlink -f ${1})" + BIND_SRC="$(readlink -f ${2})" + + BIND_DEST=$(echo "${BIND_SRC}" | sed -e 's|/\+||') + if [ -d "${CHROOT}/${BIND_DEST}" ] + then + Echo_message "Unbinding local repository path" + umount "${CHROOT}/${BIND_DEST}" > /dev/null 2>&1 || true + fi +} diff --git a/system-build/functions/color.sh b/system-build/functions/color.sh new file mode 100755 index 0000000..6eb4019 --- /dev/null +++ b/system-build/functions/color.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +NO_COLOR="\033[0m" + +UNDERSCORE="\033[4m" +BLINK="\033[5m" + +BLACK="\033[0;30m" +DARK_GRAY="\033[1;30m" + +RED="\033[0;31m" +LIGHT_RED="\033[1;31m" + +GREEN="\033[0;32m" +LIGHT_GREEN="\033[1;32m" + +BROWN="\033[0;33m" +YELLOW="\033[1;33m" + +BLUE="\033[0;34m" +LIGHT_BLUE="\033[1;34m" + +PURPLE="\033[0;35m" +LIGHT_PURPLE="\033[1;35m" + +CYAN="\033[0;36m" +LIGHT_CYAN="\033[1;36m" + +GRAY="\033[0;37m" +WHITE="\033[1;37m" diff --git a/system-build/functions/common.sh b/system-build/functions/common.sh new file mode 100755 index 0000000..9fbdc3f --- /dev/null +++ b/system-build/functions/common.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +PROGRAM="live-build" +VERSION="$(if [ -e ${LIVE_BUILD}/VERSION.txt ]; then cat ${LIVE_BUILD}/VERSION.txt; else cat /usr/share/live/build/VERSION.txt; fi)" +CONFIG_VERSION="$(echo ${VERSION} | awk -F- '{ print $1 }')" + +# FIXME +LIVE_BUILD_VERSION="${CONFIG_VERSION}" + +PATH="${PWD}/local/bin:${PATH}" diff --git a/system-build/functions/conffile.sh b/system-build/functions/conffile.sh new file mode 100755 index 0000000..13407c3 --- /dev/null +++ b/system-build/functions/conffile.sh @@ -0,0 +1,55 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Get_conffiles () +{ + if [ -n "${LB_CONFIG}" ] + then + FILES="${LB_CONFIG}" + else + for FILE in ${@} + do + FILES="${FILES} ${FILE} ${FILE}.${LB_ARCHITECTURES} ${FILE}.${DISTRIBUTION}" + FILES="${FILES} config/$(echo ${PROGRAM} | sed -e 's|^lb_||')" + FILES="${FILES} config/$(echo ${PROGRAM} | sed -e 's|^lb_||').${ARCHITECTURE}" + FILES="${FILES} config/$(echo ${PROGRAM} | sed -e 's|^lb_||').${DISTRIBUTION}" + done + fi + + echo ${FILES} +} + +Read_conffiles () +{ + for CONFFILE in $(Get_conffiles "${@}") + do + if [ -f "${CONFFILE}" ] + then + if [ -r "${CONFFILE}" ] + then + Echo_debug "Reading configuration file %s" "${CONFFILE}" + . "${CONFFILE}" + else + Echo_warning "Failed to read configuration file %s" "${CONFFILE}" + fi + fi + done +} + +Print_conffiles () +{ + for CONFFILE in $(Get_conffiles "${@}") + do + if [ -f "${CONFFILE}" ] + then + Echo_file "${CONFFILE}" + fi + done +} diff --git a/system-build/functions/configuration.sh b/system-build/functions/configuration.sh new file mode 100755 index 0000000..6c0fb2f --- /dev/null +++ b/system-build/functions/configuration.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Get_configuration () +{ + _CONFIGURATION_FILE="${1}" + _FIELD_NAME="${2}" + + if [ -e "${_CONFIGURATION_FILE}" ] + then + _FIELD_BODY="$(grep ^${_FIELD_NAME}: ${_CONFIGURATION_FILE} | awk '{ $1=""; print $0 }' | sed -e 's|^ ||')" + fi + + echo ${_FIELD_BODY} +} + +Set_configuration () +{ + _CONFIGURATION_FILE="${1}" + _FIELD_NAME="${2}" + _FIELD_BODY="${3}" + + if grep -qs "^${_FIELD_NAME}:" "${_CONFIGURATION_FILE}" + then + # Update configuration + sed -i -e "s|^${_FIELD_NAME}:.*$|${_FIELD_NAME}: ${_FIELD_BODY}|" "${_CONFIGURATION_FILE}" + else + # Append configuration + echo "${_FIELD_NAME}: ${_FIELD_BODY}" >> "${_CONFIGURATION_FILE}" + fi +} diff --git a/system-build/functions/cursor.sh b/system-build/functions/cursor.sh new file mode 100755 index 0000000..1f683a1 --- /dev/null +++ b/system-build/functions/cursor.sh @@ -0,0 +1,74 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Cursor_goto_position () +{ + __LINE="${1}" + __COLUMN="${2}" + + #echo -e "[${__LINE};${__COLUMN};H\c" + printf "[${__LINE};${__COLUMN};H" +} + +Cursor_save_position () +{ + #echo -e "[s\c" + printf "[s" +} + +Cursor_restore_position () +{ + #echo -e "[u\c" + printf "[u" +} + +Cursor_line_up () +{ + __LINES="${1}" + + #echo -e "[${__LINES}A\c" + printf "[${__LINES}A" +} + +Cursor_line_down () +{ + __LINES="${1}" + + #echo -e "[${__LINES}B\c" + printf "[${__LINES}B" +} + +Cursor_columns_forward () +{ + __COLUMNS="${1}" + + #echo -e "[${__COLUMNS}C\c" + printf "[${__COLUMNS}C" +} + +Cursor_columns_backward () +{ + __COLUMNS="${1}" + + #echo -e "[${__COLUMNS}D\c" + printf "[${__COLUMNS}D" +} + +Cursor_clear_screen () +{ + #echo -e "[2J\c" + printf "[2J" +} + +Cursor_erase_EOL () +{ + #echo -e "[K\c" + printf "[K" +} diff --git a/system-build/functions/defaults.sh b/system-build/functions/defaults.sh new file mode 100755 index 0000000..e1106a7 --- /dev/null +++ b/system-build/functions/defaults.sh @@ -0,0 +1,882 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +New_configuration () +{ + ## Runtime + + # Image: Architecture + if [ -x "/usr/bin/dpkg" ] + then + CURRENT_IMAGE_ARCHITECTURE="$(dpkg --print-architecture)" + else + case "$(uname -m)" in + x86_64) + CURRENT_IMAGE_ARCHITECTURE="amd64" + ;; + + i?86) + CURRENT_IMAGE_ARCHITECTURE="i386" + ;; + + *) + Echo_warning "Unable to determine current architecture, using ${CURRENT_IMAGE_ARCHITECTURE}" + ;; + esac + fi + + + ## Configuration + + # Configuration-Version + LIVE_CONFIGURATION_VERSION="${LIVE_CONFIGURATION_VERSION:-$(Get_configuration config/build Configuration-Version)}" + LIVE_CONFIGURATION_VERSION="${LIVE_CONFIGURATION_VERSION:-${LIVE_BUILD_VERSION}}" + export LIVE_CONFIGURATION_VERSION + + # Image: Name + LIVE_IMAGE_NAME="${LIVE_IMAGE_NAME:-$(Get_configuration config/build Name)}" + LIVE_IMAGE_NAME="${LIVE_IMAGE_NAME:-system}" + export LIVE_IMAGE_NAME + + # Image: Architecture (FIXME: Support and default to 'any') + LB_ARCHITECTURES="${LB_ARCHITECTURES:-$(Get_configuration config/build Architecture)}" + LB_ARCHITECTURES="${LB_ARCHITECTURES:-${CURRENT_IMAGE_ARCHITECTURE}}" + export LB_ARCHITECTURES + + # Image: Archive Areas + LB_ARCHIVE_AREAS="${LB_ARCHIVE_AREAS:-$(Get_configuration config/build Archive-Areas)}" + + case "${LB_MODE}" in + progress-linux) + LB_ARCHIVE_AREAS="${LB_ARCHIVE_AREAS:-main contrib non-free}" + ;; + + *) + LB_ARCHIVE_AREAS="${LB_ARCHIVE_AREAS:-main}" + ;; + esac + + export LB_ARCHIVE_AREAS + + # Image: Archive Areas + LB_PARENT_ARCHIVE_AREAS="${LB_PARENT_ARCHIVE_AREAS:-$(Get_configuration config/build Parent-Archive-Areas)}" + LB_PARENT_ARCHIVE_AREAS="${LB_PARENT_ARCHIVE_AREAS:-${LB_ARCHIVE_AREAS}}" + export LB_PARENT_ARCHIVE_AREAS + + # Image: Type + LIVE_IMAGE_TYPE="${LIVE_IMAGE_TYPE:-$(Get_configuration config/build Type)}" + LIVE_IMAGE_TYPE="${LIVE_IMAGE_TYPE:-iso-hybrid}" + export LIVE_IMAGE_TYPE +} + +Set_defaults () +{ + # FIXME + New_configuration + + ## config/common + + if [ -e local/live-build ] + then + LIVE_BUILD="${LIVE_BUILD:-${PWD}/local/live-build}" + export LIVE_BUILD + fi + + # Setting system type + LB_SYSTEM="${LB_SYSTEM:-live}" + + # Setting mode + LB_MODE="${LB_MODE:-debian}" + + # Setting distribution name + case "${LB_MODE}" in + progress-linux) + LB_DISTRIBUTION="${LB_DISTRIBUTION:-cairon}" + LB_DERIVATIVE="true" + LB_DERIVATIVE_IS_BASED_ON="debian" + ;; + + *) + LB_DISTRIBUTION="${LB_DISTRIBUTION:-stretch}" + LB_DERIVATIVE="false" + ;; + esac + + case "${LB_MODE}" in + progress-linux) + case "${LB_DISTRIBUTION}" in + baureo|baureo-backports) + LB_PARENT_DISTRIBUTION="${LB_PARENT_DISTRIBUTION:-wheezy}" + LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION="${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION:-${LB_PARENT_DISTRIBUTION}}" + ;; + + cairon|cairon-backports) + LB_PARENT_DISTRIBUTION="${LB_PARENT_DISTRIBUTION:-sid}" + LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION="${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION:-${LB_PARENT_DISTRIBUTION}}" + ;; + esac + + LB_BACKPORTS="${LB_BACKPORTS:-true}" + ;; + + *) + LB_PARENT_DISTRIBUTION="${LB_PARENT_DISTRIBUTION:-${LB_DISTRIBUTION}}" + LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION="${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION:-${LB_PARENT_DISTRIBUTION}}" + + LB_BACKPORTS="${LB_BACKPORTS:-false}" + ;; + esac + + # Setting package manager + LB_APT="${LB_APT:-apt}" + + # Setting apt ftp proxy + LB_APT_FTP_PROXY="${LB_APT_FTP_PROXY}" + + # Setting apt http proxy + LB_APT_HTTP_PROXY="${LB_APT_HTTP_PROXY}" + + # Setting apt pipeline + # LB_APT_PIPELINE + + APT_OPTIONS="${APT_OPTIONS:---yes}" + + BZIP2_OPTIONS="${BZIP2_OPTIONS:--6}" + + GZIP_OPTIONS="${GZIP_OPTIONS:--6}" + + if gzip --help | grep -qs "\-\-rsyncable" + then + GZIP_OPTIONS="$(echo ${GZIP_OPTIONS} | sed -e 's|--rsyncable||') --rsyncable" + fi + + LZIP_OPTIONS="${LZIP_OPTIONS:--6}" + + LZMA_OPTIONS="${LZMA_OPTIONS:--6}" + + XZ_OPTIONS="${XZ_OPTIONS:--6}" + + # Setting apt recommends + case "${LB_MODE}" in + progress-linux) + LB_APT_RECOMMENDS="${LB_APT_RECOMMENDS:-false}" + ;; + + *) + LB_APT_RECOMMENDS="${LB_APT_RECOMMENDS:-true}" + ;; + esac + + # Setting apt secure + LB_APT_SECURE="${LB_APT_SECURE:-true}" + + # Setting apt source + case "${LB_MODE}" in + progress-linux) + LB_APT_SOURCE_ARCHIVES="${LB_APT_SOURCE_ARCHIVES:-false}" + ;; + + *) + LB_APT_SOURCE_ARCHIVES="${LB_APT_SOURCE_ARCHIVES:-true}" + ;; + esac + + # Setting cache option + LB_CACHE="${LB_CACHE:-true}" + LB_CACHE_INDICES="${LB_CACHE_INDICES:-false}" + LB_CACHE_PACKAGES="${LB_CACHE_PACKAGES:-true}" + LB_CACHE_STAGES="${LB_CACHE_STAGES:-bootstrap}" + + # Setting debconf frontend + LB_DEBCONF_FRONTEND="${LB_DEBCONF_FRONTEND:-noninteractive}" + LB_DEBCONF_PRIORITY="${LB_DEBCONF_PRIORITY:-critical}" + + # Setting initramfs hook + case "${LB_SYSTEM}" in + live) + LB_INITRAMFS="${LB_INITRAMFS:-system-boot}" + ;; + + normal) + LB_INITRAMFS="${LB_INITRAMFS:-none}" + ;; + esac + + LB_INITRAMFS_COMPRESSION="${LB_INITRAMFS_COMPRESSION:-gzip}" + + # Setting initsystem + case "${LB_MODE}" in + progress-linux) + case "${LB_DISTRIBUTION}" in + cairon*) + LB_INITSYSTEM="${LB_INITSYSTEM:-systemd}" + ;; + + *) + LB_INITSYSTEM="${LB_INITSYSTEM:-sysvinit}" + ;; + esac + ;; + + *) + case "${LB_SYSTEM}" in + live) + LB_INITSYSTEM="${LB_INITSYSTEM:-systemd}" + ;; + + normal) + LB_INITSYSTEM="${LB_INITSYSTEM:-none}" + ;; + esac + ;; + esac + + # Setting fdisk + if [ -z "${LB_FDISK}" ] || [ ! -x "${LB_FDISK}" ] + then + # Workaround for gnu-fdisk divertion + # (gnu-fdisk is buggy, #445304). + if [ -x /sbin/fdisk.distrib ] + then + LB_FDISK="fdisk.distrib" + elif [ -x /sbin/fdisk ] + then + LB_FDISK="fdisk" + else + Echo_error "Can't process file /sbin/fdisk" + fi + fi + + # Setting losetup + if [ -z "${LB_LOSETUP}" ] || [ "${LB_LOSETUP}" != "/sbin/losetup.orig" ] + then + # Workaround for loop-aes-utils divertion + # (loop-aes-utils' losetup lacks features). + if [ -x /sbin/losetup.orig ] + then + LB_LOSETUP="losetup.orig" + elif [ -x /sbin/losetup ] + then + LB_LOSETUP="losetup" + else + Echo_error "Can't process file /sbin/losetup" + fi + fi + + if [ "${LB_ARCHITECTURES}" = "i386" ] && [ "${CURRENT_IMAGE_ARCHITECTURE}" = "amd64" ] + then + # Use linux32 when building amd64 images on i386 + _LINUX32="linux32" + else + _LINUX32="" + fi + + # Setting tasksel + LB_TASKSEL="${LB_TASKSEL:-apt}" + + # Setting root directory + case "${LB_MODE}" in + progress-linux) + LB_ROOT="${LB_ROOT:-progress-linux}" + ;; + + *) + LB_ROOT="${LB_ROOT:-${LB_MODE}-live}" + ;; + esac + + # Setting live build options + _BREAKPOINTS="${_BREAKPOINTS:-false}" + _COLOR="${_COLOR:-false}" + _DEBUG="${_DEBUG:-false}" + _FORCE="${_FORCE:-false}" + _QUIET="${_QUIET:-false}" + _VERBOSE="${_VERBOSE:-false}" + + ## config/bootstrap + + # Setting mirror to fetch packages from + case "${LB_MODE}" in + debian) + LB_MIRROR_BOOTSTRAP="${LB_MIRROR_BOOTSTRAP:-https://deb.debian.org/debian}" + LB_PARENT_MIRROR_BOOTSTRAP="${LB_PARENT_MIRROR_BOOTSTRAP:-${LB_MIRROR_BOOTSTRAP}}" + ;; + + progress-linux) + LB_PARENT_MIRROR_BOOTSTRAP="${LB_PARENT_MIRROR_BOOTSTRAP:-https://deb.debian.org/debian}" + LB_MIRROR_BOOTSTRAP="${LB_MIRROR_BOOTSTRAP:-http://cdn.archive.progress-linux.org/packages}" + ;; + esac + + LB_PARENT_MIRROR_CHROOT="${LB_PARENT_MIRROR_CHROOT:-${LB_PARENT_MIRROR_BOOTSTRAP}}" + LB_MIRROR_CHROOT="${LB_MIRROR_CHROOT:-${LB_MIRROR_BOOTSTRAP}}" + + # Setting security mirror to fetch packages from + case "${LB_MODE}" in + debian) + LB_MIRROR_CHROOT_SECURITY="${LB_MIRROR_CHROOT_SECURITY:-http://security.debian.org}" + LB_PARENT_MIRROR_CHROOT_SECURITY="${LB_PARENT_MIRROR_CHROOT_SECURITY:-${LB_MIRROR_CHROOT_SECURITY}}" + ;; + + progress-linux) + LB_PARENT_MIRROR_CHROOT_SECURITY="${LB_PARENT_MIRROR_CHROOT_SECURITY:-http://security.debian.org}" + LB_MIRROR_CHROOT_SECURITY="${LB_MIRROR_CHROOT_SECURITY:-${LB_MIRROR_CHROOT}}" + ;; + esac + + # Setting mirror which ends up in the image + case "${LB_MODE}" in + debian) + LB_MIRROR_BINARY="${LB_MIRROR_BINARY:-https://deb.debian.org/debian}" + LB_PARENT_MIRROR_BINARY="${LB_PARENT_MIRROR_BINARY:-${LB_MIRROR_BINARY}}" + ;; + + progress-linux) + LB_PARENT_MIRROR_BINARY="${LB_PARENT_MIRROR_BINARY:-https://deb.debian.org/debian}" + LB_MIRROR_BINARY="${LB_MIRROR_BINARY:-${LB_MIRROR_CHROOT}}" + ;; + esac + + # Setting security mirror which ends up in the image + case "${LB_MODE}" in + debian) + LB_MIRROR_BINARY_SECURITY="${LB_MIRROR_BINARY_SECURITY:-http://security.debian.org}" + LB_PARENT_MIRROR_BINARY_SECURITY="${LB_PARENT_MIRROR_BINARY_SECURITY:-${LB_MIRROR_BINARY_SECURITY}}" + ;; + + progress-linux) + LB_PARENT_MIRROR_BINARY_SECURITY="${LB_PARENT_MIRROR_BINARY_SECURITY:-http://security.debian.org}" + LB_MIRROR_BINARY_SECURITY="${LB_MIRROR_BINARY_SECURITY:-${LB_MIRROR_CHROOT}}" + ;; + esac + + case "${LB_MODE}" in + progress-linux) + LB_PARENT_MIRROR_DEBIAN_INSTALLER="${LB_PARENT_MIRROR_DEBIAN_INSTALLER:-${LB_MIRROR_CHROOT}}" + LB_MIRROR_DEBIAN_INSTALLER="${LB_MIRROR_DEBIAN_INSTALLER:-${LB_MIRROR_CHROOT}}" + ;; + + *) + LB_MIRROR_DEBIAN_INSTALLER="${LB_MIRROR_DEBIAN_INSTALLER:-${LB_MIRROR_CHROOT}}" + LB_PARENT_MIRROR_DEBIAN_INSTALLER="${LB_PARENT_MIRROR_DEBIAN_INSTALLER:-${LB_PARENT_MIRROR_CHROOT}}" + ;; + esac + + ## config/system + + # Setting chroot filesystem + LB_CHROOT_FILESYSTEM="${LB_CHROOT_FILESYSTEM:-squashfs}" + + # Setting union filesystem + LB_UNION_FILESYSTEM="${LB_UNION_FILESYSTEM:-aufs}" + + # Setting interactive shell/X11/Xnest + LB_INTERACTIVE="${LB_INTERACTIVE:-false}" + + # Setting keyring packages + LB_KEYRING_PACKAGES="${LB_KEYRING_PACKAGES:-debian-archive-keyring}" + + # Setting linux flavour string + case "${LB_ARCHITECTURES}" in + arm64) + LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS:-arm64}" + ;; + + armel) + # armel will have special images: one rootfs image and many additional kernel images. + # therefore we default to all available armel flavours + LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS:-kirkwood orion5x versatile}" + ;; + + armhf) + # armhf will have special images: one rootfs image and many additional kernel images. + # therefore we default to all available armhf flavours + LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS:-armmp armmp-lpae}" + ;; + + amd64) + LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS:-amd64}" + ;; + + i386) + LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS:-686-pae}" + ;; + + ia64) + case "${LB_MODE}" in + progress-linux) + Echo_error "Architecture ${LB_ARCHITECTURES} not supported in the ${LB_MODE} mode." + exit 1 + ;; + + *) + LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS:-itanium}" + ;; + esac + ;; + + powerpc) + case "${LB_MODE}" in + progress-linux) + Echo_error "Architecture ${LB_ARCHITECTURES} not supported in the ${LB_MODE} mode." + exit 1 + ;; + + *) + LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS:-powerpc64 powerpc}" + ;; + esac + ;; + + s390x) + case "${LB_MODE}" in + progress-linux) + Echo_error "Architecture ${LB_ARCHITECTURES} not supported in the ${LB_MODE} mode." + exit 1 + ;; + + *) + LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS:-s390x}" + ;; + esac + ;; + + *) + Echo_error "Architecture(s) ${LB_ARCHITECTURES} not yet supported (FIXME)" + exit 1 + ;; + esac + + # Set linux packages + LB_LINUX_PACKAGES="${LB_LINUX_PACKAGES:-linux-image}" + + # Setting security updates option + case "${LB_PARENT_DISTRIBUTION}" in + sid) + LB_SECURITY="${LB_SECURITY:-false}" + ;; + + *) + LB_SECURITY="${LB_SECURITY:-true}" + ;; + esac + + # Setting updates updates option + case "${LB_PARENT_DISTRIBUTION}" in + sid) + LB_UPDATES="${LB_UPDATES:-false}" + ;; + + *) + LB_UPDATES="${LB_UPDATES:-true}" + ;; + esac + + ## config/binary + + # Setting image filesystem + LB_BINARY_FILESYSTEM="${LB_BINARY_FILESYSTEM:-fat32}" + + # Setting image type + case "${LB_ARCHITECTURES}" in + amd64|i386) + LIVE_IMAGE_TYPE="${LIVE_IMAGE_TYPE:-iso-hybrid}" + ;; + + *) + LIVE_IMAGE_TYPE="${LIVE_IMAGE_TYPE:-iso}" + ;; + esac + + # Setting apt indices + case "${LB_MODE}" in + progress-linux) + LB_APT_INDICES="${LB_APT_INDICES:-false}" + ;; + + *) + LB_APT_INDICES="${LB_APT_INDICES:-true}" + ;; + esac + + # Setting bootloader + if [ -z "${LB_BOOTLOADERS}" ] + then + case "${LB_ARCHITECTURES}" in + amd64|i386) + LB_BOOTLOADERS="syslinux" + ;; + esac + fi + + # Setting checksums + case "${LB_MODE}" in + progress-linux) + LB_CHECKSUMS="${LB_CHECKSUMS:-sha256}" + ;; + + *) + LB_CHECKSUMS="${LB_CHECKSUMS:-md5}" + ;; + esac + + # Setting compression + LB_COMPRESSION="${LB_COMPRESSION:-none}" + + # Setting zsync + LB_ZSYNC="${LB_ZSYNC:-true}" + + # Setting chroot option + LB_BUILD_WITH_CHROOT="${LB_BUILD_WITH_CHROOT:-true}" + + LB_BUILD_WITH_TMPFS="${LB_BUILD_WITH_TMPFS:-false}" + + # Setting debian-installer option + LB_DEBIAN_INSTALLER="${LB_DEBIAN_INSTALLER:-false}" + + LB_DEBIAN_INSTALLER_DISTRIBUTION="${LB_DEBIAN_INSTALLER_DISTRIBUTION:-${LB_DISTRIBUTION}}" + + # Setting debian-installer-gui + case "${LB_MODE}" in + debian|progress-linux) + LB_DEBIAN_INSTALLER_GUI="${LB_DEBIAN_INSTALLER_GUI:-true}" + ;; + + *) + LB_DEBIAN_INSTALLER_GUI="${LB_DEBIAN_INSTALLER_GUI:-false}" + ;; + esac + + # Setting debian-installer preseed filename + if [ -z "${LB_DEBIAN_INSTALLER_PRESEEDFILE}" ] + then + if Find_files config/debian-installer/preseed.cfg + then + LB_DEBIAN_INSTALLER_PRESEEDFILE="/preseed.cfg" + fi + + if Find_files config/debian-installer/*.cfg && [ ! -e config/debian-installer/preseed.cfg ] + then + Echo_warning "You have placed some preseeding files into config/debian-installer but you didn't specify the default preseeding file through LB_DEBIAN_INSTALLER_PRESEEDFILE. This means that debian-installer will not take up a preseeding file by default." + fi + fi + + # Setting boot parameters + case "${LB_INITRAMFS}" in + system-boot) + LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE:-boot=live components quiet splash}" + LB_BOOTAPPEND_LIVE_FAILSAFE="${LB_BOOTAPPEND_LIVE_FAILSAFE:-boot=live components memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal}" + ;; + + none) + LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE:-quiet splash}" + LB_BOOTAPPEND_LIVE_FAILSAFE="${LB_BOOTAPPEND_LIVE_FAILSAFE:-memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal}" + ;; + esac + + if [ -n "${LB_DEBIAN_INSTALLER_PRESEEDFILE}" ] + then + case "${LIVE_IMAGE_TYPE}" in + iso*) + _LB_BOOTAPPEND_PRESEED="file=/cdrom/install/${LB_DEBIAN_INSTALLER_PRESEEDFILE}" + ;; + + hdd*) + _LB_BOOTAPPEND_PRESEED="file=/hd-media/install/${LB_DEBIAN_INSTALLER_PRESEEDFILE}" + ;; + + netboot) + case "${LB_DEBIAN_INSTALLER_PRESEEDFILE}" in + *://*) + _LB_BOOTAPPEND_PRESEED="file=${LB_DEBIAN_INSTALLER_PRESEEDFILE}" + ;; + + *) + _LB_BOOTAPPEND_PRESEED="file=/${LB_DEBIAN_INSTALLER_PRESEEDFILE}" + ;; + esac + ;; + esac + fi + + if [ -n ${_LB_BOOTAPPEND_PRESEED} ] + then + LB_BOOTAPPEND_INSTALL="${LB_BOOTAPPEND_INSTALL} ${_LB_BOOTAPPEND_PRESEED}" + fi + + LB_BOOTAPPEND_INSTALL="$(echo ${LB_BOOTAPPEND_INSTALL} | sed -e 's/[ \t]*$//')" + + # Setting grub splash + # LB_GRUB_SPLASH + + # Setting iso author + case "${LB_MODE}" in + debian) + LB_ISO_APPLICATION="${LB_ISO_APPLICATION:-Debian Live}" + ;; + + progress-linux) + LB_ISO_APPLICATION="${LB_ISO_APPLICATION:-Progress Linux}" + ;; + esac + + # Set iso preparer + LB_ISO_PREPARER="${LB_ISO_PREPARER:-live-build \$VERSION; http://live-systems.org/devel/live-build}" + + # Set iso publisher + case "${LB_MODE}" in + progress-linux) + LB_ISO_PUBLISHER="${LB_ISO_PUBLISHER:-Progress Linux; http://www.progress-linux.org/; progress-project@lists.progress-linux.org}" + ;; + + *) + LB_ISO_PUBLISHER="${LB_ISO_PUBLISHER:-Live Systems project; http://live-systems.org/; debian-live@lists.debian.org}" + ;; + esac + + # Setting hdd options + case "${LB_MODE}" in + debian) + LB_HDD_LABEL="${LB_HDD_LABEL:-DEBIAN_LIVE}" + ;; + + progress-linux) + LB_HDD_LABEL="${LB_HDD_LABEL:-PROGRESS_$(echo ${LB_DISTRIBUTION} | tr "[a-z]" "[A-Z]")}" + ;; + esac + + # Setting hdd size + LB_HDD_SIZE="${LB_HDD_SIZE:-auto}" + + # Setting iso volume + case "${LB_MODE}" in + debian) + LB_ISO_VOLUME="${LB_ISO_VOLUME:-Debian ${LB_DISTRIBUTION} \$(date +%Y%m%d-%H:%M)}" + ;; + + progress-linux) + LB_ISO_VOLUME="${LB_ISO_VOLUME:-Progress ${LB_DISTRIBUTION}}" + ;; + esac + + # Setting memtest option + LB_MEMTEST="${LB_MEMTEST:-none}" + + # Setting loadlin option + case "${LB_MODE}" in + progress-linux) + + ;; + + *) + case "${LB_ARCHITECTURES}" in + amd64|i386) + if [ "${LB_DEBIAN_INSTALLER}" != "false" ] + then + LB_LOADLIN="${LB_LOADLIN:-true}" + else + LB_LOADLIN="${LB_LOADLIN:-false}" + fi + ;; + + *) + LB_LOADLIN="${LB_LOADLIN:-false}" + ;; + esac + ;; + esac + + # Setting win32-loader option + case "${LB_MODE}" in + progress-linux) + + ;; + + *) + case "${LB_ARCHITECTURES}" in + amd64|i386) + if [ "${LB_DEBIAN_INSTALLER}" != "false" ] + then + LB_WIN32_LOADER="${LB_WIN32_LOADER:-true}" + else + LB_WIN32_LOADER="${LB_WIN32_LOADER:-false}" + fi + ;; + + *) + LB_WIN32_LOADER="${LB_WIN32_LOADER:-false}" + ;; + esac + ;; + esac + + # Setting netboot filesystem + LB_NET_ROOT_FILESYSTEM="${LB_NET_ROOT_FILESYSTEM:-nfs}" + + # Setting netboot server path + case "${LB_MODE}" in + progress-linux) + LB_NET_ROOT_PATH="${LB_NET_ROOT_PATH:-/srv/progress-linux}" + ;; + + *) + LB_NET_ROOT_PATH="${LB_NET_ROOT_PATH:-/srv/${LB_MODE}-live}" + ;; + esac + + # Setting netboot server address + LB_NET_ROOT_SERVER="${LB_NET_ROOT_SERVER:-192.168.1.1}" + + # Setting net cow filesystem + LB_NET_COW_FILESYSTEM="${LB_NET_COW_FILESYSTEM:-nfs}" + + # Setting net tarball + LB_NET_TARBALL="${LB_NET_TARBALL:-true}" + + # Setting firmware option + LB_FIRMWARE_CHROOT="${LB_FIRMWARE_CHROOT:-true}" + LB_FIRMWARE_BINARY="${LB_FIRMWARE_BINARY:-true}" + + # Setting swap file + LB_SWAP_FILE_SIZE="${LB_SWAP_FILE_SIZE:-512}" + + ## config/source + + # Setting source option + LB_SOURCE="${LB_SOURCE:-false}" + + # Setting image type + LB_SOURCE_IMAGES="${LB_SOURCE_IMAGES:-tar}" +} + +Check_defaults () +{ + if [ -n "${LIVE_BUILD_VERSION}" ] + then + # We're only checking when we're actually running the checks + # that's why the check for emptyness of the version; + # however, as live-build always declares LIVE_BUILD_VERSION + # internally, this is safe assumption (no cases where it's unset, + # except when bootstrapping the functions/defaults etc.). + + CURRENT_CONFIGURATION_VERSION="$(echo ${LIVE_CONFIGURATION_VERSION} | awk -F. ' { print $1 }')" + + if [ -n "${CURRENT_CONFIGURATION_VERSION}" ] + then + CORRECT_VERSION="$(echo ${LIVE_BUILD_VERSION} | awk -F. '{ print $1 }')" + TOO_NEW_VERSION="$((${CORRECT_VERSION} + 1))" + TOO_OLD_VERSION="$((${CORRECT_VERSION} - 1))" + + if [ ${CURRENT_CONFIGURATION_VERSION} -ne ${CORRECT_VERSION} ] + then + if [ ${CURRENT_CONFIGURATION_VERSION} -ge ${TOO_NEW_VERSION} ] + then + Echo_error "This config tree is too new for live-build (${VERSION})." + Echo_error "Aborting build, please update live-build." + + exit 1 + elif [ ${CURRENT_CONFIGURATION_VERSION} -le ${TOO_OLD_VERSION} ] + then + Echo_error "This config tree is too old for live-build (${VERSION})." + Echo_error "Aborting build, please update the configuration." + + exit 1 + else + Echo_warning "This configuration does not specify a version or has a unknown version." + Echo_warning "Continuing build, please correct the configuration." + fi + fi + fi + fi + + case "${LB_BINARY_FILESYSTEM}" in + ntfs) + if [ ! -x "$(which ntfs-3g 2>/dev/null)" ] + then + Echo_error "Using ntfs as the binary filesystem is currently only supported" + Echo_error "if ntfs-3g is installed on the host system." + + exit 1 + fi + ;; + esac + + if echo ${LB_HDD_LABEL} | grep -qs ' ' + then + Echo_error "There are currently no whitespaces supported in hdd labels." + + exit 1 + fi + + if [ "${LB_DEBIAN_INSTALLER}" != "false" ] + then + # d-i true, no caching + if ! echo ${LB_CACHE_STAGES} | grep -qs "bootstrap\b" || [ "${LB_CACHE}" != "true" ] || [ "${LB_CACHE_PACKAGES}" != "true" ] + then + Echo_warning "You have selected values of LB_CACHE, LB_CACHE_PACKAGES, LB_CACHE_STAGES and LB_DEBIAN_INSTALLER which will result in 'bootstrap' packages not being cached. This configuration is potentially unsafe as the bootstrap packages are re-used when integrating the Debian Installer." + fi + fi + + + LB_PRIMARY_BOOTLOADER=$(echo "${LB_BOOTLOADERS}" | awk -F, '{ print $1 }') + + if [ "${LB_PRIMARY_BOOTLOADER}" = "syslinux" ] + then + # syslinux + fat or ntfs, or extlinux + ext[234] or btrfs + case "${LB_BINARY_FILESYSTEM}" in + fat*|ntfs|ext[234]|btrfs) + ;; + *) + Echo_warning "You have selected values of LB_BOOTLOADER and LB_BINARY_FILESYSTEM which are incompatible - the syslinux family only support FAT, NTFS, ext[234] or btrfs filesystems." + ;; + esac + fi + + case "${LIVE_IMAGE_TYPE}" in + hdd*) + case "${LB_PRIMARY_BOOTLOADER}" in + grub) + Echo_error "You have selected a combination of bootloader and image type that is currently not supported by live-build. Please use either another bootloader or a different image type." + exit 1 + ;; + esac + ;; + esac + + if [ "$(echo \"${LB_ISO_APPLICATION}\" | wc -c)" -gt 128 ] + then + Echo_warning "You have specified a value of LB_ISO_APPLICATION that is too long; the maximum length is 128 characters." + fi + + if [ "$(echo \"${LB_ISO_PREPARER}\" | wc -c)" -gt 128 ] + then + Echo_warning "You have specified a value of LB_ISO_PREPARER that is too long; the maximum length is 128 characters." + fi + + if [ "$(echo \"${LB_ISO_PUBLISHER}\" | wc -c)" -gt 128 ] + then + Echo_warning "You have specified a value of LB_ISO_PUBLISHER that is too long; the maximum length is 128 characters." + fi + + if [ "$(eval "echo \"${LB_ISO_VOLUME}\"" | wc -c)" -gt 32 ] + then + Echo_warning "You have specified a value of LB_ISO_VOLUME that is too long; the maximum length is 32 characters." + fi + + # Architectures to use foreign bootstrap for + LB_BOOTSTRAP_QEMU_ARCHITECTURES="${LB_BOOTSTRAP_QEMU_ARCHITECTURES:-}" + + # Packages to exclude for the foreign/ports bootstrapping + LB_BOOTSTRAP_QEMU_EXCLUDE="${LB_BOOTSTRAP_QEMU_EXCLUDE:-}" + + # Ports using foreign bootstrap need a working qemu-*-system. This is the location it + LB_BOOTSTRAP_QEMU_STATIC="${LB_BOOTSTRAP_QEMU_STATIC:-}" + +} diff --git a/system-build/functions/echo.sh b/system-build/functions/echo.sh new file mode 100755 index 0000000..96b742c --- /dev/null +++ b/system-build/functions/echo.sh @@ -0,0 +1,206 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Echo () +{ + STRING="${1}" + shift + + printf "${STRING}\n" "${@}" +} + +Echo_debug () +{ + if [ "${_DEBUG}" = "true" ] + then + STRING="${1}" + shift + + printf "D: ${STRING}\n" "${@}" + fi +} + +Echo_debug_running () +{ + if [ "${_DEBUG}" = "true" ] + then + STRING="${1}" + shift + + printf "D: ${STRING}" "${@}" + + if [ "${_COLOR}" = "false" ] + then + printf "..." + else + printf "... ${YELLOW}${BLINK}running${NO_COLOR}" + fi + fi +} + +Echo_error () +{ + STRING="${1}" + shift + + if [ "${_COLOR}" = "false" ] + then + printf "E:" + else + printf "${RED}E${NO_COLOR}:" + fi + + printf " ${STRING}\n" "${@}" >&2 +} + +Echo_message () +{ + if [ "${_QUIET}" != "true" ] + then + STRING="${1}" + shift + + if [ "${_COLOR}" = "false" ] + then + printf "P:" + else + printf "${WHITE}P${NO_COLOR}:" + fi + + printf " ${STRING}\n" "${@}" + fi +} + +Echo_message_running () +{ + if [ "${_QUIET}" != "true" ] + then + STRING="${1}" + shift + + if [ "${_COLOR}" = "false" ] + then + printf "P:" + else + printf "${WHITE}P${NO_COLOR}:" + fi + + printf " ${STRING}" "${@}" + + if [ "${_COLOR}" = "true" ] + then + printf "... ${YELLOW}${BLINK}running${NO_COLOR}" + else + printf "..." + fi + fi +} + +Echo_verbose () +{ + if [ "${_VERBOSE}" = "true" ] + then + STRING="${1}" + shift + + printf "I: ${STRING}\n" "${@}" + fi +} + +Echo_verbose_running () +{ + if [ "${_VERBOSE}" != "true" ] + then + STRING="${1}" + shift + + printf "I: ${STRING}" "${@}" + + if [ "${_COLOR}" = "true" ] + then + printf "... ${YELLOW}${BLINK}running${NO_COLOR}" + else + printf "..." + fi + fi +} + +Echo_warning () +{ + STRING="${1}" + shift + + if [ "${_COLOR}" = "false" ] + then + printf "W:" + else + printf "${YELLOW}W${NO_COLOR}:" + fi + + printf " ${STRING}\n" "${@}" +} + +Echo_status () +{ + __RETURN="${?}" + + if [ "${_COLOR}" = "false" ] + then + if [ "${__RETURN}" = "0" ] + then + printf " done.\n" + else + printf " failed.\n" + fi + else + Cursor_columns_backward 8 + + if [ "${__RETURN}" = "0" ] + then + printf " ${GREEN}done${NO_COLOR}. \n" + else + printf " ${RED}failed${NO_COLOR}.\n" + fi + fi +} + +Echo_done () +{ + if [ "${_COLOR}" = "false" ] + then + printf " already done.\n" + else + Cursor_columns_backward 8 + + printf " ${GREEN}already done${NO_COLOR}.\n" + fi +} + +Echo_file () +{ + while read LINE + do + echo "${1}: ${LINE}" + done < "${1}" +} + +Echo_breakage () +{ + case "${LB_PARENT_DISTRIBUTION}" in + sid) + Echo_message "If the following stage fails, the most likely cause of the problem is with your mirror configuration, a caching proxy or the sid distribution." + ;; + *) + Echo_message "If the following stage fails, the most likely cause of the problem is with your mirror configuration or a caching proxy." + ;; + esac + + Echo_message "${@}" +} diff --git a/system-build/functions/exit.sh b/system-build/functions/exit.sh new file mode 100755 index 0000000..6ff9cdc --- /dev/null +++ b/system-build/functions/exit.sh @@ -0,0 +1,63 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Exit () +{ + VALUE="${?}" + + if [ "${_DEBUG}" = "true" ] + then + # Dump variables + set | grep -e ^LB + fi + + # Always exit true in case we are not able to unmount + # (e.g. due to running processes in chroot from user customizations) + Echo_message "Begin unmounting filesystems..." + + if [ -e /proc/mounts ] + then + for DIRECTORY in $(awk -v dir="${PWD}/chroot/" '$2 ~ dir { print $2 }' /proc/mounts | sort -r) + do + umount ${DIRECTORY} > /dev/null 2>&1 || true + done + else + for DIRECTORY in /dev/shm /dev/pts /dev /proc /selinux /sys /root/config + do + umount -f chroot/${DIRECTORY} > /dev/null 2>&1 || true + done + fi + + rm -f .build/chroot_devpts + rm -f .build/chroot_proc + rm -f .build/chroot_selinuxfs + rm -f .build/chroot_sysfs + + Echo_message "Saving caches..." + + # We can't really know at which part we're failing, + # but let's assume that if there's any binary stage file arround + # we are in binary stage. + + if ls .build/binary* > /dev/null 2>&1 + then + Save_cache cache/packages.binary + else + Save_cache cache/packages.chroot + fi + + return ${VALUE} +} + +Setup_cleanup () +{ + Echo_message "Setting up cleanup function" + trap 'Exit' EXIT HUP INT QUIT TERM +} diff --git a/system-build/functions/help.sh b/system-build/functions/help.sh new file mode 100755 index 0000000..cd9344b --- /dev/null +++ b/system-build/functions/help.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Help () +{ + Echo "%s - %s" "${PROGRAM}" "${DESCRIPTION}" + echo + Echo "Usage:" + echo + + if [ -n "${USAGE}" ] + then + Echo "${USAGE}" + echo + fi + Echo " %s [-h|--help]" "${PROGRAM}" + Echo " %s [-u|--usage]" "${PROGRAM}" + Echo " %s [-v|--version]" "${PROGRAM}" + echo + + if [ -n "${HELP}" ] + then + Echo "${HELP}" + echo + fi + + Echo "Report bugs to the Live Systems project <http://live-systems.org/>." + exit 0 +} diff --git a/system-build/functions/lockfile.sh b/system-build/functions/lockfile.sh new file mode 100755 index 0000000..cabb85f --- /dev/null +++ b/system-build/functions/lockfile.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Check_lockfile () +{ + FILE="${1}" + + if [ -z "${FILE}" ] + then + FILE=".build/lock" + fi + + # Checking lock file + if [ -f "${FILE}" ] + then + Echo_error "${PROGRAM} locked" + exit 1 + fi +} + +Create_lockfile () +{ + FILE="${1}" + + if [ -z "${FILE}" ] + then + FILE=".build/lock" + fi + + DIRECTORY="$(dirname ${FILE})" + + # Creating lock directory + mkdir -p "${DIRECTORY}" + + # Creating lock trap + trap 'ret=${?}; '"rm -f \"${FILE}\";"' exit ${ret}' EXIT HUP INT QUIT TERM + + # Creating lock file + touch "${FILE}" +} diff --git a/system-build/functions/losetup.sh b/system-build/functions/losetup.sh new file mode 100755 index 0000000..0346ff6 --- /dev/null +++ b/system-build/functions/losetup.sh @@ -0,0 +1,119 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + +Lodetach () +{ + DEVICE="${1}" + ATTEMPT="${2:-1}" + + if [ "${ATTEMPT}" -gt 3 ] + then + Echo_error "Failed to detach loop device '${DEVICE}'." + exit 1 + fi + + # Changes to block devices result in uevents which trigger rules which in + # turn access the loop device (ex. udisks-part-id, blkid) which can cause + # a race condition. We call 'udevadm settle' to help avoid this. + if [ -x "$(which udevadm 2>/dev/null)" ] + then + udevadm settle + fi + + # Loop back devices aren't the most reliable when it comes to writes. + # We sleep and sync for good measure - better than build failure. + sync + sleep 1 + + ${LB_LOSETUP} -d "${DEVICE}" || Lodetach "${DEVICE}" "$(expr ${ATTEMPT} + 1)" +} + +Losetup () +{ + DEVICE="${1}" + FILE="${2}" + PARTITION="${3:-1}" + + ${LB_LOSETUP} --read-only "${DEVICE}" "${FILE}" + FDISK_OUT="$(${LB_FDISK} -l -u ${DEVICE} 2>&1)" + Lodetach "${DEVICE}" + + LOOPDEVICE="$(echo ${DEVICE}p${PARTITION})" + + if [ "${PARTITION}" = "0" ] + then + Echo_message "Mounting %s with offset 0" "${DEVICE}" + + ${LB_LOSETUP} "${DEVICE}" "${FILE}" + else + SECTORS="$(echo "$FDISK_OUT" | sed -ne "s|^$LOOPDEVICE[ *]*\([0-9]*\).*|\1|p")" + OFFSET="$(expr ${SECTORS} '*' 512)" + + Echo_message "Mounting %s with offset %s" "${DEVICE}" "${OFFSET}" + + ${LB_LOSETUP} -o "${OFFSET}" "${DEVICE}" "${FILE}" + fi +} + +# adapted from lib/ext2fs/mkjournal.c, default block size is 4096 bytes (/etc/mke2fs.conf). +ext2fs_default_journal_size() +{ + SIZE="$1" + if [ "${SIZE}" -lt "8" ]; then # 2048*4096 + echo 0 + elif [ "${SIZE}" -lt "128" ]; then # 32768*4096 + echo 4 + elif [ "${SIZE}" -lt "1024" ]; then # 256*1024*4096 + echo 16 + elif [ "${SIZE}" -lt "2048" ]; then # 512*1024*4096 + echo 32 + elif [ "${SIZE}" -lt "4096" ]; then # 1024*1024*4096 + echo 64 + else + echo 128 + fi +} + +Calculate_partition_size_without_journal () +{ + WITHOUT_JOURNAL_ORIGINAL_SIZE="${1}" + WITHOUT_JOURNAL_FILESYSTEM="${2}" + + case "${WITHOUT_JOURNAL_FILESYSTEM}" in + ext2|ext3|ext4) + PERCENT="6" + ;; + *) + PERCENT="3" + ;; + esac + + echo $(expr ${WITHOUT_JOURNAL_ORIGINAL_SIZE} + ${WITHOUT_JOURNAL_ORIGINAL_SIZE} \* ${PERCENT} / 100 + 1) +} + +Calculate_partition_size () +{ + ORIGINAL_SIZE="${1}" + FILESYSTEM="${2}" + + case "${FILESYSTEM}" in + ext3|ext4) + NON_JOURNAL_SIZE=$(Calculate_partition_size_without_journal ${ORIGINAL_SIZE} ${FILESYSTEM}) + PROJECTED_JOURNAL_SIZE=$(ext2fs_default_journal_size ${NON_JOURNAL_SIZE}) + PROJECTED_PARTITION_SIZE=$(expr ${ORIGINAL_SIZE} + ${PROJECTED_JOURNAL_SIZE}) + PRE_FINAL_PARTITION_SIZE=$(Calculate_partition_size_without_journal ${PROJECTED_PARTITION_SIZE} ${FILESYSTEM}) + JOURNAL_SIZE=$(ext2fs_default_journal_size ${PRE_FINAL_PARTITION_SIZE}) + + expr $(Calculate_partition_size_without_journal ${ORIGINAL_SIZE} ${FILESYSTEM}) + ${JOURNAL_SIZE} + ;; + *) + Calculate_partition_size_without_journal ${ORIGINAL_SIZE} ${FILESYSTEM} + ;; + esac +} diff --git a/system-build/functions/man.sh b/system-build/functions/man.sh new file mode 100755 index 0000000..11366b7 --- /dev/null +++ b/system-build/functions/man.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Man () +{ + if [ -x "$(which man 2>/dev/null)" ] + then + man $(basename ${0}) + exit 0 + fi +} diff --git a/system-build/functions/packagelists.sh b/system-build/functions/packagelists.sh new file mode 100755 index 0000000..0ee13ce --- /dev/null +++ b/system-build/functions/packagelists.sh @@ -0,0 +1,151 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Expand_packagelist () +{ + _LB_EXPAND_QUEUE="$(basename "${1}")" + + shift + + while [ -n "${_LB_EXPAND_QUEUE}" ] + do + _LB_LIST_NAME="$(echo ${_LB_EXPAND_QUEUE} | cut -d" " -f1)" + _LB_EXPAND_QUEUE="$(echo ${_LB_EXPAND_QUEUE} | cut -s -d" " -f2-)" + _LB_LIST_LOCATION="" + _LB_NESTED=0 + _LB_ENABLED=1 + + for _LB_SEARCH_PATH in ${@} + do + if [ -e "${_LB_SEARCH_PATH}/${_LB_LIST_NAME}" ] + then + _LB_LIST_LOCATION="${_LB_SEARCH_PATH}/${_LB_LIST_NAME}" + break + fi + done + + if [ -z "${_LB_LIST_LOCATION}" ] + then + echo "W: Unknown package list '${_LB_LIST_NAME}'" >&2 + continue + fi + + printf "$(cat ${_LB_LIST_LOCATION})\n" | while read _LB_LINE + do + case "${_LB_LINE}" in + \!*) + _EXEC="$(echo ${_LB_LINE} | sed -e 's|^!||')" + + case "${LB_BUILD_WITH_CHROOT}" in + true) + chroot chroot sh -c "${_EXEC}" + ;; + + false) + eval ${_EXEC} + ;; + esac + ;; + + \#if\ *) + if [ ${_LB_NESTED} -eq 1 ] + then + echo "E: Nesting conditionals is not supported" >&2 + exit 1 + fi + _LB_NESTED=1 + + _LB_NEEDLE="$(echo "${_LB_LINE}" | cut -d' ' -f3-)" + _LB_HAYSTACK="$(eval "echo \$LB_$(echo "${_LB_LINE}" | cut -d' ' -f2)")" + + _LB_ENABLED=0 + for _LB_NEEDLE_PART in ${_LB_NEEDLE} + do + for _LB_HAYSTACK_PART in ${_LB_HAYSTACK} + do + if [ "${_LB_NEEDLE_PART}" = "${_LB_HAYSTACK_PART}" ] + then + _LB_ENABLED=1 + fi + done + done + ;; + + \#nif\ *) + if [ ${_LB_NESTED} -eq 1 ] + then + echo "E: Nesting conditionals is not supported" >&2 + exit 1 + fi + _LB_NESTED=1 + + _LB_NEEDLE="$(echo "${_LB_LINE}" | cut -d' ' -f3-)" + _LB_HAYSTACK="$(eval "echo \$LB_$(echo "${_LB_LINE}" | cut -d' ' -f2)")" + + _LB_ENABLED=0 + for _LB_NEEDLE_PART in ${_LB_NEEDLE} + do + for _LB_HAYSTACK_PART in ${_LB_HAYSTACK} + do + if [ "${_LB_NEEDLE_PART}" != "${_LB_HAYSTACK_PART}" ] + then + _LB_ENABLED=1 + fi + done + done + ;; + + \#endif*) + _LB_NESTED=0 + _LB_ENABLED=1 + ;; + + \#*) + # Skip comments + ;; + + *) + if [ ${_LB_ENABLED} -eq 1 ] + then + echo "${_LB_LINE}" + fi + ;; + + esac + done + done +} + +Discover_package_architectures () +{ + _LB_EXPANDED_PKG_LIST="${1}" + _LB_DISCOVERED_ARCHITECTURES="" + + shift + + if [ -e "${_LB_EXPANDED_PKG_LIST}" ] && [ -s "${_LB_EXPANDED_PKG_LIST}" ] + then + while read _LB_PACKAGE_LINE + do + # Lines from the expanded package list may have multiple, space-separated packages + for _LB_PACKAGE_LINE_PART in ${_LB_PACKAGE_LINE} + do + # Looking for <package>:<architecture> + if [ -n "$(echo ${_LB_PACKAGE_LINE_PART} | awk -F"=" '{print $1}' | awk -F':' '{print $2}')" ] + then + _LB_DISCOVERED_ARCHITECTURES="${_LB_DISCOVERED_ARCHITECTURES} $(echo ${_LB_PACKAGE_LINE_PART} | awk -F':' '{print $2}')" + fi + done + done < "${_LB_EXPANDED_PKG_LIST}" + + # Output unique architectures, alpha-sorted, one per line + echo "${_LB_DISCOVERED_ARCHITECTURES}" | tr -s '[:space:]' '\n' | sort | uniq + fi +} diff --git a/system-build/functions/packages.sh b/system-build/functions/packages.sh new file mode 100755 index 0000000..fce097f --- /dev/null +++ b/system-build/functions/packages.sh @@ -0,0 +1,85 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Check_package () +{ + CHROOT="${1}" + FILE="${2}" + PACKAGE="${3}" + + Check_installed "${CHROOT}" "${FILE}" "${PACKAGE}" + + case "${INSTALL_STATUS}" in + 1) + _LB_PACKAGES="${_LB_PACKAGES} ${PACKAGE}" + ;; + + 2) + Echo_error "You need to install %s on your host system." "${PACKAGE}" + exit 1 + ;; + esac +} + +Install_package () +{ + if [ -n "${_LB_PACKAGES}" ] && [ "${LB_BUILD_WITH_CHROOT}" != "false" ] + then + Chroot chroot "apt-get install -o APT::Install-Recommends=false ${APT_OPTIONS} ${_LB_PACKAGES}" + fi +} + +Remove_package () +{ + if [ -n "${_LB_PACKAGES}" ] && [ "${LB_BUILD_WITH_CHROOT}" != "false" ] + then + Chroot chroot "apt-get remove --purge ${APT_OPTIONS} ${_LB_PACKAGES}" + fi +} + +# Check_installed +# uses as return value global var INSTALL_STATUS +# INSTALL_STATUS : 0 if package is installed +# 1 if package isn't installed and we're in an apt managed system +# 2 if package isn't installed and we aren't in an apt managed system +Check_installed () +{ + CHROOT="${1}" + FILE="${2}" + PACKAGE="${3}" + + if [ "${LB_BUILD_WITH_CHROOT}" = "true" ] && [ "${CHROOT}" = "chroot" ] + then + if Chroot chroot "dpkg-query -s ${PACKAGE}" 2> /dev/null | grep -qs "Status: install" + then + INSTALL_STATUS=0 + else + INSTALL_STATUS=1 + fi + else + if which dpkg-query > /dev/null 2>&1 + then + if Chroot chroot "dpkg-query -s ${PACKAGE}" 2> /dev/null | grep -qs "Status: install" + then + INSTALL_STATUS=0 + else + INSTALL_STATUS=1 + fi + else + if [ ! -e "${FILE}" ] + then + INSTALL_STATUS=2 + else + INSTALL_STATUS=0 + fi + fi + fi +} + diff --git a/system-build/functions/stagefile.sh b/system-build/functions/stagefile.sh new file mode 100755 index 0000000..c1be52c --- /dev/null +++ b/system-build/functions/stagefile.sh @@ -0,0 +1,71 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Check_stagefile () +{ + FILE="${1}" + NAME="$(basename ${1})" + + # Checking stage file + if [ -f "${FILE}" ] + then + if [ "${_FORCE}" != "true" ] + then + # Skipping execution + Echo_warning "skipping %s, already done" "${NAME}" + exit 0 + else + # Forcing execution + Echo_message "forcing %s" "${NAME}" + rm -f "${FILE}" + fi + fi +} + +Create_stagefile () +{ + FILE="${1}" + DIRECTORY="$(dirname ${1})" + + # Creating stage directory + mkdir -p "${DIRECTORY}" + + # Creating stage file + touch "${FILE}" +} + +Require_stagefile () +{ + NAME="$(basename ${0})" + FILES="${@}" + NUMBER="$(echo ${@} | wc -w)" + + for FILE in ${FILES} + do + # Find at least one of the required stages + if [ -f ${FILE} ] + then + CONTINUE="true" + NAME="${NAME} $(basename ${FILE})" + fi + done + + if [ "${CONTINUE}" != "true" ] + then + if [ "${NUMBER}" -eq 1 ] + then + Echo_error "%s: %s missing" "${NAME}" "${FILE}" + else + Echo_error "%s: one of %s is missing" "${NAME}" "${FILES}" + fi + + exit 1 + fi +} diff --git a/system-build/functions/usage.sh b/system-build/functions/usage.sh new file mode 100755 index 0000000..86809ad --- /dev/null +++ b/system-build/functions/usage.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Usage () +{ + printf "%s - %s\n" "${PROGRAM}" "${DESCRIPTION}" + echo + Echo "Usage:" + echo + + if [ -n "${USAGE}" ] + then + Echo " ${USAGE}" + echo + fi + + printf " %s [-h|--help]\n" "${PROGRAM}" + printf " %s [-u|--usage]\n" "${PROGRAM}" + printf " %s [-v|--version]\n" "${PROGRAM}" + echo + Echo "Try \"%s --help\" for more information." "${PROGRAM}" + + exit 1 +} diff --git a/system-build/functions/wrapper.sh b/system-build/functions/wrapper.sh new file mode 100755 index 0000000..c8dccb3 --- /dev/null +++ b/system-build/functions/wrapper.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +Apt () +{ + CHROOT="${1}" + shift + + Chroot ${CHROOT} apt-get ${APT_OPTIONS} ${@} +} diff --git a/system-build/manpages/lb.1 b/system-build/manpages/lb.1 new file mode 100644 index 0000000..4bc54ee --- /dev/null +++ b/system-build/manpages/lb.1 @@ -0,0 +1,34 @@ +.TH LIVE\-BUILD 1 2016\-07\-28 20160601 "Live Systems Project" + +.SH NAME +\fBlb\fR \- wrapper for live\-build programs + +.SH SYNOPSIS +\fBlb\fR COMMAND [COMMAND_OPTIONS] +.PP +\fBlb\fR [\fIlive\-build\ options\fR] + +.SH DESCRIPTION +\fBlb\fR is a high\-level command (porcelain) of \fIlive\-build\fR(7), the live systems tool suite. +.PP +.\" FIXME + +.SH OPTIONS +\fBlb\fR has no specific options but understands all generic live\-build options. See \fIlive\-build\fR(7) for a complete list of all generic live\-build options. + +.SH FILES +.IP "\fBnone\fR" 4 + +.SH SEE ALSO +\fIlive\-build\fR(7) +.PP +This program is a part of live\-build. + +.SH HOMEPAGE +More information about live\-build and the Live Systems project can be found on the homepage at <\fIhttp://live-systems.org/\fR> and in the manual at <\fIhttp://live-systems.org/manual/\fR>. + +.SH BUGS +Bugs can be reported by submitting a bugreport for the live\-build package in the Bug Tracking System at <\fIhttp://bugs.debian.org/\fR> or by writing a mail to the Live Systems mailing list at <\fIdebian-live@lists.debian.org\fR>. + +.SH AUTHOR +live\-build was written by Daniel Baumann <\fImail@daniel-baumann.ch\fR>. diff --git a/system-build/manpages/lb_binary.1 b/system-build/manpages/lb_binary.1 new file mode 100644 index 0000000..0d07ace --- /dev/null +++ b/system-build/manpages/lb_binary.1 @@ -0,0 +1,32 @@ +.TH LIVE\-BUILD 1 2016\-07\-28 20160601 "Live Systems Project" + +.SH NAME +\fBlb binary\fR \- Complete the binary stage + +.SH SYNOPSIS +\fBlb binary\fR [\fIlive\-build options\fR] + +.SH DESCRIPTION +\fBlb binary\fR is a high\-level command (porcelain) of \fIlive\-build\fR(7), the live systems tool suite. +.PP +\fBlb binary\fR calls all necessary live\-build programs in the correct order to complete the binary stage. + +.SH OPTIONS +\fBlb binary\fR has no specific options but understands all generic live\-build options. See \fIlive\-build\fR(7) for a complete list of all generic live\-build options. + +.SH FILES +.IP "\fBnone\fR" 4 + +.SH SEE ALSO +\fIlive\-build\fR(7) +.PP +This program is a part of live\-build. + +.SH HOMEPAGE +More information about live\-build and the Live Systems project can be found on the homepage at <\fIhttp://live-systems.org/\fR> and in the manual at <\fIhttp://live-systems.org/manual/\fR>. + +.SH BUGS +Bugs can be reported by submitting a bugreport for the live\-build package in the Bug Tracking System at <\fIhttp://bugs.debian.org/\fR> or by writing a mail to the Live Systems mailing list at <\fIdebian-live@lists.debian.org\fR>. + +.SH AUTHOR +live\-build was written by Daniel Baumann <\fImail@daniel-baumann.ch\fR>. diff --git a/system-build/manpages/lb_bootstrap.1 b/system-build/manpages/lb_bootstrap.1 new file mode 100644 index 0000000..64bfb75 --- /dev/null +++ b/system-build/manpages/lb_bootstrap.1 @@ -0,0 +1,32 @@ +.TH LIVE\-BUILD 1 2016\-07\-28 20160601 "Live Systems Project" + +.SH NAME +\fBlb bootstrap\fR \- Complete the bootstrap stage + +.SH SYNOPSIS +\fBlb bootstrap\fR [\fIlive\-build options\fR] + +.SH DESCRIPTION +\fBlb bootstrap\fR is a high\-level command (porcelain) of \fIlive\-build\fR(7), the live systems tool suite. +.PP +\fBlb bootstrap\fR calls all necessary live\-build programs in the correct order to complete the bootstrap stage. + +.SH OPTIONS +\fBlb bootstrap\fR has no specific options but understands all generic live\-build options. See \fIlive\-build\fR(7) for a complete list of all generic live\-build options. + +.SH FILES +.IP "\fBnone\fR" 4 + +.SH SEE ALSO +\fIlive\-build\fR(7) +.PP +This program is a part of live\-build. + +.SH HOMEPAGE +More information about live\-build and the Live Systems project can be found on the homepage at <\fIhttp://live-systems.org/\fR> and in the manual at <\fIhttp://live-systems.org/manual/\fR>. + +.SH BUGS +Bugs can be reported by submitting a bugreport for the live\-build package in the Bug Tracking System at <\fIhttp://bugs.debian.org/\fR> or by writing a mail to the Live Systems mailing list at <\fIdebian-live@lists.debian.org\fR>. + +.SH AUTHOR +live\-build was written by Daniel Baumann <\fImail@daniel-baumann.ch\fR>. diff --git a/system-build/manpages/lb_build.1 b/system-build/manpages/lb_build.1 new file mode 100644 index 0000000..4253787 --- /dev/null +++ b/system-build/manpages/lb_build.1 @@ -0,0 +1,34 @@ +.TH LIVE\-BUILD 1 2016\-07\-28 20160601 "Live Systems Project" + +.SH NAME +\fBlb build\fR \- Complete the bootstrap, chroot, binary, and source stages + +.SH SYNOPSIS +\fBlb build\fR [\fIlive\-build options\fR] + +.SH DESCRIPTION +\fBlb build\fR is a high\-level command (porcelain) of \fIlive\-build\fR(7), the live systems tool suite. +.PP +\fBlb build\fR calls all necessary live\-build programs in the correct order to complete the bootstrap, chroot, binary, and source stages. + +.SH OPTIONS +\fBlb build\fR has no specific options but understands all generic live\-build options. See \fIlive\-build\fR(7) for a complete list of all generic live\-build options. + +.SH FILES +.\" FIXME +.IP "\fBauto/build\fR" 4 +.\" FIXME + +.SH SEE ALSO +\fIlive\-build\fR(7) +.PP +This program is a part of live\-build. + +.SH HOMEPAGE +More information about live\-build and the Live Systems project can be found on the homepage at <\fIhttp://live-systems.org/\fR> and in the manual at <\fIhttp://live-systems.org/manual/\fR>. + +.SH BUGS +Bugs can be reported by submitting a bugreport for the live\-build package in the Bug Tracking System at <\fIhttp://bugs.debian.org/\fR> or by writing a mail to the Live Systems mailing list at <\fIdebian-live@lists.debian.org\fR>. + +.SH AUTHOR +live\-build was written by Daniel Baumann <\fImail@daniel-baumann.ch\fR>. diff --git a/system-build/manpages/lb_chroot.1 b/system-build/manpages/lb_chroot.1 new file mode 100644 index 0000000..a921e87 --- /dev/null +++ b/system-build/manpages/lb_chroot.1 @@ -0,0 +1,32 @@ +.TH LIVE\-BUILD 1 2016\-07\-28 20160601 "Live Systems Project" + +.SH NAME +\fBlb chroot\fR \- Complete the chroot stage + +.SH SYNOPSIS +\fBlb chroot\fR [\fIlive\-build options\fR] + +.SH DESCRIPTION +\fBlb chroot\fR is a high\-level command (porcelain) of \fIlive\-build\fR(7), the live systems tool suite. +.PP +\fBlb chroot\fR calls all necessary live\-build programs in the correct order to complete the chroot stage. + +.SH OPTIONS +\fBlb chroot\fR has no specific options but understands all generic live\-build options. See \fIlive\-build\fR(7) for a complete list of all generic live\-build options. + +.SH FILES +.IP "\fBnone\fR" 4 + +.SH SEE ALSO +\fIlive\-build\fR(7) +.PP +This program is a part of live\-build. + +.SH HOMEPAGE +More information about live\-build and the Live Systems project can be found on the homepage at <\fIhttp://live-systems.org/\fR> and in the manual at <\fIhttp://live-systems.org/manual/\fR>. + +.SH BUGS +Bugs can be reported by submitting a bugreport for the live\-build package in the Bug Tracking System at <\fIhttp://bugs.debian.org/\fR> or by writing a mail to the Live Systems mailing list at <\fIdebian-live@lists.debian.org\fR>. + +.SH AUTHOR +live\-build was written by Daniel Baumann <\fImail@daniel-baumann.ch\fR>. diff --git a/system-build/manpages/lb_clean.1 b/system-build/manpages/lb_clean.1 new file mode 100644 index 0000000..adadafa --- /dev/null +++ b/system-build/manpages/lb_clean.1 @@ -0,0 +1,55 @@ +.TH LIVE\-BUILD 1 2016\-07\-28 20160601 "Live Systems Project" + +.SH NAME +\fBlb clean\fR \- Clean build directory + +.SH SYNOPSIS +\fBlb clean\fR [\fIlive\-build options\fR] + +.SH DESCRIPTION +\fBlb clean\fR is a high\-level command (porcelain) of \fIlive\-build\fR(7), the live systems tool suite. +.PP +.\" FIXME +\fBlb clean\fR is responsible for cleaning up after a system is built. It removes the build directories, and removes some other files including stage files, and any detritus left behind by other live\-build commands. +.\" FIXME + +.SH OPTIONS +In addition to its specific options \fBlb clean\fR understands all generic live\-build options. See \fIlive\-build\fR(7) for a complete list of all generic live\-build options. +.PP +.\" FIXME +.IP "\fB\-\-all\fR" 4 +removes chroot, binary, stage, and source. The cache directory is kept. This is the default operation and will be performed if no argument is given. +.IP "\fB\-\-cache\fR" 4 +removes the cache directories. +.IP "\fB\-\-chroot\fR" 4 +unmounts and removes the chroot directory. +.IP "\fB\-\-binary\fR" 4 +removes all binary related caches, files, directories, and stages files. +.IP "\fB\-\-purge\fR" 4 +removes everything, including all caches. The config directory is kept. +.IP "\fB\-\-remove\fR" 4 +removes everything, including package cache but not stage cache. The config directory is kept. +.IP "\fB\-\-stage\fR" 4 +removes all stage files. +.IP "\fB\-\-source\fR" 4 +removes all source related caches, files, directories, and stage files. +.\" FIXME + +.SH FILES +.\" FIXME +.IP "\fBauto/clean\fR" 4 +.\" FIXME + +.SH SEE ALSO +\fIlive\-build\fR(7) +.PP +This program is a part of live\-build. + +.SH HOMEPAGE +More information about live\-build and the Live Systems project can be found on the homepage at <\fIhttp://live-systems.org/\fR> and in the manual at <\fIhttp://live-systems.org/manual/\fR>. + +.SH BUGS +Bugs can be reported by submitting a bugreport for the live\-build package in the Bug Tracking System at <\fIhttp://bugs.debian.org/\fR> or by writing a mail to the Live Systems mailing list at <\fIdebian-live@lists.debian.org\fR>. + +.SH AUTHOR +live\-build was written by Daniel Baumann <\fImail@daniel-baumann.ch\fR>. diff --git a/system-build/manpages/lb_config.1 b/system-build/manpages/lb_config.1 new file mode 100644 index 0000000..956d8ef --- /dev/null +++ b/system-build/manpages/lb_config.1 @@ -0,0 +1,477 @@ +.TH LIVE\-BUILD 1 2016\-07\-28 20160601 "Live Systems Project" + +.SH NAME +\fBlb config\fR \- Create config directory + +.SH SYNOPSIS +\fBlb config\fR [\fIlive\-build options\fR] +.PP +.\" FIXME +\fBlb config\fR +.br + [\fB\-\-apt\-ftp\-proxy\fR \fIURL\fR] +.br + [\fB\-\-apt\-http\-proxy\fR \fIURL\fR] +.br + [\fB\-\-apt\-indices\fR true|false] +.br + [\fB\-\-apt\-options\fR \fIOPTION\fR|"\fIOPTIONS\fR"] +.br + [\fB\-\-apt\-pipeline\fR \fIDEPTH\fR] +.br + [\fB\-\-apt\-recommends\fR true|false] +.br + [\fB\-\-apt\-secure\fR true|false] +.br + [\fB\-\-apt\-source\-archives\fR true|false] +.br + [\-a|\fB\-\-architectures\fR \fIARCHITECTURE\fR] +.br + [\-b|\fB\-\-binary\-images\fR iso|iso\-hybrid|netboot|tar|hdd] +.br + [\fB\-\-binary\-filesystem\fR fat16|fat32|ext2|ext3|ext4] +.br + [\fB\-\-bootappend\-install\fR \fIPARAMETER\fR|\fI"PARAMETERS"\fR] +.br + [\fB\-\-bootappend\-live\fR \fIPARAMETER\fR|\fI"PARAMETERS"\fR] +.br + [\fB\-\-bootloader\fR grub|grub2|syslinux] +.br + [\fB\-\-cache\fR true|false] +.br + [\fB\-\-cache\-indices\fR true|false] +.br + [\fB\-\-cache\-packages\fR true|false] +.br + [\fB\-\-cache\-stages\fR \fISTAGE\fR|\fI"STAGES"\fR] +.br + [\fB\-\-checksums\fR md5|sha1|sha256|none] +.br + [\fB\-\-compression\fR bzip2|gzip|lzip|none] +.br + [\fB\-\-config\fR \fIGIT_URL::GIT_ID\fR] +.br + [\fB\-\-build\-with\-chroot\fR true|false] +.br + [\fB\-\-chroot\-filesystem\fR ext2|ext3|ext4|squashfs|jffs2|none] +.br + [\fB\-\-clean\fR] +.br + [\-c|\fB\-\-conffile\fR \fIFILE\fR] +.br + [\fB\-\-debconf\-frontend\fR dialog|editor|noninteractive|readline] +.br + [\fB\-\-debconf\-priority\fR low|medium|high|critical] +.br + [\fB\-\-debian\-installer\fR true|cdrom|netinst|netboot|businesscard|live|false] +.br + [\fB\-\-debian\-installer\-distribution\fR daily|\fICODENAME\fR] +.br + [\fB\-\-debian\-installer\-preseedfile\fR \fIFILE\fR|\fIURL\fR] +.br + [\fB\-\-debian\-installer\-gui\fR true|false] +.br + [\fB\-\-debug\fR] +.br + [\-d|\fB\-\-distribution\fR \fICODENAME\fR] +.br + [\fB\-\-parent\-distribution\fR \fICODENAME\fR] +.br + [\fB\-\-parent\-debian\-installer\-distribution\fR \fICODENAME\fR] +.br + [\fB\-\-dump\fR] +.br + [\fB\-\-fdisk\fR fdisk|fdisk.dist] +.br + [\fB\-\-firmware\-binary true|false\fR] +.br + [\fB\-\-firmware\-chroot true|false\fR] +.br + [\fB\-\-force\fR] +.br + [\fB\-\-grub\-splash\fR \fIFILE\fR] +.br + [\fB\-\-gzip\-options\fR \fIOPTION\fR|"\fIOPTIONS\fR"] +.br + [\fB\-\-hooks\fR \fIFILE\fR] +.br + [\fB\-\-ignore\-system\-defaults\fR] +.br + [\fB\-\-initramfs\fR auto|none|live\-boot|casper] +.br + [\fB\-\-initramfs\-compression\fR bzip2|gzip|lzma] +.br + [\fB\-\-initsystem\fR sysvinit|runit|systemd|upstart|none] +.br + [\fB\-\-interactive\fR shell] +.br + [\fB\-\-isohybrid\-options\fR \fIOPTION\fR|"\fIOPTIONS\fR"] +.br + [\fB\-\-iso\-application\fR \fINAME\fR] +.br + [\fB\-\-iso\-preparer\fR \fINAME\fR] +.br + [\fB\-\-iso\-publisher\fR \fINAME\fR] +.br + [\fB\-\-iso\-volume\fR \fINAME\fR] +.br + [\fB\-\-jffs2\-eraseblock\fR \fISIZE\fR] +.br + [\fB\-\-keyring\-packages\fR \fIPACKAGE\fI|\fI"PACKAGES"\fR] +.br + [\-k|\fB\-\-linux\-flavours\fR \fIFLAVOUR\fR|\fI"FLAVOURS"\fR] +.br + [\fB\-\-linux\-packages\fR \fI"PACKAGES"\fR] +.br + [\fB\-\-losetup\fR losetup|losetup.orig] +.br + [\fB\-\-memtest\fR memtest86+|memtest86|none] +.br + [\-m|\fB\-\-parent\-mirror\-bootstrap\fR \fIURL\fR] +.br + [\fB\-\-parent\-mirror\-chroot\fR \fIURL\fR] +.br + [\fB\-\-parent\-mirror\-chroot\-security\fR \fIURL\fR] +.br + [\fB\-\-parent\-mirror\-chroot\-updates\fR \fIURL\fR] +.br + [\fB\-\-parent\-mirror\-chroot\-backports\fR \fIURL\fR] +.br + [\fB\-\-parent\-mirror\-binary\fR \fIURL\fR] +.br + [\fB\-\-parent\-mirror\-binary\-security\fR \fIURL\fR] +.br + [\fB\-\-parent\-mirror\-binary\-updates\fR \fIURL\fR] +.br + [\fB\-\-parent\-mirror\-binary\-backports\fR \fIURL\fR] +.br + [\fB\-\-parent\-mirror\-debian\-installer\fR \fIURL\fR] +.br + [\fB\-\-mirror\-bootstrap\fR \fIURL\fR] +.br + [\fB\-\-mirror\-chroot\fR \fIURL\fR] +.br + [\fB\-\-mirror\-chroot\-security\fR \fIURL\fR] +.br + [\fB\-\-mirror\-chroot\-updates\fR \fIURL\fR] +.br + [\fB\-\-mirror\-chroot\-backports\fR \fIURL\fR] +.br + [\fB\-\-mirror\-binary\fR \fIURL\fR] +.br + [\fB\-\-mirror\-binary\-security\fR \fIURL\fR] +.br + [\fB\-\-mirror\-binary\-updates\fR \fIURL\fR] +.br + [\fB\-\-mirror\-binary\-backports\fR \fIURL\fR] +.br + [\fB\-\-mirror\-debian\-installer\fR \fIURL\fR] +.br + [\fB\-\-mode\fR debian|progress-linux|ubuntu] +.br + [\fB\-\-system\fR live|normal] +.br + [\fB\-\-net\-root\-filesystem\fR nfs|cfs] +.br + [\fB\-\-net\-root\-mountoptions\fR \fIOPTIONS\fR] +.br + [\fB\-\-net\-root\-path\fR \fIPATH\fR] +.br + [\fB\-\-net\-root\-server\fR \fIIP\fR|\fIHOSTNAME\fR] +.br + [\fB\-\-net\-cow\-filesystem\fR nfs|cfs] +.br + [\fB\-\-net\-cow\-mountoptions\fR \fIOPTIONS\fR] +.br + [\fB\-\-net\-cow\-path\fR \fIPATH\fR] +.br + [\fB\-\-net\-cow\-server\fR \fIIP\fR|\fIHOSTNAME\fR] +.br + [\fB\-\-net\-tarball\fR true|false] +.br + [\fB\-\-quiet\fR] +.br + [\fB\-\-archive\-areas\fR \fIARCHIVE_AREA\fR|\fI"ARCHIVE_AREAS"\fR] +.br + [\fB\-\-parent\-archive\-areas\fR \fIPARENT_ARCHIVE_AREA\fR|\fI"PARENT_ARCHIVE_AREAS"\fR] +.br + [\fB\-\-security\fR true|false] +.br + [\fB\-\-source\fR true|false] +.br + [\-s|\fB\-\-source\-images\fR iso|netboot|tar|hdd] +.br + [\fB\-\-tasksel\fR apt|tasksel] +.br + [\fB\-\-templates\fR \fIPATH\fR] +.br + [\fB\-\-hdd\-size \fIMB\fR] +.br + [\fB\-\-updates\fR true|false] +.br + [\fB\-\-backports\fR true|false] +.br + [\fB\-\-verbose\fR] +.br + [\fB\-\-win32\-loader true|false] +.\" FIXME + +.SH DESCRIPTION +\fBlb config\fR is a high\-level command (porcelain) of \fIlive\-build\fR(7), the live systems tool suite. +.PP +.\" FIXME +\fBlb config\fR populates the configuration directory for live\-build. By default, this directory is named 'config' and is created in the current directory where \fBlb config\fR was executed. +.PP +Note: Currently \fBlb config\fR tries to be smart and sets defaults for some options depending on the setting of other options (e.g. which linux packages to be used depending on if a wheezy system gets build or not). This means that when generating a new configuration, you should call \fBlb config\fR only once with all options specified. Calling it several times with only a subset of the options each can result in non working configurations. This is also caused by the fact that \fBlb config\fR called with one option only changes that option, and leaves everything else as is unless its not defined. However, \fBlb config\fR does warn about know impossible or likely impossible combinations that would lead to non working live systems. If unsure, remove config/{binary,bootstrap,chroot,common,source} and call \fBlb config\fR again. +.\" FIXME + +.SH OPTIONS +In addition to its specific options \fBlb config\fR understands all generic live\-build options. See \fIlive\-build\fR(7) for a complete list of all generic live\-build options. +.PP +.\" FIXME +.IP "\fB\-\-apt\-ftp\-proxy\fR \fIURL\fR" 4 +sets the ftp proxy to be used by apt. By default, this is empty. Note that this variable is only for the proxy that gets used by apt internally within the chroot, it is not used for anything else. +.IP "\fB\-\-apt\-http\-proxy\fR \fIURL\fR" 4 +sets the http proxy to be used by apt. By default, this is empty. Note that this variable is only for the proxy that gets used by apt internally within the chroot, it is not used for anything else. +.IP "\fB\-\-apt\-indices\fR true|false|none" 4 +defines if the resulting images should have apt indices or not and defaults to true. If set to none, no indices are included at all. +.IP "\fB\-\-apt\-options\fR \fIOPTION\fR|""\fIOPTIONS\fR""" 4 +defines the default options that will be appended to every apt call that is made inside chroot during the building of the image. By default, this is set to \-\-yes to allow non-interactive installation of packages. +.IP "\fB\-\-apt\-pipeline\fR \fIDEPTH\fR" 4 +sets the depth of the apt pipeline. In cases where the remote server is not RFC conforming or buggy (such as Squid 2.0.2) this option can be a value from 0 to 5 indicating how many outstanding requests APT should send. A value of zero MUST be specified if the remote host does not properly linger on TCP connections \- otherwise data corruption will occur. Hosts which require this are in violation of RFC 2068. By default, live\-build does not set this option. +.IP "\fB\-\-apt\-recommends\fR true|false" 4 +defines if apt should install recommended packages automatically. By default, this is true. +.IP "\fB\-\-apt\-secure\fR true|false" 4 +defines if apt should check repository signatures. This is true by default. +.IP "\fB\-\-apt\-source\-archives\fR true|false" 4 +defines if deb-src entries should be included in the resulting live image or not, defaults to true. +.IP "\-a|\fB\-\-architectures\fR \fIARCHITECTURE\fR" 4 +defines the architecture of the to be build image. By default, this is set to the host architecture. Note that you cannot crossbuild for another architecture if your host system is not able to execute binaries for the target architecture natively. For example, building amd64 images on i386 and vice versa is possible if you have a 64bit capable i386 processor and the right kernel. But building powerpc images on an i386 system is not possible. +.IP "\-b|\fB\-\-binary\-images\fR iso|iso\-hybrid|netboot|tar|hdd" 4 +defines the image type to build. By default, for images using syslinux this is set to iso\-hybrid to build CD/DVD images that may also be used like hdd images, for non\-syslinux images, it defaults to iso. +.IP "\fB\-\-binary\-filesystem\fR fat16|fat32|ext2|ext3|ext4" 4 +defines the filesystem to be used in the image type. This only has an effect if the selected binary image type does allow to choose a filesystem. For example, when selection iso the resulting CD/DVD has always the filesystem ISO9660. When building hdd images for usb sticks, this is active. Note that it defaults to fat16 on all architectures except sparc where it defaults to ext4. Also note that if you choose fat16 and your resulting binary image gets bigger than 2GB, the binary filesystem automatically gets switched to fat32. +.IP "\fB\-\-bootappend\-install\fR \fIPARAMETER\fR|""\fIPARAMETERS\fR""" 4 +sets boot parameters specific to debian\-installer, if included. +.IP "\fB\-\-bootappend\-live\fR \fIPARAMETER\fR|""\fIPARAMETERS\fR""" 4 +sets boot parameters specific to debian\-live. A complete list of boot parameters can be found in the \fIlive\-boot\fR(7) and \fIlive\-config\fR(7) manual pages. +.IP "\fB\-\-bootloader\fR grub|grub2|syslinux" 4 +defines which bootloader is being used in the generated image. This has only an effect if the selected binary image type does allow to choose the bootloader. For example, if you build a iso, always syslinux (or more precise, isolinux) is being used. Also note that some combinations of binary images types and bootloaders may be possible but live\-build does not support them yet. \fBlb config\fR will fail to create such a not yet supported configuration and give a explanation about it. For hdd images on amd64 and i386, the default is syslinux. +.IP "\fB\-\-cache\fR true|false" 4 +defines globally if any cache should be used at all. Different caches can be controlled through the their own options. +.IP "\fB\-\-cache\-indices\fR true|false" 4 +defines if downloaded package indices and lists should be cached which is false by default. Enabling it would allow to rebuild an image completely offline, however, you would not get updates anymore then. +.IP "\fB\-\-cache\-packages\fR true|false" 4 +defines if downloaded packages files should be cached which is true by default. Disabling it does save space consumption in your build directory, but remember that you will cause much unnecessary traffic if you do a couple of rebuilds. In general you should always leave it true, however, in some particular rare build setups, it can be faster to refetch packages from the local network mirror rather than to utilize the local disk. +.IP "\fB\-\-cache\-stages\fR true|false|\fISTAGE\fR|""\fISTAGES\fR""" 4 +sets which stages should be cached. By default set to bootstrap. As an exception to the normal stage names, also rootfs can be used here which does only cache the generated root filesystem in filesystem.{dir,ext*,squashfs}. This is useful during development if you want to rebuild the binary stage but not regenerate the root filesystem all the time. +.IP "\fB\-\-checksums\fR md5|sha1|sha256|none" 4 +defines if the binary image should contain a file called md5sums.txt, sha1sums.txt and/or sha256sums.txt. These lists all files on the image together with their checksums. This in turn can be used by live\-boot's built\-in integrity\-check to verify the medium if specified at boot prompt. In general, this should not be false and is an important feature of live system released to the public. However, during development of very big images it can save some time by not calculating the checksums. +.IP "\fB\-\-compression\fR bzip2|gzip|lzip|none" 4 +defines the compression program to be used to compress tarballs. Defaults to gzip. +.IP "\fB\-\-config\fR \fIGIT_URL\fR::\fIGIT_ID\fR" 4 +allows to bootstrap a config tree from a git repositories, optionally appended by a Git Id (branch, commit, tag, etc.). +.IP "\fB\-\-build\-with\-chroot\fR true|false" 4 +defines whether live\-build should use the tools from within the chroot to build the binary image or not by using and including the host system's tools. This is a very dangerous option, using the tools of the host system can lead to tainted and even non-bootable images if the host systems version of the required tools (mainly these are the bootloaders such as syslinux and grub, and the auxiliary tools such as dosfstools, xorriso, squashfs-tools and others) do not \fBexactly\fR match what is present at build-time in the target distribution. Never do disable this option unless you are \fBexactly\fR sure what you are doing and have \fBcompletely\fI understood its consequences. +.IP "\fB\-\-chroot\-filesystem\fR ext2|ext3|ext4|squashfs|jffs2|none" 4 +defines which filesystem type should be used for the root filesystem image. If you use none, then no filesystem image is created and the root filesystem content is copied on the binary image filesystem as flat files. Depending on what binary filesystem you have chosen, it may not be possible to build with such a plain root filesystem, e.g. fat16/fat32 will not work as linux does not support to run directly on them. +.IP "\fB\-\-clean\fR" 4 +minimizes config directory by automatically removing unused and thus empty subdirectories. +.IP "\-c|\fB\-\-conffile\fR \fIFILE\fR" 4 +using a user specified alternative configuration file in addition to the normally used one in the config directory. +.IP "\fB\-\-debconf\-frontend\fR dialog|editor|noninteractive|readline" 4 +defines what value the debconf frontend should be set to inside the chroot. Note that setting it to anything but noninteractive, which is the default, makes your build asking questions during the build. +.IP "\fB\-\-debconf\-priority\fR low|medium|high|critical" 4 +defines what value the debconf priority should be set to inside the chroot. By default, it is set to critical, which means that almost no questions are displayed. Note that this only has an effect if you use any debconf frontend different from noninteractive. +.IP "\fB\-\-debian\-installer\fR true|cdrom|netinst|netboot|businesscard|live|false" 4 +defines which type, if any, of the debian\-installer should be included in the resulting binary image. By default, no installer is included. All available flavours except live are the identical configurations used on the installer media produced by regular debian\-cd. When live is chosen, the live\-installer udeb is included so that debian\-installer will behave different than usual \- instead of installing the debian system from packages from the medium or the network, it installs the live system to the disk. +.IP "\fB\-\-debian\-installer\-distribution\fR daily|\fICODENAME\fR" 4 +defines the distribution where the debian\-installer files should be taken out from. Normally, this should be set to the same distribution as the live system. However, some times, one wants to use a newer or even daily built installer. +.IP "\fB\-\-debian\-installer\-preseedfile\fR \fIFILE\fR|\fIURL\fR" 4 +sets the filename or URL for an optionally used and included preseeding file for debian\-installer. If config/binary_debian\-installer/preseed.cfg exists, it will be used by default. +.IP "\fB\-\-debian\-installer\-gui\fR true|false" 4 +defines if the debian\-installer graphical GTK interface should be true or not. In Debian mode and for most versions of Ubuntu, this option is true, whereas otherwise false, by default. +.IP "\fB\-\-debug\fR" 4 +turn on debugging informational messages. +.IP "\-d|\fB\-\-distribution\fR \fICODENAME\fR" 4 +defines the distribution of the resulting live system. +.IP "\-d|\fB\-\-parent\-distribution\fR \fICODENAME\fR" 4 +defines the parent distribution for derivatives of the resulting live system. +.IP "\-d|\fB\-\-parent\-debian\-installer\-distribution\fR \fICODENAME\fR" 4 +defines the parent debian\-installer distribution for derivatives of the resulting live system. +.IP "\fB\-\-dump\fR" 4 +prepares a report of the currently present live system configuration and the version of live\-build used. This is useful to provide if you submit bug reports, we do get all informations required for us to locate and replicate an error. +.IP "\fB\-\-fdisk\fR fdisk|fdisk.dist" 4 +sets the filename of the fdisk binary from the host system that should be used. This is autodetected and does generally not need any customization. +.IP "\fB\-\-force\fR" 4 +forces re\-execution of already run stages. Use only if you know what you are doing. It is generally safer to use \fBlb clean\fR to clean up before re\-executing \fBlb build\fR. +.IP "\fB\-\-grub\-splash\fR \fIFILE\fR" 4 +defines the name of an optional to be included splash screen graphic for the grub bootloader. +.IP "\fB\-\-gzip\-options\fR \fIOPTION\fR|""\fIOPTIONS\fR""" 4 +defines the default options that will be appended to (almost) every gzip call during the building of the image. By default, this is set to \-\-best to use highest (but slowest) compression. Dynamically, if the host system supports it, also \-\-rsyncable is added. +.IP "\fB\-\-hooks\fR \fIFILE\fR" 4 +defines which hooks available in /usr/share/live/build/examples/hooks should be activated. Normally, there are no hooks executed. Make sure you know and understood the hook before you enable it. +.IP "\fB\-\-ignore\-system\-defaults\fR" 4 +\fBlb config\fR by default reads system defaults from \fI/etc/live/build.conf\fR and \fI/etc/live/build/*\fR when generating a new live system config directory. This is useful if you want to set global settings, such as mirror locations, and don't want to specify them all of the time. +.IP "\fB\-\-initramfs\fR auto|none|live\-boot|casper" 4 +sets the name of package that contains the live system specific initramfs modification. By default, auto is used, which means that at build time of the image rather than on configuration time, the value will be expanded to casper when building ubuntu systems, to live\-boot for all other systems. Using 'none' is useful if the resulting system image should not be a live image (experimental). +.IP "\fB\-\-initramfs\-compression\fR bzip2|gzip|lzma] +defines the compression program to be used to compress the initramfs. Defaults to gzip. +.IP "\fB\-\-interactive\fR shell" 4 +defines if after the chroot stage and before the beginning of the binary stage, a interactive shell login should be spawned in the chroot in order to allow you to do manual customizations. Once you close the shell with logout or exit, the build will continue as usual. Note that it's strongly discouraged to use this for anything else than testing. Modifications that should be present in all builds of a live system should be properly made through hooks. Everything else destroys the beauty of being able to completely automatise the build process and making it non interactive. By default, this is of course false. +.IP "\fB\-\-isohybrid\-options\fR \fIOPTION\fR|""\fIOPTIONS\fR""" 4 +defines options to pass to isohybrid. +.IP "\fB\-\-iso\-application\fR \fINAME\fR" 4 +sets the APPLICATION field in the header of a resulting CD/DVD image and defaults to "Debian Live" in debian mode, and "Ubuntu Live" in ubuntu mode. +.IP "\fB\-\-iso\-preparer\fR \fINAME\fR" 4 +sets the PREPARER field in the header of a resulting CD/DVD image. By default this is set to "live\-build \fIVERSION\fR; http://packages.qa.debian.org/live\-build", where VERSION is expanded to the version of live\-build that was used to build the image. +.IP "\fB\-\-iso\-publisher\fR \fINAME\fR" 4 +sets the PUBLISHED field in the header of a resulting CD/DVD image. By default, this is set to 'Live Systems project; http:/live-systems.org/; debian\-live@lists.debian.org'. Remember to change this to the appropriate values at latest when you distributing custom and unofficial images. +.IP "\fB\-\-iso\-volume\fR \fINAME\fR" 4 +sets the VOLUME field in the header of a resulting CD/DVD and defaults to '(\fIMODE\fR) (\fIDISTRIBUTION\fR) (\fIDATE\fR)' whereas MODE is expanded to the name of the mode in use, DISTRIBUTION the distribution name, and DATE with the current date and time of the generation. +.IP "\fB\-\-jffs2\-eraseblock\fR \fISIZE\fR" 4 +sets the eraseblock size for a JFFS2 (Second Journaling Flash File System) filesystem. The default is 64 KiB. If you use an erase block size different than the erase block size of the target MTD device, JFFS2 may not perform optimally. If the SIZE specified is below 4096, the units are assumed to be KiB. +.IP "\fB\-\-keyring\-packages\fR \fIPACKAGE\fI|""\fIPACKAGES\fR""" 4 +sets the keyring package or additional keyring packages. By default this is set to debian\-archive\-keyring. +.IP "\-k|\fB\-\-linux\-flavours\fR \fIFLAVOUR\fR|""\fIFLAVOURS\fR""" 4 +sets the kernel flavours to be installed. Note that in case you specify more than that the first will be configured the default kernel that gets booted. +.IP "\fB\-\-linux\-packages\fR ""\fIPACKAGES\fR""" 4 +sets the internal name of the kernel packages naming scheme. If you use debian kernel packages, you will not have to adjust it. If you decide to use custom kernel packages that do not follow the debian naming scheme, remember to set this option to the stub of the packages only (for debian this is linux\-image\-2.6), so that \fISTUB\fR-\fIFLAVOUR\fR results in a valid package name (for debian e.g. linux\-image\-686\-pae). Preferably you use the meta package name, if any, for the stub, so that your configuration is ABI independent. Also don't forget that you have to include stubs of the binary modules packages for unionfs or aufs, and squashfs if you built them out-of-tree. +.IP "\fB\-\-losetup\fR losetup|losetup.orig" 4 +sets the filename of the losetup binary from the host system that should be used. This is autodetected and does generally not need any customization. +.IP "\fB\-\-memtest\fR memtest86+|memtest86|none" 4 +defines if memtest, memtest86+ or no memory tester at all should be included as secondary bootloader configuration. This is only available on amd64 and i386 and defaults to memtest86+. +.IP "\-m|\fB\-\-parent\-mirror\-bootstrap\fR \fIURL\fR" 4 +sets the location of the debian package mirror that should be used to bootstrap from. This defaults to http://ftp.de.debian.org/debian/ which may not be a good default if you live outside of Europe. +.IP "\fB\-\-parent\-mirror\-chroot\fR \fIURL\fR" 4 +sets the location of the debian package mirror that will be used to fetch the packages in order to build the live system. By default, this is set to the value of \-\-parent\-mirror\-bootstrap. +.IP "\fB\-\-parent\-mirror\-chroot\-security\fR \fIURL\fR" 4 +sets the location of the debian security package mirror that will be used to fetch the packages in order to build the live system. By default, this points to http://security.debian.org/debian/. +.IP "\fB\-\-parent\-mirror\-chroot\-updates\fR \fIURL\fR" 4 +sets the location of the debian updates package mirror that will be used to fetch packages in order to build the live system. By default, this is set to the value of \-\-parent\-mirror\-chroot. +.IP "\fB\-\-parent\-mirror\-chroot\-backports\fR \fIURL\fR" 4 +sets the location of the debian backports package mirror that will be used to fetch packages in order to build the live system. By default, this points to http://backports.debian.org/debian-backports/. +.IP "\fB\-\-parent\-mirror\-binary\fR \fIURL\fR" 4 +sets the location of the debian package mirror that should end up configured in the final image and which is the one a user would see and use. This has not necessarily to be the same that is used to build the image, e.g. if you use a local mirror but want to have an official mirror in the image. By default, 'http://httpredir.debian.org/debian/' is used. +.IP "\fB\-\-parent\-mirror\-binary\-security\fR \fIURL\fR" 4 +sets the location of the debian security package mirror that should end up configured in the final image. By default, 'http://security.debian.org/' is used. +.IP "\fB\-\-parent\-mirror\-binary\-updates\fR \fIURL\fR" 4 +sets the location of the debian updates package mirror that should end up configured in the final image. By default, the value of \-\-parent\-mirror\-binary is used. +.IP "\fB\-\-parent\-mirror\-binary\-backports\fR \fIURL\fR" 4 +sets the location of the debian backports package mirror that should end up configured in the final image. By default, 'http://backports.debian.org/debian-backports/' is used. +.IP "\fB\-\-parent\-mirror\-debian\-installer\fR \fIURL\fR" 4 +sets the location of the mirror that will be used to fetch the debian installer images. By default, this points to the same mirror used to build the live system, i.e. the value of \-\-parent\-mirror\-bootstrap. +.IP "\fB\-\-mirror\-bootstrap\fR \fIURL\fR" 4 +sets the location of the debian package mirror that should be used to bootstrap the derivative from. This defaults to http://ftp.de.debian.org/debian/ which may not be a good default if you live outside of Europe. +.IP "\fB\-\-mirror\-chroot\fR \fIURL\fR" 4 +sets the location of the debian package mirror that will be used to fetch the packages of the derivative in order to build the live system. By default, this is set to the value of \-\-mirror\-bootstrap. +.IP "\fB\-\-mirror\-chroot\-security\fR \fIURL\fR" 4 +sets the location of the debian security package mirror that will be used to fetch the packages of the derivative in order to build the live system. By default, this points to http://security.debian.org/debian/. +.IP "\fB\-\-mirror\-chroot\-updates\fR \fIURL\fR" 4 +sets the location of the debian updates package mirror that will be used to fetch packages of the derivative in order to build the live system. By default, this is set to the value of \-\-mirror\-chroot. +.IP "\fB\-\-mirror\-chroot\-backports\fR \fIURL\fR" 4 +sets the location of the debian backports package mirror that will be used to fetch packages of the derivative in order to build the live system. By default, this points to http://backports.debian.org/debian-backports/. +.IP "\fB\-\-mirror\-binary\fR \fIURL\fR" 4 +sets the location of the derivative package mirror that should end up configured in the final image and which is the one a user would see and use. This has not necessarily to be the same that is used to build the image, e.g. if you use a local mirror but want to have an official mirror in the image. +.IP "\fB\-\-mirror\-binary\-security\fR \fIURL\fR" 4 +sets the location of the derivatives security package mirror that should end up configured in the final image. +.IP "\fB\-\-mirror\-binary\-updates\fR \fIURL\fR" 4 +sets the location of the derivatives updates package mirror that should end up configured in the final image. +.IP "\fB\-\-mirror\-binary\-backports\fR \fIURL\fR" 4 +sets the location of the derivatives backports package mirror that should end up configured in the final image. +.IP "\fB\-\-mirror\-debian\-installer\fR \fIURL\fR" 4 +sets the location of the mirror that will be used to fetch the debian installer images of the derivative. By default, this points to the same mirror used to build the live system, i.e. the value of \-\-mirror\-bootstrap. +.IP "\fB\-\-mode\fR debian|progress|ubuntu" 4 +defines a global mode to load project specific defaults. By default this is set to debian. +.IP "\fB\-\-system\fR live|normal" 4 +defines if the resulting system image should a live system or a normal, non-live system. +.IP "\fB\-\-net\-root\-filesystem\fR nfs|cfs" 4 +defines the filesystem that will be configured in the bootloader configuration for your netboot image. This defaults to nfs. +.IP "\fB\-\-net\-root\-mountoptions\fR \fIOPTIONS\fR" 4 +sets additional options for mounting the root filesystem in netboot images and is by default empty. +.IP "\fB\-\-net\-root\-path\fR \fIPATH\fR" 4 +sets the file path that will be configured in the bootloader configuration for your netboot image. This defaults to /srv/debian\-live in debian mode, and /srv/ubuntu-live when in ubuntu mode. +.IP "\fB\-\-net\-root\-server\fR \fIIP\fR|\fIHOSTNAME\fR" 4 +sets the IP or hostname that will be configured in the bootloader configuration for the root filesystem of your netboot image. This defaults to 192.168.1.1. +.IP "\fB\-\-net\-cow\-filesystem\fR nfs|cfs" 4 +defines the filesystem type for the copy\-on\-write layer and defaults to nfs. +.IP "\fB\-\-net\-cow\-mountoptions\fR \fIOPTIONS\fR" 4 +sets additional options for mounting the copy\-on\-write layer in netboot images and is by default empty. +.IP "\fB\-\-net\-cow\-path\fR \fIPATH\fR" 4 +defines the path to client writable filesystem. Anywhere that \fIclient_mac_address\fR is specified in the path live\-boot will substitute the MAC address of the client delimited with hyphens. +.PP +.IP "" 4 +Example: +.br +/export/hosts/client_mac_address +.br +/export/hosts/00\-16\-D3\-33\-92\-E8 +.IP "\fB\-\-net\-cow\-server\fR \fIIP\fR|\fIHOSTNAME\fR" 4 +sets the IP or hostname that will be configured in the bootloader configuration for the copy\-on\-write filesystem of your netboot image and is by default empty. +.IP "\fB\-\-net\-tarball\fR true|false" 4 +defines if a compressed tarball should be created. Disabling this options leads to no tarball at all, the plain binary directory is considered the output in this case. Default is true. +.IP "\fB\-\-quiet\fR" 4 +reduces the verbosity of messages output by \fBlb build\fR. +.IP "\fB\-\-archive\-areas\fR \fIARCHIVE_AREA\fR|""\fIARCHIVE_AREAS\fR""" 4 +defines which package archive areas of a debian packages archive should be used for configured debian package mirrors. By default, this is set to main. Remember to check the licenses of each packages with respect to their redistributability in your juristiction when enabling contrib or non\-free with this mechanism. +.IP "\fB\-\-parent\-archive\-areas\fR \fIPARENT_ARCHIVE_AREA\fR|""\fIPARENT_ARCHIVE_AREAS\fR""" 4 +defines the archive areas for derivatives of the resulting live system. +.IP "\fB\-\-security\fR true|false" 4 +defines if the security repositories specified in the security mirror options should be used or not. +.IP "\fB\-\-source\fR true|false" 4 +defines if a corresponding source image to the binary image should be build. By default this is false because most people do not require this and would require to download quite a few source packages. However, once you start distributing your live image, you should make sure you build it with a source image alongside. +.IP "\-s|\fB\-\-source\-images\fR iso|netboot|tar|hdd" 4 +defines the image type for the source image. Default is tar. +.IP "\fB\-\-firmware\-binary\fR true|false" 4 +defines if firmware packages should be automatically included into the binary pool for debian\-installer. Note that only firmware packages available within the configured archive areas are included, e.g. an image with packages from main only will not automatically include firmware from non\-free. This option does not interfere with explicitly listed packages in binary package lists. +.IP "\fB\-\-firmware\-chroot\fR true|false" 4 +defines if firmware packages should be automatically included into the live image. Note that only firmware packages available within the configured archive areas are included, e.g. an image with packages from main only will not automatically include firmware from non\-free. This option does not interfere with explicitly listed packages in chroot package lists. +.IP "\fB\-\-swap\-file\-path\fR \fIPATH\fR" 4 +defines the path to a swap file to create in the binary image. Default is not to create a swap file. +.IP "\fB\-\-swap\-file\-size\fR \fIMB\fR" 4 +defines what size in megabytes the swap file should be, if one is to be created. Default is 512MB. +.IP "\fB\-\-tasksel\fR apt|tasksel" 4 +selects which program is used to install tasks. By default, this is set to tasksel. +.IP "\fB\-\-templates\fR \fIPATH\fR" 4 +sets the path to the templates that live\-build is going to use, e.g. for bootloaders. By default, this is set to /usr/share/live/build/templates/. +.IP "\fB\-\-hdd\-size\fR MB" 4 +defines what size the hdd image should be. Note that although the default is set to 10000 (= 10GB), it will not need 10GB space on your harddisk as the files are created as sparse files. +.IP "\fB\-\-updates\fR true|false" 4 +defines if debian updates package archives should be included in the image or not. +.IP "\fB\-\-backports\fR true|false" 4 +defines if debian backports package archives should be included in the image or not. +.IP "\fB\-\-verbose\fR" 4 +increases the verbosity of messages output by \fBlb build\fR. +.IP "\fB\-\-win32\-loader true|false" 4 +defines if win32\-loader should be included in the binary image or not. +.\" FIXME + +.SH ENVIRONMENT +.\" FIXME +Currently, command line switches can also be specified through the corresponding environment variable. However, this generally should not be relied upon, as it is an implementation detail that is subject to change in future releases. For options applying directly to live\-build, environment variables are named LB_FOO, meaning, e.g. \fB\-\-apt\-ftp\-proxy\fR becomes LB_APT_FTP_PROXY (the exception being internal options such as \fB\-\-debug\fR). For options passed to another program, as in APT_OPTIONS or GZIP_OPTIONS, no LB_ prefix is used. +\" FIXME + +.SH FILES +.\" FIXME +.IP "\fBauto/config\fR" 4 +.IP "\fB/etc/live/build.conf, /etc/live/build/*\fR" 4 +An optional, global configuration file for \fBlb config\fR variables. It is useful to specify a few system wide defaults, like LB_PARENT_MIRROR_BOOTSTRAP. This feature can be false by specifying the \fB\-\-ignore\-system\-defaults\fR option. +.\" FIXME + +.SH SEE ALSO +\fIlive\-build\fR(7) +.PP +\fIlive\-boot\fR(7) +.PP +\fIlive\-config\fR(7) +.PP +This program is a part of live\-build. + +.SH HOMEPAGE +More information about live\-build and the Live Systems project can be found on the homepage at <\fIhttp://live-systems.org/\fR> and in the manual at <\fIhttp://live-systems.org/manual/\fR>. + +.SH BUGS +Bugs can be reported by submitting a bugreport for the live\-build package in the Bug Tracking System at <\fIhttp://bugs.debian.org/\fR> or by writing a mail to the Live Systems mailing list at <\fIdebian-live@lists.debian.org\fR>. + +.SH AUTHOR +live\-build was written by Daniel Baumann <\fImail@daniel-baumann.ch\fR>. diff --git a/system-build/manpages/lb_source.1 b/system-build/manpages/lb_source.1 new file mode 100644 index 0000000..f9d05f9 --- /dev/null +++ b/system-build/manpages/lb_source.1 @@ -0,0 +1,32 @@ +.TH LIVE\-BUILD 1 2016\-07\-28 20160601 "Live Systems Project" + +.SH NAME +\fBlb source\fR \- Complete the source stage + +.SH SYNOPSIS +\fBlb source\fR [\fIlive\-build options\fR] + +.SH DESCRIPTION +\fBlb source\fR is a high\-level command (porcelain) of \fIlive\-build\fR(7), the live systems tool suite. +.PP +\fBlb source\fR calls all necessary live\-build programs in the correct order to complete the source stage. + +.SH OPTIONS +\fBlb source\fR has no specific options but understands all generic live\-build options. See \fIlive\-build\fR(7) for a complete list of all generic live\-build options. + +.SH FILES +.IP "\fBnone\fR" 4 + +.SH SEE ALSO +\fIlive\-build\fR(7) +.PP +This program is a part of live\-build. + +.SH HOMEPAGE +More information about live\-build and the Live Systems project can be found on the homepage at <\fIhttp://live-systems.org/\fR> and in the manual at <\fIhttp://live-systems.org/manual/\fR>. + +.SH BUGS +Bugs can be reported by submitting a bugreport for the live\-build package in the Bug Tracking System at <\fIhttp://bugs.debian.org/\fR> or by writing a mail to the Live Systems mailing list at <\fIdebian-live@lists.debian.org\fR>. + +.SH AUTHOR +live\-build was written by Daniel Baumann <\fImail@daniel-baumann.ch\fR>. diff --git a/system-build/manpages/live-build.7 b/system-build/manpages/live-build.7 new file mode 100644 index 0000000..1734143 --- /dev/null +++ b/system-build/manpages/live-build.7 @@ -0,0 +1,231 @@ +.TH LIVE\-BUILD 7 2016\-07\-28 20160601 "Live Systems Project" + +.SH NAME +\fBlive\-build\fR \- the live systems tool suite + +.SH SYNOPSIS +.\" FIXME +\fBlb \fR\fICOMMAND\fR [\fB\-h|\-\-help\fR] [\fB\-u|\-\-usage\fR] [\fB\-v|\-\-version\fR] [\fB\-\-breakpoints\fR] [\fB\-\-conffile\fR] [\fB\-\-debug\fR] [\fB\-\-force\fR] [\fB\-\-quiet\fR] [\fB\-\-verbose\fR] +.\" FIXME + +.SH DESCRIPTION +.\" FIXME +live\-build is a set of scripts to build live system images. The idea behind live\-build is a tool suite that uses a configuration directory to completely automate and customize all aspects of building a Live image. +.PP +The \fICOMMAND\fR is a name of a live\-build command (see below). +.PP +More documentation about how to use live\-build is available in the individual manpages for each helper and in the manual at <\fIhttp://live-systems.org/manual/\fR>. +.\" FIXME + +.SH OPTIONS +.\" FIXME +.SS Shared live\-build options +The following command line options are supported by all live\-build programs. +.IP "\fB-h, \-\-help\fR" 4 +display help and exit. +.IP "\fB-u, \-\-usage\fR" 4 +show usage and exit. +.IP "\fB-v, \-\-version\fR" 4 +output version information and exit. +.SS Common live\-build options +The following command line options are supported by most live\-build programs. See the man page of each program for a complete explanation of what each option does. +.IP "\fB\-\-breakpoints\fR" 4 +run with breakpoints. +.IP "\fB\-\-conffile\fR" 4 +use custom configuration file. +.IP "\fB\-\-debug\fR" 4 +show debug information. +.IP "\fB\-\-force\fR" 4 +force helper execution, even if stage file exists. +.IP "\fB\-\-quiet\fR" 4 +be quiet. +.IP "\fB\-\-verbose\fR" 4 +be verbose. +.\" FIXME + +.SH LIVE\-BUILD COMMANDS +.\" FIXME +We divide live\-build into high level ("porcelain") commands and low level ("plumbing") commands. +.PP +Here is the complete list of all available live\-build commands. See their man +pages for additional documentation. +.\" FIXME + +.SH HIGH\-LEVEL COMMANDS (PORCELAIN) +.\" FIXME +We separate the porcelain commands into the main commands and some ancillary user utilities. +.SS Main porcelain commands +.IP "\fBlb_config\fR(1)" 4 +create configuration for live\-build +.IP "\fBlb_bootstrap\fR(1)" 4 +create the first stage by bootstrapping a basic debian system +.IP "\fBlb_chroot\fR(1)" 4 +create the second stage by customizing the chroot +.IP "\fBlb_binary\fR(1)" 4 +create the third stage by generating a binary image +.IP "\fBlb_source\fR(1)" 4 +create the optional fourth stage by generating a source image +.IP "\fBlb_clean\fR(1)" 4 +clean up system build directories +.SS Ancillary Commands +.IP "\fBlb\fR(1)" 4 +generic live\-build wrapper +.IP "\fBlb_build\fR(1)" 4 +alias for all stages +.IP "\fBlb_local\fR(1)" 4 +helper for using a local live\-build +.IP "\fBlb_testroot\fR(1)" 4 +ensure that a system is built as root +.\" FIXME + +.SH LOW\-LEVEL COMMANDS (PLUMBING) +.\" FIXME +The actual work of live\-build is implemented in the low-level commands, called plumbing. They are not supposed to be used by end users, they should stick with porcelains as they ensure that all the different plumbing commands are executed in the right order. However, if you intend to reuse live\-build commands in your own scripts, then the plumbings might be of interest for you. +.PP +Note that the interface (set of options and the semantics) to these low\-level commands are meant to be a lot more stable than Porcelain level commands. The interface to Porcelain commands on the other hand are subject to change in order to improve the end user experience. +.SS Bootstrap commands +.IP "\fBlb_bootstrap_cache\fR(1)" 4 +cache bootstrap stage +.IP "\fBlb_bootstrap_debootstrap\fR(1)" 4 +bootstrap a Debian system with debootstrap(8) +.SS Chroot commands +.IP "\fBlb_chroot_apt\fR(1)" 4 +manage /etc/apt/apt.conf +.IP "\fBlb_chroot_cache\fR(1)" 4 +cache chroot stage +.IP "\fBlb_chroot_debianchroot\fR(1)" 4 +manage /etc/debian_chroot +.IP "\fBlb_chroot_devpts\fR(1)" 4 +mount /dev/pts +.IP "\fBlb_chroot_dpkg\fR(1)" 4 +manage /sbin/dpkg +.IP "\fBlb_chroot_hacks\fR(1)" 4 +execute hacks in chroot +.IP "\fBlb_chroot_hostname\fR(1)" 4 +manage /bin/hostname +.IP "\fBlb_chroot_hosts\fR(1)" 4 +manage /etc/hosts +.IP "\fBlb_chroot_install\-packages\fR(1)" 4 +install queued packages into chroot +.IP "\fBlb_chroot_interactive\fR(1)" 4 +make build interactive +.IP "\fBlb_chroot_linux\-image\fR(1)" 4 +manage /etc/kernel\-img.conf +.IP "\fBlb_chroot_hooks\fR(1)" 4 +execute local hooks in chroot +.IP "\fBlb_chroot_local\-includes\fR(1)" 4 +copy local files into chroot +.IP "\fBlb_chroot_packages\fR(1)" 4 +queue install of packages into chroot +.IP "\fBlb_chroot_local\-patches\fR(1)" 4 +apply local patches against chroot +.IP "\fBlb_chroot_local\-preseed\fR(1)" 4 +use debconf local preseeding file +.IP "\fBlb_chroot_packagelists\fR(1)" 4 +queue install of package lists into chroot +.IP "\fBlb_chroot_proc\fR(1)" 4 +mount /proc +.IP "\fBlb_chroot_resolv\fR(1)" 4 +manage /etc/resolv.conf +.IP "\fBlb_chroot_selinuxfs\fR(1)" 4 +mount /selinux +.IP "\fBlb_chroot_archives\fR(1)" 4 +manage /etc/apt/sources.list +.IP "\fBlb_chroot_sysfs\fR(1)" 4 +mount /sys +.IP "\fBlb_chroot_sysv\-rc\fR(1)" 4 +manage /usr/sbin/policy\-rc.d +.IP "\fBlb_chroot_task\-lists\fR(1)" 4 +install task lists into chroot +.SS Binary commands +.IP "\fBlb_binary_chroot\fR(1)" 4 +copy chroot into chroot +.IP "\fBlb_binary_debian\-installer\fR(1)" 4 +install debian\-installer into binary +.IP "\fBlb_binary_disk\fR(1)" 4 +install disk information into binary +.IP "\fBlb_binary_grub\fR(1)" 4 +installs grub into binary +.IP "\fBlb_binary_grub2\fR(1)" 4 +installs grub2 into binary +.IP "\fBlb_binary_includes\fR(1)" 4 +copy files into binary +.IP "\fBlb_binary_iso\fR(1)" 4 +build iso binary image +.IP "\fBlb_binary_linux\-image\fR(1)" 4 +install linux\-image into binary +.IP "\fBlb_binary_local\-hooks\fR(1)" 4 +execute local hooks in binary +.IP "\fBlb_binary_local\-includes\fR(1)" 4 +copy files into binary +.IP "\fBlb_binary_local\-packagelists\fR(1)" 4 +install local package lists into binary +.IP "\fBlb_binary_manifest\fR(1)" 4 +create manifest +.IP "\fBlb_binary_checksums\fR(1)" 4 +create binary checksums (md5, sha1, and/or sha256) +.IP "\fBlb_binary_memtest\fR(1)" 4 +installs a memtest into binary +.IP "\fBlb_binary_net\fR(1)" 4 +build netboot binary image +.IP "\fBlb_binary_rootfs\fR(1)" 4 +build rootfs image +.IP "\fBlb_binary_syslinux\fR(1)" 4 +installs syslinux into binary +.IP "\fBlb_binary_tar\fR(1)" 4 +build harddisk binary image +.IP "\fBlb_binary_hdd\fR(1)" 4 +build binary hdd image +.IP "\fBlb_binary_win32\-loader\fR(1)" 4 +installs win32\-loader into binary +.SS Source commands +.IP "\fBlb_source_debian\fR(1)" 4 +download sources +.IP "\fBlb_source_debian\-live\fR(1)" 4 +copy debian\-live config into source +.IP "\fBlb_source_disk\fR(1)" 4 +install disk information into source +.IP "\fBlb_source_iso\fR(1)" 4 +build iso source image +.IP "\fBlb_source_checksums\fR(1)" 4 +create source checksums (md5, sha1, and/or sha256) +.IP "\fBlb_source_net\fR(1)" 4 +build source net image +.IP "\fBlb_source_tar\fR(1)" 4 +build source tarball +.IP "\fBlb_source_hdd\fR(1)" 4 +build source hdd image +.\" FIXME + +.SH CONFIG FILES +.\" FIXME +Many live\-build commands make use of files in the \fIconfig/\fR directory to control what they do. Besides the common \fIconfig/common\fR, which is used by all live\-build commands, some additional files can be used to configure the behavior of specific live\-build commands. These files are typically named config/stage or config/stage_helper (where "stage" of course, is replaced with the name of the stage that they belong to, and "helper" with the name of the helper). +.PP +For example, lb_bootstrap_debootstrap uses files named config/bootstrap and config/bootstrap_debootstrap to read the options it will use. See the man pages of individual commands for details about the names and formats of the files they use. Generally, these files contain variables with values assigned, one variable per line. Some programs in live\-build use pairs of values or slightly more complicated variable assignments. +.PP +Note that live\-build will respect environment variables which are present in the context of the shell it is running. If variables can be read from config files, then they override environment variables, and if command line options are used, they override values from config files. If no value for a given variable can be found and thus is unset, live\-build will automatically set it to the default value. +.PP +In some rare cases, you may want to have different versions of these files for different architectures or distributions. If files named config/stage.arch or config/stage_helper.arch, and config/stage.dist or config/stage_helper.dist exist, where "arch" is the same as the output of "dpkg \-\-print\-architecture" and "dist" is the same as the codename of the target distribution, then they will be used in preference to other, more general files. +.PP +All config files are shell scripts which are sourced by a live\-build program. That means they have to follow the normal shell syntax. You can also put comments in these files; lines beginning with "#" are ignored. +.\" FIXME + +.SH FILES +.IP "\fB/etc/live/build.conf\fR" 4 +.IP "\fB/etc/live/build/*\fR" 4 + +.SH SEE ALSO +\fIlive\-boot\fR(7) +.PP +\fIlive\-config\fR(7) +.PP +This program is a part of live\-build. + +.SH HOMEPAGE +More information about live\-build and the Live Systems project can be found on the homepage at <\fIhttp://live-systems.org/\fR> and in the manual at <\fIhttp://live-systems.org/manual/\fR>. + +.SH BUGS +Bugs can be reported by submitting a bugreport for the live\-build package in the Bug Tracking System at <\fIhttp://bugs.debian.org/\fR> or by writing a mail to the Live Systems mailing list at <\fIdebian-live@lists.debian.org\fR>. + +.SH AUTHOR +live\-build was written by Daniel Baumann <\fImail@daniel-baumann.ch\fR>. diff --git a/system-build/scripts/build.sh b/system-build/scripts/build.sh new file mode 100755 index 0000000..abeb29c --- /dev/null +++ b/system-build/scripts/build.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## 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 3 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, see <http://www.gnu.org/licenses/>. +## +## The complete text of the GNU General Public License +## can be found in /usr/share/common-licenses/GPL-3 file. + + +set -e + +if [ -e local/live-build ] +then + LIVE_BUILD="${LIVE_BUILD:-${PWD}/local/live-build}" + export LIVE_BUILD +fi + +for _DIRECTORY in "${LIVE_BUILD}/functions" /usr/share/live/build/functions +do + if [ -e "${_DIRECTORY}" ] + then + for _FILE in "${_DIRECTORY}"/*.sh + do + if [ -e "${_FILE}" ] + then + . "${_FILE}" + fi + done + + break + fi +done diff --git a/system-build/scripts/build/binary b/system-build/scripts/build/binary new file mode 100755 index 0000000..551431d --- /dev/null +++ b/system-build/scripts/build/binary @@ -0,0 +1,106 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Automatically populating config tree +if [ -x auto/config ] && [ ! -e .build/config ] +then + Echo_message "Automatically populating config tree." + lb config +fi + +# Setting static variables +DESCRIPTION="$(Echo 'build binary images')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Setup cleanup function +Setup_cleanup + +# Preparing root filesystem +lb binary_chroot ${@} + +if [ "${LB_BUILD_WITH_CHROOT}" = "true" ] +then + # Configuring chroot + lb chroot_devpts install ${@} + lb chroot_proc install ${@} + lb chroot_selinuxfs install ${@} + lb chroot_sysfs install ${@} + lb chroot_hosts install ${@} + lb chroot_resolv install ${@} + lb chroot_hostname install ${@} + lb chroot_sysv-rc install ${@} + lb chroot_apt install-binary ${@} + lb chroot_archives chroot install ${@} +fi + +# Building root filesystem +lb binary_rootfs ${@} +lb binary_manifest ${@} + +# Prepare images +lb binary_package-lists ${@} +lb binary_linux-image ${@} +lb binary_memtest ${@} +lb binary_grub-legacy ${@} +lb binary_grub-pc ${@} +lb binary_loopback_cfg ${@} +lb binary_syslinux ${@} +lb binary_disk ${@} +lb binary_loadlin ${@} +lb binary_win32-loader ${@} +lb binary_includes ${@} +lb binary_hooks ${@} +lb binary_checksums ${@} + +if [ "${LB_BUILD_WITH_CHROOT}" != "true" ] +then + lb chroot_devpts install ${@} + lb chroot_proc install ${@} + lb chroot_selinuxfs install ${@} + lb chroot_sysfs install ${@} +fi + +# Building images +lb binary_iso ${@} +lb binary_netboot ${@} +lb binary_tar ${@} +lb binary_hdd ${@} + +lb binary_zsync ${@} + +if [ "${LB_BUILD_WITH_CHROOT}" = "true" ] +then + # Deconfiguring chroot + rm -f .build/chroot_archives + lb chroot_apt remove ${@} + lb chroot_hostname remove ${@} + lb chroot_resolv remove ${@} + lb chroot_hosts remove ${@} + lb chroot_sysv-rc remove ${@} + lb chroot_dpkg remove ${@} + lb chroot_debianchroot remove ${@} +fi + +lb chroot_sysfs remove ${@} +lb chroot_selinuxfs remove ${@} +lb chroot_proc remove ${@} +lb chroot_devpts remove ${@} diff --git a/system-build/scripts/build/binary_checksums b/system-build/scripts/build/binary_checksums new file mode 100755 index 0000000..a64334e --- /dev/null +++ b/system-build/scripts/build/binary_checksums @@ -0,0 +1,96 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'create binary checksums')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_CHECKSUMS}" = "none" ] +then + exit 0 +fi + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_checksums + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +for CHECKSUM in ${LB_CHECKSUMS} +do + case "${LB_MODE}" in + progress-linux) + CHECKSUMS="$(echo ${CHECKSUM} | tr [a-z] [A-Z])SUMS" + ;; + + *) + CHECKSUMS="${CHECKSUM}sum.txt" + ;; + esac + + Echo_message "Begin creating binary ${CHECKSUMS}..." + + # Remove old checksums + if [ -f binary/${CHECKSUMS} ] + then + rm -f binary/${CHECKSUMS} + fi + + # Calculating checksums + cd binary + find . -type f \ + \! -path './isolinux/isolinux.bin' \ + \! -path './boot/boot.bin' \ + \! -path './boot/grub/stage2_eltorito' \ + \! -path './*SUMS' \ + \! -path './*sum.txt' \ + -print0 | sort -z | xargs -0 ${CHECKSUM}sum > ../${CHECKSUMS} + +cat > ${CHECKSUMS} << EOF +## This file contains the list of ${CHECKSUM} checksums of all files on this +## medium. +## +## You can verify them automatically with the 'verify-checksums' boot parameter, +## or, manually with: '${CHECKSUM}sum -c ${CHECKSUMS}'. +## +## +EOF + + cat ../${CHECKSUMS} >> ${CHECKSUMS} + rm -f ../${CHECKSUMS} + + cd "${OLDPWD}" +done + +# File list +cd binary +find . | sed -e 's|^.||g' | grep "^/" | sort > ../${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.contents +cd "${OLDPWD}" + +# Creating stage file +Create_stagefile .build/binary_checksums diff --git a/system-build/scripts/build/binary_chroot b/system-build/scripts/build/binary_chroot new file mode 100755 index 0000000..d809b7f --- /dev/null +++ b/system-build/scripts/build/binary_chroot @@ -0,0 +1,101 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'copy chroot into chroot')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +Echo_message "Begin copying chroot..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_chroot + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Normally, virtual filesystems are not mounted here, but people tend to be lazy +if [ -f chroot/proc/version ] +then + umount chroot/proc +fi + +if [ -d chroot/sys/kernel ] +then + umount chroot/sys +fi + +if [ "${LB_BUILD_WITH_CHROOT}" = "false" ] +then + exit 0 +fi + +if [ "${LB_CACHE}" = "true" ] && Find_files cache/binary_rootfs/filesystem* +then + exit 0 +fi + +Echo_message "This may take a while." + +# Removing old chroot +rm -rf chroot/chroot +rm -rf chroot.tmp + +# Copying new chroot +if [ -d cache/bootstrap ] && [ "${LB_CHROOT_FILESYSTEM}" != "none" ] && [ "${LB_CHROOT_FILESYSTEM}" != "plain" ] +then + mv chroot chroot.tmp + cp -a cache/bootstrap chroot + touch chroot/chroot.cache +else + cp -a chroot chroot.tmp +fi + +mv chroot.tmp chroot/chroot + +# Handling chroot excludes +if [ -f config/rootfs/excludes ] && [ "${LB_CHROOT_FILESYSTEM}" != "squashfs" ] +then + case "${LB_BUILD_WITH_CHROOT}" in + true) + cp config/rootfs/excludes chroot/chroot/excludes + # Not using Chroot() here because we want explicitly /bin/bash (for the time being) + chroot chroot/chroot /usr/bin/env -i xargs --arg-file=/excludes -I FILE bash -c 'rm -rf FILE' + rm -f chroot/chroot/excludes + ;; + + false) + cp config/rootfs/excludes chroot/excludes + # Not using Chroot() here because we want explicitly /bin/bash (for the time being) + chroot chroot /usr/bin/env -i xargs --arg-file=/excludes -I FILE bash -c 'rm -rf FILE' + rm -f chroot/excludes + ;; + esac +fi + +# Creating stage file +Create_stagefile .build/binary_chroot diff --git a/system-build/scripts/build/binary_disk b/system-build/scripts/build/binary_disk new file mode 100755 index 0000000..7ddcc35 --- /dev/null +++ b/system-build/scripts/build/binary_disk @@ -0,0 +1,175 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'install disk information into binary')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +case "${LIVE_IMAGE_TYPE}" in + iso*|hdd*) + ;; + *) + exit 0 + ;; +esac + +Echo_message "Begin installing disk information..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_disk + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +mkdir -p binary/.disk + +ARCHITECTURE="$(echo ${LB_ARCHITECTURES} | sed -e 's| |/|g')" +DISTRIBUTION="$(echo ${LB_DISTRIBUTION} | cut -b 1 | tr '[a-z]' '[A-Z]')" +DISTRIBUTION="${DISTRIBUTION}$(echo ${LB_DISTRIBUTION} | cut -b 2-)" + +if [ -e chroot/etc/os-release ] +then + VERSION="$(. chroot/etc/os-release && echo ${VERSION_ID})" +fi + +VERSION="${VERSION:-none}" + +case "${LB_MODE}" in + debian) + TITLE="Debian GNU/Linux" + STRING="Official Snapshot ${ARCHITECTURE}" + TRACE="project/trace/ftp-master.debian.org" + ;; + + progress-linux) + TITLE="Progress Linux" + STRING="${VERSION} (${DISTRIBUTION}) - ${ARCHITECTURE}" + TRACE="project/trace/archive-master.progress-linux.org" + ;; + + *) + TITLE="Debian GNU/Linux" + STRING="Snapshot ${ARCHITECTURE}" + TRACE="" + ;; +esac + +if [ -n "${TRACE}" ] +then + case "${LB_DERIVATIVE}" in + true) + echo "$(echo ${LB_PARENT_MIRROR_BOOTSTRAP} | awk -F:// '{ print $2 }'): $(wget -q ${LB_PARENT_MIRROR_BOOTSTRAP}/${TRACE} -O - | head -n 1)" \ + > binary/.disk/archive_trace + + echo "$(echo ${LB_MIRROR_BOOTSTRAP} | awk -F:// '{ print $2 }'): $(wget -q ${LB_MIRROR_BOOTSTRAP}/${TRACE} -O - | head -n 1)" \ + >> binary/.disk/archive_trace + ;; + + false) + echo "$(wget -q ${LB_PARENT_MIRROR_BOOTSTRAP}/${TRACE} -O - | head -n 1)" \ + > binary/.disk/archive_trace + ;; + esac +fi + +case "${LB_DEBIAN_INSTALLER}" in + cdrom) + echo "main" > binary/.disk/base_components + + touch binary/.disk/base_installable + + echo "full_cd" > binary/.disk/cd_type + + echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/CD Binary $(date +%Y%m%d-%H:%M)" > binary/.disk/info + + for LOCATION in "${LIVE_BUILD}/data/debian-cd" /usr/share/live/build/data/debian-cd + do + if [ -e "${LOCATION}" ] + then + cp "${LOCATION}/${LB_PARENT_DISTRIBUTION}/${LB_ARCHITECTURES}_udeb_include" binary/.disk/udeb_include + + continue + fi + done + ;; + + true|netinst|live) + echo "main" > binary/.disk/base_components + + touch binary/.disk/base_installable + + if [ "${LB_DEBIAN_INSTALLER}" = "live" ] + then + echo "live" > binary/.disk/cd_type + echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/INSTALL Binary $(date +%Y%m%d-%H:%M)" > binary/.disk/info + else + echo "not_complete" > binary/.disk/cd_type + echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/NETINST Binary $(date +%Y%m%d-%H:%M)" > binary/.disk/info + fi + + for LOCATION in "${LIVE_BUILD}/data/debian-cd" /usr/share/live/build/data/debian-cd + do + if [ -e "${LOCATION}" ] + then + cp "${LOCATION}/${LB_PARENT_DISTRIBUTION}/${LB_ARCHITECTURES}_netinst_udeb_include" binary/.disk/udeb_include + + continue + fi + done + + if [ "${LB_DEBIAN_INSTALLER}" = "live" ] + then + echo "live-installer" >> binary/.disk/udeb_include + fi + ;; + + businesscard) + echo "main" > binary/.disk/base_components + + echo "not_complete" > binary/.disk/cd_type + + echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/BC Binary $(date +%Y%m%d-%H:%M)" > binary/.disk/info + + for LOCATION in "${LIVE_BUILD}/data/debian-cd" /usr/share/live/build/data/debian-cd + do + if [ -e "${LOCATION}" ] + then + cp "${LOCATION}/${LB_PARENT_DISTRIBUTION}/${LB_ARCHITECTURES}_businesscard_udeb_include" binary/.disk/udeb_include + + continue + fi + done + ;; + + false) + echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE Binary $(date +%Y%m%d-%H:%M)" > binary/.disk/info + ;; +esac + +# Creating stage file +Create_stagefile .build/binary_disk diff --git a/system-build/scripts/build/binary_grub-legacy b/system-build/scripts/build/binary_grub-legacy new file mode 100755 index 0000000..a9fb74b --- /dev/null +++ b/system-build/scripts/build/binary_grub-legacy @@ -0,0 +1,288 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'installs grub-legacy into binary')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +FOUND_MYSELF="" +IFS="," +for BOOTLOADER in ${LB_BOOTLOADERS} +do + + case ${BOOTLOADER} in + "grub-legacy" ) + FOUND_MYSELF="True" + break ;; + esac + +done + +if [ -z ${FOUND_MYSELF} ] ; then + exit 0 +fi + +Echo_message "Begin installing grub-legacy..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_grub-legacy + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Check architecture +Check_architectures amd64 i386 +Check_crossarchitectures + +# Checking depends +Check_package chroot /usr/sbin/grub grub-legacy + +# Restoring cache +Restore_cache cache/packages.binary + +# Installing depends +Install_package + +# Local functions +Grub_live_entry () +{ + LABEL="${1}" + KERNEL="${2}" + INITRD="${3}" + APPEND="${4}" + + LINUX_LIVE="${LINUX_LIVE}\ntitle\t\tDebian GNU/Linux - ${LABEL}" + LINUX_LIVE="${LINUX_LIVE}\nkernel\t\t/${KERNEL} ${INITFS:+boot=${INITFS} }config LB_BOOTAPPEND_LIVE ${APPEND}" + LINUX_LIVE="${LINUX_LIVE}\ninitrd\t\t/${INITRD}" +} + +Grub_install_entry () +{ + LABEL="${1}" + KERNEL="${2}" + INITRD="${3}" + APPEND="${4}" + + QAPPEND="quiet" + + for TYPE in Install Expert Rescue Auto + do + case "${TYPE}" in + Install) + TAPPEND="${APPEND} ${QAPPEND}" + ;; + + Expert) + TAPPEND="priority=low ${APPEND}" + ;; + + Rescue) + TAPPEND="rescue/enable=true ${APPEND} ${QAPPEND}" + ;; + + Auto) + TAPPEND="auto=true priority=critical ${APPEND} ${QAPPEND}" + ;; + esac + + case "${LABEL}" in + Text) + TYPE_SUFFIX="" + ;; + GUI) + TYPE_SUFFIX="gui" + ;; + esac + + + LINUX_INSTALL="${LINUX_INSTALL}\ntitle\t\t${LABEL} ${TYPE}" + LINUX_INSTALL="${LINUX_INSTALL}\nkernel\t\t/${KERNEL} ${TAPPEND} ${LB_BOOTAPPEND_INSTALL}" + LINUX_INSTALL="${LINUX_INSTALL}\ninitrd\t\t/${INITRD}" + done +} + +if [ -e "config/bootloaders/grub-legacy" ] +then + # Internal local copy + _SOURCE="config/bootloaders/grub-legacy" +else + # Internal system copy + if [ -n "${LIVE_BUILD}" ] + then + _SOURCE="${LIVE_BUILD}/share/bootloaders/grub-legacy" + else + _SOURCE="/usr/share/live/build/bootloaders/grub-legacy" + fi +fi + +case "${LB_INITRAMFS}" in + system-boot) + INITFS="live" + ;; + + *) + INITFS="" + ;; +esac + +# Setting destination directory +case "${LIVE_IMAGE_TYPE}" in + iso*|tar) + case "${LB_INITRAMFS}" in + system-boot) + DESTDIR_LIVE="binary/live" + ;; + + *) + DESTDIR_LIVE="binary/boot" + ;; + esac + + DESTDIR_INSTALL="binary/install" + ;; + + hdd*|netboot) + Echo_warning "Bootloader in this image type not yet supported by live-build." + Echo_warning "This would produce a not bootable image, aborting (FIXME)." + exit 1 + ;; +esac + +Check_multiarchitectures + +# Creating directory +mkdir -p "${DESTDIR_LIVE}" + +# Setting boot parameters +if [ "${LB_UNION_FILESYSTEM}" != "aufs" ] +then + LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} union=${LB_UNION_FILESYSTEM}" +fi + +if [ -n "${LB_NET_COW_PATH}" ] +then + Echo_error "Net cow not yet supported on grub-legacy" + exit 1 +fi + +LB_BOOTAPPEND_LIVE="$(echo ${LB_BOOTAPPEND_LIVE} | sed -e 's| ||')" + +# Assembling kernel configuration + +# Default entries +DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')" +DEFAULT_KERNEL="$(basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR})" +DEFAULT_INITRD="initrd.img-$(echo ${DEFAULT_KERNEL} | sed -e 's|vmlinuz-||')" + +Grub_live_entry "live" "$(basename ${DESTDIR_LIVE})/${DEFAULT_KERNEL}" "$(basename ${DESTDIR_LIVE})/${DEFAULT_INITRD}" + +if [ "${LB_BOOTAPPEND_FAILSAFE}" != "none" ] +then + Grub_live_entry "live (fail-safe mode)" "$(basename ${DESTDIR_LIVE})/${DEFAULT_KERNEL}" "$(basename ${DESTDIR_LIVE})/${DEFAULT_INITRD}" "${LB_BOOTAPPEND_FAILSAFE}" +fi + +for KERNEL in chroot/boot/vmlinuz-* +do + VERSION="$(basename ${KERNEL} | sed -e 's|vmlinuz-||')" + + Grub_live_entry "live, kernel ${VERSION}" "$(basename ${DESTDIR_LIVE})/$(basename ${KERNEL})" "$(basename ${DESTDIR_LIVE})/initrd.img-${VERSION}" + Grub_live_entry "live, kernel ${VERSION} (fail-safe mode)" "$(basename ${DESTDIR_LIVE})/$(basename ${KERNEL})" "$(basename ${DESTDIR_LIVE})/initrd.img-${VERSION}" "${LB_BOOTAPPEND_FAILSAFE}" +done + +LINUX_LIVE="$(/bin/echo ${LINUX_LIVE} | sed -e 's|binary||g' -e 's|//|/|g')" + +# Assembling debian-installer configuration +if [ "${LB_DEBIAN_INSTALLER}" != "false" ] +then + LINUX_LIVE="title\t\tLive:\nroot\n\n${LINUX_LIVE}" + LINUX_INSTALL="title\t\tInstaller:\nroot" + + VMLINUZ_DI="install/vmlinuz" + INITRD_DI="install/initrd.gz" + APPEND_DI="vga=normal" + + VMLINUZ_GI="install/gtk/vmlinuz" + INITRD_GI="install/gtk/initrd.gz" + APPEND_GI="video=vesa:ywrap,mtrr vga=788" + + if [ -f "binary/${VMLINUZ_DI}" ] && [ -f "binary/${INITRD_DI}" ] + then + Grub_install_entry "Text" "${VMLINUZ_DI}" "${INITRD_DI}" "${APPEND_DI}" + fi + + if [ -f "binary/${VMLINUZ_GI}" ] && [ -f "binary/${INITRD_GI}" ] + then + Grub_install_entry "GUI" "${VMLINUZ_GI}" "${INITRD_GI}" "${APPEND_GI}" + fi +fi + +LINUX_INSTALL="$(/bin/echo ${LINUX_INSTALL} | sed -e 's|binary||g' -e 's|//|/|g')" + +# Assembling memtest configuration +if [ -f "${DESTDIR_LIVE}"/memtest ] +then + MEMTEST="title\t\tOther:\nroot" + MEMTEST="${MEMTEST}\n\ntitle\t\t${LB_MEMTEST}\nkernel\t\t/$(basename ${DESTDIR_LIVE})/memtest" + MEMTEST="$(/bin/echo ${MEMTEST} | sed -e 's|//|/|g')" +fi + +# Copying templates +mkdir -p binary/boot/grub +cp -r "${_SOURCE}"/* binary/boot/grub + +case ${LIVE_IMAGE_TYPE} in + iso*) + FILES="chroot/usr/lib/grub/*/stage2_eltorito" + ;; + + hdd*|tar) + FILES="chroot/usr/lib/grub/*/stage1 chroot/usr/lib/grub/*/e2fs_stage1_5 chroot/usr/lib/grub/*/stage2" + ;; +esac + +if [ "${LB_BUILD_WITH_CHROOT}" = "false" ] +then + FILES="$(echo ${FILES} | sed -e 's|chroot||g')" +fi + +# Copying grub +cp ${FILES} binary/boot/grub + +sed -i -e "s|LINUX_LIVE|${LINUX_LIVE}|" -e "s|LINUX_INSTALL|${LINUX_INSTALL}|" -e "s|MEMTEST|${MEMTEST}|" binary/boot/grub/menu.lst +sed -i -e "s#LB_BOOTAPPEND_INSTALL#${LB_BOOTAPPEND_INSTALL}#" -e "s#LB_BOOTAPPEND_LIVE#${LB_BOOTAPPEND_LIVE}#" binary/boot/grub/menu.lst + +sed -i -e 's|\ $||g' binary/boot/grub/menu.lst + +# Saving cache +Save_cache cache/packages.binary + +# Removing depends +Remove_package + +# Creating stage file +Create_stagefile .build/binary_grub diff --git a/system-build/scripts/build/binary_grub-pc b/system-build/scripts/build/binary_grub-pc new file mode 100755 index 0000000..f3a6450 --- /dev/null +++ b/system-build/scripts/build/binary_grub-pc @@ -0,0 +1,263 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'installs grub-pc into binary')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +FOUND_MYSELF="" +OLDIFS="$IFS" +IFS="," +for BOOTLOADER in ${LB_BOOTLOADERS} +do + + case ${BOOTLOADER} in + "grub-pc" ) + FOUND_MYSELF="True" + break ;; + esac + +done +IFS="$OLDIFS" + +if [ -z ${FOUND_MYSELF} ] ; then + exit 0 +fi + +Echo_message "Begin installing grub-pc..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_grub + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Check architecture +Check_architectures amd64 i386 +Check_crossarchitectures + +# Checking depends +Check_package chroot /usr/bin/grub-mkimage grub-pc + +# Restoring cache +Restore_cache cache/packages.binary + +# Installing depends +Install_package + +# Local functions +Grub_live_entry () +{ + LABEL="${1}" + KERNEL="${2}" + INITRD="${3}" + APPEND="${4}" + + LINUX_LIVE="${LINUX_LIVE}\nmenuentry \"Debian GNU/Linux - ${LABEL}\" {" + LINUX_LIVE="${LINUX_LIVE}\nlinux\t\t/${KERNEL} ${INITFS:+boot=${INITFS} }config LB_BOOTAPPEND_LIVE ${APPEND}" + LINUX_LIVE="${LINUX_LIVE}\ninitrd\t\t/${INITRD}" + LINUX_LIVE="${LINUX_LIVE}\n}" +} + +Grub_install_entry () +{ + LABEL="${1}" + KERNEL="${2}" + INITRD="${3}" + APPEND="${4}" + + if [ "${LABEL}" != "rescue" ] && [ "${LABEL}" != "rescuegui" ] + then + APPEND="${APPEND} quiet" + fi + + LINUX_INSTALL="${LINUX_INSTALL}\nmenuentry \"Debian GNU/Linux - ${LABEL}\" {" + LINUX_INSTALL="${LINUX_INSTALL}\nlinux\t\t/${KERNEL} ${APPEND} LB_BOOTAPPEND_INSTALL" + LINUX_INSTALL="${LINUX_INSTALL}\ninitrd\t\t/${INITRD}" + LINUX_INSTALL="${LINUX_INSTALL}\n}" +} + +if [ -e "config/bootloaders/grub-pc" ] +then + # Internal local copy + _SOURCE="config/bootloaders/grub-pc" +else + # Internal system copy + if [ -n "${LIVE_BUILD}" ] + then + _SOURCE="${LIVE_BUILD}/share/bootloaders/grub-pc" + else + _SOURCE="/usr/share/live/build/bootloaders/grub-pc" + fi +fi + +case "${LB_INITRAMFS}" in + system-boot) + INITFS="live" + ;; + + *) + INITFS="" + ;; +esac + +# Setting destination directory +case "${LIVE_IMAGE_TYPE}" in + iso*|tar) + case "${LB_INITRAMFS}" in + system-boot) + DESTDIR_LIVE="binary/live" + ;; + + *) + DESTDIR_LIVE="binary/live" + ;; + esac + + DESTDIR_INSTALL="binary/install" + ;; + + hdd*|netboot) + Echo_warning "Bootloader in this image type not yet supported by live-build." + Echo_warning "This would produce a not bootable image, aborting (FIXME)." + exit 1 + ;; +esac + +Check_multiarchitectures + +# Creating directory +mkdir -p "${DESTDIR_LIVE}" + +# Setting boot parameters +if [ "${LB_UNION_FILESYSTEM}" != "aufs" ] +then + LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} union=${LB_UNION_FILESYSTEM}" +fi + +if [ -n "${LB_NET_COW_PATH}" ] +then + Echo_error "Net cow not yet supported on grub" + exit 1 +fi + +LB_BOOTAPPEND_LIVE="$(echo ${LB_BOOTAPPEND_LIVE} | sed -e 's| ||')" + +# Assembling kernel configuration + +# Default entries +DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')" +DEFAULT_KERNEL="$(basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR})" +DEFAULT_INITRD="initrd.img-$(echo ${DEFAULT_KERNEL} | sed -e 's|vmlinuz-||')" + +Grub_live_entry "live" "$(basename ${DESTDIR_LIVE})/${DEFAULT_KERNEL}" "$(basename ${DESTDIR_LIVE})/${DEFAULT_INITRD}" + +if [ "${LB_BOOTAPPEND_FAILSAFE}" != "none" ] +then + Grub_live_entry "live (fail-safe mode)" "$(basename ${DESTDIR_LIVE})/${DEFAULT_KERNEL}" "$(basename ${DESTDIR_LIVE})/${DEFAULT_INITRD}" "${LB_BOOTAPPEND_FAILSAFE}" +fi + +for KERNEL in chroot/boot/vmlinuz-* +do + VERSION="$(basename ${KERNEL} | sed -e 's|vmlinuz-||')" + + Grub_live_entry "live, kernel ${VERSION}" "$(basename ${DESTDIR_LIVE})/$(basename ${KERNEL})" "$(basename ${DESTDIR_LIVE})/initrd.img-${VERSION}" + Grub_live_entry "live, kernel ${VERSION} (fail-safe mode)" "$(basename ${DESTDIR_LIVE})/$(basename ${KERNEL})" "$(basename ${DESTDIR_LIVE})/initrd.img-${VERSION}" "${LB_BOOTAPPEND_FAILSAFE}" +done + +LINUX_LIVE="$(/bin/echo ${LINUX_LIVE} | sed -e 's|binary||g' -e 's|//|/|g')" + +# Assembling debian-installer configuration +if [ "${LB_DEBIAN_INSTALLER}" != "false" ] +then + LINUX_LIVE="#\t \"Live\"\n${LINUX_LIVE}" + LINUX_INSTALL="#\t \"Installer\"\n" + + VMLINUZ_DI="install/vmlinuz" + INITRD_DI="install/initrd.gz" + APPEND_DI="vga=normal" + + VMLINUZ_GI="install/gtk/vmlinuz" + INITRD_GI="install/gtk/initrd.gz" + APPEND_GI="video=vesa:ywrap,mtrr vga=788" + + Grub_install_entry "install" "${VMLINUZ_DI}" "${INITRD_DI}" "${APPEND_DI}" + Grub_install_entry "installgui" "${VMLINUZ_GI}" "${INITRD_GI}" "${APPEND_GI}" + Grub_install_entry "expert" "${VMLINUZ_DI}" "${INITRD_DI}" "priority=low ${APPEND_DI}" + Grub_install_entry "expertgui" "${VMLINUZ_GI}" "${INITRD_GI}" "priority=low ${APPEND_GI}" + Grub_install_entry "rescue" "${VMLINUZ_DI}" "${INITRD_DI}" "rescue/enable=true ${APPEND_DI}" + Grub_install_entry "rescuegui" "${VMLINUZ_GI}" "${INITRD_GI}" "rescue/enable=true ${APPEND_GI}" + Grub_install_entry "auto" "${VMLINUZ_DI}" "${INITRD_DI}" "auto=true priority=critical ${APPEND_DI}" + Grub_install_entry "autogui" "${VMLINUZ_GI}" "${INITRD_GI}" "auto=true priority=critical ${APPEND_GI}" +fi + +LINUX_INSTALL="$(/bin/echo ${LINUX_INSTALL} | sed -e 's|binary||g' -e 's|//|/|g')" + +# Assembling memtest configuration +if [ -f "${DESTDIR_LIVE}"/memtest ] +then + MEMTEST="#\t \"Other\"\n" + MEMTEST="${MEMTEST}\nmenuentry\t\"${LB_MEMTEST}\" {\nlinux16\t$(basename ${DESTDIR_LIVE})/memtest\n}" + MEMTEST="$(/bin/echo ${MEMTEST} | sed -e 's|//|/|g')" +fi + +# Copying templates +mkdir -p binary/boot/grub/i386-pc +cp -r "${_SOURCE}"/* binary/boot/grub + +case ${LIVE_IMAGE_TYPE} in + iso*) + FILES="chroot/usr/lib/grub/i386-pc/*.mod chroot/usr/lib/grub/i386-pc/*.lst chroot/usr/lib/grub/i386-pc/efiemu??.o chroot/usr/share/grub/*.pf2" + ;; + + hdd*|tar) + FILES="chroot/usr/lib/grub/i386-pc/*" + ;; +esac + +if [ "${LB_BUILD_WITH_CHROOT}" = "false" ] +then + FILES="$(echo ${FILES} | sed -e 's|chroot||g')" +fi + +# Copying grub +cp ${FILES} binary/boot/grub/i386-pc + +sed -i -e "s|LINUX_LIVE|${LINUX_LIVE}|" -e "s|LINUX_INSTALL|${LINUX_INSTALL}|" -e "s|MEMTEST|${MEMTEST}|" binary/boot/grub/grub.cfg +sed -i -e "s#LB_BOOTAPPEND_INSTALL#${LB_BOOTAPPEND_INSTALL}#" -e "s#LB_BOOTAPPEND_LIVE#${LB_BOOTAPPEND_LIVE}#" binary/boot/grub/grub.cfg + +sed -i -e 's|\ $||g' binary/boot/grub/grub.cfg + +# Saving cache +Save_cache cache/packages.binary + +# Removing depends +Remove_package + +# Creating stage file +Create_stagefile .build/binary_grub diff --git a/system-build/scripts/build/binary_hdd b/system-build/scripts/build/binary_hdd new file mode 100755 index 0000000..1e7489c --- /dev/null +++ b/system-build/scripts/build/binary_hdd @@ -0,0 +1,348 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'build binary image')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if ! In_list hdd "${LIVE_IMAGE_TYPE}" +then + exit 0 +fi + +Echo_message "Begin building binary hdd image..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap .build/chroot_proc + +# Checking stage file +Check_stagefile .build/binary_hdd + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Checking depends +case "${LB_BINARY_FILESYSTEM}" in + fat*) + Check_package chroot /sbin/mkdosfs dosfstools + ;; + + ntfs) + Check_package chroot /sbin/mkfs.nfts ntfs-3g + ;; +esac + +Check_package chroot /usr/share/doc/mtools mtools +Check_package chroot /sbin/parted parted + +echo "${LB_BOOTLOADERS}" | \ +while IFS="," read -r BOOTLOADER +do + case "${BOOTLOADER}" in + grub) + Check_package chroot /usr/sbin/grub grub + ;; + esac +done + +LB_PRIMARY_BOOTLOADER=$(echo "${LB_BOOTLOADERS}" | awk -F, '{ print $1 }') + +case ${LB_PRIMARY_BOOTLOADER} in + syslinux) + case ${LB_BINARY_FILESYSTEM} in + fat*|ntfs) + _BOOTLOADER=syslinux + ;; + ext[234]|btrfs) + _BOOTLOADER=extlinux + ;; + *) + Echo_error "syslinux/extlinux doesn't support ${LB_BINARY_FILESYSTEM}" + exit 1 + ;; + esac + Check_package chroot /usr/bin/${_BOOTLOADER} ${_BOOTLOADER} + ;; +esac + +# Restoring cache +Restore_cache cache/packages.binary + +# Installing depends +Install_package + +# Remove old binary +if [ -f ${LIVE_iMAGE_NAME}.img ] +then + rm -f ${LIVE_iMAGE_NAME}.img +fi + +# Enforce fat32 if we find individual files bigger than 2GB +if [ "${LB_BINARY_FILESYSTEM}" = "fat16" ] && [ -n "$(find binary -size +1999M)" ] +then + Echo_warning "FAT16 doesn't support files larger than 2GB, automatically enforcing FAT32." + + LB_BINARY_FILESYSTEM="fat32" + export LB_BINARY_FILESYSTEM +fi + +# Enforce fat32 if we have images in total bigger than 2GB +if [ "${LB_BINARY_FILESYSTEM}" = "fat16" ] && [ "$(du -s binary | awk '{ print $1 }')" -gt "1900000" ] +then + Echo_warning "FAT16 doesn't support partitions larger than 2GB, automatically enforcing FAT32" + + LB_BINARY_FILESYSTEM="fat32" + export LB_BINARY_FILESYSTEM +fi + +# Enforce ntfs if we find individual files bigger than 4GB +if [ "${LB_BINARY_FILESYSTEM}" = "fat32" ] && [ -n "$(find binary -size +3999M)" ] +then + Echo_warning "FAT32 doesn't support files larger than 4GB, automatically enforcing NTFS." + + LB_BINARY_FILESYSTEM="ntfs" + export LB_BINARY_FILESYSTEM +fi + +# Everything which comes here needs to be cleaned up, +if [ "$LB_HDD_SIZE" = "auto" ]; +then + DU_DIM="$(du -ms binary | cut -f1)" + REAL_DIM="$(Calculate_partition_size ${DU_DIM} ${LB_BINARY_FILESYSTEM})" +else + REAL_DIM=$LB_HDD_SIZE +fi + +dd if=/dev/zero of=chroot/binary.img bs=1024k count=0 seek=${REAL_DIM} +FREELO="$(${LB_LOSETUP} -f)" +if [ ! -b chroot/${FREELO} ] +then + MAKEDEV="true" + + mv chroot/dev chroot/dev.tmp + find /dev | cpio -dmpu chroot +fi + +echo "!!! The following error/warning messages can be ignored !!!" +Losetup $FREELO chroot/binary.img 0 + +PARTITION_TABLE_TYPE="msdos" + +case "${LB_BINARY_FILESYSTEM}" in + ext2|ext3|ext4) + PARTITION_TYPE="ext2" + ;; + + fat16|fat32) + PARTITION_TYPE="${LB_BINARY_FILESYSTEM}" + ;; + + ntfs) + PARTITION_TYPE="NTFS" + ;; + + *) + Echo_error "Unsupported binary filesystem %s" "${LB_BINARY_FILESYSTEM}" + exit 1 + ;; +esac + +case "${LB_BUILD_WITH_CHROOT}" in + true) + Chroot chroot "parted -s ${FREELO} mklabel ${PARTITION_TABLE_TYPE}" || true + if [ "x${LB_HDD_PARTITION_START}" = "x" ]; + then + Chroot chroot "parted -a optimal -s ${FREELO} mkpart primary\ + ${PARTITION_TYPE} 0% 100%" || true + else + Echo_message "using partition start at ${LB_HDD_PARTITION_START}" + Chroot chroot "parted -s ${FREELO} mkpart primary ${PARTITION_TYPE}\ + ${LB_HDD_PARTITION_START} 100%" || true + fi + Chroot chroot "parted -s ${FREELO} set 1 boot on" || true + Chroot chroot "parted -s ${FREELO} set 1 lba off" || true + + if [ "${LB_PRIMARY_BOOTLOADER}" = "syslinux" ] + then + dd if=chroot/usr/lib/SYSLINUX/mbr.bin of=${FREELO} bs=440 count=1 + fi + ;; + + false) + parted -s ${FREELO} mklabel ${PARTITION_TABLE_TYPE} || true + if [ "x${LB_HDD_PARTITION_START}" = "x" ]; + then + parted -a optimal -s ${FREELO} mkpart primary ${PARTITION_TYPE}\ + 0% 100% || true + else + Echo_message "using partition start at ${LB_HDD_PARTITION_START}" + parted -s ${FREELO} mkpart primary ${PARTITION_TYPE}\ + ${LB_HDD_PARTITION_START} 100% || true + fi + parted -s "${FREELO}" set 1 boot on || true + parted -s "${FREELO}" set 1 lba off || true + + if [ "${LB_PRIMARY_BOOTLOADER}" = "syslinux" ] + then + dd if=/usr/lib/SYSLINUX/mbr.bin of=${FREELO} bs=440 count=1 + fi + ;; +esac + +Lodetach ${FREELO} + +FREELO="$(${LB_LOSETUP} -f)" +Losetup $FREELO chroot/binary.img 1 + +case "${LB_BINARY_FILESYSTEM}" in + ext2|ext3|ext4) + MKFS="${LB_BINARY_FILESYSTEM}" + MKFS_OPTIONS="-L ${LB_HDD_LABEL} -m 0 -O ^64bit" + MOUNT_OPTIONS="" + ;; + + fat16) + MKFS="vfat" + MKFS_OPTIONS="-F 16 -n ${LB_HDD_LABEL}" + MOUNT_OPTIONS="" + ;; + + fat32) + MKFS="vfat" + MKFS_OPTIONS="-F 32 -n ${LB_HDD_LABEL}" + MOUNT_OPTIONS="" + ;; + + ntfs) + MKFS="ntfs" + MKFS_OPTIONS="-L ${LB_HDD_LABEL}" + MOUNT_OPTIONS="-t ntfs-3g" + ;; +esac + +case "${LB_BUILD_WITH_CHROOT}" in + true) + Chroot chroot "mkfs.${MKFS} ${MKFS_OPTIONS} ${FREELO}" + ;; + + false) + mkfs.${MKFS} ${MKFS_OPTIONS} ${FREELO} + ;; +esac + +case "${LB_BINARY_FILESYSTEM}" in + fat*) + CP_OPTIONS="-r -L" + ;; + + *) + CP_OPTIONS="-a" + ;; +esac + +Echo_message "Copying binary contents into image..." + +mkdir -p chroot/binary.tmp +mount ${MOUNT_OPTIONS} ${FREELO} chroot/binary.tmp +cp -T ${CP_OPTIONS} binary/ chroot/binary.tmp + +FIXME() +{ +if [ "${LB_PRIMARY_BOOTLOADER}" = "grub" ] +then + +cat > chroot/grub.sh << EOF +cd binary.tmp +grub --batch << EOM +find /live/vmlinuz +EOM +EOF + + rootpartition="$(Chroot chroot 'sh grub.sh' 2>/dev/null | grep -A 1 'find /live/vmlinuz' | grep -v 'find /live/vmlinuz')" + hdddev="$(echo $rootpartition | sed -e 's|,[[:digit:]]||')" + echo "Root partition is $rootpartition, device is: $hdddev" + + echo "WAITING..." && read WAIT + +#cat > chroot/grub.sh << EOF +#grub --batch << EOM +#root $rootpartition +#setup $hdddev +#EOM +#EOF + +#Chroot chroot "sh grub.sh" + + rm -f chroot/grub.sh +fi +} + +case "${_BOOTLOADER}" in + syslinux) + _SYSLINUX_INSTALLER="syslinux ${FREELO}" + ;; + extlinux) + _SYSLINUX_INSTALLER="extlinux --install /binary.tmp/boot/extlinux" + ;; + *) + _SYSLINUX_INSTALLER="" + ;; +esac + +if [ -n "${_SYSLINUX_INSTALLER}" ] +then + case "${LB_BUILD_WITH_CHROOT}" in + true) + Chroot chroot "${_SYSLINUX_INSTALLER}" + ;; + false) + ${_SYSLINUX_INSTALLER} + ;; + esac +fi + +umount chroot/binary.tmp +rmdir chroot/binary.tmp + +Lodetach ${FREELO} + +echo "!!! The above error/warning messages can be ignored !!!" + +if [ -n "${MAKEDEV}" ] +then + rm -rf chroot/dev + mv chroot/dev.tmp chroot/dev +fi + +mv chroot/binary.img ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.img + +# Saving cache +Save_cache cache/packages.binary + +# Removing depends +Remove_package + +# Creating stage file +Create_stagefile .build/binary_hdd diff --git a/system-build/scripts/build/binary_hooks b/system-build/scripts/build/binary_hooks new file mode 100755 index 0000000..0458ce9 --- /dev/null +++ b/system-build/scripts/build/binary_hooks @@ -0,0 +1,81 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'execute hooks in binary')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +Echo_message "Begin executing hooks..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_hooks + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +## Processing distribution hooks + +# Running hooks +for _HOOK in ${LB_BINARY_HOOKS} +do + for LOCATION in "${LIVE_BUILD}/hooks" /usr/share/live/build/hooks + do + for FILE in "${LOCATION}"/????-"${_HOOK}".binary + do + if [ -e "${FILE}" ] + then + cd binary + "${FILE}" || { Echo_error "${_HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;} + cd "${OLDPWD}" + fi + done + done +done + +## Processing local hooks +for HOOK in config/hooks/normal/*.binary config/hooks/live/*.binary +do + if [ ! -e "${HOOK}" ] + then + continue + fi + + # Making hook executable + if [ ! -x "${HOOK}" ] + then + chmod +x "${HOOK}" + fi + + # Executing hook + cd binary + ../"${HOOK}" || { Echo_error "${HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;} + cd "${OLDPWD}" +done + +# Creating stage file +Create_stagefile .build/binary_hooks diff --git a/system-build/scripts/build/binary_includes b/system-build/scripts/build/binary_includes new file mode 100755 index 0000000..48bb6e5 --- /dev/null +++ b/system-build/scripts/build/binary_includes @@ -0,0 +1,57 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'copy files into binary')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +Echo_message "Begin copying binary includes..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/includes.binary + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +if Find_files config/includes.binary/ +then + # Copying includes + cd config/includes.binary + find . | cpio -dmpu --no-preserve-owner "${OLDPWD}"/binary + cd "${OLDPWD}" + + # Removing symlinks + case "${LIVE_IMAGE_TYPE}" in + hdd*) + find binary -type l | xargs rm -f + ;; + esac + + # Creating stage file + Create_stagefile .build/binary_includes +fi diff --git a/system-build/scripts/build/binary_iso b/system-build/scripts/build/binary_iso new file mode 100755 index 0000000..bd659a2 --- /dev/null +++ b/system-build/scripts/build/binary_iso @@ -0,0 +1,220 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'build iso binary image')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +case "${LIVE_IMAGE_TYPE}" in + iso) + IMAGE="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.iso" + ;; + + iso-hybrid) + IMAGE="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.hybrid.iso" + ;; + + *) + exit 0 + ;; +esac + +Echo_message "Begin building binary iso image..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_iso + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Checking depends +Check_package chroot /usr/bin/xorriso xorriso +Check_package chroot /usr/lib/ISOLINUX/isohdpfx.bin isolinux + +# Restoring cache +Restore_cache cache/packages.binary + +# Installing depends +Install_package + +# Remove old iso image +if [ -f ${IMAGE} ] +then + rm -f ${IMAGE} +fi + +# Handle xorriso generic options +XORRISO_OPTIONS="-R -r -J -joliet-long -l -cache-inodes -iso-level 3" + +# Handle xorriso live-build specific options +if [ "${LIVE_IMAGE_TYPE}" = "iso-hybrid" ] +then + XORRISO_OPTIONS="${XORRISO_OPTIONS} -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -partition_offset 16" +fi + +if [ "${_QUIET}" = "true" ] +then + XORRISO_OPTIONS="${XORRISO_OPTIONS} -quiet" +fi + +if [ "${_VERBOSE}" = "true" ] +then + XORRISO_OPTIONS="${XORRISO_OPTIONS} -v" +fi + +if [ -n "${LB_ISO_APPLICATION}" ] && [ "${LB_ISO_APPLICATION}" != "none" ] +then + XORRISO_OPTIONS="${XORRISO_OPTIONS} -A \"${LB_ISO_APPLICATION}\"" +fi + +if [ -n "${LB_ISO_PREPARER}" ] && [ "${LB_ISO_PREPARER}" != "none" ] +then + XORRISO_OPTIONS="${XORRISO_OPTIONS} -p \"${LB_ISO_PREPARER}\"" +fi + +if [ -n "${LB_ISO_PUBLISHER}" ] && [ "${LB_ISO_PUBLISHER}" != "none" ] +then + XORRISO_OPTIONS="${XORRISO_OPTIONS} -publisher \"${LB_ISO_PUBLISHER}\"" +fi + +if [ -n "${LB_ISO_VOLUME}" ] && [ "${LB_ISO_VOLUME}" != "none" ] +then + XORRISO_OPTIONS="${XORRISO_OPTIONS} -V \"${LB_ISO_VOLUME}\"" +fi + +# Set an explicit modification date +XORRISO_OPTIONS="${XORRISO_OPTIONS} --modification-date=$(date --utc --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y%m%d%H%m%S00)" + +LB_PRIMARY_BOOTLOADER=$(echo "${LB_BOOTLOADERS}" | awk -F, '{ print $1 }') + +# Handle xorriso architecture specific options +case "${LB_PRIMARY_BOOTLOADER}" in + grub) + XORRISO_OPTIONS="${XORRISO_OPTIONS} -no-emul-boot -boot-load-size 4 -boot-info-table" + XORRISO_OPTIONS="${XORRISO_OPTIONS} -b boot/grub/stage2_eltorito" + XORRISO_EXCLUDE="boot/grub/stage2_eltorito" + ;; + + grub-pc) + XORRISO_OPTIONS="${XORRISO_OPTIONS} -no-emul-boot -boot-load-size 4 -boot-info-table" + XORRISO_OPTIONS="${XORRISO_OPTIONS} -b boot/grub/grub_eltorito -J" + XORRISO_EXCLUDE="boot/grub/grub_eltorito" + ;; + + syslinux) + case "${LB_MODE}" in + progress-linux) + XORRISO_OPTIONS="${XORRISO_OPTIONS} -b boot/boot.bin -c boot/boot.cat" + XORRISO_EXCLUDE="boot/boot.bin" + ;; + + *) + XORRISO_OPTIONS="${XORRISO_OPTIONS} -b isolinux/isolinux.bin -c isolinux/boot.cat" + XORRISO_EXCLUDE="isolinux/isolinux.bin" + ;; + esac + + XORRISO_OPTIONS="${XORRISO_OPTIONS} -no-emul-boot -boot-load-size 4 -boot-info-table" + ;; + + *) + Echo_warning "Bootloader on your architecture not yet supported by live-build." + Echo_warning "This will produce a most likely not bootable image (Continuing in 5 seconds)." + sleep 5 + ;; +esac + +#if [ "${LB_DEBIAN_INSTALLER}" != "live" ] +#then +# XORRISO_OPTIONS="${XORRISO_OPTIONS} -m ${XORRISO_EXCLUDE}" +#fi + +if [ "${LB_PRIMARY_BOOTLOADER}" = "grub-pc" ] +then + +cat > binary.sh << EOF +#!/bin/sh + +input_dir=/usr/lib/grub/i386-pc + +# build core.img +core_img=\$(mktemp) +grub-mkimage -d \${input_dir} -o \${core_img} -O i386-pc biosdisk iso9660 + +# build grub_eltorito image +cat \${input_dir}/cdboot.img \${core_img} > binary/boot/grub/grub_eltorito + +rm -f \${core_img} + +for file in \${input_dir}/*.mod \${input_dir}/efiemu??.o \ + \${input_dir}/command.lst \${input_dir}/moddep.lst \${input_dir}/fs.lst \ + \${input_dir}/handler.lst \${input_dir}/parttool.lst +do + if test -f "\$file" + then + cp -f "\$file" binary/boot/grub/i386-pc + fi +done +EOF + +else + echo "#!/bin/sh" > binary.sh +fi + +cat >> binary.sh << EOF + +xorriso -as mkisofs ${XORRISO_OPTIONS} -o ${IMAGE} binary +EOF + +case "${LB_BUILD_WITH_CHROOT}" in + true) + # Moving image + mv binary.sh chroot + mv binary chroot + + Chroot chroot "sh binary.sh" + + # Move image + mv chroot/binary chroot/${IMAGE} ./ + rm -f chroot/binary.sh + ;; + + false) + sh binary.sh + rm -f binary.sh + ;; +esac + +# Saving cache +Save_cache cache/packages.binary + +# Removing depends +Remove_package + +# Creating stage file +Create_stagefile .build/binary_iso diff --git a/system-build/scripts/build/binary_linux-image b/system-build/scripts/build/binary_linux-image new file mode 100755 index 0000000..34676ce --- /dev/null +++ b/system-build/scripts/build/binary_linux-image @@ -0,0 +1,85 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'install linux-image into binary')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_LINUX_PACKAGES}" = "none" ] +then + exit 0 +fi + +Echo_message "Begin install linux-image..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_linux-image + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +case "${LB_INITRAMFS}" in + system-boot) + DESTDIR="binary/live" + ;; + + *) + DESTDIR="binary/boot" + ;; +esac + +case "${LB_ARCHITECTURES}" in + powerpc) + LINUX="vmlinux" + ;; + + *) + LINUX="vmlinuz" + ;; +esac + +Check_multiarchitectures + +# Creating directory +mkdir -p "${DESTDIR}" + +# Installing linux-image +cp chroot/boot/"${LINUX}"-* "${DESTDIR}" +cp chroot/boot/initrd.img-* "${DESTDIR}" + +case "${LB_INITRAMFS}" in + system-boot) + if ls chroot/usr/share/doc/*system-boot/parameters.txt > /dev/null 2>&1 + then + cp chroot/usr/share/doc/*system-boot/parameters.txt "${DESTDIR}"/parameters + fi + ;; +esac + +# Creating stage file +Create_stagefile .build/binary_linux-image diff --git a/system-build/scripts/build/binary_loadlin b/system-build/scripts/build/binary_loadlin new file mode 100755 index 0000000..1fed0a5 --- /dev/null +++ b/system-build/scripts/build/binary_loadlin @@ -0,0 +1,102 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'copy loadlin into binary')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_LOADLIN}" != "true" ] || [ "${LB_BINARY_IMAGES}" = "netboot" ] +then + exit 0 +fi + +Echo_message "Begin copying loadlin..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_loadlin + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +case "${LB_ARCHITECTURES}" in + amd64|i386) + case "${LB_BUILD_WITH_CHROOT}" in + true) + # Checking depends + Check_package chroot /usr/lib/loadlin/loadlin.exe.gz loadlin + + # Restoring cache + Restore_cache cache/packages.binary + + # Installing depends + Install_package + + _PREFIX="chroot" + ;; + + false) + _PREFIX="" + ;; + esac + + # Copying loadlin + mkdir -p binary/tools + gunzip -c "${_PREFIX}/usr/lib/loadlin/loadlin.exe.gz" > binary/tools/loadlin.exe + gunzip -c "${_PREFIX}/usr/share/doc/loadlin/manual.txt.gz" > binary/tools/loadlin.txt + + case "${LB_BUILD_WITH_CHROOT}" in + true) + # Saving cache + Save_cache cache/packages.binary + + # Removing depends + Remove_package + ;; + esac + +cat > binary/install/install.bat << EOF +\tools\loadlin.exe vmlinuz initrd=initrd.gz +EOF + + if [ -e binary/install/gtk ] + then + +cat > binary/install/gtk/install.bat << EOF +\tools\loadlin.exe \install\vmlinuz initrd=initrd.gz vga=788 +EOF + + fi + + # Creating stage file + Create_stagefile .build/binary_loadlin + ;; + + *) + Echo_warning "loadlin inclusion is set to true but not compatible with your architecture, ignoring." + ;; +esac diff --git a/system-build/scripts/build/binary_loopback_cfg b/system-build/scripts/build/binary_loopback_cfg new file mode 100755 index 0000000..87c1d67 --- /dev/null +++ b/system-build/scripts/build/binary_loopback_cfg @@ -0,0 +1,341 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'installs loopback.cfg into binary')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# We avoid checking if we need to be running this bootloader +# on purpose. The reason: You will always want to have +# a loopback.cfg file +# TODO: Add an option to be able to disable this file creation +Echo_message "Begin installing loopback.cfg..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_loopback_cfg + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Check architecture +Check_architectures amd64 i386 +Check_crossarchitectures + +# Local functions +Grub_live_entry_commands () +{ + local KERNEL="${1}" + local INITRD="${2}" + local APPEND="${3}" + + LINUX_LIVE="${LINUX_LIVE}\nlinux\t\t/${KERNEL} ${INITFS:+boot=${INITFS} }config LB_BOOTAPPEND_LIVE ${APPEND}" + LINUX_LIVE="${LINUX_LIVE}\ninitrd\t\t/${INITRD}" +} + +Grub_live_entry () +{ + local LABEL="${1}" + local KERNEL="${2}" + local INITRD="${3}" + local APPEND="${4}" + + LINUX_LIVE="${LINUX_LIVE}\nmenuentry \"Debian GNU/Linux - ${LABEL}\" {" + Grub_live_entry_commands "${KERNEL}" "${INITRD}" "${APPEND} findiso=\${iso_path}" + LINUX_LIVE="${LINUX_LIVE}\n}" +} + +Grub_live_autodetect_entry () +{ + local LABEL="${1}" + local AMD64_KERNEL="${2}" + local AMD64_INITRD="${3}" + local _486_KERNEL="${4}" + local _486_INITRD="${5}" + local APPEND="${6}" + + LINUX_LIVE="${LINUX_LIVE}\nmenuentry \"Debian GNU/Linux - ${LABEL}\" {" + LINUX_LIVE="${LINUX_LIVE}\nif cpuid -l ; then" + Grub_live_entry_commands "${AMD64_KERNEL}" "${AMD64_INITRD}" "${APPEND} findiso=\${iso_path}" + LINUX_LIVE="${LINUX_LIVE}\nelse" + Grub_live_entry_commands "${_486_KERNEL}" "${_486_INITRD}" "${APPEND} findiso=\${iso_path}" + LINUX_LIVE="${LINUX_LIVE}\nfi" + LINUX_LIVE="${LINUX_LIVE}\n}" +} + +if [ -e "config/bootloaders/grub-pc" ] +then + # Internal local copy + _SOURCE="config/bootloaders/grub-pc" +else + # Internal system copy + if [ -n "${LIVE_BUILD}" ] + then + _SOURCE="${LIVE_BUILD}/share/bootloaders/grub-pc" + else + _SOURCE="/usr/share/live/build/bootloaders/grub-pc" + fi +fi + +case "${LB_INITRAMFS}" in + system-boot) + INITFS="live" + ;; + + *) + INITFS="" + ;; +esac + +# Assembling image specifics +case "${LIVE_IMAGE_TYPE}" in + iso*) + _BOOTLOADER="isolinux" + + case "${LB_MODE}" in + progress-linux) + _TARGET="binary/boot" + ;; + + *) + _TARGET="binary/isolinux" + ;; + esac + ;; + + netboot) + _BOOTLOADER="pxelinux" + _TARGET="tftpboot" + ;; + + hdd*|*) + case ${LB_BINARY_FILESYSTEM} in + fat*|ntfs) + _BOOTLOADER=syslinux + + case "${LB_MODE}" in + progress-linux) + _TARGET="binary/boot" + ;; + + *) + _TARGET="binary/syslinux" + ;; + esac + ;; + + ext[234]|btrfs) + _BOOTLOADER=extlinux + _TARGET="binary/boot/extlinux" + ;; + *) + Echo_error "syslinux/extlinux doesn't support ${LB_BINARY_FILESYSTEM}" + exit 1 + ;; + esac + ;; +esac + +DESTDIR_LIVE="${_TARGET}" + +Check_multiarchitectures + +# Creating directory +mkdir -p "${DESTDIR_LIVE}" + +# Setting boot parameters +if [ "${LB_UNION_FILESYSTEM}" != "aufs" ] +then + LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE} union=${LB_UNION_FILESYSTEM}" +fi + +if [ -n "${LB_NET_COW_PATH}" ] +then + Echo_error "Net cow not yet supported on grub" + exit 1 +fi + +LB_BOOTAPPEND_LIVE="$(echo ${LB_BOOTAPPEND_LIVE} | sed -e 's| ||')" + +# Assembling kernel configuration +# If Bootloader is not syslinux that means +# binary_syslinux it's not going to rename kernel filenames in a later stage. +# We will use binary_grub2 algorithm which does not rename kernel filenames. + +FOUND_SYSLINUX="" +OLDIFS="$IFS" +IFS="," +for BOOTLOADER in ${LB_BOOTLOADERS} +do + + case ${BOOTLOADER} in + "syslinux" ) + FOUND_SYSLINUX="True" + break ;; + esac + +done +IFS="$OLDIFS" + +if [ -z ${FOUND_SYSLINUX} ] +then + + _AMD64_486_NUMBER="0" + + for _FLAVOUR in ${LB_LINUX_FLAVOURS} + do + if [ "${_FLAVOUR}" = "amd64" -o "${_FLAVOUR}" = "486" ] ; then + _AMD64_486_NUMBER="$((${_AMD64_486_NUMBER} + 1))" + fi + done + + if [ "${_AMD64_486_NUMBER}" -ge 2 ] ; then + # Default entries + AMD64_KERNEL="$(basename chroot/boot/vmlinuz-*amd64)" + AMD64_INITRD="initrd.img-$(echo ${AMD64_KERNEL} | sed -e 's|vmlinuz-||')" + _486_KERNEL="$(basename chroot/boot/vmlinuz-*486)" + _486_INITRD="initrd.img-$(echo ${_486_KERNEL} | sed -e 's|vmlinuz-||')" + + Grub_live_autodetect_entry "live (autodetect)" \ + "${INITFS}/${AMD64_KERNEL}" \ + "${INITFS}/${AMD64_INITRD}" \ + "${INITFS}/${_486_KERNEL}" \ + "${INITFS}/${_486_INITRD}" + fi + + # Default entries + DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')" + DEFAULT_KERNEL="$(basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR})" + DEFAULT_INITRD="initrd.img-$(echo ${DEFAULT_KERNEL} | sed -e 's|vmlinuz-||')" + + Grub_live_entry "live" "${INITFS}/${DEFAULT_KERNEL}" "${INITFS}/${DEFAULT_INITRD}" + + if [ "${LB_BOOTAPPEND_FAILSAFE}" != "none" ] + then + Grub_live_entry "live (fail-safe mode)" "${INITFS}/${DEFAULT_KERNEL}" "${INITFS}/${DEFAULT_INITRD}" "${LB_BOOTAPPEND_FAILSAFE}" + fi + + for KERNEL in chroot/boot/vmlinuz-* + do + VERSION="$(basename ${KERNEL} | sed -e 's|vmlinuz-||')" + + Grub_live_entry "live, kernel ${VERSION}" "${INITFS}/$(basename ${KERNEL})" "${INITFS}/initrd.img-${VERSION}" + Grub_live_entry "live, kernel ${VERSION} (fail-safe mode)" "${INITFS}/$(basename ${KERNEL})" "${INITFS}/initrd.img-${VERSION}" "${LB_BOOTAPPEND_FAILSAFE}" + done +else # LB_BOOTLOADERS does not contain syslinux +# If one of the bootloader is syslinux that means +# binary_syslinux it's going to rename kernel filenames. +# We will use binary_syslinux algorithm but without renaming kernel filenames. +# That will ensure binary_syslinux will find the original kernel filenames. + #if [ -e "${_TARGET}/live.cfg.in" ] + #then + # This is all rather suboptimal.. needs prettifying at some point + _FLAVOURS="$(echo ${LB_LINUX_FLAVOURS} | wc -w)" + + case "${_FLAVOURS}" in + 1) + Grub_live_entry "live (${LB_LINUX_FLAVOURS})" "${INITFS}/vmlinuz" "${INITFS}/initrd.img" "${LB_BOOTAPPEND_LIVE}" + Grub_live_entry "live (${LB_LINUX_FLAVOURS}) (failsafe mode)" "${INITFS}/vmlinuz" "${INITFS}/initrd.img" "${LB_BOOTAPPEND_LIVE_FAILSAFE}" + ;; + + *) + _AMD64_486_NUMBER="0" + + for _FLAVOUR in ${LB_LINUX_FLAVOURS} + do + if [ "${_FLAVOUR}" = "amd64" -o "${_FLAVOUR}" = "486" ] ; then + _AMD64_486_NUMBER="$((${_AMD64_486_NUMBER} + 1))" + fi + done + + _NUMBER="0" + for _FLAVOUR in ${LB_LINUX_FLAVOURS} + do + _NUMBER="$((${_NUMBER} + 1))" + if [ "${_FLAVOUR}" = "amd64" ] ; then + AMD64_KERNEL="vmlinuz${_NUMBER}" + AMD64_INITRD="initrd${_NUMBER}.img" + fi + + if [ "${_FLAVOUR}" = "486" ] ; then + _486_KERNEL="vmlinuz${_NUMBER}" + _486_INITRD="initrd${_NUMBER}.img" + fi + done + + _NUMBER="0" + + for _FLAVOUR in ${LB_LINUX_FLAVOURS} + do + _NUMBER="$((${_NUMBER} + 1))" + + if [ "${_NUMBER}" -gt 1 ] + then + Grub_live_entry "live (${_FLAVOUR})" "${INITFS}/vmlinuz${_NUMBER}" "${INITFS}/initrd${_NUMBER}.img" "${LB_BOOTAPPEND_LIVE}" + Grub_live_entry "live (${_FLAVOUR}) (failsafe mode)" "${INITFS}/vmlinuz${_NUMBER}" "${INITFS}/initrd${_NUMBER}.img" "${LB_BOOTAPPEND_LIVE_FAILSAFE}" + + else + if [ "${_AMD64_486_NUMBER}" -ge 2 ] ; then + + Grub_live_autodetect_entry "live (autodetect)" \ + "${INITFS}/${AMD64_KERNEL}" \ + "${INITFS}/${AMD64_INITRD}" \ + "${INITFS}/${_486_KERNEL}" \ + "${INITFS}/${_486_INITRD}" + fi + + Grub_live_entry "live (${_FLAVOUR})" "${INITFS}/vmlinuz${_NUMBER}" "${INITFS}/initrd${_NUMBER}.img" "${LB_BOOTAPPEND_LIVE}" + Grub_live_entry "live (${_FLAVOUR}) (failsafe mode)" "${INITFS}/vmlinuz${_NUMBER}" "${INITFS}/initrd${_NUMBER}.img" "${LB_BOOTAPPEND_LIVE_FAILSAFE}" + fi + + done + + ;; + esac + #fi +fi +LINUX_LIVE="$(/bin/echo ${LINUX_LIVE} | sed -e 's|binary||g' -e 's|//|/|g')" + +# Assembling memtest configuration +if [ -f "${DESTDIR_LIVE}"/memtest ] +then + MEMTEST="#\t \"Other\"\n" + MEMTEST="${MEMTEST}\nmenuentry\t\"${LB_MEMTEST}\" {\nlinux16\t${INITFS}/memtest\n}" + MEMTEST="$(/bin/echo ${MEMTEST} | sed -e 's|//|/|g')" +fi + +# Copying templates +mkdir -p binary/boot/grub +cp "${_SOURCE}"/grub.cfg binary/boot/grub/loopback.cfg + +sed -i -e "s|LINUX_LIVE|${LINUX_LIVE}|" -e "s|LINUX_INSTALL||" -e "s|MEMTEST|${MEMTEST}|" binary/boot/grub/loopback.cfg +sed -i -e "s#LB_BOOTAPPEND_INSTALL##" -e "s#LB_BOOTAPPEND_LIVE#${LB_BOOTAPPEND_LIVE}#" binary/boot/grub/loopback.cfg + +sed -i -e 's|\ $||g' binary/boot/grub/loopback.cfg + +# Creating stage file +Create_stagefile .build/binary_loopback_cfg diff --git a/system-build/scripts/build/binary_manifest b/system-build/scripts/build/binary_manifest new file mode 100755 index 0000000..55c6520 --- /dev/null +++ b/system-build/scripts/build/binary_manifest @@ -0,0 +1,68 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'create manifest')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_CHROOT_FILESYSTEM}" = "none" ] +then + exit 0 +fi + +Echo_message "Begin creating manifest..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_manifest + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +case "${LB_INITRAMFS}" in + system-boot) + INITFS="live" + SUFFIX="packages" + ;; + + *) + INITFS="boot" + SUFFIX="packages" + ;; +esac + +# Add filesystem.packages +cp chroot.packages.live "binary/${INITFS}/filesystem.${SUFFIX}" +echo "$(diff chroot.packages.live chroot.packages.install | awk '/^< / { print $2 }')" \ + > "binary/${INITFS}/filesystem.${SUFFIX}-remove" + +cp chroot.packages.live ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.packages + +cp chroot.files ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.files + +# Creating stage file +Create_stagefile .build/binary_manifest diff --git a/system-build/scripts/build/binary_memtest b/system-build/scripts/build/binary_memtest new file mode 100755 index 0000000..1ce4195 --- /dev/null +++ b/system-build/scripts/build/binary_memtest @@ -0,0 +1,120 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'installs a memtest into binary')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_MEMTEST}" = "false" ] || [ "${LB_MEMTEST}" = "none" ] || [ "${LB_CHROOT_FILESYSTEM}" = "none" ] +then + exit 0 +fi + +Echo_message "Begin installing memtest..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_memtest + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +if [ "${LB_ARCHITECTURES}" != "amd64" ] && [ "${LB_ARCHITECTURES}" != "i386" ] +then + Echo_warning "skipping binary_memtest, foreign architecture." + exit 0 +fi + +if [ "${LB_BUILD_WITH_CHROOT}" = "true" ] +then + + if [ -f chroot/usr/sbin/grub ] && [ ! -f chroot/boot/grub/menu.lst ] + then + GRUB="yes" + + mkdir -p chroot/boot/grub + touch chroot/boot/grub/menu.lst + fi +fi + +# Checking depends +case "${LB_MEMTEST}" in + memtest86) + Check_package chroot /boot/memtest86.bin memtest86 + ;; + + memtest86+) + Check_package chroot /boot/memtest86+.bin memtest86+ + ;; +esac + +# Restoring cache +Restore_cache cache/packages.binary + +# Installing depends +Install_package + +# Setting destination directory +case "${LB_INITRAMFS}" in + system-boot) + DESTDIR="binary/live" + ;; + + *) + DESTDIR="binary/boot" + ;; +esac + +Check_multiarchitectures + +# Creating directory +mkdir -p "${DESTDIR}" + +# Installing memtest +case "${LB_BUILD_WITH_CHROOT}" in + true) + cp chroot/boot/${LB_MEMTEST}.bin "${DESTDIR}"/memtest + ;; + + false) + cp /boot/${LB_MEMTEST}.bin "${DESTDIR}"/memtest + ;; +esac + +# Saving cache +Save_cache cache/packages.binary + +# Removing depends +Remove_package + +if [ "${GRUB}" ] +then + rm -rf chroot/boot/grub +fi + +# Creating stage file +Create_stagefile .build/binary_memtest diff --git a/system-build/scripts/build/binary_netboot b/system-build/scripts/build/binary_netboot new file mode 100755 index 0000000..d8cfe51 --- /dev/null +++ b/system-build/scripts/build/binary_netboot @@ -0,0 +1,113 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'build netboot binary image')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if ! In_list netboot "${LIVE_IMAGE_TYPE}" +then + exit 0 +fi + +if [ "${LB_NET_TARBALL}" = "false" ] +then + exit 0 +fi + +Echo_message "Begin building binary netboot image..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_netboot + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Remove old binary +rm -f ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar.gz ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar.bz2 ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar.xz ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar.xz + +# Creating image file +ROOT_DIR=$(basename ${LB_NET_ROOT_PATH}) + +if [ "${ROOT_DIR}" = "chroot" ] +then + mv chroot chroot.tmp +fi + +if [ "${ROOT_DIR}" != "binary" ] +then + mv binary ${ROOT_DIR} +fi + +mkdir binary.tmp +mv ${ROOT_DIR} tftpboot binary.tmp +cd binary.tmp + +# Moving kernel and initrd image arround +mkdir tftpboot/live +mv */live/vmlinuz* */live/initrd* tftpboot/live + +tar cf ../${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar * + +case "${LB_COMPRESSION}" in + bzip2) + bzip2 ${BZIP2_OPTIONS} ../${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar + ;; + + gzip) + gzip ${GZIP_OPTIONS} ../${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar + ;; + + lzip) + lzip ${LZIP_OPTIONS} ../${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar + ;; + + xz) + xz ${XZ_OPTIONS} ../${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar + ;; + + none) + ;; +esac + +mv * ../ +cd "${OLDPWD}" +rmdir binary.tmp + +if [ "${ROOT_DIR}" != "binary" ] +then + mv ${ROOT_DIR} binary +fi + +if [ "${ROOT_DIR}" = "chroot" ] +then + mv chroot.tmp chroot +fi + +# Creating stage file +Create_stagefile .build/binary_netboot diff --git a/system-build/scripts/build/binary_package-lists b/system-build/scripts/build/binary_package-lists new file mode 100755 index 0000000..fc47154 --- /dev/null +++ b/system-build/scripts/build/binary_package-lists @@ -0,0 +1,178 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'install local packages into binary')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +Echo_message "Begin installing local package lists..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_package-lists + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +case "${LB_MODE}" in + progress-linux) + DISTS="installer/dists" + POOL="installer/pool" + ;; + + *) + DISTS="dists" + POOL="pool" + ;; +esac + +if ls config/package-lists/*.list > /dev/null 2>&1 || \ + ls config/package-lists/*.list.binary > /dev/null 2>&1 +then + # Check depends + Check_package host /usr/bin/apt-ftparchive apt-utils + + case "${LB_BUILD_WITH_CHROOT}" in + true) + # Restoring cache + Restore_cache cache/packages.chroot + + # Check depends + Check_package chroot /usr/bin/grep-aptavail dctrl-tools + + # Installing depends + Install_package + ;; + + false) + Check_package host /usr/bin/grep-aptavail dctrl-tools + ;; + esac + + if [ -e "${LIVE_BUILD}/share/bin/Packages" ] + then + cp "${LIVE_BUILD}/share/bin/Packages" chroot/bin + else + cp /usr/share/live/build/bin/Packages chroot/bin + fi + + mkdir -p chroot/binary.deb/archives/partial + mv chroot/var/lib/dpkg/status chroot/var/lib/dpkg/status.tmp + touch chroot/var/lib/dpkg/status + + for LIST in config/package-lists/*.list \ + config/package-lists/*.list.binary + do + if [ -e "${LIST}" ] + then + # Generate package list + Expand_packagelist "${LIST}" "config/package-lists" > chroot/root/"$(basename ${LIST})" + + # Downloading additional packages + Chroot chroot "xargs --no-run-if-empty --arg-file=/root/$(basename ${LIST}) apt-get ${APT_OPTIONS} -o Dir::Cache=/binary.deb --download-only install" + + # Remove package list + rm chroot/root/"$(basename ${LIST})" + fi + done + + for FILE in chroot/binary.deb/archives/*.deb + do + if [ ! -e ${FILE} ]; then + break # Do nothing if the package lists were empty... + fi + + SOURCE="$(dpkg -f ${FILE} Source | awk '{ print $1 }')" + SECTION="$(dpkg -f ${FILE} Section | awk '{ print $1 }')" + + if [ -z "${SOURCE}" ] + then + SOURCE="$(basename ${FILE} | awk -F_ '{ print $1 }')" + fi + + case "${SOURCE}" in + lib?*) + LETTER="$(echo ${SOURCE} | sed 's|\(....\).*|\1|')" + ;; + + *) + LETTER="$(echo ${SOURCE} | sed 's|\(.\).*|\1|')" + ;; + esac + + if echo "${SECTION}" | grep -qs contrib + then + SECTION="contrib" + elif echo "${SECTION}" | grep -qs non-free + then + SECTION="non-free" + else + SECTION="main" + fi + + # Install directory + mkdir -p binary/${POOL}/${SECTION}/"${LETTER}"/"${SOURCE}" + + # Move files + mv "${FILE}" binary/${POOL}/${SECTION}/"${LETTER}"/"${SOURCE}" + done + + cd binary + + for SECTION in ${POOL}/* + do + if [ ! -d "${SECTION}" ]; then + break # Do nothing if the package lists were empty... + fi + + SECTION="$(basename ${SECTION})" + + mkdir -p ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURES} + apt-ftparchive packages ${POOL}/${SECTION} > ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURES}/Packages + gzip -9 -c ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURES}/Packages > ${DISTS}/${LB_PARENT_DISTRIBUTION}/${SECTION}/binary-${LB_ARCHITECTURES}/Packages.gz + done + + cd "${OLDPWD}" + + rm -f chroot/bin/Packages + + rm -rf chroot/binary.deb + mv chroot/var/lib/dpkg/status.tmp chroot/var/lib/dpkg/status + + case "${LB_BUILD_WITH_CHROOT}" in + true) + # Removing depends + Remove_package + + # Saving cache + Save_cache cache/packages.chroot + ;; + esac + + # Creating stage file + Create_stagefile .build/binary_package-lists +fi diff --git a/system-build/scripts/build/binary_rootfs b/system-build/scripts/build/binary_rootfs new file mode 100755 index 0000000..f230d17 --- /dev/null +++ b/system-build/scripts/build/binary_rootfs @@ -0,0 +1,462 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'build rootfs image')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +Echo_message "Begin building root filesystem image..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap .build/binary_chroot + +# Checking stage file +Check_stagefile .build/binary_rootfs + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +case "${LB_ARCHITECTURES}" in + amd64|i386) + LINUX="vmlinuz" + ;; + + powerpc) + LINUX="vmlinux" + ;; +esac + +case "${LB_INITRAMFS}" in + system-boot) + INITFS="live" + ;; + + *) + INITFS="boot" + ;; +esac + +# Creating directory +mkdir -p binary/${INITFS} + +for STAGE in ${LB_CACHE_STAGES} +do + if [ "${STAGE}" = "rootfs" ] && [ -d cache/binary_rootfs ] + then + # Removing old chroot + rm -rf binary/"${INITFS}"/filesystem.* + + # Restoring old cache + mkdir -p binary/"${INITFS}" + cp -a cache/binary_rootfs/filesystem.* binary/"${INITFS}" + + # Creating stage file + Create_stagefile .build/binary_rootfs + exit 0 + fi +done + +case "${LB_CHROOT_FILESYSTEM}" in + ext2|ext3|ext4) + # Checking depends + Check_package chroot /sbin/mkfs.${LB_CHROOT_FILESYSTEM} e2fsprogs + + # Restoring cache + Restore_cache cache/packages.binary + + # Installing depends + Install_package + + # Remove old image + if [ -f binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM} ] + then + rm -f binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM} + fi + + case "${LB_BUILD_WITH_CHROOT}" in + true) + DU_DIM="$(du -ms chroot/chroot | cut -f1)" + INODES="$(find chroot/chroot | wc -l)" + ;; + + false) + DU_DIM="$(du -ms chroot | cut -f1)" + INODES="$(find chroot | wc -l)" + ;; + esac + + REAL_DIM="$(Calculate_partition_size ${DU_DIM} ${LB_CHROOT_FILESYSTEM})" + REAL_INODES="$(Calculate_partition_size ${INODES} ${LB_CHROOT_FILESYSTEM})" + + case "${LB_BUILD_WITH_CHROOT}" in + true) + dd if=/dev/zero of=chroot/filesystem.${LB_CHROOT_FILESYSTEM} bs=1024k count=0 seek=${REAL_DIM} + + if ! Chroot chroot "test -s /etc/mtab" + then + Chroot chroot "ln -s /proc/mounts/mtab /etc/mtab" + FAKE_MTAB="true" + fi + + Chroot chroot "mkfs.${LB_CHROOT_FILESYSTEM} -F -b 1024 -N ${REAL_INODES} -m 0 filesystem.${LB_CHROOT_FILESYSTEM}" + + mkdir -p filesystem.tmp + mount -o loop chroot/filesystem.${LB_CHROOT_FILESYSTEM} filesystem.tmp + cp -a chroot/chroot/* filesystem.tmp + + if [ "${FAKE_MTAB}" = "true" ] + then + Chroot chroot "rm -f /etc/mtab" + fi + + umount filesystem.tmp + rmdir filesystem.tmp + + # Move image + mv chroot/filesystem.${LB_CHROOT_FILESYSTEM} binary/${INITFS} + + du -B 1 -s chroot/chroot | cut -f1 > binary/${INITFS}/filesystem.size + + if [ -e chroot/chroot.cache ] + then + rm -f .lock + mv chroot/chroot chroot.tmp + + lb chroot_archives binary remove ${@} + lb chroot_apt remove ${@} + lb chroot_hostname remove ${@} + lb chroot_resolv remove ${@} + lb chroot_hosts remove ${@} + lb chroot_sysv-rc remove ${@} + lb chroot_dpkg remove ${@} + lb chroot_debianchroot remove ${@} + lb chroot_sysfs remove ${@} + lb chroot_selinuxfs remove ${@} + lb chroot_proc remove ${@} + lb chroot_devpts remove ${@} + + rm -rf chroot + mv chroot.tmp chroot + + lb chroot_devpts install ${@} + lb chroot_proc install ${@} + lb chroot_selinuxfs install ${@} + lb chroot_sysfs install ${@} + lb chroot_debianchroot install ${@} + lb chroot_dpkg install ${@} + lb chroot_sysv-rc install ${@} + lb chroot_hosts install ${@} + lb chroot_resolv install ${@} + lb chroot_hostname install ${@} + lb chroot_apt install ${@} + lb chroot_archives binary install ${@} + + touch .lock + else + rm -rf chroot/chroot + + # Removing depends + Remove_package + fi + ;; + + false) + dd if=/dev/zero of=binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM} bs=1024k count=0 seek=${REAL_DIM} + mkfs.${LB_CHROOT_FILESYSTEM} -F -b 1024 -N ${REAL_INODES} -m 0 binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM} + + mkdir -p filesystem.tmp + mount -o loop binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM} filesystem.tmp + cp -a chroot/* filesystem.tmp + + umount filesystem.tmp + rmdir filesystem.tmp + ;; + esac + + # Saving cache + Save_cache cache/packages.binary + ;; + + jffs2) + # Checking depends + Check_package chroot /usr/sbin/mkfs.jffs2 mtd-tools + + # Restoring cache + Restore_cache cache/packages.binary + + # Installing depends + Install_package + + # Remove old jffs2 image + if [ -f binary/${INITFS}/filesystem.jffs2 ] + then + rm -f binary/${INITFS}/filesystem.jffs2 + fi + + if [ -n "${LB_JFFS2_ERASEBLOCK}" ] + then + JFFS2_OPTIONS="--eraseblock=${LB_JFFS2_ERASEBLOCK}" + fi + + case "${LB_BUILD_WITH_CHROOT}" in + true) + Chroot chroot "mkfs.jffs2 ${JFFS2_OPTIONS} --root=chroot --output filesystem.jffs2" + + # Move image + mv chroot/filesystem.jffs2 binary/${INITFS} + + if [ -e chroot/chroot.cache ] + then + rm -f .lock + mv chroot/chroot chroot.tmp + + lb chroot_archives binary remove ${@} + lb chroot_apt remove ${@} + lb chroot_hostname remove ${@} + lb chroot_resolv remove ${@} + lb chroot_hosts remove ${@} + lb chroot_sysv-rc remove ${@} + lb chroot_dpkg remove ${@} + lb chroot_debianchroot remove ${@} + lb chroot_sysfs remove ${@} + lb chroot_selinuxfs remove ${@} + lb chroot_proc remove ${@} + lb chroot_devpts remove ${@} + + rm -rf chroot + mv chroot.tmp chroot + + lb chroot_devpts install ${@} + lb chroot_proc install ${@} + lb chroot_selinuxfs install ${@} + lb chroot_sysfs install ${@} + lb chroot_debianchroot install ${@} + lb chroot_dpkg install ${@} + lb chroot_sysv-rc install ${@} + lb chroot_hosts install ${@} + lb chroot_resolv install ${@} + lb chroot_hostname install ${@} + lb chroot_apt install ${@} + lb chroot_archives binary install ${@} + + touch .lock + else + rm -rf chroot/chroot + + # Removing depends + Remove_package + fi + ;; + + false) + mkfs.jffs2 ${JFFS2_OPTIONS} --root=chroot --output binary/${INITFS}/filesystem.jffs2 + ;; + esac + + # Saving cache + Save_cache cache/packages.binary + ;; + + plain) + if [ -d binary/${INITFS}/filesystem.dir ] + then + rm -rf binary/${INITFS}/filesystem.dir + fi + + case "${LB_BUILD_WITH_CHROOT}" in + true) + mv chroot/chroot binary/${INITFS}/filesystem.dir + ;; + + false) + cp -a chroot binary/${INITFS}/filesystem.dir + ;; + esac + ;; + + squashfs) + # Checking depends + Check_package chroot /usr/share/doc/squashfs-tools squashfs-tools + + # Restoring cache + Restore_cache cache/packages.binary + + # Installing depends + Install_package + + Echo_message "Preparing squashfs image..." + Echo_message "This may take a while." + + # Remove old squashfs image + if [ -f binary/${INITFS}/filesystem.squashfs ] + then + rm -f binary/${INITFS}/filesystem.squashfs + fi + + # Remove stale squashfs image + rm -f chroot/filesystem.squashfs + + MKSQUASHFS_OPTIONS="${MKSQUASHFS_OPTIONS} -no-progress" + + if [ "${_VERBOSE}" = "true" ] + then + MKSQUASHFS_OPTIONS="${MKSQUASHFS_OPTIONS} -info" + fi + + if [ -f config/rootfs/squashfs.sort ] + then + MKSQUASHFS_OPTIONS="${MKSQUASHFS_OPTIONS} -sort squashfs.sort" + + case "${LB_BUILD_WITH_CHROOT}" in + true) + cp config/rootfs/squashfs.sort chroot + ;; + + false) + cp config/rootfs/squashfs.sort . + ;; + esac + fi + + MKSQUASHFS_OPTIONS="${MKSQUASHFS_OPTIONS} -comp xz" + + case "${LB_BUILD_WITH_CHROOT}" in + true) + if [ -e config/rootfs/excludes ] + then + cp config/rootfs/excludes chroot/excludes + + MKSQUASHFS_OPTIONS="${MKSQUASHFS_OPTIONS} -wildcards -ef /excludes" + fi + + # Create image + Chroot chroot "mksquashfs chroot filesystem.squashfs ${MKSQUASHFS_OPTIONS}" + + rm -f chroot/chroot/excludes + + du -B 1 -s chroot/chroot | cut -f1 > binary/${INITFS}/filesystem.size + + # Move image + mv chroot/filesystem.squashfs binary/${INITFS} + rm -f chroot/squashfs.sort + + if [ -e chroot/chroot.cache ] + then + rm -f .lock + mv chroot/chroot chroot.tmp + + lb chroot_archives binary remove ${@} + lb chroot_apt remove ${@} + lb chroot_hostname remove ${@} + lb chroot_resolv remove ${@} + lb chroot_hosts remove ${@} + lb chroot_sysv-rc remove ${@} + lb chroot_dpkg remove ${@} + lb chroot_debianchroot remove ${@} + lb chroot_sysfs remove ${@} + lb chroot_selinuxfs remove ${@} + lb chroot_proc remove ${@} + lb chroot_devpts remove ${@} + + rm -rf chroot + mv chroot.tmp chroot + + lb chroot_devpts install ${@} + lb chroot_proc install ${@} + lb chroot_selinuxfs install ${@} + lb chroot_sysfs install ${@} + lb chroot_debianchroot install ${@} + lb chroot_dpkg install ${@} + lb chroot_sysv-rc install ${@} + lb chroot_hosts install ${@} + lb chroot_resolv install ${@} + lb chroot_hostname install ${@} + lb chroot_apt install ${@} + lb chroot_archives binary install ${@} + + touch .lock + else + rm -rf chroot/chroot + + # Removing depends + Remove_package + fi + + chmod 0644 binary/${INITFS}/filesystem.squashfs + ;; + + false) + if [ -e config/rootfs/excludes ] + then + MKSQUASHFS_OPTIONS="${MKSQUASHFS_OPTIONS} -wildcards -ef config/rootfs/excludes" + fi + + mksquashfs chroot binary/${INITFS}/filesystem.squashfs ${MKSQUASHFS_OPTIONS} + + du -B 1 -s chroot | cut -f1 > binary/${INITFS}/filesystem.size + ;; + esac + + # Saving cache + Save_cache cache/packages.binary + ;; + + none) + if [ -d binary ] + then + rm -rf binary + fi + + case "${LB_BUILD_WITH_CHROOT}" in + true) + mv chroot/chroot binary + ;; + + false) + Echo_message "This may take a while." + cp -a chroot binary + ;; + esac + ;; + +esac + +for STAGE in ${LB_CACHE_STAGES} +do + if [ "${STAGE}" = "rootfs" ] + then + rm -rf cache/binary_rootfs + + mkdir -p cache/binary_rootfs + + if [ "${LB_CHROOT_FILESYSTEM}" != "none" ] + then + cp -a binary/"${INITFS}"/filesystem.* cache/binary_rootfs + fi + fi +done + +# Creating stage file +Create_stagefile .build/binary_rootfs diff --git a/system-build/scripts/build/binary_syslinux b/system-build/scripts/build/binary_syslinux new file mode 100755 index 0000000..3224d21 --- /dev/null +++ b/system-build/scripts/build/binary_syslinux @@ -0,0 +1,349 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'installs syslinux into binary')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +FOUND_MYSELF="" +OLDIFS="$IFS" +IFS="," +for BOOTLOADER in ${LB_BOOTLOADERS} +do + + case ${BOOTLOADER} in + "syslinux" ) + FOUND_MYSELF="True" + break ;; + esac + +done +IFS="$OLDIFS" + +if [ -z ${FOUND_MYSELF} ] ; then + exit 0 +fi + +Echo_message "Begin installing syslinux..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_syslinux + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Check architecture +Check_architectures amd64 i386 +Check_crossarchitectures + +case "${LB_INITRAMFS}" in + *) + _INITRAMFS="live" + ;; +esac + +# Assembling image specifics +case "${LIVE_IMAGE_TYPE}" in + iso*) + _BOOTLOADER="isolinux" + + case "${LB_MODE}" in + progress-linux) + _TARGET="binary/boot" + ;; + + *) + _TARGET="binary/isolinux" + ;; + esac + ;; + + netboot) + _BOOTLOADER="pxelinux" + _TARGET="tftpboot" + ;; + + hdd*|*) + case ${LB_BINARY_FILESYSTEM} in + fat*|ntfs) + _BOOTLOADER=syslinux + + case "${LB_MODE}" in + progress-linux) + _TARGET="binary/boot" + ;; + + *) + _TARGET="binary/syslinux" + ;; + esac + ;; + + ext[234]|btrfs) + _BOOTLOADER=extlinux + _TARGET="binary/boot/extlinux" + ;; + *) + Echo_error "syslinux/extlinux doesn't support ${LB_BINARY_FILESYSTEM}" + exit 1 + ;; + esac + ;; +esac + +if [ -e "config/bootloaders/${_BOOTLOADER}" ] +then + # Internal local copy + _SOURCE="config/bootloaders/${_BOOTLOADER}" +else + # Internal system copy + if [ -n "${LIVE_BUILD}" ] + then + _SOURCE="${LIVE_BUILD}/share/bootloaders/${_BOOTLOADER}" + else + _SOURCE="/usr/share/live/build/bootloaders/${_BOOTLOADER}" + fi +fi + +# Checking depends +case "${LB_BUILD_WITH_CHROOT}" in + true) + Check_package chroot /usr/lib/$(echo ${_BOOTLOADER} | tr [a-z] [A-Z]) ${_BOOTLOADER} + Check_package chroot /usr/lib/syslinux syslinux-common + + if ls "${_SOURCE}"/*.svg* > /dev/null 2>&1 + then + Check_package chroot /usr/bin/rsvg-convert librsvg2-bin + fi + ;; + + false) + if [ ! -e "/usr/share/$(echo ${_BOOTLOADER} | tr [a-z] [A-Z])" ] + then + Echo_error "/usr/share/$(echo ${_BOOTLOADER} | tr [a-z] [A-Z])" + exit 1 + fi + + if [ ! -e /usr/lib/syslinux ] + then + # syslinux-common + Echo_error "/usr/lib/syslinux - no such directory" + exit 1 + fi + + if ls "${_SOURCE}"/*.svg* > /dev/null 2>&1 + then + if [ ! -e /usr/bin/rsvg-convert ] + then + # librsvg2-bin + Echo_error "/usr/bin/rsvg-convert - no such file" + exit 1 + fi + fi + ;; +esac + +# Restoring cache +Restore_cache cache/packages.binary + +# Installing depends +Install_package + +# Copying files +case "${LB_BUILD_WITH_CHROOT}" in + true) + mkdir -p ${_TARGET} + + # Copy in two steps since the theme can have absolute symlinks and would therefore not be dereferenced correctly + cp -a ${_SOURCE} chroot/root + Chroot chroot cp -aL /root/$(basename ${_SOURCE}) /root/$(basename ${_SOURCE}).tmp > /dev/null 2>&1 || true + cp -a chroot/root/$(basename ${_SOURCE}).tmp/* ${_TARGET} + rm -rf chroot/root/$(basename ${_SOURCE}) chroot/root/$(basename ${_SOURCE}).tmp + ;; + + false) + mkdir -p ${_TARGET} + + cp -aL ${_SOURCE}/* ${_TARGET} > /dev/null 2>&1 || true + ;; +esac + +# Configuring files +if [ -e "${_TARGET}/live.cfg.in" ] +then + # This is all rather suboptimal.. needs prettifying at some point + _FLAVOURS="$(echo ${LB_LINUX_FLAVOURS} | wc -w)" + + case "${_FLAVOURS}" in + 1) + # If multiple initrd images are being generated (by DKMS packages, etc), + # we likely only want the latest version. + mv $(ls -r1 --sort=version binary/${_INITRAMFS}/vmlinuz-* | head -n 1) binary/${_INITRAMFS}/vmlinuz + mv $(ls -r1 --sort=version binary/${_INITRAMFS}/initrd.img-* | head -n 1) binary/${_INITRAMFS}/initrd.img + + sed -e "s|@FLAVOUR@|${LB_LINUX_FLAVOURS}|g" \ + -e "s|@LINUX@|/${_INITRAMFS}/vmlinuz|g" \ + -e "s|@INITRD@|/${_INITRAMFS}/initrd.img|g" \ + "${_TARGET}/live.cfg.in" >> "${_TARGET}/live.cfg" + + rm -f "${_TARGET}/live.cfg.in" + ;; + + *) + _NUMBER="0" + + for _FLAVOUR in ${LB_LINUX_FLAVOURS} + do + _NUMBER="$((${_NUMBER} + 1))" + + mv binary/${_INITRAMFS}/vmlinuz-*-${_FLAVOUR} binary/${_INITRAMFS}/vmlinuz${_NUMBER} + mv binary/${_INITRAMFS}/initrd.img-*-${_FLAVOUR} binary/${_INITRAMFS}/initrd${_NUMBER}.img + + if [ "${_NUMBER}" -gt 1 ] + then + echo "" >> "${_TARGET}/live.cfg" + grep -v 'menu default' "${_TARGET}/live.cfg.in" >> "${_TARGET}/live.cfg" + else + cat "${_TARGET}/live.cfg.in" >> "${_TARGET}/live.cfg" + fi + + sed -i -e "s|@FLAVOUR@|${_FLAVOUR}|g" \ + -e "s|@LINUX@|/${_INITRAMFS}/vmlinuz${_NUMBER}|g" \ + -e "s|@INITRD@|/${_INITRAMFS}/initrd${_NUMBER}.img|g" \ + "${_TARGET}/live.cfg" + done + + rm -f "${_TARGET}/live.cfg.in" + ;; + esac +fi + +if [ -e chroot/etc/os-release ] +then + _VERSION="$(. chroot/etc/os-release && echo ${VERSION_ID})" +fi + +_VERSION="${_VERSION:-none}" + +_DISTRIBUTION="${LB_DISTRIBUTION}" +_ARCHITECTURE="${LB_ARCHITECTURES}" + +_DATE=$(date -R) +_YEAR="$(date +%Y)" +_MONTH="$(date +%m)" +_DAY="$(date +%d)" +_HOUR="$(date +%H)" +_MINUTE="$(date +%M)" +_SECOND="$(date +%S)" + +_LINUX_VERSIONS="$(for _LINUX in chroot/boot/vmlinuz-* ; do chroot chroot apt-cache policy $(basename ${_LINUX} | sed -e 's|vmlinuz-|linux-image-|') | awk '/Installed: / { print $2 }' ; done | sort -Vru | tr "\n" " ")" + +_SYSTEM_BUILD_VERSION="$(lb --version)" +_SYSTEM_BOOT_VERSION="$(chroot chroot apt-cache policy open-infrastructure-system-boot | awk '/Installed: / { print $2 }')" +_SYSTEM_CONFIG_VERSION="$(chroot chroot apt-cache policy open-infrastructure-system-config | awk '/Installed: / { print $2 }')" + +case "${LB_MODE}" in + progress-linux) + _PROJECT="Progress Linux" + ;; + + *) + _PROJECT="Debian GNU/Linux" + ;; +esac + +for _FILE in "${_TARGET}"/*.cfg ${_TARGET}/*.svg +do + if [ -e "${_FILE}" ] && [ ! -d "${_FILE}" ] + then + sed -i -e "s#@APPEND_LIVE@#${LB_BOOTAPPEND_LIVE}#g" \ + -e "s#@APPEND_LIVE_FAILSAFE@#${LB_BOOTAPPEND_LIVE_FAILSAFE}#g" \ + -e "s#@APPEND_INSTALL@#${LB_BOOTAPPEND_INSTALL}#g" \ + -e "s#@APPEND_INSTALL_FAILSAFE@#${LB_BOOTAPPEND_INSTALL_FAILSAFE}#g" \ + -e "s|@PROJECT@|${_PROJECT}|g" \ + -e "s|@DISTRIBUTION@|${_DISTRIBUTION}|g" \ + -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ + -e "s|@VERSION@|${_VERSION}|g" \ + -e "s|@ARCHITECTURE@|${_ARCHITECTURE}|g" \ + -e "s|@DATE@|${_DATE}|g" \ + -e "s|@YEAR@|${_YEAR}|g" \ + -e "s|@MONTH@|${_MONTH}|g" \ + -e "s|@DAY@|${_DAY}|g" \ + -e "s|@HOUR@|${_HOUR}|g" \ + -e "s|@MINUTE@|${_MINUTE}|g" \ + -e "s|@SECOND@|${_SECOND}|g" \ + -e "s|@LINUX_VERSIONS@|${_LINUX_VERSIONS}|g" \ + -e "s|@SYSTEM_BUILD_VERSION@|${_SYSTEM_BUILD_VERSION}|g" \ + -e "s|@SYSTEM_BOOT_VERSION@|${_SYSTEM_BOOT_VERSION}|g" \ + -e "s|@SYSTEM_CONFIG_VERSION@|${_SYSTEM_CONFIG_VERSION}|g" \ + "${_FILE}" + fi +done + +if [ -e "${_TARGET}/splash.svg" ] +then + case "${LB_BUILD_WITH_CHROOT}" in + true) + cp "${_TARGET}/splash.svg" chroot + Chroot chroot "rsvg-convert --format png --height 480 --width 640 splash.svg -o splash.png" + mv chroot/splash.png "${_TARGET}" + rm -f chroot/splash.svg + ;; + + false) + rsvg-convert --format png --height 480 --width 640 "${_TARGET}/splash.svg" -o "${_TARGET}/splash.png" + ;; + esac + + rm -f "${_TARGET}/splash.svg" +fi + +case "${LB_MODE}" in + progress-linux) + for _FILE in "${_TARGET}/isolinux.bin" "${_TARGET}/isolinux.cfg" "${_TARGET}/syslinux.cfg" + do + if [ -e "${_FILE}" ] + then + mv "${_FILE}" "${_TARGET}/$(echo ${_FILE} | sed -e 's|.*linux|boot|')" + fi + done + ;; +esac + +case "${LB_BUILD_WITH_CHROOT}" in + true) + # Saving cache + Save_cache cache/packages.binary + + # Removing depends + Remove_package + ;; +esac + +# Creating stage file +Create_stagefile .build/binary_syslinux diff --git a/system-build/scripts/build/binary_tar b/system-build/scripts/build/binary_tar new file mode 100755 index 0000000..2200586 --- /dev/null +++ b/system-build/scripts/build/binary_tar @@ -0,0 +1,73 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'build binary tarball')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if ! In_list tar "${LIVE_IMAGE_TYPE}" +then + exit 0 +fi + +Echo_message "Begin building binary tarball..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_tar + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Remove old binary +rm -f ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.bz2 ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.gz ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.lz ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar + +tar cf ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.tar binary + +case "${LB_COMPRESSION}" in + bzip2) + bzip2 ${BZIP2_OPTIONS} ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.tar + ;; + + gzip) + gzip ${GZIP_OPTIONS} ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.tar + ;; + + lzip) + lzip ${LZIP_OPTIONS} ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.tar + ;; + + xz) + xz ${XZ_OPTIONS} ${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar.tar + ;; + + none) + ;; +esac + +# Creating stage file +Create_stagefile .build/binary_tar diff --git a/system-build/scripts/build/binary_win32-loader b/system-build/scripts/build/binary_win32-loader new file mode 100755 index 0000000..b04103a --- /dev/null +++ b/system-build/scripts/build/binary_win32-loader @@ -0,0 +1,135 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'copy win32-loader into binary')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_WIN32_LOADER}" != "true" ] +then + exit 0 +fi + +Echo_message "Begin copying win32-loader..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_win32-loader + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +case "${LB_MODE}" in + progress-linux) + RUN_LABEL="Run Progress Linux" + ;; + + *) + RUN_LABEL="Run Debian GNU/Linux" + ;; +esac + +case "${LB_ARCHITECTURES}" in + amd64|i386) + if [ "${LB_BUILD_WITH_CHROOT}" = "true" ] + then + # Checking depends + Check_package chroot /usr/share/win32/win32-loader.exe win32-loader + + # Restoring cache + Restore_cache cache/packages.binary + + # Installing depends + Install_package + + # Copying win32-loader + cp -r chroot/usr/share/win32/* binary + else + cp -r usr/share/win32/* binary + fi + + mv binary/win32-loader.exe binary/setup.exe + mv binary/win32-loader/g2ldr* binary + rmdir binary/win32-loader > /dev/null 2>&1 || true + +cat > binary/autorun.inf << EOF +[autorun] +open=setup.exe +icon=setup.exe,0 +label=${RUN_LABEL} + +[Content] +MusicFiles=false +PictureFiles=false +VideoFiles=false +EOF + + if [ "${LB_DEBIAN_INSTALLER}" != "false" ] + then + +cat > binary/win32-loader.ini << EOF +[installer] +kernel=linux +arch=${LB_ARCHITECTURES} +default_desktop=gnome +${LB_ARCHITECTURES}/linux=install/vmlinuz +${LB_ARCHITECTURES}/initrd=install/initrd.gz +EOF + + if [ -e binary/install/gtk ] + then + +cat >> binary/win32-loader.ini << EOF +${LB_ARCHITECTURES}/gtk/linux=install/vmlinuz +${LB_ARCHITECTURES}/gtk/initrd=install/gtk/initrd.gz +EOF + + fi + +cat >> binary/win32-loader.ini << EOF + +[grub] +g2ldr=g2ldr +g2ldr.mbr=g2ldr.mbr +EOF + + fi + + # Saving cache + Save_cache cache/packages.binary + + # Removing depends + Remove_package + ;; + + *) + Echo_warning "win32-loader inclusion is set to true but not compatible with your architecture, ignoring." + ;; +esac + +# Creating stage file +Create_stagefile .build/binary_win32-loader diff --git a/system-build/scripts/build/binary_zsync b/system-build/scripts/build/binary_zsync new file mode 100755 index 0000000..83fdb55 --- /dev/null +++ b/system-build/scripts/build/binary_zsync @@ -0,0 +1,130 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'build zsync control files')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LIVE_IMAGE_TYPE}" != "iso" ] && [ "${LIVE_IMAGE_TYPE}" != "iso-hybrid" ] +then + exit 0 +fi + +if [ "${LB_ZSYNC}" != "true" ] +then + exit 0 +fi + +Echo_message "Begin building zsync control files..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/binary_zsync + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Checking depends +Check_package chroot /usr/bin/zsyncmake zsync + +# Restoring cache +Restore_cache cache/packages.binary + +# Installing depends +Install_package + +case "${LIVE_IMAGE_TYPE}" in + iso) + _IMAGES="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.iso" + ;; + + iso-hybrid) + _IMAGES="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.hybrid.iso" + ;; + + hdd) + _IMAGES="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.img" + ;; + + net) + _IMAGES="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.netboot.tar*" + ;; + + tar) + _IMAGES="${LIVE_IMAGE_NAME}-${LB_ARCHITECTURES}.tar*" + ;; +esac + +for _IMAGE in ${_IMAGES} +do + if [ -e "${_IMAGE}" ] + then + case "${LB_BUILD_WITH_CHROOT}" in + true) + mv ${_IMAGE} chroot + Chroot chroot "zsyncmake -C -b 2048 -u ${_IMAGE} ${_IMAGE}" + mv chroot/${_IMAGE} chroot/${_IMAGE}.zsync ./ + ;; + + false) + zsyncmake -C -b 2048 -u "${_IMAGE}" "${_IMAGE}" + ;; + esac + + case "${LB_COMPRESSION}" in + bzip2) + bzip2 ${BZIP2_OPTIONS} ${_IMAGE}.zsync + ;; + + gzip) + gzip ${GZIP_OPTIONS} ${_IMAGE}.zsync + ;; + + lzip) + lzip ${LZIP_OPTIONS} ${_IMAGE}.zsync + ;; + + xz) + xz ${XZ_OPTIONS} ${_IMAGE}.zsync + ;; + + none) + ;; + esac + fi +done + +#CHECKSUMS + +# Saving cache +Save_cache cache/packages.binary + +# Removing depends +Remove_package + +# Creating stage file +Create_stagefile .build/binary_zsync diff --git a/system-build/scripts/build/bootstrap b/system-build/scripts/build/bootstrap new file mode 100755 index 0000000..48f2119 --- /dev/null +++ b/system-build/scripts/build/bootstrap @@ -0,0 +1,71 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Automatically populating config tree +if [ -x auto/config ] && [ ! -e .build/config ] +then + Echo_message "Automatically populating config tree." + lb config +fi + +# Setting static variables +DESCRIPTION="$(Echo 'bootstrap a Debian system')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Setup cleanup function +Setup_cleanup + +# Bootstrapping system +lb bootstrap_cache restore ${@} +lb bootstrap_debootstrap ${@} +lb bootstrap_archive-keys ${@} +lb bootstrap_cache save ${@} + +# Configuring chroot +lb chroot_devpts install ${@} +lb chroot_proc install ${@} +lb chroot_selinuxfs install ${@} +lb chroot_sysfs install ${@} +lb chroot_debianchroot install ${@} +lb chroot_dpkg install ${@} +lb chroot_tmpfs install ${@} +lb chroot_sysv-rc install ${@} +lb chroot_hosts install ${@} +lb chroot_resolv install ${@} +lb chroot_hostname install ${@} +lb chroot_apt install ${@} + +lb bootstrap_archives binary ${@} + +# Deconfiguring chroot +lb chroot_apt remove ${@} +lb chroot_hostname remove ${@} +lb chroot_resolv remove ${@} +lb chroot_hosts remove ${@} +lb chroot_sysv-rc remove ${@} +lb chroot_tmpfs remove ${@} +lb chroot_dpkg remove ${@} +lb chroot_debianchroot remove ${@} +lb chroot_sysfs remove ${@} +lb chroot_selinuxfs remove ${@} +lb chroot_proc remove ${@} +lb chroot_devpts remove ${@} diff --git a/system-build/scripts/build/bootstrap_archive-keys b/system-build/scripts/build/bootstrap_archive-keys new file mode 100755 index 0000000..3f4fd45 --- /dev/null +++ b/system-build/scripts/build/bootstrap_archive-keys @@ -0,0 +1,77 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'bootstrap non-Debian archive-signing-keys')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# TODO: allow verification against user-specified keyring +# For now, we'll only validate against debian-keyring + +# TODO2: use chrooted validation rather than host system based one + +case "${LB_MODE}" in + progress-linux) + case "${LB_DISTRIBUTION}" in + artax*) + _KEYS="artax artax-backports" + ;; + + baureo*) + _KEYS="baureo baureo-backports" + ;; + + cairon*) + _KEYS="cairon cairon-backports" + ;; + esac + + _URL="${LB_MIRROR_CHROOT}/project/pgp" + ;; +esac + +for _KEY in ${_KEYS} +do + Echo_message "Fetching archive-key ${_KEY}..." + + wget -q "${_URL}/archive-key-${_KEY}.asc" -O chroot/key.asc + wget -q "${_URL}/archive-key-${_KEY}.asc.sig" -O chroot/key.asc.sig + + if [ -e /usr/bin/gpgv ] && [ -e /usr/share/keyrings/debian-keyring.gpg ] + then + Echo_message "Verifying archive-key ${_KEY} against debian-keyring..." + + /usr/bin/gpgv --quiet --keyring /usr/share/keyrings/debian-keyring.gpg chroot/key.asc.sig chroot/key.asc > /dev/null 2>&1 || { Echo_error "archive-key ${_KEY} has invalid signature."; return 1;} + else + Echo_warning "Skipping archive-key ${_KEY} verification, either gpgv or debian-keyring not available on host system..." + fi + + Echo_message "Importing archive-key ${_KEY}..." + + Chroot chroot "apt-key add key.asc" + rm -f chroot/key.asc chroot/key.asc.sig +done + +Chroot chroot "apt-get update" + +# Creating stage file +Create_stagefile .build/bootstrap_archive-keys diff --git a/system-build/scripts/build/bootstrap_archives b/system-build/scripts/build/bootstrap_archives new file mode 100755 index 0000000..4e07051 --- /dev/null +++ b/system-build/scripts/build/bootstrap_archives @@ -0,0 +1,273 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'manage /etc/apt/sources.list')" +HELP="" +USAGE="${PROGRAM} [--force]" + +_PASS="${1:-binary}" +if [ -n "${1}" ] +then + shift +fi + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${LB_DERIVATIVE}" in + true) + _PARENT_FILE="sources.list.d/debian.list" + ;; + + false) + _PARENT_FILE="sources.list" + ;; +esac + +Echo_message "Configuring file /etc/apt/sources.list" + +# Checking stage file +Check_stagefile .build/chroot_archives + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Restoring cache +Restore_cache cache/packages.chroot + +# Configure custom sources.list + +if echo "${LB_PARENT_MIRROR_CHROOT}" | grep -q '^file:/' +then + Chroot_bind_path chroot "$(echo ${LB_PARENT_MIRROR_CHROOT} | sed -e 's|file:||')" +fi + +cat > chroot/etc/apt/${_PARENT_FILE} << EOF +deb ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION} ${LB_PARENT_ARCHIVE_AREAS} +EOF + +if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] +then + echo "deb-src ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION} ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} +fi + +if [ "${LB_DERIVATIVE}" = "true" ] +then + rm -f chroot/etc/apt/sources.list.d/${LB_MODE}.list + + _DISTRIBUTION="$(echo ${LB_DISTRIBUTION} | sed -e 's|-backports||')" + + echo "deb ${LB_MIRROR_CHROOT} ${_DISTRIBUTION} ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_CHROOT} ${_DISTRIBUTION} ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi +fi + +if [ "${LB_SECURITY}" = "true" ] +then + case "${LB_MODE}" in + debian|progress-linux) + case "${LB_PARENT_DISTRIBUTION}" in + sid) + + ;; + + *) + echo "deb ${LB_PARENT_MIRROR_CHROOT_SECURITY} ${LB_PARENT_DISTRIBUTION}/updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_PARENT_MIRROR_CHROOT_SECURITY} ${LB_PARENT_DISTRIBUTION}/updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + fi + ;; + esac + + if [ "${LB_MODE}" = progress-linux ] + then + echo "deb ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}-security ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}-security ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + else + if [ "${LB_DERIVATIVE}" = "true" ] + then + echo "deb ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}/updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}/updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + fi + fi + ;; + esac +fi + +if [ "${LB_UPDATES}" = "true" ] +then + echo "deb ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + fi + + if [ "${LB_DERIVATIVE}" = "true" ] + then + echo "deb ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + fi +fi + +if [ "${LB_BACKPORTS}" = "true" ] +then + case "${LB_MODE}" in + debian) + if [ "${LB_PARENT_DISTRIBUTION}" != "sid" ] + then + echo "deb ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-backports ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-backports ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + fi + fi + ;; + esac + + if [ "${LB_DERIVATIVE}" = "true" ] + then + echo "deb ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + fi +fi + +# Adding local apt sources (chroot) +for FILE in config/archives/*.list config/archives/*.list.chroot +do + if [ -e "${FILE}" ] + then + sed -e "s|@DISTRIBUTION@|${LB_DISTRIBUTION}|g" \ + -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ + -e "s|@ARCHIVE_AREAS@|${LB_ARCHIVE_AREAS}|g" \ + -e "s|@PARENT_ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \ + "${FILE}" > "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)" + + if [ "${_PASS}" != "source" ] && [ "${LB_APT_SOURCE_ARCHIVES}" = "false" ] + then + # Strip out source archives + sed "/^deb-src /d" "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)" + fi + fi +done + +# Adding local apt configuration (chroot) +for FILE in config/archives/*.conf config/archives/*.conf.chroot +do + if [ -e "${FILE}" ] + then + cp ${FILE} chroot/etc/apt/apt.conf.d/$(basename ${FILE} .chroot) + fi +done + +# Adding local apt preferences (chroot) +for FILE in config/archives/*.pref config/archives/*.pref.chroot +do + if [ -e "${FILE}" ] + then + cp ${FILE} chroot/etc/apt/preferences.d/$(basename ${FILE} .chroot) + fi +done + +# Check local archive keys +if Find_files config/archives/*.key || \ + Find_files config/archives/*.key.chroot +then + for FILE in config/archives/*.key \ + config/archives/*.key.chroot + do + if [ -e "${FILE}" ] + then + cp ${FILE} chroot/root + Chroot chroot "apt-key add /root/$(basename ${FILE})" + rm -f chroot/root/$(basename ${FILE}) + fi + done +fi + +# Check local keyring packages +if Find_files config/archives/*.deb +then + for PACKAGE in config/archives/*.deb + do + cp ${PACKAGE} chroot/root + Chroot chroot "dpkg -i /root/$(basename ${PACKAGE})" + rm -f chroot/root/$(basename ${PACKAGE}) + done +fi + +# Rebuild apt indices from scratch. +# Due to the fact that apt doesn't understand +# pinning on the fly, we need to manually remove +# the cached indices and rebuild them again. +rm -rf chroot/var/cache/apt/*.bin + +Apt chroot update + +# Installing keyring packages +if [ -n "${LB_KEYRING_PACKAGES}" ] +then + Apt chroot "install ${LB_KEYRING_PACKAGES}" +fi + +rm -rf chroot/var/cache/apt/*.bin + +Apt chroot update + +if [ "${LB_DERIVATIVE}" = "true" ] +then + Apt chroot install apt dpkg +fi + +Apt chroot "upgrade" +Apt chroot "dist-upgrade" + +# Saving cache +Save_cache cache/packages.chroot + +# Creating stage file +Create_stagefile .build/bootstrap_archives diff --git a/system-build/scripts/build/bootstrap_cache b/system-build/scripts/build/bootstrap_cache new file mode 100755 index 0000000..bef9e5e --- /dev/null +++ b/system-build/scripts/build/bootstrap_cache @@ -0,0 +1,86 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'cache bootstrap stage')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Check architecture +Check_crossarchitectures + +for STAGE in ${LB_CACHE_STAGES} +do + if [ "${STAGE}" = "bootstrap" ] + then + case "${1}" in + restore) + Echo_message "Restoring bootstrap stage from cache..." + + # Checking stage file + Check_stagefile .build/bootstrap_cache.restore + + if [ -d cache/bootstrap ] + then + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Removing old chroot + rm -rf chroot + + # Restoring old cache + cp -a cache/bootstrap chroot + + # Creating stage file + Create_stagefile .build/bootstrap_cache.restore + Create_stagefile .build/bootstrap + + exit 0 + fi + ;; + + save) + Echo_message "Saving bootstrap stage to cache..." + + # Checking stage file + Check_stagefile .build/bootstrap_cache.save + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + rm -rf cache/bootstrap + + mkdir -p cache + + cp -a chroot cache/bootstrap + + # Creating stage file + Create_stagefile .build/bootstrap_cache.save + ;; + esac + fi +done diff --git a/system-build/scripts/build/bootstrap_debootstrap b/system-build/scripts/build/bootstrap_debootstrap new file mode 100755 index 0000000..b95475e --- /dev/null +++ b/system-build/scripts/build/bootstrap_debootstrap @@ -0,0 +1,138 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'bootstrap a Debian system with debootstrap(8)')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ ! -x "$(which debootstrap 2>/dev/null)" ] +then + echo "E: debootstrap - command not found" + echo "I: debootstrap can be obtained from http://ftp.debian.org/debian/pool/main/d/debootstrap/" + echo "I: On Debian based systems, debootstrap can be installed with 'apt-get install debootstrap'." + exit 1 +fi + +# Check architecture +Check_crossarchitectures + +Echo_message "Begin bootstrapping system..." + +Check_package chroot bin/debootstrap debootstrap + +# Checking stage file +Check_stagefile .build/bootstrap +Check_stagefile .build/bootstrap_cache.restore + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Creating chroot directory +mkdir -p chroot + +# Setting debootstrap options +if [ -n "${LB_ARCHITECTURES}" ] +then + DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --arch=${LB_ARCHITECTURES}" +fi + +if [ "${LB_ARCHIVE_AREAS}" != "main" ] +then + # Modify archive areas to remove leading/trailing whitespaces and replace other whitepspace with commas + DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --components=$(echo ${LB_ARCHIVE_AREAS} | sed -e 's| |,|g')" +fi + +if [ "${_VERBOSE}" = "true" ] +then + DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --verbose" +fi + +# If LB_APT_SECURE is false, do not check signatures of the Release file +# (requires debootstrap >= 1.0.30) +if [ "${LB_APT_SECURE}" = "false" ] && /usr/sbin/debootstrap --help | grep -qs '\-\-no-check-gpg' +then + DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --no-check-gpg" +fi + +# Include apt-transport-https +if grep -qs '^deb https' config/archives/*.list || + grep -qs '^deb https' config/archives/*.list.* +then + DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --include=apt-transport-https,ca-certificates" +fi + +if [ -x "/usr/sbin/debootstrap" ] +then + if [ "${LB_CACHE_PACKAGES}" = "true" ] + then + if ls cache/packages.bootstrap/*.deb > /dev/null 2>&1 + then + mkdir -p chroot/var/cache/apt/archives + cp cache/packages.bootstrap/*.deb chroot/var/cache/apt/archives + fi + + Echo_breakage "Running debootstrap (download-only)... " + debootstrap ${DEBOOTSTRAP_OPTIONS} --download-only "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}" + + # Removing old cache + rm -f cache/packages.bootstrap/*.deb + + # Saving new cache + mkdir -p cache/packages.bootstrap + cp chroot/var/cache/apt/archives/*.deb cache/packages.bootstrap + fi + + Echo_breakage "Running debootstrap... " + + # Run appropriate bootstrap, i.e. foreign or regular bootstrap + if [ "${LB_BOOTSTRAP_QEMU_ARCHITECTURES}" = "${LB_ARCHITECTURES}" ]; then + + if [ -n "${LB_BOOTSTRAP_QEMU_EXCLUDE}" ] + then + DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS} --exclude=$(echo ${LB_BOOTSTRAP_QEMU_EXCLUDE} | sed 's| *|,|g')" + fi + + Echo_message "Bootstrap will be foreign" + debootstrap ${DEBOOTSTRAP_OPTIONS} --foreign "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}" + + Echo_message "Running debootstrap second stage under QEMU" + cp ${LB_BOOTSTRAP_QEMU_STATIC} chroot/usr/bin + Chroot chroot /bin/sh /debootstrap/debootstrap --second-stage + else + debootstrap ${DEBOOTSTRAP_OPTIONS} "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}" + fi + + # Deconfiguring debootstrap configurations + rm -f chroot/etc/hosts + + # Removing bootstrap cache + rm -f chroot/var/cache/apt/archives/*.deb + + # Creating stage file + Create_stagefile .build/bootstrap +else + Echo_error "Can't process file /usr/bin/debootstrap (FIXME)" + exit 1 +fi diff --git a/system-build/scripts/build/build b/system-build/scripts/build/build new file mode 100755 index 0000000..18971ea --- /dev/null +++ b/system-build/scripts/build/build @@ -0,0 +1,84 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Automatically populating config tree +if [ -x auto/config ] && [ ! -e .build/config ] +then + Echo_message "Automatically populating config tree." + lb config +fi + +# Read meta config +if [ "${1}" != "noauto" ] && [ -x auto/build ] +then + Echo_message "Executing auto/build script." + ./auto/build "${@}" + exit ${?} +fi + +if [ "${1}" = "noauto" ] +then + shift +fi + +# Setting static variables +DESCRIPTION="$(Echo 'build a Debian Live system')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +if [ ! -d config ] +then + Echo_warning "No config/ directory; using defaults for all options" + lb config +fi + +if [ "$(pwd)" = "/" ] +then + Echo_error "Cannot build live image from the root directory (/)" + exit 1 +fi + +if echo $(pwd) | grep -qs " " +then + Echo_error "Cannot build live image from a directory containing spaces" + exit 1 +fi + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Checking defaults +Check_defaults + +Echo_message "live-build ${LIVE_BUILD_VERSION}" +Echo_message "Building config tree for a ${LB_MODE}/${LB_DISTRIBUTION}/${LB_ARCHITECTURES} system" + +# Bootstrapping system +lb bootstrap ${@} + +# Customizing chroot +lb chroot ${@} + +# Building installer images +lb installer ${@} + +# Building binary images +lb binary ${@} + +# Building source images +lb source ${@} diff --git a/system-build/scripts/build/chroot b/system-build/scripts/build/chroot new file mode 100755 index 0000000..d6277e6 --- /dev/null +++ b/system-build/scripts/build/chroot @@ -0,0 +1,92 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Automatically populating config tree +if [ -x auto/config ] && [ ! -e .build/config ] +then + Echo_message "Automatically populating config tree." + lb config +fi + +# Setting static variables +DESCRIPTION="$(Echo 'customize the Debian system')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Setup cleanup function +Setup_cleanup + +# Configuring chroot +lb chroot_cache restore ${@} +lb chroot_devpts install ${@} +lb chroot_proc install ${@} +lb chroot_selinuxfs install ${@} +lb chroot_sysfs install ${@} +lb chroot_debianchroot install ${@} +lb chroot_dpkg install ${@} +lb chroot_tmpfs install ${@} +lb chroot_sysv-rc install ${@} +lb chroot_hosts install ${@} +lb chroot_resolv install ${@} +lb chroot_hostname install ${@} +lb chroot_apt install ${@} +lb chroot_archives chroot install ${@} + +# Customizing chroot +lb chroot_linux-image ${@} +lb chroot_firmware ${@} +lb chroot_preseed ${@} + +for _PASS in install live +do + lb chroot_package-lists ${_PASS} ${@} + lb chroot_install-packages ${_PASS} ${@} + + if [ "${_PASS}" = install ] + then + Chroot chroot "dpkg-query -W" > chroot.packages.install + fi +done + +lb chroot_includes ${@} +lb chroot_hooks ${@} +lb chroot_hacks ${@} +lb chroot_interactive ${@} + +Chroot chroot "dpkg-query -W" > chroot.packages.live + +# Deconfiguring chroot +lb chroot_archives chroot remove ${@} +lb chroot_apt remove ${@} +lb chroot_hostname remove ${@} +lb chroot_resolv remove ${@} +lb chroot_hosts remove ${@} +lb chroot_sysv-rc remove ${@} +lb chroot_tmpfs remove ${@} +lb chroot_dpkg remove ${@} +lb chroot_debianchroot remove ${@} +lb chroot_sysfs remove ${@} +lb chroot_selinuxfs remove ${@} +lb chroot_proc remove ${@} +lb chroot_devpts remove ${@} +lb chroot_cache save ${@} + +Chroot chroot "ls -lR" > chroot.files diff --git a/system-build/scripts/build/chroot_apt b/system-build/scripts/build/chroot_apt new file mode 100755 index 0000000..5f7c2cc --- /dev/null +++ b/system-build/scripts/build/chroot_apt @@ -0,0 +1,315 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'manage /etc/apt/apt.conf')" +HELP="" +USAGE="${PROGRAM} {install|install-binary|remove} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${1}" in + install|install-binary) + Echo_message "Configuring file /etc/apt/apt.conf" + + # Checking stage file + Check_stagefile .build/chroot_apt + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + mkdir -p chroot/etc/apt/apt.conf.d + + # Configuring apt ftp proxy + if [ -n "${LB_APT_FTP_PROXY}" ] + then + echo "Acquire::ftp::Proxy \"${LB_APT_FTP_PROXY}\";" > chroot/etc/apt/apt.conf.d/00ftp-proxy + fi + + # Configuring apt http proxy + if [ -n "${LB_APT_HTTP_PROXY}" ] + then + echo "Acquire::http::Proxy \"${LB_APT_HTTP_PROXY}\";" > chroot/etc/apt/apt.conf.d/00http-proxy + fi + + # Configuring apt pipeline + if [ -n "${LB_APT_PIPELINE}" ] + then + echo "Acquire::http::Pipeline-Depth \"${LB_APT_PIPELINE}\";" > chroot/etc/apt/apt.conf.d/00pipeline + fi + + # Configuring apt recommends + case "${LB_APT_RECOMMENDS}" in + true) + echo "APT::Install-Recommends \"true\";" > chroot/etc/apt/apt.conf.d/00recommends + ;; + + false) + echo "APT::Install-Recommends \"false\";" > chroot/etc/apt/apt.conf.d/00recommends + ;; + esac + + # Configuring apt secure + case "${LB_APT_SECURE}" in + true) + echo "APT::Get::AllowUnauthenticated \"false\";" > chroot/etc/apt/apt.conf.d/00secure + ;; + + false) + echo "APT::Get::AllowUnauthenticated \"true\";" > chroot/etc/apt/apt.conf.d/00secure + ;; + esac + + # Configuring apt config + if [ -f config/apt/apt.conf ] + then + if [ -f chroot/etc/apt/apt.conf ] + then + mv chroot/etc/apt/apt.conf chroot/etc/apt/apt.conf.orig + fi + + cp config/apt/apt.conf chroot/etc/apt/apt.conf + fi + + # Configuring apt preferences + if [ -f config/apt/preferences ] + then + if [ -f chroot/etc/apt/preferences ] + then + mv chroot/etc/apt/preferences chroot/etc/apt/preferences.orig + fi + + cp config/apt/preferences chroot/etc/apt/preferences + fi + + if Find_files config/apt/*.pref + then + for _FILE in config/apt/*.pref + do + if [ -f chroot/etc/apt/preferences.d/$(basename ${_FILE}) ] + then + mv chroot/etc/apt/preferences.d/$(basename ${_FILE}) chroot/etc/apt/preferences.d/$(basename ${_FILE}).orig + fi + + cp -aL ${_FILE} chroot/etc/apt/preferences.d + done + fi + + if Find_files config/packages.chroot/*.deb || Find_files config/packages/*.deb + then + echo >> chroot/etc/apt/preferences + echo "# Added by lb_chroot_apt ${@}" >> chroot/etc/apt/preferences + echo "Package: *" >> chroot/etc/apt/preferences + echo "Pin: release o=config/packages.chroot" >> chroot/etc/apt/preferences + + case "${1}" in + install) + # Ensure local packages have priority + echo "Pin-Priority: 1001" >> chroot/etc/apt/preferences + ;; + + install-binary) + # Ensure local packages are not re-installed during lb_binary + echo "Pin-Priority: 99" >> chroot/etc/apt/preferences + + echo >> chroot/etc/apt/preferences + echo "Package: *" >> chroot/etc/apt/preferences + echo "Pin: release o=debian" >> chroot/etc/apt/preferences + echo "Pin-Priority: 99" >> chroot/etc/apt/preferences + ;; + esac + fi + + case "${LB_MODE}" in + progress-linux) + if [ ! -e chroot/etc/apt/preferences.d/progress-linux.pref ] + then + _DISTRIBUTION="$(echo ${LB_DISTRIBUTION} | sed -e 's|-backports||')" + + _ENABLE_DISTRIBUTIONS="${_DISTRIBUTION}" + _DISABLE_DISTRIBUTIONS="" + + if [ "${LB_SECURITY}" = "true" ] + then + _ENABLE_DISTRIBUTIONS="${_ENABLE_DISTRIBUTIONS} ${_DISTRIBUTION}-security" + fi + + if [ "${LB_UPDATES}" = "true" ] + then + _ENABLE_DISTRIBUTIONS="${_ENABLE_DISTRIBUTIONS} ${_DISTRIBUTION}-updates" + fi + + case "${LB_DISTRIBUTION}" in + *-backports) + if [ "${LB_BACKPORTS}" = "true" ] + then + _ENABLE_DISTRIBUTIONS="${_ENABLE_DISTRIBUTIONS} ${_DISTRIBUTION}-backports" + fi + ;; + + *) + if [ "${LB_BACKPORTS}" = "true" ] + then + _DISABLE_DISTRIBUTIONS="${_DISABLE_DISTRIBUTIONS} ${_DISTRIBUTION}-backports" + fi + ;; + esac + + for _DISTRIBUTION in ${_ENABLE_DISTRIBUTIONS} + do + +cat >> chroot/etc/apt/preferences.d/progress-linux.pref << EOF + +Package: * +Pin: release n=${_DISTRIBUTION} +Pin-Priority: 999 +EOF + + done + + for _DISTRIBUTION in ${_DISABLE_DISTRIBUTIONS} + do + +cat >> chroot/etc/apt/preferences.d/progress-linux.pref << EOF + +#Package: * +#Pin: release n=${_DISTRIBUTION} +#Pin-Priority: 999 +EOF + + done + fi + ;; + esac + + # Creating stage file + Create_stagefile .build/chroot_apt + ;; + + remove) + Echo_message "Deconfiguring file /etc/apt/apt.conf" + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Deconfiguring apt ftp proxy + rm -f chroot/etc/apt/apt.conf.d/00ftp-proxy + + # Deconfiguring apt http proxy + rm -f chroot/etc/apt/apt.conf.d/00http-proxy + + # Deconfiguring apt pipeline + rm -f chroot/etc/apt/apt.conf.d/00pipeline + + # Deconfiguring apt recommends + if [ "${LB_APT_RECOMMENDS}" = "true" ] + then + rm -f chroot/etc/apt/apt.conf.d/00recommends + fi + + # Deconfiguring apt secure + if [ "${LB_APT_SECURE}" = "true" ] + then + rm -f chroot/etc/apt/apt.conf.d/00secure + fi + + # Configuring apt config + if [ -f config/apt/apt.conf ] + then + if [ -f chroot/etc/apt/apt.conf ] + then + mv chroot/etc/apt/apt.conf chroot/etc/apt/apt.conf.orig + fi + + cp config/apt/apt.conf chroot/etc/apt/apt.conf + + if [ -f chroot/etc/apt/apt.conf.orig ] + then + mv chroot/etc/apt/apt.conf.orig chroot/etc/apt/apt.conf + fi + fi + + # Deconfiguring apt preferences + if [ -f config/apt/preferences ] + then + if [ -f chroot/etc/apt/preferences ] + then + mv chroot/etc/apt/preferences chroot/etc/apt/preferences.orig + fi + + cp config/apt/preferences chroot/etc/apt/preferences + + if [ -f chroot/etc/apt/preferences.orig ] + then + mv chroot/etc/apt/preferences.orig chroot/etc/apt/preferences + fi + fi + + if Find_files config/apt/*.pref + then + for _FILE in config/apt/*.pref + do + if [ -f chroot/etc/apt/preferences.d/$(basename ${_FILE}) ] + then + mv chroot/etc/apt/preferences.d/$(basename ${_FILE}) chroot/etc/apt/preferences.d/$(basename ${_FILE}).orig + fi + + cp -aL ${_FILE} chroot/etc/apt/preferences.d + + if [ -f chroot/etc/apt/preferences.d/$(basename ${_FILE}).orig ] + then + mv chroot/etc/apt/preferences.d/$(basename ${_FILE}).orig chroot/etc/apt/preferences.d/$(basename ${_FILE}) + fi + done + fi + + if Find_files config/packages.chroot/*.deb || Find_files config/packages/*.deb + then + if [ -f chroot/etc/apt/preferences ] + then + # delete additions from lb_chroot_apt install|install-binary to preferences + sed -i '/# Added by lb_chroot_apt/,$d' chroot/etc/apt/preferences + # delete the last empty line + sed -i '${/^[[:blank:]]*$/d;}' chroot/etc/apt/preferences + # if the resulting preferences file is empty there was no user additions, remove it + if [ ! -s chroot/etc/apt/preferences ] + then + rm -rf chroot/etc/apt/preferences + fi + fi + + fi + + # Removing stage file + rm -f .build/chroot_apt + ;; + + *) + Usage + ;; +esac diff --git a/system-build/scripts/build/chroot_archives b/system-build/scripts/build/chroot_archives new file mode 100755 index 0000000..063f3b6 --- /dev/null +++ b/system-build/scripts/build/chroot_archives @@ -0,0 +1,675 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'manage /etc/apt/sources.list')" +HELP="" +USAGE="${PROGRAM} {install|remove} [--force]" + +_PASS="${1}" +shift + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${LB_DERIVATIVE}" in + true) + _PARENT_FILE="sources.list.d/debian.list" + ;; + + false) + _PARENT_FILE="sources.list" + ;; +esac + +case "${1}" in + install) + Echo_message "Configuring file /etc/apt/sources.list" + + # Checking stage file + Check_stagefile .build/chroot_archives + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Restoring cache + Restore_cache cache/packages.chroot + + # Configure custom sources.list + +if echo "${LB_PARENT_MIRROR_CHROOT}" | grep -q '^file:/' +then + Chroot_bind_path chroot "$(echo ${LB_PARENT_MIRROR_CHROOT} | sed -e 's|file:||')" +fi + +cat > chroot/etc/apt/${_PARENT_FILE} << EOF +deb ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION} ${LB_PARENT_ARCHIVE_AREAS} +EOF + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION} ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + fi + + if [ "${LB_DERIVATIVE}" = "true" ] + then + rm -f chroot/etc/apt/sources.list.d/${LB_MODE}.list + + _DISTRIBUTION="$(echo ${LB_DISTRIBUTION} | sed -e 's|-backports||')" + + echo "deb ${LB_MIRROR_CHROOT} ${_DISTRIBUTION} ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_CHROOT} ${_DISTRIBUTION} ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + fi + + if [ "${LB_SECURITY}" = "true" ] + then + case "${LB_MODE}" in + debian|progress-linux) + case "${LB_PARENT_DISTRIBUTION}" in + sid) + + ;; + + *) + echo "deb ${LB_PARENT_MIRROR_CHROOT_SECURITY} ${LB_PARENT_DISTRIBUTION}/updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_PARENT_MIRROR_CHROOT_SECURITY} ${LB_PARENT_DISTRIBUTION}/updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + fi + ;; + esac + + if [ "${LB_MODE}" = progress-linux ] + then + echo "deb ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}-security ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}-security ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + else + if [ "${LB_DERIVATIVE}" = "true" ] + then + echo "deb ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}/updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_CHROOT_SECURITY} ${_DISTRIBUTION}/updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + fi + fi + ;; + esac + fi + + if [ "${LB_UPDATES}" = "true" ] + then + echo "deb ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + fi + + if [ "${LB_DERIVATIVE}" = "true" ] + then + echo "deb ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + fi + fi + + if [ "${LB_BACKPORTS}" = "true" ] + then + case "${LB_MODE}" in + debian) + if [ "${LB_PARENT_DISTRIBUTION}" != "sid" ] + then + echo "deb ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-backports ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_PARENT_MIRROR_CHROOT} ${LB_PARENT_DISTRIBUTION}-backports ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + fi + fi + ;; + esac + + if [ "${LB_DERIVATIVE}" = "true" ] + then + echo "deb ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_CHROOT} ${_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + fi + fi + + # Adding local apt sources (chroot) + for FILE in config/archives/*.list config/archives/*.list.chroot + do + if [ -e "${FILE}" ] + then + sed -e "s|@DISTRIBUTION@|${LB_DISTRIBUTION}|g" \ + -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ + -e "s|@ARCHIVE_AREAS@|${LB_ARCHIVE_AREAS}|g" \ + -e "s|@PARENT_ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \ + "${FILE}" > "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)" + + if [ "${_PASS}" != "source" ] && [ "${LB_APT_SOURCE_ARCHIVES}" = "false" ] + then + # Strip out source archives + sed "/^deb-src /d" "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)" + fi + fi + done + + # Adding local apt configuration (chroot) + for FILE in config/archives/*.conf config/archives/*.conf.chroot + do + if [ -e "${FILE}" ] + then + cp ${FILE} chroot/etc/apt/apt.conf.d/$(basename ${FILE} .chroot) + fi + done + + # Adding local apt preferences (chroot) + for FILE in config/archives/*.pref config/archives/*.pref.chroot + do + if [ -e "${FILE}" ] + then + cp ${FILE} chroot/etc/apt/preferences.d/$(basename ${FILE} .chroot) + fi + done + + # Configure local package repository + if Find_files config/packages.chroot/*.deb || Find_files config/packages/*.deb + then + rm -rf chroot/root/packages + mkdir -p chroot/root/packages + + if [ "$(stat --printf %d config/packages.chroot/)" = "$(stat --printf %d chroot/root/packages/)" ] || + [ "$(stat --printf %d config/packages/)" = "$(stat --printf %d chroot/root/packages/)" ] + then + CP_OPTIONS="-l" + fi + + # Copy packages + if Find_files config/packages.chroot/*_"${LB_ARCHITECTURES}".deb || Find_files config/packages/*_"${LB_ARCHITECTURES}".deb + then + for FILE in config/packages.chroot/*_"${LB_ARCHITECTURES}".deb config/packages/*_"${LB_ARCHITECTURES}".deb + do + if [ -L "${FILE}" ] + then + cp -L "${FILE}" chroot/root/packages + elif [ -e "${FILE}" ] + then + cp ${CP_OPTIONS} "${FILE}" chroot/root/packages + fi + done + fi + + if Find_files config/packages.chroot/*_all.deb || Find_files config/packages/*_all.deb + then + for FILE in config/packages.chroot/*_all.deb config/packages/*_all.deb + do + if [ -L "${FILE}" ] + then + cp -L "${FILE}" chroot/root/packages + elif [ -e "${FILE}" ] + then + cp ${CP_OPTIONS} "${FILE}" chroot/root/packages + fi + done + fi + + if Find_files chroot/root/packages/*.deb + then + # If we bootstrapped a minimal chroot, we need + # to install apt-utils before we have + # completed all the indices. + if [ ! -e chroot/usr/bin/apt-ftparchive ] + then + Apt chroot update + fi + + # Check depends + Check_package chroot /usr/bin/apt-ftparchive apt-utils + + # Installing depends + Install_package + + # Generate Packages and Packages.gz + echo "cd /root/packages && apt-ftparchive packages . > Packages" | Chroot chroot sh + gzip -9 -c chroot/root/packages/Packages > chroot/root/packages/Packages.gz + + # Generate Release + echo "cd /root/packages && apt-ftparchive \ + -o APT::FTPArchive::Release::Origin=config/packages.chroot \ + release . > Release" | Chroot chroot sh + + # Add to sources.list.d + echo "deb [ trusted=yes ] file:/root/packages ./" > chroot/etc/apt/sources.list.d/packages.list + + # Move top-level sources away, otherwise apt always preferes it (#644148) + if [ -e chroot/etc/apt/sources.list ] + then + mv chroot/etc/apt/sources.list chroot/etc/apt/sources.list.d/zz-sources.list + fi + + # Removing depends + Remove_package + else + Echo_warning "Local packages must be named with suffix '_all.deb' or '_\$architecture.deb'." + fi + fi + + if Find_files chroot/root/packages/*.deb + then + gunzip < chroot/root/packages/Packages.gz | awk '/^Package: / { print $2 }' \ + >> chroot/root/packages.chroot + fi + + # Update indices from cache + if [ "${LB_CACHE_INDICES}" = "true" ] && [ -d cache/indices.bootstrap ] + then + if Find_files cache/indices.bootstrap/secring.gpg* + then + cp -f cache/indices.bootstrap/secring.gpg* chroot/etc/apt + fi + + if Find_files cache/indices.bootstrap/trusted.gpg* + then + cp -rf cache/indices.bootstrap/trusted.gpg* chroot/etc/apt + fi + + if [ -f cache/indices.bootstrap/pkgcache.bin ] + then + cp -f cache/indices.bootstrap/pkgcache.bin chroot/var/cache/apt + fi + + if [ -f cache/indices.bootstrap/srcpkgcache.bin ] + then + cp -f cache/indices.bootstrap/srcpkgcache.bin chroot/var/cache/apt + fi + + if Find_files cache/indices.bootstrap/*_Packages + then + cp -f cache/indices.bootstrap/*_Packages chroot/var/lib/apt/lists + fi + + if Find_files cache/indices.bootstrap/*_Sources + then + cp -f cache/indices.bootstrap/*_Sources chroot/var/lib/apt/lists + fi + + if Find_files cache/indices.bootstrap/*Release* + then + cp -f cache/indices.bootstrap/*Release* chroot/var/lib/apt/lists + fi + else # Get fresh indices + # Check local archive keys + if Find_files config/archives/*.key || \ + Find_files config/archives/*.key.chroot + then + for FILE in config/archives/*.key \ + config/archives/*.key.chroot + do + if [ -e "${FILE}" ] + then + cp ${FILE} chroot/root + Chroot chroot "apt-key add /root/$(basename ${FILE})" + rm -f chroot/root/$(basename ${FILE}) + fi + done + fi + + # Check local keyring packages + if Find_files config/archives/*.deb + then + for PACKAGE in config/archives/*.deb + do + cp ${PACKAGE} chroot/root + Chroot chroot "dpkg -i /root/$(basename ${PACKAGE})" + rm -f chroot/root/$(basename ${PACKAGE}) + done + fi + + # Rebuild apt indices from scratch. + # Due to the fact that apt doesn't understand + # pinning on the fly, we need to manually remove + # the cached indices and rebuild them again. + rm -rf chroot/var/cache/apt/*.bin + + Apt chroot update + + # Installing keyring packages + if [ -n "${LB_KEYRING_PACKAGES}" ] + then + Apt chroot "install ${LB_KEYRING_PACKAGES}" + fi + + rm -rf chroot/var/cache/apt/*.bin + + Apt chroot update + Apt chroot "upgrade" + Apt chroot "dist-upgrade" + + if [ "${LB_CACHE_INDICES}" = "true" ] + then + mkdir -p cache/indices.bootstrap + + if Find_files chroot/etc/apt/secring.gpg* + then + cp -f chroot/etc/apt/secring.gpg* cache/indices.bootstrap + fi + + cp -rf chroot/etc/apt/trusted.gpg* cache/indices.bootstrap + + cp -f chroot/var/cache/apt/pkgcache.bin cache/indices.bootstrap + + if Find_files chroot/var/cache/apt/srcpkgcache.bin + then + cp -f chroot/var/cache/apt/srcpkgcache.bin cache/indices.bootstrap + fi + + cp -f chroot/var/lib/apt/lists/*_Packages cache/indices.bootstrap + + if Find_files chroot/var/lib/apt/lists/*_Sources + then + cp -f chroot/var/lib/apt/lists/*_Sources cache/indices.bootstrap + fi + + cp -f chroot/var/lib/apt/lists/*Release* cache/indices.bootstrap + fi + fi + + # Saving cache + Save_cache cache/packages.chroot + + # Creating stage file + Create_stagefile .build/chroot_archives + ;; + + remove) + Echo_message "Deconfiguring file /etc/apt/sources.list" + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Restore top-level sources + if [ -e chroot/etc/apt/sources.list.d/zz-sources.list ] + then + mv chroot/etc/apt/sources.list.d/zz-sources.list chroot/etc/apt/sources.list + fi + + # Unmount local repository +if echo "${LB_PARENT_MIRROR_CHROOT}" | grep -q '^file:/' +then + Chroot_unbind_path chroot "$(echo ${LB_PARENT_MIRROR_CHROOT} | sed -e 's|file:||')" +fi + + # Configure generic indices + # Don't do anything if it's not required + if [ "${LB_PARENT_MIRROR_CHROOT}" = "${LB_PARENT_MIRROR_BINARY}" ] && \ + [ "${LB_PARENT_MIRROR_CHROOT_SECURITY}" = "${LB_PARENT_MIRROR_BINARY_SECURITY}" ] && \ + [ ! -d chroot/root/packages ] + then + # Removing stage file + rm -f .build/chroot_archives + + exit 0 + fi + + # Cleaning apt list cache + rm -rf chroot/var/lib/apt/lists + mkdir -p chroot/var/lib/apt/lists/partial + + # Configure custom sources.list + +cat > chroot/etc/apt/${_PARENT_FILE} << EOF +deb ${LB_PARENT_MIRROR_BINARY} ${LB_PARENT_DISTRIBUTION} ${LB_PARENT_ARCHIVE_AREAS} +EOF + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_PARENT_MIRROR_BINARY} ${LB_PARENT_DISTRIBUTION} ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + fi + + if [ "${LB_DERIVATIVE}" = "true" ] + then + rm -f chroot/etc/apt/sources.list.d/${LB_MODE}.list + + _DISTRIBUTION="$(echo ${LB_DISTRIBUTION} | sed -e 's|-backports||')" + + echo "deb ${LB_MIRROR_BINARY} ${_DISTRIBUTION} ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_BINARY} ${_DISTRIBUTION} ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + fi + + if [ "${LB_SECURITY}" = "true" ] + then + case "${LB_MODE}" in + debian|progress-linux) + case "${LB_PARENT_DISTRIBUTION}" in + sid) + + ;; + + *) + echo "deb ${LB_PARENT_MIRROR_BINARY_SECURITY} ${LB_PARENT_DISTRIBUTION}/updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_PARENT_MIRROR_BINARY_SECURITY} ${LB_PARENT_DISTRIBUTION}/updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + fi + ;; + esac + + if [ "${LB_MODE}" = progress-linux ] + then + echo "deb ${LB_MIRROR_BINARY_SECURITY} ${_DISTRIBUTION}-security ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_BINARY_SECURITY} ${_DISTRIBUTION}-security ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + else + if [ "${LB_DERIVATIVE}" = "true" ] + then + echo "deb ${LB_MIRROR_BINARY_SECURITY} ${_DISTRIBUTION}/updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_BINARY_SECURITY} ${_DISTRIBUTION}/updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + fi + fi + ;; + esac + fi + + if [ "${LB_UPDATES}" = "true" ] + then + echo "deb ${LB_PARENT_MIRROR_BINARY} ${LB_PARENT_DISTRIBUTION}-updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_PARENT_MIRROR_BINARY} ${LB_PARENT_DISTRIBUTION}-updates ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + fi + + if [ "${LB_DERIVATIVE}" = "true" ] + then + echo "deb ${LB_MIRROR_BINARY} ${_DISTRIBUTION}-updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_BINARY} ${_DISTRIBUTION}-updates ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + fi + fi + + if [ "${LB_BACKPORTS}" = "true" ] + then + case "${LB_MODE}" in + debian) + if [ "${LB_PARENT_DISTRIBUTION}" != "sid" ] + then + echo "deb ${LB_PARENT_MIRROR_BINARY} ${LB_PARENT_DISTRIBUTION}-backports ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_PARENT_MIRROR_BINARY} ${LB_PARENT_DISTRIBUTION}-backports ${LB_PARENT_ARCHIVE_AREAS}" >> chroot/etc/apt/${_PARENT_FILE} + fi + fi + ;; + esac + + if [ "${LB_DERIVATIVE}" = "true" ] + then + echo "deb ${LB_MIRROR_BINARY} ${_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + + if [ "${_PASS}" = "source" ] || [ "${LB_APT_SOURCE_ARCHIVES}" = "true" ] + then + echo "deb-src ${LB_MIRROR_BINARY} ${_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS}" >> chroot/etc/apt/sources.list.d/${LB_MODE}.list + fi + fi + fi + + # Removing chroot-only apt sources + for FILE in config/archives/*.list.chroot + do + if [ -e "${FILE}" ] + then + rm -f "chroot/etc/apt/sources.list.d/$(basename ${FILE} .chroot)" + fi + done + + # Removing chroot-only apt configuration + for FILE in config/archives/*.conf.chroot + do + if [ -e "${FILE}" ] + then + rm -f "chroot/etc/apt/apt.conf.d/$(basename ${FILE} .chroot)" + fi + done + + # Removing chroot-only apt preferences + for FILE in config/archives/*.pref.chroot + do + if [ -e "${FILE}" ] + then + rm -f "chroot/etc/apt/preferences.d/$(basename ${FILE} .chroot)" + fi + done + + # Adding local apt sources (binary) + for FILE in config/archives/*.list config/archives/*.list.binary + do + if [ -e "${FILE}" ] + then + sed -e "s|@DISTRIBUTION@|${LB_DISTRIBUTION}|g" \ + -e "s|@PARENT_DISTRIBUTION@|${LB_PARENT_DISTRIBUTION}|g" \ + -e "s|@ARCHIVE_AREAS@|${LB_ARCHIVE_AREAS}|g" \ + -e "s|@PARENT_ARCHIVE_AREAS@|${LB_PARENT_ARCHIVE_AREAS}|g" \ + "${FILE}" > "chroot/etc/apt/sources.list.d/$(basename ${FILE} .binary)" + + if [ "${_PASS}" != "source" ] && [ "${LB_APT_SOURCE_ARCHIVES}" = "false" ] + then + # Strip out source archives + sed "/^deb-src /d" "chroot/etc/apt/sources.list.d/$(basename ${FILE} .binary)" + fi + fi + done + + # Adding local apt configuration (binary) + for FILE in config/archives/*.conf config/archives/*.conf.binary + do + if [ -e "${FILE}" ] + then + cp ${FILE} chroot/etc/apt/apt.conf.d/$(basename ${FILE} .binary) + fi + done + + # Adding local apt preferences (binary) + for FILE in config/archives/*.pref config/archives/*.pref.binary + do + if [ -e "${FILE}" ] + then + cp ${FILE} chroot/etc/apt/preferences.d/$(basename ${FILE} .binary) + fi + done + + # Adding local apt keys (binary) + for FILE in config/archives/*.key config/archives/*.key.binary + do + if [ -e "${FILE}" ] + then + cp ${FILE} chroot/root + Chroot chroot "apt-key add /root/$(basename ${FILE})" + rm -f chroot/root/$(basename ${FILE}) + fi + done + + # Updating indices + Apt chroot update + + # Cleaning apt package cache + rm -rf chroot/var/cache/apt + mkdir -p chroot/var/cache/apt/archives/partial + + # Cleaning apt package lists + if [ "${LB_APT_INDICES}" = "false" ] + then + rm -rf chroot/var/lib/apt/lists + mkdir -p chroot/var/lib/apt/lists/partial + fi + + # Remove local package repository + rm -f chroot/etc/apt/sources.list.d/packages.list + rm -rf chroot/root/packages + + # Removing stage file + rm -f .build/chroot_archives + ;; + + *) + Usage + ;; +esac diff --git a/system-build/scripts/build/chroot_cache b/system-build/scripts/build/chroot_cache new file mode 100755 index 0000000..96f7af2 --- /dev/null +++ b/system-build/scripts/build/chroot_cache @@ -0,0 +1,82 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'cache chroot stage')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +for STAGE in ${LB_CACHE_STAGES} +do + if [ "${STAGE}" = "chroot" ] + then + case "${1}" in + restore) + Echo_message "Restoring chroot stage from cache..." + + # Checking stage file + Check_stagefile .build/chroot_cache.restore + + if [ -d cache/chroot ] + then + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Removing old chroot + rm -rf chroot + + # Restoring old cache + cp -a cache/chroot chroot + + # Creating stage file + Create_stagefile .build/chroot_cache.restore + + exit 0 + fi + ;; + + save) + Echo_message "Saving chroot stage to cache..." + + # Checking stage file + Check_stagefile .build/chroot_cache.save + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + rm -rf cache/chroot + + mkdir -p cache + + cp -a chroot cache/chroot + + # Creating stage file + Create_stagefile .build/chroot_cache.save + ;; + esac + fi +done diff --git a/system-build/scripts/build/chroot_debianchroot b/system-build/scripts/build/chroot_debianchroot new file mode 100755 index 0000000..77680f0 --- /dev/null +++ b/system-build/scripts/build/chroot_debianchroot @@ -0,0 +1,81 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'manage /etc/debian_chroot')" +HELP="" +USAGE="${PROGRAM} {install|remove} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${1}" in + install) + Echo_message "Configuring file /etc/debian_chroot" + + # Checking stage file + Check_stagefile .build/chroot_debianchroot + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + if [ -f chroot/etc/debian_chroot ] + then + # Save chroot file + mv chroot/etc/debian_chroot chroot/etc/debian_chroot.orig + fi + + # Create chroot file + echo "live" > chroot/etc/debian_chroot + + # Creating stage file + Create_stagefile .build/chroot_debianchroot + ;; + + remove) + Echo_message "Deconfiguring file /etc/debian_chroot" + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + if [ -f chroot/etc/debian_chroot.orig ] + then + # Restore chroot file + mv chroot/etc/debian_chroot.orig chroot/etc/debian_chroot + else + # Remove chroot file + rm -f chroot/etc/debian_chroot + fi + + # Removing stage file + rm -f .build/chroot_debianchroot + ;; + + *) + Usage + ;; +esac diff --git a/system-build/scripts/build/chroot_devpts b/system-build/scripts/build/chroot_devpts new file mode 100755 index 0000000..8fb76a7 --- /dev/null +++ b/system-build/scripts/build/chroot_devpts @@ -0,0 +1,77 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'mount /dev/pts')" +HELP="" +USAGE="${PROGRAM} {install|remove} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${1}" in + install) + Echo_message "Begin mounting /dev/pts..." + + # Checking stage file + Check_stagefile .build/chroot_devpts + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Creating mountpoint + mkdir -p chroot/dev/pts + + # Mounting /dev/pts + mount devpts-live -t devpts -o gid=5,mode=620 chroot/dev/pts || true + + # Creating stage file + Create_stagefile .build/chroot_devpts + ;; + + remove) + Echo_message "Begin unmounting /dev/pts..." + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Unmounting /dev/pts + if grep -qs "$(pwd)/chroot/dev/pts" /proc/mounts || Find_files chroot/dev/pts/* + then + umount chroot/dev/pts + else + umount -f chroot/dev/pts > /dev/null 2>&1 || true + fi + + # Removing stage file + rm -f .build/chroot_devpts + ;; + + *) + Usage + ;; +esac diff --git a/system-build/scripts/build/chroot_dpkg b/system-build/scripts/build/chroot_dpkg new file mode 100755 index 0000000..c6f1574 --- /dev/null +++ b/system-build/scripts/build/chroot_dpkg @@ -0,0 +1,105 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'manage /sbin/dpkg')" +HELP="" +USAGE="${PROGRAM} {install|remove} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${1}" in + install) + Echo_message "Configuring file /sbin/start-stop-daemon" + + # Checking stage file + Check_stagefile .build/chroot_dpkg + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Create custom start-stop-daemon program + Chroot chroot dpkg-divert --rename --quiet --add /sbin/start-stop-daemon + +cat > chroot/sbin/start-stop-daemon << EOF +#!/bin/sh + +exit 0 +EOF + + chmod 755 chroot/sbin/start-stop-daemon + + # Disable dpkg syncing + +cat > chroot/etc/dpkg/dpkg.cfg.d/live-build << EOF +force-unsafe-io +EOF + + # Manual hacks for special packages + + # Generic live-build handle for other live packages to act upon + touch chroot/.live-build + + # flash-kernel + Chroot chroot dpkg-divert --rename --quiet --add /usr/sbin/flash-kernel + ln -fs /bin/true chroot/usr/sbin/flash-kernel + + # Creating stage file + Create_stagefile .build/chroot_dpkg + ;; + + remove) + Echo_message "Deconfiguring file /sbin/start-stop-daemon" + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Manual hacks for special packages + + # Generic live-build handle + rm -f chroot/.live-build + + # flash-kernel + rm -f chroot/usr/sbin/flash-kernel + Chroot chroot dpkg-divert --rename --quiet --remove /usr/sbin/flash-kernel + + # Remove custom start-stop-daemon program + rm -f chroot/sbin/start-stop-daemon + Chroot chroot dpkg-divert --rename --quiet --remove /sbin/start-stop-daemon + + # Remove dpkg sync configuration + rm -f chroot/etc/dpkg/dpkg.cfg.d/live-build + + # Removing stage file + rm -f .build/chroot_dpkg + ;; + + *) + Usage + ;; +esac diff --git a/system-build/scripts/build/chroot_firmware b/system-build/scripts/build/chroot_firmware new file mode 100755 index 0000000..d91f570 --- /dev/null +++ b/system-build/scripts/build/chroot_firmware @@ -0,0 +1,124 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'schedule kernel packages for installation')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_FIRMWARE_CHROOT}" != "true" ] +then + exit 0 +fi + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/chroot_firmware + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Checking depends +Check_package host /usr/bin/wget wget + +# Diverting update-initramfs +#case "${LB_INITRAMFS}" in +# system-boot) +# mv chroot/usr/sbin/update-initramfs chroot/usr/sbin/update-initramfs.live-build +# ;; +#esac + +# Include firmware packages +# Assumption: firmware packages install files into /lib/firmware + +# Get all firmware packages names +mkdir -p cache/contents.chroot + +FIRMWARE_PACKAGES="" + +_CONTENTS="$(for _PARENT_ARCHIVE_AREA in ${LB_PARENT_ARCHIVE_AREAS}; do echo ${LB_PARENT_MIRROR_CHROOT}/dists/${LB_PARENT_DISTRIBUTION}/${_PARENT_ARCHIVE_AREA}/Contents-${LB_ARCHITECTURES}.gz; done)" + +rm -f cache/contents.chroot/contents.${LB_PARENT_DISTRIBUTION}.${LB_ARCHITECTURES} + +for _CONTENT in ${_CONTENTS} +do + wget ${WGET_OPTIONS} ${_CONTENT} -O - | gunzip -c >> cache/contents.chroot/contents.${LB_PARENT_DISTRIBUTION}.${LB_ARCHITECTURES} + + FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} $(awk '/^lib\/firmware/ { print $2 }' cache/contents.chroot/contents.${LB_PARENT_DISTRIBUTION}.${LB_ARCHITECTURES} | sort -u)" +done + +if echo ${LB_PARENT_ARCHIVE_AREAS} | grep -qs "non-free" +then + # Manually add firmware-linux/non-free meta package + if [ "${LB_DERIVATIVE}" != "true" ] + then + FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} firmware-linux" + else + case "${LB_DERIVATIVE_IS_BASED_ON}" in + debian) + FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} firmware-linux" + ;; + *) + ;; + esac + fi +fi + +if [ "${LB_DERIVATIVE}" = "true" ] +then + # FIXME: account for the fact that PARENT_DISTRIBUTION and DISTRIBUTION might be the same (to not have overlapping cache files for contents). + + _CONTENTS="$(for _ARCHIVE_AREA in ${LB_ARCHIVE_AREAS}; do echo ${LB_MIRROR_CHROOT}/dists/${LB_DISTRIBUTION}/${_ARCHIVE_AREA}/Contents-${LB_ARCHITECTURES}.gz; done)" + + rm -f cache/contents.chroot/contents.${LB_DISTRIBUTION}.${LB_ARCHITECTURES} + + for _CONTENT in ${_CONTENTS} + do + wget ${WGET_OPTIONS} ${_CONTENT} -O - | gunzip -c >> cache/contents.chroot/contents.${LB_DISTRIBUTION}.${LB_ARCHITECTURES} + + FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} $(awk '/^lib\/firmware/ { print $2 }' cache/contents.chroot/contents.${LB_DISTRIBUTION}.${LB_ARCHITECTURES} | sort -u)" + done +fi + +# Drop section and keep package names only +for _PACKAGE in ${FIRMWARE_PACKAGES} +do + echo $(echo ${_PACKAGE} | awk -F/ '{ print $NF }') >> chroot/root/packages.chroot +done + +# Some known licenses required to be accepted +if echo ${LB_PARENT_ARCHIVE_AREAS} | grep -qs "non-free" +then + +cat >> chroot/root/packages.chroot.cfg << EOF +firmware-ivtv firmware-ivtv/license/accepted boolean true +firmware-ipw2x00 firmware-ipw2x00/license/accepted boolean true +EOF + +fi + +# Creating stage file +Create_stagefile .build/chroot_firmware diff --git a/system-build/scripts/build/chroot_hacks b/system-build/scripts/build/chroot_hacks new file mode 100755 index 0000000..f439ca1 --- /dev/null +++ b/system-build/scripts/build/chroot_hacks @@ -0,0 +1,128 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'execute hacks in chroot')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +Echo_message "Begin executing hacks..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/chroot_hacks + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +case "${LIVE_IMAGE_TYPE}" in + netboot) + if [ ! -f chroot/sbin/mount.cifs ] + then + Apt chroot install cifs-utils + fi + + if [ ! -d chroot/etc/initramfs-tools ] + then + mkdir chroot/etc/initramfs-tools + fi + + # Configuring initramfs for NFS + if ! grep -qs "BOOT=nfs" chroot/etc/initramfs-tools/initramfs.conf + then + echo "BOOT=nfs" >> chroot/etc/initramfs-tools/initramfs.conf + fi + + if ! grep -qs "NFSROOT=auto" chroot/etc/initramfs-tools/initramfs.conf + then + echo "NFSROOT=auto" >> chroot/etc/initramfs-tools/initramfs.conf + fi + ;; +esac + +# Update initramfs (always, because of udev rules in initrd) +case "${LB_INITRAMFS}" in + system-boot) + #UPDATE_INITRAMFS_OPTIONS="LIVE_GENERATE_UUID=1" + ;; +esac + +if [ "${LB_INITRAMFS}" != "none" ] +then + Chroot chroot "${UPDATE_INITRAMFS_OPTIONS} update-initramfs -k all -t -u" +fi + +# We probably ought to use COMPRESS= in a temporary file in +# /etc/initramfs-tools/conf.d/ instead, but it's hard to pass options that +# way. +case "${LB_INITRAMFS_COMPRESSION}" in + gzip) + ;; + + bzip2) + for INITRAMFS in $(find chroot/boot -name 'initrd*'); do + zcat "${INITRAMFS}" | bzip2 -c ${BZIP2_OPTIONS} > "${INITRAMFS}.new" + mv "${INITRAMFS}.new" "${INITRAMFS}" + echo "$(sha1sum ${INITRAMFS} | awk '{ print $1 }') /boot/$(basename ${INITRAMFS})" > chroot/var/lib/initramfs-tools/$(basename ${INITRAMFS} | sed -e 's|initrd.img-||') + done + ;; + + lzma) + for INITRAMFS in $(find chroot/boot -name 'initrd*'); do + zcat "${INITRAMFS}" | lzma -c ${LZMA_OPTIONS} > "${INITRAMFS}.new" + mv "${INITRAMFS}.new" "${INITRAMFS}" + echo "$(sha1sum ${INITRAMFS} | awk '{ print $1 }') /boot/$(basename ${INITRAMFS})" > chroot/var/lib/initramfs-tools/$(basename ${INITRAMFS} | sed -e 's|initrd.img-||') + done + ;; +esac + +case "${LB_INITRAMFS}" in + system-boot) + ID="1000" + ;; + + *) + ID="" + ;; +esac + +rm -f chroot/etc/hosts + +if [ "${LB_DEBIAN_INSTALLER}" = "live" ] +then + # This is a temporary hack to get rid of fstab; + # needs cleanup in system-boot first to proper fix. + rm -f chroot/etc/fstab + touch chroot/etc/fstab +fi + +if [ "${LB_SWAP_FILE_PATH}" ]; then + dd if=/dev/zero of="chroot/${LB_SWAP_FILE_PATH}" bs=1024k count="${LB_SWAP_FILE_SIZE}" + mkswap "chroot/${LB_SWAP_FILE_PATH}" +fi + +# Creating stage file +Create_stagefile .build/chroot_hacks diff --git a/system-build/scripts/build/chroot_hooks b/system-build/scripts/build/chroot_hooks new file mode 100755 index 0000000..af20b0d --- /dev/null +++ b/system-build/scripts/build/chroot_hooks @@ -0,0 +1,119 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'execute hooks in chroot')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +Echo_message "Begin executing hooks..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/chroot_hooks + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +## Processing distribution hooks + +# Make build config available to chroot hooks. First, make the bind +# mount and then make it read-only. This can't happen in one mount +# command, then the resulting mount will be rw (see mount(8)). Making it +# ro prevents modifications and prevents accidentally removing the +# contents of the config directory when removing the chroot. +mkdir -p chroot/live-build/config +mount -o bind config chroot/live-build/config +mount -o remount,ro,bind config chroot/live-build/config + +# Copying hooks +for _HOOK in ${LB_CHROOT_HOOKS} +do + for LOCATION in "${LIVE_BUILD}/hooks" /usr/share/live/build/hooks + do + for FILE in "${LOCATION}"/????-"${_HOOK}".chroot + do + if [ -e "${FILE}" ] + then + mkdir -p chroot/root/lb_chroot_hooks + cp "${FILE}" chroot/root/lb_chroot_hooks + fi + done + done +done + +# Running hooks +if ls chroot/root/lb_chroot_hooks/* > /dev/null 2>&1 +then + for _HOOK in chroot/root/lb_chroot_hooks/* + do + Chroot chroot "/root/lb_chroot_hooks/$(basename ${_HOOK})" || { Echo_error "${_HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;} + rm -f chroot/root/lb_chroot_hooks/"$(basename ${_HOOK})" + done + + rmdir chroot/root/lb_chroot_hooks +fi + +## Processing local hooks +if ls config/hooks/normal/*.chroot config/hooks/live/*.chroot > /dev/null 2>&1 +then + # Restoring cache + Restore_cache cache/packages.chroot + + for HOOK in config/hooks/normal/*.chroot config/hooks/live/*.chroot + do + if [ ! -e "${HOOK}" ] + then + continue + fi + + # Copying hook + cp "${HOOK}" chroot/root + + # Making hook executable + if [ ! -x chroot/root/"$(basename ${HOOK})" ] + then + chmod +x chroot/root/"$(basename ${HOOK})" + fi + + # Executing hook + Chroot chroot "/root/$(basename ${HOOK})" || { Echo_error "${HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;} + + # Removing hook + rm -f chroot/root/"$(basename ${HOOK})" + done + + # Saving cache + Save_cache cache/packages.chroot + + # Creating stage file + Create_stagefile .build/chroot_hooks +fi + +# Remove bind mount of build config inside chroot. +umount chroot/live-build/config +rmdir chroot/live-build/config +rmdir chroot/live-build diff --git a/system-build/scripts/build/chroot_hostname b/system-build/scripts/build/chroot_hostname new file mode 100755 index 0000000..ae191a7 --- /dev/null +++ b/system-build/scripts/build/chroot_hostname @@ -0,0 +1,91 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'manage /bin/hostname')" +HELP="" +USAGE="${PROGRAM} {install|remove} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${1}" in + install) + # Checking stage file + Check_stagefile .build/chroot_hostname + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Create hostname file + Echo_message "Configuring file /etc/hostname" + + echo "localhost.localdomain" > chroot/etc/hostname + + # Create custom hostname + Echo_message "Configuring file /bin/hostname" + + Chroot chroot dpkg-divert --rename --quiet --add /bin/hostname + +cat > chroot/bin/hostname << EOF +#!/bin/sh + +echo "localhost.localdomain" +EOF + + chmod 755 chroot/bin/hostname + + # Creating stage file + Create_stagefile .build/chroot_hostname + ;; + + remove) + Echo_message "Deconfiguring file /etc/hostname" + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Copying hostname from includes, if existing + if [ -e config/includes.chroot/etc/hostname ] + then + cp -a config/includes.chroot/etc/hostname chroot/etc/hostname + fi + + Echo_message "Deconfiguring file /bin/hostname" + + # Remove custom hostname + rm -f chroot/bin/hostname + Chroot chroot dpkg-divert --rename --quiet --remove /bin/hostname + + # Removing stage file + rm -f .build/chroot_hostname + ;; + + *) + Usage + ;; +esac diff --git a/system-build/scripts/build/chroot_hosts b/system-build/scripts/build/chroot_hosts new file mode 100755 index 0000000..9f0da29 --- /dev/null +++ b/system-build/scripts/build/chroot_hosts @@ -0,0 +1,97 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'manage /etc/hosts')" +HELP="" +USAGE="${PROGRAM} {install|remove} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${1}" in + install) + Echo_message "Configuring file /etc/hosts" + + # Checking stage file + Check_stagefile .build/chroot_hosts + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + if [ -f chroot/etc/hosts ] + then + # Save hosts file + mv chroot/etc/hosts chroot/etc/hosts.orig + fi + + # Creating hosts file + +cat > chroot/etc/hosts << EOF +127.0.0.1 localhost localhost.localdomain +127.0.1.1 debian +EOF + + if [ -f /etc/hosts ] + then + # Append hosts file + #grep -e "127.0.0.1" -e "127.0.1.1" /etc/hosts >> chroot/etc/hosts + cat /etc/hosts >> chroot/etc/hosts + fi + + # Creating stage file + Create_stagefile .build/chroot_hosts + ;; + + remove) + Echo_message "Deconfiguring file /etc/hosts" + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + if [ -e config/includes.chroot/etc/hosts ] + then + # Copying local hosts + cp -a config/includes.chroot/etc/hosts chroot/etc/hosts + rm -f chroot/etc/hosts.orig + elif [ -f chroot/etc/hosts.orig ] + then + # Restore hosts file + mv chroot/etc/hosts.orig chroot/etc/hosts + else + # Blank out hosts file, don't remove in case its a symlink + Truncate chroot/etc/hosts + fi + + # Removing stage file + rm -f .build/chroot_hosts + ;; + + *) + Usage + ;; +esac diff --git a/system-build/scripts/build/chroot_includes b/system-build/scripts/build/chroot_includes new file mode 100755 index 0000000..6498aa3 --- /dev/null +++ b/system-build/scripts/build/chroot_includes @@ -0,0 +1,50 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'copy files into chroot')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +Echo_message "Begin copying chroot includes..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/includes.chroot + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +if Find_files config/includes.chroot/ +then + # Copying includes + cd config/includes.chroot + find . | cpio -dmpu --no-preserve-owner "${OLDPWD}"/chroot + cd "${OLDPWD}" + + # Creating stage file + Create_stagefile .build/includes.chroot +fi diff --git a/system-build/scripts/build/chroot_install-packages b/system-build/scripts/build/chroot_install-packages new file mode 100755 index 0000000..36c0f93 --- /dev/null +++ b/system-build/scripts/build/chroot_install-packages @@ -0,0 +1,94 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'install queued packages into chroot')" +HELP="" +USAGE="${PROGRAM} [--force]" +USAGE="${PROGRAM} {install|live} [--force]" + +_PASS="${1}" +shift + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +Echo_message "Begin installing packages (${_PASS} pass)..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/chroot_install-packages.${PASS} + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Check for packages specified with foreign architecture +_FOREIGN_ARCHITECTURES_FILE="chroot/root/packages.foreign-architectures" +if [ -e "${_FOREIGN_ARCHITECTURES_FILE}" ] && [ -s "${_FOREIGN_ARCHITECTURES_FILE}" ] +then + _APT_ARCHITECTURES_ADDED="0" + + # Check if version of dpkg in chroot supports multiarch + if Chroot chroot dpkg --print-foreign-architectures > /dev/null 2>&1 + then + # Add foregin architectures + while read _ARCHITECTURES_LINE + do + Echo_message "Adding foreign architecture ${_ARCHITECTURES_LINE} to dpkg" + Chroot chroot dpkg --add-architecture ${_ARCHITECTURES_LINE} + + _APT_ARCHITECTURES_ADDED="1" + done < "${_FOREIGN_ARCHITECTURES_FILE}" + + # Tidy up + rm -f "${_FOREIGN_ARCHITECTURES_FILE}" + else + Echo_error "Version of dpkg in chroot does not support foreign architectures." + fi + + # Update apt if foreign architectures were added + if [ "${_APT_ARCHITECTURES_ADDED}" -ne "0" ] + then + Echo_message "Added foreign architectures, updating apt..." + Apt chroot update + fi +fi + +if [ -e chroot/root/packages.chroot ] && [ -s chroot/root/packages.chroot ] +then + # Restoring cache + Restore_cache cache/packages.chroot + + # Installing packages + Chroot chroot "xargs --arg-file=/root/packages.chroot apt-get ${APT_OPTIONS} install" + + # Tidying up + rm -f chroot/root/packages.chroot + + # Saving cache + Save_cache cache/packages.chroot + +fi + +# Creating stage file +Create_stagefile .build/chroot_install-packages.${_PASS} diff --git a/system-build/scripts/build/chroot_interactive b/system-build/scripts/build/chroot_interactive new file mode 100755 index 0000000..f21b6dd --- /dev/null +++ b/system-build/scripts/build/chroot_interactive @@ -0,0 +1,62 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'make build interactive')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_INTERACTIVE}" = "false" ] +then + exit 0 +fi + +Echo_message "Begin interactive build..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/chroot_interactive + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +case "${LB_INTERACTIVE}" in + true|shell) + Echo_message "Pausing build: starting interactive shell..." + Chroot chroot "/bin/bash --login" + ;; + x11) + Echo_message "Pausing build: starting interactive X11..." + Chroot chroot "startx" + ;; + xnest) + Echo_message "Pausing build: starting interactive Xnest..." + #Chroot chroot "" # FIXME + ;; +esac + +# Creating stage file +Create_stagefile .build/chroot_interactive diff --git a/system-build/scripts/build/chroot_linux-image b/system-build/scripts/build/chroot_linux-image new file mode 100755 index 0000000..c28cb54 --- /dev/null +++ b/system-build/scripts/build/chroot_linux-image @@ -0,0 +1,60 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'schedule kernel packages for installation')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_LINUX_PACKAGES}" = "none" ] +then + exit 0 +fi + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/chroot_linux-image + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Diverting update-initramfs +#case "${LB_INITRAMFS}" in +# system-boot) +# mv chroot/usr/sbin/update-initramfs chroot/usr/sbin/update-initramfs.live-build +# ;; +#esac + +for FLAVOUR in ${LB_LINUX_FLAVOURS} +do + for PACKAGE in ${LB_LINUX_PACKAGES} + do + echo ${PACKAGE}-${FLAVOUR} >> chroot/root/packages.chroot + done +done + +# Creating stage file +Create_stagefile .build/chroot_linux-image diff --git a/system-build/scripts/build/chroot_live-packages b/system-build/scripts/build/chroot_live-packages new file mode 100755 index 0000000..0e4f2bf --- /dev/null +++ b/system-build/scripts/build/chroot_live-packages @@ -0,0 +1,79 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'schedule live packages for installation')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/chroot_live-packages + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Queue installation of system-boot +if [ -n "${LB_INITRAMFS}" ] && [ "${LB_INITRAMFS}" != "none" ] +then + _PACKAGES="${LB_INITRAMFS}" +fi + +# Queue installation of system-config +if [ -n "${LB_INITSYSTEM}" ] && [ "${LB_INITSYSTEM}" != "none" ] +then + _PACKAGES="${_PACKAGES} system-config" +fi + +# Do initsystem specific hacks +case "${LB_INITSYSTEM}" in + systemd) + _PACKAGES="${_PACKAGES} systemd-sysv" + + if [ -e chroot/var/lib/dpkg/info/sysvinit.list ] + then + Chroot chroot "dpkg --force-remove-essential --purge sysvinit" + fi + ;; + + sysvinit) + _PACKAGES="${_PACKAGES} sysvinit" + + if [ -e chroot/var/lib/dpkg/info/systemd-sysv.list ] + then + Chroot chroot "dpkg --force-remove-essential --purge systemd systemd-sysv" + fi + ;; +esac + +# Install live packages +if [ -n "${_PACKAGES}" ] +then + Chroot chroot "apt-get ${APT_OPTIONS} install ${_PACKAGES}" + + # Creating stage file + Create_stagefile .build/chroot_live-packages +fi diff --git a/system-build/scripts/build/chroot_package-lists b/system-build/scripts/build/chroot_package-lists new file mode 100755 index 0000000..7e93e61 --- /dev/null +++ b/system-build/scripts/build/chroot_package-lists @@ -0,0 +1,120 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'queue install of package lists into chroot')" +HELP="" +USAGE="${PROGRAM} {install|live} [--force]" + +_PASS="${1}" +shift + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +Echo_message "Begin queueing installation of package lists (${_PASS} pass)..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/chroot_package-lists.${_PASS} + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Handling local package lists +if ! ( ls config/package-lists/*.list > /dev/null 2>&1 || \ + ls config/package-lists/*.list.chroot > /dev/null 2>&1 || \ + ls config/package-lists/*.list.chroot_${_PASS} > /dev/null 2>&1 ) +then + exit 0 +fi + +case "${LB_BUILD_WITH_CHROOT}" in + true) + # Checking depends + Check_package chroot /usr/bin/grep-aptavail dctrl-tools + + # Restoring cache + Restore_cache cache/packages.chroot + + # Installing depends + Install_package + ;; + + false) + if [ ! -e /usr/bin/grep-aptavail ]; then + # dctrl-tools + Echo_error "/usr/bin/grep-aptavail - no such file." + exit 1 + fi + ;; +esac + +if [ -e "${LIVE_BUILD}/share/bin/Packages" ] +then + cp "${LIVE_BUILD}/share/bin/Packages" chroot/bin +else + cp /usr/share/live/build/bin/Packages chroot/bin +fi + +for LIST in config/package-lists/*.list \ + config/package-lists/*.list.chroot \ + config/package-lists/*.list.chroot_${_PASS} +do + if [ -e "${LIST}" ] + then + # Generating package list + Expand_packagelist "$(basename ${LIST})" "config/package-lists" \ + | grep -v '^#' >> chroot/root/packages.chroot + fi +done + +# Discover unique package architectures in fully-expanded package list +for _PACKAGE_ARCHITECTURE in $(Discover_package_architectures "chroot/root/packages.chroot") +do + # If this is a foreign architecture, append to packages.foreign-architectures + if [ "${_PACKAGE_ARCHITECTURE}" != "${LB_ARCHITECTURES}" ] + then + Echo_message "Accepting foreign architecture: ${_PACKAGE_ARCHITECTURE}, live image architecture is: ${LB_ARCHITECTURES}" + echo "${_PACKAGE_ARCHITECTURE}" >> chroot/root/packages.foreign-architectures + fi +done + +rm -f chroot/bin/Packages + +case "${LB_BUILD_WITH_CHROOT}" in + true) + # Removing dctrl-tools again if the user has not installed it + if ! grep -qs dctrl-tools chroot/root/packages.chroot + then + # Removing depends + Remove_package + fi + + # Saving cache + Save_cache cache/packages.chroot + ;; +esac + +# Creating stage file +Create_stagefile .build/chroot_package-lists.${_PASS} diff --git a/system-build/scripts/build/chroot_preseed b/system-build/scripts/build/chroot_preseed new file mode 100755 index 0000000..53bd8df --- /dev/null +++ b/system-build/scripts/build/chroot_preseed @@ -0,0 +1,72 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'execute local preseed in chroot')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +Echo_message "Begin executing local preseeds..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/chroot_preseed + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +if ls config/preseed/*.cfg > /dev/null 2>&1 || \ + ls config/preseed/*.cfg.chroot > /dev/null 2>&1 || \ + ls chroot/root/packages.chroot.cfg > /dev/null 2>&1 +then + # Check dependency + Check_package chroot /usr/bin/debconf-set-selections debconf + + # Install dependency + Install_package + + for PRESEED in config/preseed/*.cfg config/preseed/*.cfg.chroot chroot/root/packages.chroot.cfg + do + if [ -e "${PRESEED}" ] + then + # Copying local preseed + cp "${PRESEED}" chroot/root/preseed + + Chroot chroot "debconf-set-selections /root/preseed" + + # Removing local preseed file + rm -f chroot/root/preseed + fi + done + + rm -f chroot/root/packages.chroot.cfg + + # Remove dependency + Remove_package + + # Creating stage file + Create_stagefile .build/chroot_preseed +fi diff --git a/system-build/scripts/build/chroot_proc b/system-build/scripts/build/chroot_proc new file mode 100755 index 0000000..f84c0d4 --- /dev/null +++ b/system-build/scripts/build/chroot_proc @@ -0,0 +1,81 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'mount /proc')" +HELP="" +USAGE="${PROGRAM} {install|remove} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${1}" in + install) + Echo_message "Begin mounting /proc..." + + # Checking stage file + Check_stagefile .build/chroot_proc + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Creating mountpoint + mkdir -p chroot/proc + + # Mounting /proc + mount proc-live -t proc chroot/proc + + # Creating stage file + Create_stagefile .build/chroot_proc + ;; + + remove) + Echo_message "Begin unmounting /proc..." + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Workaround binfmt-support /proc locking + if [ -e chroot/proc/sys/fs/binfmt_misc/status ] + then + umount chroot/proc/sys/fs/binfmt_misc + fi + + # Unmounting /proc + if [ -e chroot/proc/version ] + then + umount chroot/proc + fi + + # Removing stage file + rm -f .build/chroot_proc + ;; + + *) + Usage + ;; +esac diff --git a/system-build/scripts/build/chroot_resolv b/system-build/scripts/build/chroot_resolv new file mode 100755 index 0000000..7cf55fc --- /dev/null +++ b/system-build/scripts/build/chroot_resolv @@ -0,0 +1,107 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'manage /etc/resolv.conf')" +HELP="" +USAGE="${PROGRAM} {install|remove} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${1}" in + install) + Echo_message "Configuring file /etc/resolv.conf" + + # Checking stage file + Check_stagefile .build/chroot_resolv + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + if [ -e chroot/etc/resolv.conf ] + then + # Save resolv file or symlink + mv chroot/etc/resolv.conf chroot/etc/resolv.conf.orig + + # Also truncate it, otherwise we'll end up with the one + # created by debootstrap in the final image. + # + # If you want to have a custom resolv.conf, please + # overwrite it with normal local_includes mechanism. + Truncate chroot/etc/resolv.conf.orig + elif [ -L chroot/etc/resolv.conf ] + then + # Move resolv.conf aside if it's a symlink (likely resolvconf) + mv chroot/etc/resolv.conf chroot/etc/resolv.conf.orig + fi + + if [ -f /etc/resolv.conf ] + then + # Copy resolv file + cp /etc/resolv.conf chroot/etc/resolv.conf + fi + + # Creating stage file + Create_stagefile .build/chroot_resolv + ;; + + remove) + Echo_message "Deconfiguring file /etc/resolv.conf" + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + if [ -e config/includes.chroot/etc/resolv.conf ] + then + # Copying local resolv.conf + cp -a config/includes.chroot/etc/resolv.conf chroot/etc/resolv.conf + rm -f chroot/etc/resolv.conf.orig + elif [ -e chroot/etc/resolv.conf.orig ] || [ -L chroot/etc/resolv.conf.orig ] + then + # Restoring resolv file or symlink + mv chroot/etc/resolv.conf.orig chroot/etc/resolv.conf + else + # Truncating resolv file + Truncate chroot/etc/resolv.conf + fi + + # Clean up resolvconf's pollution + if [ -e chroot/etc/resolvconf/resolv.conf.d ] + then + rm -f chroot/etc/resolvconf/resolv.conf.d/original + rm -f chroot/etc/resolvconf/resolv.conf.d/tail + fi + + # Removing stage file + rm -f .build/chroot_resolv + ;; + + *) + Usage + ;; +esac diff --git a/system-build/scripts/build/chroot_selinuxfs b/system-build/scripts/build/chroot_selinuxfs new file mode 100755 index 0000000..66d4639 --- /dev/null +++ b/system-build/scripts/build/chroot_selinuxfs @@ -0,0 +1,78 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'mount /sys/fs/selinux')" +HELP="" +USAGE="${PROGRAM} {install|remove} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${1}" in + install) + if [ -e /sys/fs/selinux/enforce ] && [ "$(cat /sys/fs/selinux/enforce)" = "1" ] + then + Echo_message "Begin mounting /sys/fs/selinux..." + + # Checking stage file + Check_stagefile .build/chroot_selinuxfs + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Create mountpoint + mkdir -p chroot/sys/fs/selinux + + # Mounting /sys/fs/selinux + mount selinuxfs-live -t selinuxfs chroot/sys/fs/selinux + + # Creating stage file + Create_stagefile .build/chroot_selinuxfs + fi + ;; + + remove) + Echo_message "Begin unmounting /sys/fs/selinux..." + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Unmounting /sys/fs/selinux + if [ -e chroot/sys/fs/selinux/enforce ] + then + umount chroot/sys/fs/selinux + fi + + # Removing stage file + rm -f .build/chroot_selinux + ;; + + *) + Usage + ;; +esac diff --git a/system-build/scripts/build/chroot_sysfs b/system-build/scripts/build/chroot_sysfs new file mode 100755 index 0000000..a0637f1 --- /dev/null +++ b/system-build/scripts/build/chroot_sysfs @@ -0,0 +1,75 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'mount /sys')" +HELP="" +USAGE="${PROGRAM} {install|remove} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${1}" in + install) + Echo_message "Begin mounting /sys..." + + # Checking stage file + Check_stagefile .build/chroot_sysfs + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Create mountpoint + mkdir -p chroot/sys + + # Mounting /sys + mount sysfs-live -t sysfs chroot/sys + + # Creating stage file + Create_stagefile .build/chroot_sysfs + ;; + + remove) + Echo_message "Begin unmounting /sys..." + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Unmounting /sys + if [ -e chroot/sys/class ] + then + umount chroot/sys + fi + + # Removing stage file + rm -f .build/chroot_sysfs + ;; + + *) + Usage + ;; +esac diff --git a/system-build/scripts/build/chroot_sysv-rc b/system-build/scripts/build/chroot_sysv-rc new file mode 100755 index 0000000..a613fd4 --- /dev/null +++ b/system-build/scripts/build/chroot_sysv-rc @@ -0,0 +1,87 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'manage /usr/sbin/policy-rc.d')" +HELP="" +USAGE="${PROGRAM} {install|remove} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${1}" in + install) + Echo_message "Configuring file /usr/sbin/policy-rc.d" + + # Checking stage file + Check_stagefile .build/chroot_sysv-rc + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + if [ -e chroot/usr/sbin/policy-rc.d ] + then + # Save policy-rc.d file + Chroot chroot dpkg-divert --rename --quiet --add /usr/sbin/policy-rc.d + fi + + # Create policy-rc.d file +cat > chroot/usr/sbin/policy-rc.d << EOF +#!/bin/sh +echo "All runlevel operations denied by policy" >&2 +exit 101 +EOF + + chmod 0755 chroot/usr/sbin/policy-rc.d + + # Creating stage file + Create_stagefile .build/chroot_sysv-rc + ;; + + remove) + Echo_message "Deconfiguring file /usr/sbin/policy-rc.d" + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + # Remove custom policy-rc.d file + rm -f chroot/usr/sbin/policy-rc.d + + if [ -e chroot/usr/sbin/policy-rc.d.distrib ] + then + # Restore policy-rc.d file + Chroot chroot dpkg-divert --rename --quiet --remove /usr/sbin/policy-rc.d + fi + + # Removing stage file + rm -f .build/chroot_sysv-rc + ;; + + *) + Usage + ;; +esac diff --git a/system-build/scripts/build/chroot_tmpfs b/system-build/scripts/build/chroot_tmpfs new file mode 100755 index 0000000..a7a1d72 --- /dev/null +++ b/system-build/scripts/build/chroot_tmpfs @@ -0,0 +1,80 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'use tmpfs to speedup the build')" +HELP="" +USAGE="${PROGRAM} {install|remove} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_BUILD_WITH_TMPFS}" != "true" ] +then + exit 0 +fi + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +case "${1}" in + install) + Echo_message "Configuring tmpfs for /var/lib/dpkg" + + # Checking stage file + Check_stagefile .build/chroot_tmpfs + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + mv chroot/var/lib/dpkg chroot/var/lib/dpkg.tmp + mkdir chroot/var/lib/dpkg + mount -t tmpfs tmpfs chroot/var/lib/dpkg + mv chroot/var/lib/dpkg.tmp/* chroot/var/lib/dpkg + rm -rf chroot/var/lib/dpkg.tmp + + # Creating stage file + Create_stagefile .build/chroot_tmpfs + ;; + + remove) + Echo_message "Deconfiguring tmpfs for /var/lib/dpkg" + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + mkdir -p chroot/var/lib/dpkg.tmp + mv chroot/var/lib/dpkg/* chroot/var/lib/dpkg.tmp + umount chroot/var/lib/dpkg + rm -rf chroot/var/lib/dpkg + mv chroot/var/lib/dpkg.tmp chroot/var/lib/dpkg + + # Removing stage file + rm -f .build/chroot_tmpfs + ;; + + *) + Usage + ;; +esac diff --git a/system-build/scripts/build/clean b/system-build/scripts/build/clean new file mode 100755 index 0000000..a40b51d --- /dev/null +++ b/system-build/scripts/build/clean @@ -0,0 +1,166 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Read meta config +if [ "${1}" != "noauto" ] && [ -x auto/clean ] +then + Echo_message "Executing auto/clean script." + ./auto/clean "${@}" + exit ${?} +fi + +if [ "${1}" = "noauto" ] +then + shift +fi + +# Setting static variables +DESCRIPTION="$(Echo 'clean up system build directories')" +HELP="" +USAGE="${PROGRAM} [--all] [--cache] [--chroot] [--binary] [--purge] [--remove] [--stage] [--source]" + +#Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Avoid cases were users accidentally nuke their config/binary +if [ ! -d config ] && [ "$(basename ${PWD})" = "config" ] +then + Echo_error "%s is not a good live-build working directory to clean." "${PWD}" + exit 1 +fi + +rm -f .lock + +if [ -z "${1}" ] +then + ARGUMENTS="--all" +else + ARGUMENTS="${@}" +fi + +for ARGUMENT in ${ARGUMENTS} +do + case "${ARGUMENT}" in + --all) + "${0}" noauto --chroot + "${0}" noauto --binary + "${0}" noauto --stage + "${0}" noauto --source + + rmdir --ignore-fail-on-non-empty auto > /dev/null 2>&1 || true + rmdir --ignore-fail-on-non-empty local/bin > /dev/null 2>&1 || true + rmdir --ignore-fail-on-non-empty local > /dev/null 2>&1 || true + ;; + + --cache) + rm -rf cache + ;; + + --chroot) + Echo_message "Cleaning chroot" + umount -f chroot/run > /dev/null 2>&1 || true + umount -f chroot/sys > /dev/null 2>&1 || true + umount -f chroot/proc/sys/fs/binfmt_misc > /dev/null 2>&1 || true + umount -f chroot/proc > /dev/null 2>&1 || true + umount -f chroot/lib/init/rw > /dev/null 2>&1 || true + umount -f chroot/dev/shm > /dev/null 2>&1 || true + umount -f chroot/dev/pts > /dev/null 2>&1 || true + umount -f chroot/dev > /dev/null 2>&1 || true + umount -f chroot/var/lib/dpkg > /dev/null 2>&1 || true + umount -f chroot/root/config > /dev/null 2>&1 || true + + umount -f chroot/binary.tmp > /dev/null 2>&1 || true + umount -f chroot/dev.tmp/pts > /dev/null 2>&1 || true + + rm -rf chroot chroot.tmp + + rm -f chroot.packages.live chroot.packages.install + rm -f chroot.files + + rm -f .build/chroot* + ;; + + --binary) + umount -f binary.tmp > /dev/null 2>&1 || true + rm -rf binary.tmp binary.deb binary.udeb + rm -f ${LIVE_IMAGE_NAME}*.iso + rm -f ${LIVE_IMAGE_NAME}*.img + rm -f ${LIVE_IMAGE_NAME}*.tar.gz + rm -f ${LIVE_IMAGE_NAME}*.zsync* + rm -f ${LIVE_IMAGE_NAME}.sh + rm -f ${LIVE_IMAGE_NAME}*.contents ${LIVE_IMAGE_NAME}*.packages ${LIVE_IMAGE_NAME}*.files + rm -f MD5SUMS SHA1SUMS SHA256SUMS SHA512SUMS + rm -f md5sum.txt sha1sum.txt sha256sum.txt sha512sum.txt + + rm -rf binary + rm -rf tftpboot + + rm -f .build/binary* + ;; + + --remove) + "${0}" --all + rm -rf cache/packages.* + ;; + + --purge) + "${0}" --all + "${0}" --cache + + if [ -e auto/config ] + then + rm -f .build/config + fi + ;; + + --stage) + rm -rf .build/* + ;; + + --source) + rm -f ${LIVE_IMAGE_NAME}-source*.iso + rm -f ${LIVE_IMAGE_NAME}-source*.img + rm -f ${LIVE_IMAGE_NAME}-source*.tar + rm -f ${LIVE_IMAGE_NAME}-source*.tar.gz + rm -f ${LIVE_IMAGE_NAME}-source*.list + rm -f ${LIVE_IMAGE_NAME}-source-selection.txt + + rm -rf source + + rm -f .build/source* + ;; + + -h|--help) + Help + ;; + + -u|--usage) + Usage + ;; + + -v|--version) + echo "${VERSION}" + exit 0 + ;; + + *) + Usage + exit 1 + ;; + esac +done diff --git a/system-build/scripts/build/config b/system-build/scripts/build/config new file mode 100755 index 0000000..fc710a3 --- /dev/null +++ b/system-build/scripts/build/config @@ -0,0 +1,1379 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +PROGRAM="lb config" +DESCRIPTION="$(Echo 'create configuration for live-build(7)')" +USAGE="${PROGRAM} [--apt-ftp-proxy URL]\n\ +\t [--apt-http-proxy URL]\n\ +\t [--apt-indices true|false]\n\ +\t [--apt-options OPTION|\"OPTIONS\"]\n\ +\t [--apt-pipeline DEPTH]\n\ +\t [--apt-recommends true|false]\n\ +\t [--apt-secure true|false]\n\ +\t [--apt-source-archives true|false]\n\ +\t [-a|--architectures ARCHITECTURE]\n\ +\t [-b|--binary-images iso|iso-hybrid|netboot|tar|hdd]\n\ +\t [--binary-filesystem fat16|fat32|ext2|ext3|ext4|ntfs]\n\ +\t [--bootappend-install PARAMETER|\"PARAMETERS\"]\n\ +\t [--bootappend-live PARAMETER|\"PARAMETERS\"]\n\ +\t [--bootappend-live-failsafe PARAMETER|\"PARAMETERS\"]\n\ +\t [--bootloaders grub-legacy|grub-pc|syslinux]\n\ +\t [--cache true|false]\n\ +\t [--cache-indices true|false]\n\ +\t [--cache-packages true|false]\n\ +\t [--cache-stages STAGE|\"STAGES\"]\n\ +\t [--checksums md5|sha1|sha256|sha512|none]\n\ +\t [--compression bzip2|gzip|lzip|xz|none]\n\ +\t [--config GIT_URL::GIT_BRANCH]\n\ +\t [--zsync true|false]\n\ +\t [--build-with-chroot true|false]\n\ +\t [--chroot-filesystem ext2|ext3|ext4|squashfs|jffs2|none]\n\ +\t [--clean\n\ +\t [-c|--conffile FILE]\n\ +\t [--debconf-frontend dialog|editor|noninteractive|readline]\n\ +\t [--debconf-priority low|medium|high|critical]\n\ +\t [--debian-installer true|cdrom|netinst|netboot|businesscard|live|false]\n\ +\t [--debian-installer-distribution daily|CODENAME]\n\ +\t [--debian-installer-preseedfile FILE|URL]\n\ +\t [--debian-installer-gui true|false]\n\ +\t [--debug]\n\ +\t [-d|--distribution CODENAME]\n\ +\t [--parent-distribution CODENAME]\n\ +\t [--parent-debian-installer-distribution CODENAME]\n\ +\t [--dump]\n\ +\t [--fdisk fdisk|fdisk.dist]\n\ +\t [--force]\n\ +\t [--grub-splash FILE]\n\ +\t [--gzip-options OPTION|\"OPTIONS\"]\n\ +\t [--ignore-system-defaults]\n\ +\t [--initramfs auto|none|system-boot]\n\ +\t [--initramfs-compression bzip2|gzip|lzma]\n\ +\t [--initsystem sysvinit|systemd|none]\n\ +\t [--image-name [NAME]\n\ +\t [--interactive shell]\n\ +\t [--isohybrid-options OPTION|\"OPTIONS\"]\n\ +\t [--hdd-label LABEL]\n\ +\t [--hdd-size MB]\n\ +\t [--hdd-partition-start [parted unit, e.g. 63s]\n\ +\t [--iso-application NAME]\n\ +\t [--iso-preparer NAME]\n\ +\t [--iso-publisher NAME]\n\ +\t [--iso-volume NAME]\n\ +\t [--jffs2-eraseblock SIZE]\n\ +\t [--keyring-packages PACKAGE|\"PACKAGES\"]\n\ +\t [-k|--linux-flavours FLAVOUR|\"FLAVOURS\"]\n\ +\t [--linux-packages \"PACKAGES\"]\n\ +\t [--losetup losetup|losetup.orig]\n\ +\t [--memtest memtest86+|memtest86|none]\n\ +\t [-m|--parent-mirror-bootstrap URL]\n\ +\t [--parent-mirror-chroot URL]\n\ +\t [--parent-mirror-chroot-security URL]\n\ +\t [--parent-mirror-binary URL]\n\ +\t [--parent-mirror-binary-security URL]\n\ +\t [--parent-mirror-debian-installer URL]\n\ +\t [--mirror-bootstrap URL]\n\ +\t [--mirror-chroot URL]\n\ +\t [--mirror-chroot-security URL]\n\ +\t [--mirror-binary URL]\n\ +\t [--mirror-binary-security URL]\n\ +\t [--mirror-debian-installer URL]\n\ +\t [--mode debian]\n\ +\t [--system live|normal]\n\ +\t [--net-root-filesystem nfs|cfs]\n\ +\t [--net-root-mountoptions OPTIONS]\n\ +\t [--net-root-path PATH]\n\ +\t [--net-root-server IP|HOSTNAME]\n\ +\t [--net-cow-filesystem nfs|cfs]\n\ +\t [--net-cow-mountoptions OPTIONS]\n\ +\t [--net-cow-path PATH]\n\ +\t [--net-cow-server IP|HOSTNAME]\n\ +\t [--net-tarball true|false]\n\ +\t [--quiet]\n\ +\t [--archive-areas ARCHIVE_AREA|\"ARCHIVE_AREAS\"]\n\ +\t [--parent-archive-areas ARCHIVE_AREA|\"ARCHIVE_AREAS\"]\n\ +\t [--security true|false]\n\ +\t [--source true|false]\n\ +\t [-s|--source-images iso|netboot|tar|hdd]\n\ +\t [--firmware-binary true|false]\n\ +\t [--firmware-chroot true|false]\n\ +\t [--swap-file-path PATH]\n\ +\t [--swap-file-size MB]\n\ +\t [--tasksel apt|tasksel]\n\ +\t [--updates true|false]\n\ +\t [--backports true|false]\n\ +\t [--verbose]\n\ +\t [--loadlin true|false]\n\ +\t [--win32-loader true|false]\n\ +\t [--bootstrap-qemu-exclude PACKAGES]\n\ +\t [--bootstrap-qemu-static PATH]\n\ +\t [--bootstrap-qemu-arch ARCH]" + + +Local_arguments () +{ + LONG_OPTIONS="apt:,apt-ftp-proxy:,apt-http-proxy:,apt-options:,debootstrap-options:, + apt-pipeline:,apt-recommends:,apt-secure:,apt-source-archives:,bootstrap:,cache:,cache-indices:,cache-packages:, + cache-stages:,debconf-frontend:,debconf-priority:,dump, + initramfs:,initramfs-compression:,initsystem:,fdisk:,losetup:,mode:,system:,tasksel:, + architectures:,clean, + distribution:,parent-distribution:,parent-debian-installer-distribution:,parent-mirror-bootstrap:,parent-mirror-chroot:,parent-mirror-chroot-security:,parent-mirror-binary:, + parent-mirror-binary-security:,parent-mirror-debian-installer:, + mirror-bootstrap:,mirror-chroot:,mirror-chroot-security:,mirror-binary:, + mirror-binary-security:,mirror-debian-installer:, + archive-areas:,parent-archive-areas:,chroot-filesystem:, + gzip-options:,image-name:,interactive:,keyring-packages:,linux-flavours:,linux-packages:, + security:,updates:,backports:,binary-filesystem:,binary-images:, + apt-indices:,bootappend-install:,bootappend-live:,bootappend-live-failsafe:,bootloaders:,checksums:,compression:,config:,zsync:,build-with-chroot:, + debian-installer:,debian-installer-distribution:,debian-installer-preseedfile:,debian-installer-gui:, + grub-splash:,isohybrid-options:,hdd-label:,hdd-size:,hdd-partition-start:,iso-application:,iso-preparer:,iso-publisher:, + iso-volume:,jffs2-eraseblock:,memtest:,net-root-filesystem:,net-root-mountoptions:, + net-root-path:,net-root-server:,net-cow-filesystem:,net-cow-mountoptions:,net-cow-path:, + net-cow-server:,net-tarball:,firmware-binary:,firmware-chroot:,swap-file-path:,swap-file-size:, + loadlin:,win32-loader:,source:,source-images:,breakpoints,conffile:,debug,force, + help,ignore-system-defaults,quiet,usage,verbose,version,bootstrap-qemu-static:,bootstrap-qemu-arch:, + bootstrap-qemu-exclude:" + # Remove spaces added by indentation + LONG_OPTIONS="$(echo ${LONG_OPTIONS} | tr -d ' ')" + ARGUMENTS="$(getopt --longoptions ${LONG_OPTIONS} --name="${PROGRAM}" --options a:f:d:m:l:k:p:b:e:s:c:huv --shell sh -- "${@}")" + + if [ "${?}" != "0" ] + then + Echo_error "terminating" >&2 + exit 1 + fi + + eval set -- "${ARGUMENTS}" + + while true + do + case "${1}" in + --dump) + # Dump version + if [ -x "$(which dpkg-query 2>/dev/null)" ] + then + VERSION_DPKG="$(dpkg-query -f='${Version}' --show live-build)" + fi + + Echo "%s: This is live-build version %s" "${0}" "${VERSION_DPKG:-${VERSION}}" + + # Dump conffile contents + Print_conffiles config/all config/common config/bootstrap config/system config/binary config/source + + # Dump contents of directories that contain text files + for DIRECTORY in config/package-lists config/apt config/preseed config/rootfs + do + if Find_files "${DIRECTORY}" + then + Echo_file "${DIRECTORY}"/* + fi + done + + # Dump directory listings of all directories under config/ + for DIRECTORY in $(find config/ -mindepth 1 -maxdepth 1 -type d) + do + if Find_files "${DIRECTORY}" + then + ls -lR "${DIRECTORY}" | while read LINE + do + echo "${DIRECTORY}: ${LINE}" + done + fi + done + + exit 0 + ;; + + --clean) + _CLEAN="true" + shift + ;; + + # config/common + --apt) + LB_APT="${2}" + shift 2 + ;; + + --apt-ftp-proxy) + LB_APT_FTP_PROXY="${2}" + shift 2 + ;; + + --apt-http-proxy) + LB_APT_HTTP_PROXY="${2}" + shift 2 + ;; + + --apt-indices) + LB_APT_INDICES="${2}" + shift 2 + ;; + + --apt-options) + APT_OPTIONS="${2}" + shift 2 + ;; + + --apt-pipeline) + LB_APT_PIPELINE="${2}" + shift 2 + ;; + + --apt-recommends) + LB_APT_RECOMMENDS="${2}" + shift 2 + ;; + + --apt-secure) + LB_APT_SECURE="${2}" + shift 2 + ;; + + --apt-source-archives) + LB_APT_SOURCE_ARCHIVES="${2}" + shift 2 + ;; + + --debootstrap-options) + DEBOOTSTRAP_OPTIONS="${2}" + shift 2 + ;; + + --cache) + LB_CACHE="${2}" + shift 2 + ;; + + --cache-indices) + LB_CACHE_INDICES="${2}" + shift 2 + ;; + + --cache-packages) + LB_CACHE_PACKAGES="${2}" + shift 2 + ;; + + --cache-stages) + LB_CACHE_STAGES="${2}" + shift 2 + ;; + + --debconf-frontend) + LB_DEBCONF_FRONTEND="${2}" + shift 2 + ;; + + --debconf-priority) + LB_DEBCONF_PRIORITY="${2}" + shift 2 + ;; + + --initramfs) + LB_INITRAMFS="${2}" + shift 2 + ;; + + --initramfs-compression) + LB_INITRAMFS_COMPRESSION="${2}" + shift 2 + ;; + + --initsystem) + LB_INITSYSTEM="${2}" + shift 2 + ;; + + --fdisk) + LB_FDISK="${2}" + shift 2 + ;; + + --losetup) + LB_LOSETUP="${2}" + shift 2 + ;; + + --mode) + LB_MODE="${2}" + shift 2 + ;; + + --system) + LB_SYSTEM="${2}" + shift 2 + ;; + + --tasksel) + LB_TASKSEL="${2}" + shift 2 + ;; + + # config/bootstrap + -a|--architectures) + LB_ARCHITECTURES="${2}" + shift 2 + ;; + + -d|--distribution) + LB_DISTRIBUTION="${2}" + shift 2 + ;; + + --parent-distribution) + LB_PARENT_DISTRIBUTION="${2}" + shift 2 + ;; + + -m|--parent-mirror-bootstrap) + LB_PARENT_MIRROR_BOOTSTRAP="${2}" + shift 2 + ;; + + --parent-mirror-chroot) + LB_PARENT_MIRROR_CHROOT="${2}" + shift 2 + ;; + + --parent-mirror-chroot-security) + LB_PARENT_MIRROR_CHROOT_SECURITY="${2}" + shift 2 + ;; + + --parent-mirror-binary) + LB_PARENT_MIRROR_BINARY="${2}" + shift 2 + ;; + + --parent-mirror-binary-security) + LB_PARENT_MIRROR_BINARY_SECURITY="${2}" + shift 2 + ;; + + --parent-mirror-debian-installer) + LB_PARENT_MIRROR_DEBIAN_INSTALLER="${2}" + shift 2 + ;; + + --mirror-bootstrap) + LB_MIRROR_BOOTSTRAP="${2}" + shift 2 + ;; + + --mirror-chroot) + LB_MIRROR_CHROOT="${2}" + shift 2 + ;; + + --mirror-chroot-security) + LB_MIRROR_CHROOT_SECURITY="${2}" + shift 2 + ;; + + --mirror-binary) + LB_MIRROR_BINARY="${2}" + shift 2 + ;; + + --mirror-binary-security) + LB_MIRROR_BINARY_SECURITY="${2}" + shift 2 + ;; + + --mirror-debian-installer) + LB_MIRROR_DEBIAN_INSTALLER="${2}" + shift 2 + ;; + + --archive-areas) + LB_ARCHIVE_AREAS="${2}" + shift 2 + ;; + + --parent-archive-areas) + LB_PARENT_ARCHIVE_AREAS="${2}" + shift 2 + ;; + + # config/system + --chroot-filesystem) + LB_CHROOT_FILESYSTEM="${2}" + shift 2 + ;; + + --gzip-options) + GZIP_OPTIONS="${2}" + shift 2 + ;; + + --image-name) + LIVE_IMAGE_NAME="${2}" + shift 2 + ;; + + --interactive) + LB_INTERACTIVE="${2}" + shift 2 + ;; + + --keyring-packages) + LB_KEYRING_PACKAGES="${2}" + shift 2 + ;; + + -k|--linux-flavours) + LB_LINUX_FLAVOURS="${2}" + shift 2 + ;; + + --linux-packages) + LB_LINUX_PACKAGES="${2}" + shift 2 + ;; + + --security) + LB_SECURITY="${2}" + shift 2 + ;; + + --updates) + LB_UPDATES="${2}" + shift 2 + ;; + + --backports) + LB_BACKPORTS="${2}" + shift 2 + ;; + + # config/binary + --binary-filesystem) + LB_BINARY_FILESYSTEM="${2}" + shift 2 + ;; + + -b|--binary-images) + LIVE_IMAGE_TYPE="${2}" + shift 2 + ;; + + --bootappend-live) + LB_BOOTAPPEND_LIVE="${2}" + shift 2 + ;; + + --bootappend-live-failsafe) + LB_BOOTAPPEND_LIVE_FAILSAFE="${2}" + shift 2 + ;; + + --bootappend-install) + LB_BOOTAPPEND_INSTALL="${2}" + shift 2 + ;; + + --bootloaders) + LB_BOOTLOADERS="${2}" + shift 2 + ;; + + --checksums) + LB_CHECKSUMS="${2}" + shift 2 + ;; + + --compression) + LB_COMPRESSION="${2}" + shift 2 + ;; + + --config) + _CONFIG="${2}" + shift 2 + ;; + + --zsync) + LB_ZSYNC="${2}" + shift 2 + ;; + + --build-with-chroot) + LB_BUILD_WITH_CHROOT="${2}" + shift 2 + ;; + + --debian-installer) + LB_DEBIAN_INSTALLER="${2}" + shift 2 + ;; + + --debian-installer-distribution) + LB_DEBIAN_INSTALLER_DISTRIBUTION="${2}" + shift 2 + ;; + + --parent-debian-installer-distribution) + LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION="${2}" + shift 2 + ;; + + --debian-installer-preseedfile) + LB_DEBIAN_INSTALLER_PRESEEDFILE="${2}" + shift 2 + ;; + + --debian-installer-gui) + LB_DEBIAN_INSTALLER_GUI="${2}" + shift 2 + ;; + + --grub-splash) + LB_GRUB_SPLASH="${2}" + shift 2 + ;; + + --isohybrid-options) + LB_ISOHYBRID_OPTIONS="${2}" + shift 2 + ;; + + --hdd-label) + LB_HDD_LABEL="${2}" + shift 2 + ;; + + --hdd-size) + LB_HDD_SIZE="${2}" + shift 2 + ;; + + --hdd-partition-start) + LB_HDD_PARTITION_START="${2}" + shift 2 + ;; + + --iso-application) + LB_ISO_APPLICATION="${2}" + shift 2 + ;; + + --iso-preparer) + LB_ISO_PREPARER="${2}" + shift 2 + ;; + + --iso-publisher) + LB_ISO_PUBLISHER="${2}" + shift 2 + ;; + + --iso-volume) + LB_ISO_VOLUME="${2}" + shift 2 + ;; + + --jffs2-eraseblock) + LB_JFFS2_ERASEBLOCK="${2}" + shift 2 + ;; + + --memtest) + LB_MEMTEST="${2}" + shift 2 + ;; + + --net-root-filesystem) + LB_NET_ROOT_FILESYSTEM="${2}" + shift 2 + ;; + + --net-root-mountoptions) + LB_NET_ROOT_MOUNTOPTIONS="${2}" + shift 2 + ;; + + --net-root-path) + LB_NET_ROOT_PATH="${2}" + shift 2 + ;; + + --net-root-server) + LB_NET_ROOT_SERVER="${2}" + shift 2 + ;; + + --net-cow-filesystem) + LB_NET_COW_FILESYSTEM="${2}" + shift 2 + ;; + + --net-cow-mountoptions) + LB_NET_COW_MOUNTOPTIONS="${2}" + shift 2 + ;; + + --net-cow-path) + LB_NET_COW_PATH="${2}" + shift 2 + ;; + + --net-cow-server) + LB_NET_COW_SERVER="${2}" + shift 2 + ;; + + --net-tarball) + LB_NET_TARBALL="${2}" + shift 2 + ;; + + --firmware-binary) + LB_FIRMWARE_BINARY="${2}" + shift 2 + ;; + + --firmware-chroot) + LB_FIRMWARE_CHROOT="${2}" + shift 2 + ;; + + --swap-file-path) + LB_SWAP_FILE_PATH="${2}" + shift 2 + ;; + + --swap-file-size) + LB_SWAP_FILE_SIZE="${2}" + shift 2 + ;; + + --loadlin) + LB_LOADLIN="${2}" + shift 2 + ;; + + --win32-loader) + LB_WIN32_LOADER="${2}" + shift 2 + ;; + + --bootstrap-qemu-arch) + LB_BOOTSTRAP_QEMU_ARCHITECTURES="${2}" + shift 2 + ;; + + --bootstrap-qemu-exclude) + LB_BOOTSTRAP_QEMU_EXCLUDE="${2}" + shift 2 + ;; + + --bootstrap-qemu-static) + LB_BOOTSTRAP_QEMU_STATIC="${2}" + shift 2 + ;; + + # config/source + --source) + LB_SOURCE="${2}" + shift 2 + ;; + + -s|--source-images) + LB_SOURCE_IMAGES="${2}" + shift 2 + ;; + + # other + --breakpoints) + _BREAKPOINTS="true" + shift + ;; + + -c|--conffile) + _CONFFILE="${2}" + shift 2 + ;; + + --color) + _COLOR="true" + shift + ;; + + --debug) + _DEBUG="true" + shift + ;; + + --force) + _FORCE="true" + shift + ;; + + -h|--help) + Help + shift + ;; + + --ignore-system-defaults) + shift + ;; + + --quiet) + _QUIET="true" + shift + ;; + + -u|--usage) + Usage + shift + ;; + + --verbose) + _VERBOSE="true" + shift + ;; + + -v|--version) + echo "${VERSION}" + exit 0 + ;; + + --) + shift + break + ;; + + *) + Echo_error "internal error %s" "${0}" + exit 1 + ;; + esac + done +} + +Local_arguments "${@}" + +if [ -e .git ] && [ -n "${_CONFIG}" ] +then + if [ "${1}" != "noauto" ] + then + Echo_message "Ignoring --config ${_CONFIG}: ${PWD} is already a git repository" + fi + + _CONFIG="" +fi + +if [ -e .build/config ] && [ -n "${_CONFIG}" ] +then + if [ "${1}" != "noauto" ] + then + Echo_message "Ignoring --config ${_CONFIG}: ${PWD} is already a live-build configuration tree" + fi + + _CONFIG="" +fi + +if [ -n "${_CONFIG}" ] +then + if [ -e "${_CONFIG}" ] || [ -e "/usr/share/live/images/${_CONFIG}" ] + then + if [ ! -e "${_CONFIG}" ] && [ -e "/usr/share/live/images/${_CONFIG}" ] + then + _CONFIG="/usr/share/live/images/${_CONFIG}" + fi + + Echo_message "Copying ${_CONFIG}" + tar -C "${_CONFIG}" -c . | tar -C ./ -x + else + _GIT_REPOSITORY="$(echo ${_CONFIG} | sed -e 's|::.*$||')" + + Echo_message "Cloning ${_GIT_REPOSITORY}" + git clone ${_GIT_REPOSITORY} ./ + + if [ "${_GIT_REPOSITORY}" != "${_CONFIG}" ] + then + _GIT_BRANCH="$(echo ${_CONFIG} | awk -F\:\: '{ print $NF }')" + + Echo_message "Checking out ${_GIT_BRANCH}" + git checkout ${_GIT_BRANCH} + fi + fi + + if [ -e auto/config ] + then + _EXTRA_OPTIONS="$(echo ${@} | sed -e "s|--config ${_GIT_REPOSITORY}::${_GIT_BRANCH}||g" -e "s|--config ${_GIT_REPOSITORY}||g")" + + Echo_message "The following extra options specified to lb config are going to be added to auto/config: ${_EXTRA_OPTIONS}" + sed -i -e "s|\"\${@}\"|${_EXTRA_OPTIONS} \"\${@}\"|" auto/config + fi +fi + +# Read meta config +if [ "${1}" != "noauto" ] && [ -x auto/config ] +then + Echo_message "Executing auto/config script." + ./auto/config "${@}" + exit ${?} +fi + +if [ "${1}" = "noauto" ] +then + shift +fi + +# Reading system configuration +if ls /etc/live/build.conf > /dev/null 2>&1 || ls /etc/live/build/* > /dev/null 2>&1 +then + if In_list "--ignore-system-defaults" "${@}" + then + Echo_message "Ignoring defaults in %s" "/etc/live/build.conf" + else + Echo_message "Using defaults in %s" "/etc/live/build.conf" + + Read_conffiles /etc/live/build.conf /etc/live/build/* + fi +fi + +# Reading existing configuration +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source + +Local_arguments "${@}" + +if [ -n "${_CONFFILE}" ] +then + Read_conffiles "${_CONFFILE}" +fi + +# Setting defaults +Set_defaults + +# Checking defaults +Check_defaults + +if [ ! -e config ] +then + Echo_message "Creating config tree for a ${LB_MODE}/${LB_DISTRIBUTION}/${LB_ARCHITECTURES} system" + mkdir config +else + Echo_message "Updating config tree for a ${LB_MODE}/${LB_DISTRIBUTION}/${LB_ARCHITECTURES} system" +fi + +# Creating live-build configuration +cat > config/common << EOF +# config/common - common options for live-build(7) + +# \$LB_APT_FTP_PROXY: set apt ftp proxy +# (Default: autodetected or empty) +LB_APT_FTP_PROXY="${LB_APT_FTP_PROXY}" + +# \$LB_APT_HTTP_PROXY: set apt http proxy +# (Default: autodetected or empty) +LB_APT_HTTP_PROXY="${LB_APT_HTTP_PROXY}" + +# \$LB_APT_PIPELINE: set apt pipeline depth +# (Default: ${LB_APT_PIPELINE}) +LB_APT_PIPELINE="${LB_APT_PIPELINE}" + +# \$LB_APT_RECOMMENDS: set apt recommends +# (Default: ${LB_APT_RECOMMENDS}) +LB_APT_RECOMMENDS="${LB_APT_RECOMMENDS}" + +# \$LB_APT_SECURE: set apt security +# (Default: ${LB_APT_SECURE}) +LB_APT_SECURE="${LB_APT_SECURE}" + +# \$LB_APT_SOURCE_ARCHIVES: set apt source entries in sources.list +# (Default: ${LB_APT_SOURCE_ARCHIVES}) +LB_APT_SOURCE_ARCHIVES="${LB_APT_SOURCE_ARCHIVES}" + +# \$LB_CACHE: control cache +# (Default: ${LB_CACHE}) +LB_CACHE="${LB_CACHE}" + +# \$LB_CACHE_INDICES: control if downloaded package indices should be cached +# (Default: ${LB_CACHE_INDICES}) +LB_CACHE_INDICES="${LB_CACHE_INDICES}" + +# \$LB_CACHE_PACKAGES: control if downloaded packages files should be cached +# (Default: ${LB_CACHE_PACKAGES}) +LB_CACHE_PACKAGES="${LB_CACHE_PACKAGES}" + +# \$LB_CACHE_STAGES: control if completed stages should be cached +# (Default: ${LB_CACHE_STAGES}) +LB_CACHE_STAGES="${LB_CACHE_STAGES}" + +# \$LB_DEBCONF_FRONTEND: set debconf(1) frontend to use +# (Default: ${LB_DEBCONF_FRONTEND}) +LB_DEBCONF_FRONTEND="${LB_DEBCONF_FRONTEND}" + +# \$LB_DEBCONF_PRIORITY: set debconf(1) priority to use +# (Default: ${LB_DEBCONF_PRIORITY}) +LB_DEBCONF_PRIORITY="${LB_DEBCONF_PRIORITY}" + +# \$LB_INITRAMFS: set initramfs hook +# (Default: ${LB_INITRAMFS}) +LB_INITRAMFS="${LB_INITRAMFS}" + +# \$LB_INITRAMFS_COMPRESSION: set initramfs compression +# (Default: ${LB_INITRAMFS_COMPRESSION}) +LB_INITRAMFS_COMPRESSION="${LB_INITRAMFS_COMPRESSION}" + +# \$LB_INITSYSTEM: set init system +# (Default: ${LB_INITSYSTEM}) +LB_INITSYSTEM="${LB_INITSYSTEM}" + +# \$LB_FDISK: set fdisk program +# (Default: autodetected) +LB_FDISK="${LB_FDISK}" + +# \$LB_LOSETUP: set losetup program +# (Default: autodetected) +LB_LOSETUP="${LB_LOSETUP}" + +# \$LB_MODE: set distribution mode +# (Default: ${LB_MODE}) +LB_MODE="${LB_MODE}" + +# \$LB_SYSTEM: set system type +# (Default: ${LB_SYSTEM}) +LB_SYSTEM="${LB_SYSTEM}" + +# \$LB_TASKSEL: set tasksel program +# (Default: ${LB_TASKSEL}) +LB_TASKSEL="${LB_TASKSEL}" + +# live-build options + +# \$_BREAKPOINTS: enable breakpoints +# (Default: ${_BREAKPOINTS}) +#_BREAKPOINTS="${_BREAKPOINTS}" + +# \$_DEBUG: enable debug +# (Default: ${_DEBUG}) +#_DEBUG="${_DEBUG}" + +# \$_COLOR: enable color +# (Default: ${_COLOR}) +#_COLOR="${_COLOR}" + +# \$_FORCE: enable force +# (Default: ${_FORCE}) +#_FORCE="${_FORCE}" + +# \$_QUIET: enable quiet +# (Default: ${_QUIET}) +_QUIET="${_QUIET}" + +# \$_VERBOSE: enable verbose +# (Default: ${_VERBOSE}) +#_VERBOSE="${_VERBOSE}" + +# Internal stuff (FIXME) +APT_OPTIONS="${APT_OPTIONS}" +DEBOOTSTRAP_OPTIONS="${DEBOOTSTRAP_OPTIONS}" +GZIP_OPTIONS="${GZIP_OPTIONS}" +ISOHYBRID_OPTIONS="${ISOHYBRID_OPTIONS}" +EOF + +# Creating lb_bootstrap_* configuration +cat > config/bootstrap << EOF +# config/bootstrap - options for live-build(7), bootstrap stage + +# \$LB_DISTRIBUTION: select distribution to use +# (Default: ${LB_DISTRIBUTION}) +LB_DISTRIBUTION="${LB_DISTRIBUTION}" + +# \$LB_PARENT_DISTRIBUTION: select parent distribution to use +# (Default: ${LB_PARENT_DISTRIBUTION}) +LB_PARENT_DISTRIBUTION="${LB_PARENT_DISTRIBUTION}" + +# \$LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION: select parent distribution for debian-installer to use +# (Default: ${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}) +LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION="${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}" + +# \$LB_PARENT_MIRROR_BOOTSTRAP: set parent mirror to bootstrap from +# (Default: ${LB_PARENT_MIRROR_BOOTSTRAP}) +LB_PARENT_MIRROR_BOOTSTRAP="${LB_PARENT_MIRROR_BOOTSTRAP}" + +# \$LB_PARENT_MIRROR_CHROOT: set parent mirror to fetch packages from +# (Default: ${LB_PARENT_MIRROR_CHROOT}) +LB_PARENT_MIRROR_CHROOT="${LB_PARENT_MIRROR_CHROOT}" + +# \$LB_PARENT_MIRROR_CHROOT_SECURITY: set security parent mirror to fetch packages from +# (Default: ${LB_PARENT_MIRROR_CHROOT_SECURITY}) +LB_PARENT_MIRROR_CHROOT_SECURITY="${LB_PARENT_MIRROR_CHROOT_SECURITY}" + +# \$LB_PARENT_MIRROR_BINARY: set parent mirror which ends up in the image +# (Default: ${LB_PARENT_MIRROR_BINARY}) +LB_PARENT_MIRROR_BINARY="${LB_PARENT_MIRROR_BINARY}" + +# \$LB_PARENT_MIRROR_BINARY_SECURITY: set security parent mirror which ends up in the image +# (Default: ${LB_PARENT_MIRROR_BINARY_SECURITY}) +LB_PARENT_MIRROR_BINARY_SECURITY="${LB_PARENT_MIRROR_BINARY_SECURITY}" + +# \$LB_PARENT_MIRROR_DEBIAN_INSTALLER: set debian-installer parent mirror +# (Default: ${LB_PARENT_MIRROR_BOOTSTRAP}) +LB_PARENT_MIRROR_DEBIAN_INSTALLER="${LB_PARENT_MIRROR_DEBIAN_INSTALLER}" + +# \$LB_MIRROR_BOOTSTRAP: set mirror to bootstrap from +# (Default: ${LB_MIRROR_BOOTSTRAP}) +LB_MIRROR_BOOTSTRAP="${LB_MIRROR_BOOTSTRAP}" + +# \$LB_MIRROR_CHROOT: set mirror to fetch packages from +# (Default: ${LB_MIRROR_CHROOT}) +LB_MIRROR_CHROOT="${LB_MIRROR_CHROOT}" + +# \$LB_MIRROR_CHROOT_SECURITY: set security mirror to fetch packages from +# (Default: ${LB_MIRROR_CHROOT_SECURITY}) +LB_MIRROR_CHROOT_SECURITY="${LB_MIRROR_CHROOT_SECURITY}" + +# \$LB_MIRROR_BINARY: set mirror which ends up in the image +# (Default: ${LB_MIRROR_BINARY}) +LB_MIRROR_BINARY="${LB_MIRROR_BINARY}" + +# \$LB_MIRROR_BINARY_SECURITY: set security mirror which ends up in the image +# (Default: ${LB_MIRROR_BINARY_SECURITY}) +LB_MIRROR_BINARY_SECURITY="${LB_MIRROR_BINARY_SECURITY}" + +# \$LB_MIRROR_DEBIAN_INSTALLER: set debian-installer mirror +# (Default: ${LB_MIRROR_BOOTSTRAP}) +LB_MIRROR_DEBIAN_INSTALLER="${LB_MIRROR_DEBIAN_INSTALLER}" + +# \$LB_BOOTSTRAP_QEMU_ARCHITECTURES: architectures to use foreign bootstrap +# (Default: ${LB_BOOTSTRAP_QEMU_ARCHITECTURES}) +LB_BOOTSTRAP_QEMU_ARCHITECTURES="${LB_BOOTSTRAP_QEMU_ARCHITECTURES}" + +# \$LB_BOOTSTRAP_QEMU_EXCLUDE: packages to exclude during foreign bootstrap +# (Default: ${LB_BOOTSTRAP_QEMU_EXCLUDE}) +LB_BOOTSTRAP_QEMU_EXCLUDE="${LB_BOOTSTRAP_QEMU_EXCLUDE}" + +# \$LB_BOOTSTRAP_QEMU_STATIC: static qemu binary for foreign bootstrap +# (Default: ${LB_BOOTSTRAP_QEMU_STATIC}) +LB_BOOTSTRAP_QEMU_STATIC="${LB_BOOTSTRAP_QEMU_STATIC}" +EOF + +# Creating lb_chroot_* configuration +mkdir -p config/archives +mkdir -p config/apt +mkdir -p config/packages +mkdir -p config/packages.chroot +mkdir -p config/package-lists +mkdir -p config/preseed + +cat > config/system << EOF +# config/system - options for live-build(7), chroot stage + +# \$LB_CHROOT_FILESYSTEM: set chroot filesystem +# (Default: ${LB_CHROOT_FILESYSTEM}) +LB_CHROOT_FILESYSTEM="${LB_CHROOT_FILESYSTEM}" + +# \$LB_UNION_FILESYSTEM: set union filesystem +# (Default: ${LB_UNION_FILESYSTEM}) +LB_UNION_FILESYSTEM="${LB_UNION_FILESYSTEM}" + +# \$LB_INTERACTIVE: set interactive build +# (Default: ${LB_INTERACTIVE}) +LB_INTERACTIVE="${LB_INTERACTIVE}" + +# \$LB_KEYRING_PACKAGES: set keyring packages +# (Default: empty) +LB_KEYRING_PACKAGES="${LB_KEYRING_PACKAGES}" + +# \$LB_LINUX_FLAVOURS: set kernel flavour to use +# (Default: autodetected) +LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS}" + +# \$LB_LINUX_PACKAGES: set kernel packages to use +# (Default: autodetected) +LB_LINUX_PACKAGES="${LB_LINUX_PACKAGES}" + +# \$LB_SECURITY: enable security updates +# (Default: ${LB_SECURITY}) +LB_SECURITY="${LB_SECURITY}" + +# \$LB_UPDATES: enable updates updates +# (Default: ${LB_UPDATES}) +LB_UPDATES="${LB_UPDATES}" + +# \$LB_BACKPORTS: enable backports updates +# (Default: ${LB_BACKPORTS}) +LB_BACKPORTS="${LB_BACKPORTS}" +EOF + +# Creating lb_binary_* configuration +mkdir -p config/debian-installer +mkdir -p config/includes.installer +mkdir -p config/packages.binary +mkdir -p config/package-lists +mkdir -p config/rootfs + +cat > config/binary << EOF +# config/binary - options for live-build(7), binary stage + +# \$LB_BINARY_FILESYSTEM: set image filesystem +# (Default: ${LB_BINARY_FILESYSTEM}) +LB_BINARY_FILESYSTEM="${LB_BINARY_FILESYSTEM}" + +# \$LB_APT_INDICES: set apt generic indices +# (Default: ${LB_APT_INDICES}) +LB_APT_INDICES="${LB_APT_INDICES}" + +# \$LB_BOOTAPPEND_LIVE: set boot parameters +# (Default: empty) +LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE}" + +# \$LB_BOOTAPPEND_INSTALL: set boot parameters +# (Default: empty) +LB_BOOTAPPEND_INSTALL="${LB_BOOTAPPEND_INSTALL}" + +# \$LB_BOOTAPPEND_LIVE_FAILSAFE: set boot parameters +# (Default: empty) +LB_BOOTAPPEND_LIVE_FAILSAFE="${LB_BOOTAPPEND_LIVE_FAILSAFE}" + +# \$LB_BOOTLOADERS: set bootloaders +# (Default: ${LB_BOOTLOADERS}) +LB_BOOTLOADERS="${LB_BOOTLOADERS}" + +# \$LB_CHECKSUMS: set checksums +# (Default: ${LB_CHECKSUMS}) +LB_CHECKSUMS="${LB_CHECKSUMS}" + +# \$LB_COMPRESSION: set compression +# (Default: ${LB_COMPRESSION}) +LB_COMPRESSION="${LB_COMPRESSION}" + +# \$LB_ZSYNC: set zsync +# (Default: ${LB_ZSYNC}) +LB_ZSYNC="${LB_ZSYNC}" + +# \${LB_BUILD_WITH_CHROOT: control if we build binary images chrooted +# (Default: ${LB_BUILD_WITH_CHROOT}) +# DO NEVER, *NEVER*, *N*E*V*E*R* SET THIS OPTION to false. +LB_BUILD_WITH_CHROOT="${LB_BUILD_WITH_CHROOT}" + +# \$LB_DEBIAN_INSTALLER: set debian-installer +# (Default: ${LB_DEBIAN_INSTALLER}) +LB_DEBIAN_INSTALLER="${LB_DEBIAN_INSTALLER}" + +# \$LB_DEBIAN_INSTALLER_DISTRIBUTION: set debian-installer suite +# (Default: empty) +LB_DEBIAN_INSTALLER_DISTRIBUTION="${LB_DEBIAN_INSTALLER_DISTRIBUTION}" + +# \$LB_DEBIAN_INSTALLER_PRESEEDFILE: set debian-installer preseed filename/url +# (Default: ${LB_DEBIAN_INSTALLER_PRESEEDFILE}) +LB_DEBIAN_INSTALLER_PRESEEDFILE="${LB_DEBIAN_INSTALLER_PRESEEDFILE}" + +# \$LB_DEBIAN_INSTALLER_GUI: toggle use of GUI debian-installer +# (Default: ${LB_DEBIAN_INSTALLER_GUI}) +LB_DEBIAN_INSTALLER_GUI="${LB_DEBIAN_INSTALLER_GUI}" + +# \$LB_GRUB_SPLASH: set custom grub splash +# (Default: empty) +LB_GRUB_SPLASH="${LB_GRUB_SPLASH}" + +# \$LB_HDD_LABEL: set hdd label +# (Default: ${LB_HDD_LABEL}) +LB_HDD_LABEL="${LB_HDD_LABEL}" + +# \$LB_HDD_SIZE: set hdd filesystem size +# (Default: ${LB_HDD_SIZE}) +LB_HDD_SIZE="${LB_HDD_SIZE}" + +# \$LB_HDD_PARTITION_START: set start of partition for the hdd target for BIOSes that expect a specific boot partition start (e.g. "63s"). If empty, use optimal layout. +# (Default: ${LB_HDD_PARTITION_START}) +LB_HDD_PARTITION_START="${LB_HDD_PARTITION_START}" + +# \$LB_ISO_APPLICATION: set iso author +# (Default: ${LB_ISO_APPLICATION}) +LB_ISO_APPLICATION="${LB_ISO_APPLICATION}" + +# \$LB_ISO_PREPARER: set iso preparer +# (Default: ${LB_ISO_PREPARER}) +LB_ISO_PREPARER="${LB_ISO_PREPARER}" + +# \$LB_ISO_PUBLISHER: set iso publisher +# (Default: ${LB_ISO_PUBLISHER}) +LB_ISO_PUBLISHER="${LB_ISO_PUBLISHER}" + +# \$LB_ISO_VOLUME: set iso volume (max 32 chars) +# (Default: ${LB_ISO_VOLUME}) +LB_ISO_VOLUME="${LB_ISO_VOLUME}" + +# \$LB_JFFS2_ERASEBLOCK: set jffs2 eraseblock size +# (Default: unset) +LB_JFFS2_ERASEBLOCK="" + +# \$LB_MEMTEST: set memtest +# (Default: ${LB_MEMTEST}) +LB_MEMTEST="${LB_MEMTEST}" + +# \$LB_LOADLIN: set loadlin +# (Default: ${LB_LOADLIN}) +LB_LOADLIN="${LB_LOADLIN}" + +# \$LB_WIN32_LOADER: set win32-loader +# (Default: ${LB_WIN32_LOADER}) +LB_WIN32_LOADER="${LB_WIN32_LOADER}" + +# \$LB_NET_ROOT_FILESYSTEM: set netboot filesystem +# (Default: ${LB_NET_ROOT_FILESYSTEM}) +LB_NET_ROOT_FILESYSTEM="${LB_NET_ROOT_FILESYSTEM}" + +# \$LB_NET_ROOT_MOUNTOPTIONS: set nfsopts +# (Default: empty) +LB_NET_ROOT_MOUNTOPTIONS="${LB_NET_ROOT_MOUNTOPTIONS}" + +# \$LB_NET_ROOT_PATH: set netboot server directory +# (Default: ${LB_NET_ROOT_PATH}) +LB_NET_ROOT_PATH="${LB_NET_ROOT_PATH}" + +# \$LB_NET_ROOT_SERVER: set netboot server address +# (Default: ${LB_NET_ROOT_SERVER}) +LB_NET_ROOT_SERVER="${LB_NET_ROOT_SERVER}" + +# \$LB_NET_COW_FILESYSTEM: set net client cow filesystem +# (Default: ${LB_NET_COW_FILESYSTEM}) +LB_NET_COW_FILESYSTEM="${LB_NET_COW_FILESYSTEM}" + +# \$LB_NET_COW_MOUNTOPTIONS: set cow mount options +# (Default: empty) +LB_NET_COW_MOUNTOPTIONS="${LB_NET_COW_MOUNTOPTIONS}" + +# \$LB_NET_COW_PATH: set cow directory +# (Default: ${LB_NET_COW_PATH}) +LB_NET_COW_PATH="${LB_NET_COW_PATH}" + +# \$LB_NET_COW_SERVER: set cow server +# (Default: ${LB_NET_COW_SERVER}) +LB_NET_COW_SERVER="${LB_NET_COW_SERVER}" + +# \$LB_NET_TARBALL: set net tarball +# (Default: ${LB_NET_TARBALL}) +LB_NET_TARBALL="${LB_NET_TARBALL}" + +# \$LB_FIRMWARE_BINARY: include firmware packages in debian-installer +# (Default: ${LB_FIRMWARE_BINARY}) +LB_FIRMWARE_BINARY="${LB_FIRMWARE_BINARY}" + +# \$LB_FIRMWARE_CHROOT: include firmware packages in debian-installer +# (Default: ${LB_FIRMWARE_CHROOT}) +LB_FIRMWARE_CHROOT="${LB_FIRMWARE_CHROOT}" + +# \$LB_SWAP_FILE_PATH: set swap file path +# (Default: ${LB_SWAP_FILE_PATH}) +LB_SWAP_FILE_PATH="${LB_SWAP_FILE_PATH}" + +# \$LB_SWAP_FILE_SIZE: set swap file size +# (Default: ${LB_SWAP_FILE_SIZE}) +LB_SWAP_FILE_SIZE="${LB_SWAP_FILE_SIZE}" +EOF + +# Creating lb_source_* configuration +cat > config/source << EOF +# config/source - options for live-build(7), source stage + +# \$LB_SOURCE: set source option +# (Default: ${LB_SOURCE}) +LB_SOURCE="${LB_SOURCE}" + +# \$LB_SOURCE_IMAGES: set image type +# (Default: ${LB_SOURCE_IMAGES}) +LB_SOURCE_IMAGES="${LB_SOURCE_IMAGES}" +EOF + +mkdir -p auto +mkdir -p local/bin + +# Checking defaults again +Check_defaults + +if [ "${_CLEAN}" = "true" ] +then + # Remove empty directories in config tree + rmdir --ignore-fail-on-non-empty auto > /dev/null 2>&1 || true + rmdir --ignore-fail-on-non-empty config/*/ > /dev/null 2>&1 || true + rmdir --ignore-fail-on-non-empty config > /dev/null 2>&1 || true + rmdir --ignore-fail-on-non-empty local/*/ > /dev/null 2>&1 || true + rmdir --ignore-fail-on-non-empty local > /dev/null 2>&1 || true +fi + +mkdir -p config/hooks/normal config/hooks/live +mkdir -p config/includes config/includes.bootstrap config/includes.chroot config/includes.binary config/includes.source + +Echo_message "Symlinking hooks..." + +for _HOOK in "${LIVE_BUILD}"/share/hooks/normal/*.hook* /usr/share/live/build/hooks/normal/*.hook* +do + if [ -e "${_HOOK}" ] && [ ! -e "config/hooks/normal/$(basename ${_HOOK})" ] + then + ln -s "${_HOOK}" "config/hooks/normal/$(basename ${_HOOK})" + fi +done + +for _HOOK in "${LIVE_BUILD}"/share/hooks/live/*.hook* /usr/share/live/build/hooks/live/*.hook* +do + if [ -e "${_HOOK}" ] && [ ! -e "config/hooks/live/$(basename ${_HOOK})" ] + then + ln -s "${_HOOK}" "config/hooks/live/$(basename ${_HOOK})" + fi +done + +if [ ! -e config/package-lists/live.list.chroot ] +then + mkdir -p config/package-lists + + case "${LB_INITRAMFS}" in + system-boot) + echo "system-boot" > config/package-lists/live.list.chroot + echo "system-config" >> config/package-lists/live.list.chroot + ;; + + *) + ;; +esac + +fi + +cat > config/build << EOF +[Image] +Architecture: ${LB_ARCHITECTURES} +Archive-Areas: ${LB_ARCHIVE_AREAS} +Distribution: ${LB_DISTRIBUTION} +Mirror-Bootstrap: ${LB_MIRROR_BOOTSTRAP} +EOF + +if [ "${LB_DERIVATIVE}" = "true" ] +then + +cat >> config/build << EOF + +Parent-Archive-Areas: ${LB_ARCHIVE_AREAS} +Parent-Distribution: ${LB_PARENT_DISTRIBUTION} +Parent-Mirror-Bootstrap: ${LB_PARENT_MIRROR_BOOTSTRAP} +EOF + +fi + +cat >> config/build << EOF + +[FIXME] +Configuration-Version: ${LIVE_CONFIGURATION_VERSION} +Name: ${LIVE_IMAGE_NAME} +Type: ${LIVE_IMAGE_TYPE} +EOF + +# Creating stage file +Create_stagefile .build/config diff --git a/system-build/scripts/build/installer b/system-build/scripts/build/installer new file mode 100755 index 0000000..8ef2edd --- /dev/null +++ b/system-build/scripts/build/installer @@ -0,0 +1,75 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Automatically populating config tree +if [ -x auto/config ] && [ ! -e .build/config ] +then + Echo_message "Automatically populating config tree." + lb config +fi + +# Setting static variables +DESCRIPTION="$(Echo 'preparing installer images')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +# Setup cleanup function +Setup_cleanup + +if [ "${LB_BUILD_WITH_CHROOT}" = "true" ] +then + # Configuring chroot + lb chroot_devpts install ${@} + lb chroot_proc install ${@} + lb chroot_selinuxfs install ${@} + lb chroot_sysfs install ${@} + lb chroot_debianchroot install ${@} + lb chroot_dpkg install ${@} + lb chroot_tmpfs install ${@} + lb chroot_sysv-rc install ${@} + lb chroot_hosts install ${@} + lb chroot_resolv install ${@} + lb chroot_hostname install ${@} + lb chroot_apt install ${@} + lb chroot_archives chroot install ${@} +fi + +# Building installer +lb installer_debian-installer ${@} +lb installer_preseed ${@} + +if [ "${LB_BUILD_WITH_CHROOT}" = "true" ] +then + # Deconfiguring chroot + lb chroot_archives chroot remove ${@} + lb chroot_apt remove ${@} + lb chroot_hostname remove ${@} + lb chroot_resolv remove ${@} + lb chroot_hosts remove ${@} + lb chroot_sysv-rc remove ${@} + lb chroot_tmpfs remove ${@} + lb chroot_dpkg remove ${@} + lb chroot_debianchroot remove ${@} + lb chroot_sysfs remove ${@} + lb chroot_selinuxfs remove ${@} + lb chroot_proc remove ${@} + lb chroot_devpts remove ${@} +fi diff --git a/system-build/scripts/build/installer_debian-installer b/system-build/scripts/build/installer_debian-installer new file mode 100755 index 0000000..3f13915 --- /dev/null +++ b/system-build/scripts/build/installer_debian-installer @@ -0,0 +1,829 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'install debian-installer into binary')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${_DEBUG}" = "true" ] +then + WGET_OPTIONS="${WGET_OPTIONS} --verbose" +elif [ "${_QUIET}" = "true" ] +then + WGET_OPTIONS="${WGET_OPTIONS} --quiet" +else + WGET_OPTIONS="${WGET_OPTIONS} --no-verbose" +fi + +# Check d-i configuration +case "${LB_DEBIAN_INSTALLER}" in + true|cdrom|netinst|netboot|businesscard|live) + ;; + + false) + exit 0 + ;; + + *) + Echo_error "debian-installer flavour %s not supported." "${LB_DEBIAN_INSTALLER}" + exit 1 + ;; +esac + +Echo_message "Begin installing debian-installer..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/installer_debian-installer + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Checking depends +Check_package host /usr/bin/wget wget +Check_package chroot /usr/bin/apt-ftparchive apt-utils + +# Restoring cache +Restore_cache cache/packages.binary + +# Installing depends +Install_package + +# Setting destination directory +case "${LIVE_IMAGE_TYPE}" in + netboot) + DESTDIR="tftpboot/debian-install/${LB_ARCHITECTURES}" + ;; + + hdd*|tar) + DESTDIR="binary/install" + ;; + + *) + DESTDIR="binary/install" + ;; +esac + +# Set d-i image type +case "${LB_DEBIAN_INSTALLER}" in + businesscard|netboot|netinst) + DI_IMAGE_TYPE="netboot" + ;; + *) + case "${LIVE_IMAGE_TYPE}" in + netboot) + DI_IMAGE_TYPE="netboot" + ;; + + *) + DI_IMAGE_TYPE="cdrom" + ;; + esac + ;; +esac + +# Set architecture-specific variables +case "${LB_ARCHITECTURES}" in + armel) + DEFAULT_FLAVOUR="$(echo ${LB_LINUX_FLAVOURS} | awk '{ print $1 }')" + case "${DI_IMAGE_TYPE}" in + cdrom) + DI_REMOTE_BASE="${DEFAULT_FLAVOUR}/cdrom" + ;; + + netboot) + DI_REMOTE_BASE="${DEFAULT_FLAVOUR}/netboot" + ;; + esac + + DI_REMOTE_KERNEL="vmlinuz" + DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}/gtk" + ;; + + powerpc) + case "${DI_IMAGE_TYPE}" in + cdrom) + DI_REMOTE_BASE="${LB_ARCHITECTURES}/cdrom" + ;; + + netboot) + DI_REMOTE_BASE="${LB_ARCHITECTURES}/netboot" + ;; + esac + + DI_REMOTE_KERNEL="vmlinux" + DI_REMOTE_BASE_GTK="${DI_REMOTE_BASE}/gtk" + ;; + + *) + case "${DI_IMAGE_TYPE}" in + netboot) + DI_REMOTE_BASE="netboot/debian-installer/${LB_ARCHITECTURES}" + DI_REMOTE_BASE_GTK="netboot/gtk/debian-installer/${LB_ARCHITECTURES}" + DI_REMOTE_KERNEL="linux" + ;; + + cdrom) + DI_REMOTE_BASE="cdrom" + DI_REMOTE_BASE_GTK="cdrom/gtk" + DI_REMOTE_KERNEL="vmlinuz" + ;; + esac + ;; +esac + +Check_multiarchitectures + +Install_file() { + local FILE + FILE="${1}" + + local ARCHIVE_AREA + ARCHIVE_AREA="$(dpkg -I ${FILE} | awk '/^.*Section: / { print $2 }')" + + if echo "${ARCHIVE_AREA}" | grep -qs '/' + then + ARCHIVE_AREA="$(echo ${ARCHIVE_AREA} | awk -F/ '{ print $1 }')" + else + ARCHIVE_AREA="main" + fi + + local TARGET + TARGET="${2}/${ARCHIVE_AREA}" + + SOURCE="$(dpkg -f ${FILE} Source | awk '{ print $1 }')" + + if [ -z "${SOURCE}" ] + then + SOURCE="$(basename ${FILE} | awk -F_ '{ print $1 }')" + fi + + case "${SOURCE}" in + lib?*) + LETTER="$(echo ${SOURCE} | sed 's|\(....\).*|\1|')" + ;; + + *) + LETTER="$(echo ${SOURCE} | sed 's|\(.\).*|\1|')" + ;; + esac + + # Install directory + mkdir -p "${TARGET}"/"${LETTER}"/"${SOURCE}" + + # Move files + cp "${FILE}" "${TARGET}"/"${LETTER}"/"${SOURCE}" +} + +# Set absolute directory for caching; we require it when we call Download_file +# from a non-standard cwd. +_LB_CACHE_DIR="$(pwd)/cache/installer_debian-installer" + +Download_file () { + local _LB_TARGET + _LB_TARGET="${1}" + + local _LB_URL + _LB_URL="${2}" + + _LB_CACHE_FILE="${_LB_CACHE_DIR}/$(echo "${_LB_URL}" | sed 's|/|_|g')" + + if [ ! -f "${_LB_CACHE_FILE}" ] + then + mkdir -p ${_LB_CACHE_DIR} + if ! wget ${WGET_OPTIONS} -O "${_LB_CACHE_FILE}" "${_LB_URL}" + then + rm -f "${_LB_CACHE_FILE}" + + Echo_error "Could not download file: %s" "${_LB_URL}" + exit 1 + fi + fi + + if [ "$(stat --printf %d "${_LB_CACHE_DIR}/")" = "$(stat --printf %d ./)" ] + then + CP_OPTIONS="-l" + fi + + cp -f ${CP_OPTIONS} -- "${_LB_CACHE_FILE}" "${_LB_TARGET}" +} + +VMLINUZ_DI="vmlinuz" +INITRD_DI="initrd.gz" +DESTDIR_DI="${DESTDIR}" + +VMLINUZ_GI="gtk/vmlinuz" +INITRD_GI="gtk/initrd.gz" +DESTDIR_GI="${DESTDIR}/gtk" + +case "${LB_DERIVATIVE}" in + false) + if [ "${LB_DEBIAN_INSTALLER_DISTRIBUTION}" = "daily" ] + then + # FIXME: variable name should be decupled from derivatves + LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION="sid" + + # Debian Installer daily builds + URL="https://d-i.debian.org/daily-images/${LB_ARCHITECTURES}/daily/" + else + URL="${LB_MIRROR_DEBIAN_INSTALLER}/dists/${LB_DEBIAN_INSTALLER_DISTRIBUTION}/main/installer-${LB_ARCHITECTURES}/current/images/" + fi + ;; + + true) + if [ "${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}" = "daily" ] + then + LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION="sid" + + # Debian Installer daily builds + URL="https://d-i.debian.org/daily-images/${LB_ARCHITECTURES}/daily/" + else + URL="${LB_PARENT_MIRROR_DEBIAN_INSTALLER}/dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/main/installer-${LB_ARCHITECTURES}/current/images/" + fi + + if [ "${LB_MODE}" = "progress-linux" ] + then + # FIXME: normal derivatives probably don't rebuild d-i, + # but progress-linux does. + URL="${LB_MIRROR_DEBIAN_INSTALLER}/dists/${LB_DEBIAN_INSTALLER_DISTRIBUTION}/main/installer-${LB_ARCHITECTURES}/current/images/" + fi + ;; +esac + +mkdir -p "${DESTDIR_DI}" + +# Downloading debian-installer +Download_file "${DESTDIR}"/"${VMLINUZ_DI}" ${URL}/${DI_REMOTE_BASE}/${DI_REMOTE_KERNEL} +Download_file "${DESTDIR}"/"${INITRD_DI}" ${URL}/${DI_REMOTE_BASE}/initrd.gz + +# Downloading graphical-installer +DOWNLOAD_GTK_INSTALLER=0 +if [ "${LB_DEBIAN_INSTALLER_GUI}" = "true" ] +then + case "${LB_ARCHITECTURES}" in + amd64|i386) + DOWNLOAD_GTK_INSTALLER=1 + ;; + + powerpc) + if [ "${LB_DEBIAN_INSTALLER}" = "netboot" ] + then + DOWNLOAD_GTK_INSTALLER=1 + fi + ;; + esac +fi + +if [ ${DOWNLOAD_GTK_INSTALLER} -eq 1 ] +then + mkdir -p "${DESTDIR_GI}" + Download_file "${DESTDIR}"/"${VMLINUZ_GI}" ${URL}/${DI_REMOTE_BASE_GTK}/${DI_REMOTE_KERNEL} + Download_file "${DESTDIR}"/"${INITRD_GI}" ${URL}/${DI_REMOTE_BASE_GTK}/initrd.gz +fi + +# Only download additional packages if appropriate +if [ "${DI_IMAGE_TYPE}" != "netboot" ] +then + # Downloading additional packages + mkdir -p chroot/binary.deb/archives/partial + + mv chroot/var/lib/dpkg/status chroot/var/lib/dpkg/status.tmp + touch chroot/var/lib/dpkg/status + + case "${LB_ARCHITECTURES}" in + amd64) + DI_REQ_PACKAGES="lilo grub-pc" + DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-amd64" + ;; + + i386) + DI_REQ_PACKAGES="lilo grub-pc" + DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-686-pae" + ;; + + powerpc) + DI_REQ_PACKAGES="yaboot" + DI_PACKAGES="${DI_REQ_PACKAGES} linux-image-powerpc linux-image-powerpc64 linux-image-powerpc-smp" + ;; + esac + + DI_PACKAGES="${DI_PACKAGES} busybox cryptsetup mdadm lvm2 xfsprogs jfsutils" + + case "${LB_MODE}" in + debian) + DI_REQ_PACKAGES="${DI_REQ_PACKAGES} console-setup keyboard-configuration kbd" + DI_PACKAGES="${DI_PACKAGES} console-setup keyboard-configuration kbd" + ;; + esac + # Include firmware packages + if [ "${LB_FIRMWARE_BINARY}" = "true" ] + then + # Assumption: firmware packages install files into /lib/firmware + + # Get all firmware packages names + mkdir -p cache/contents.binary + + FIRMWARE_PACKAGES="" + + _CONTENTS="$(for _PARENT_ARCHIVE_AREA in ${LB_PARENT_ARCHIVE_AREAS}; do echo ${LB_PARENT_MIRROR_CHROOT}/dists/${LB_PARENT_DISTRIBUTION}/${_PARENT_ARCHIVE_AREA}/Contents-${LB_ARCHITECTURES}.gz; done)" + + rm -f cache/contents.chroot/contents.${LB_PARENT_DISTRIBUTION}.${LB_ARCHITECTURES} + + for _CONTENT in ${_CONTENTS} + do + wget ${WGET_OPTIONS} ${_CONTENT} -O - | gunzip -c >> cache/contents.chroot/contents.${LB_PARENT_DISTRIBUTION}.${LB_ARCHITECTURES} + + FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} $(awk '/^lib\/firmware/ { print $2 }' cache/contents.chroot/contents.${LB_PARENT_DISTRIBUTION}.${LB_ARCHITECTURES} | sort -u)" + done + + if echo ${LB_PARENT_ARCHIVE_AREAS} | grep -qs "non-free" + then + # Manually add firmware-linux/non-free meta package + if [ "${LB_DERIVATIVE}" != "true" ] + then + FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} firmware-linux" + else + case "${LB_DERIVATIVE_IS_BASED_ON}" in + debian) + FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} firmware-linux" + ;; + *) + ;; + esac + fi + fi + + if [ "${LB_DERIVATIVE}" = "true" ] + then + # FIXME: account for the fact that PARENT_DISTRIBUTION and DISTRIBUTION might be the same (to not have overlapping cache files for contents). + + _CONTENTS="$(for _ARCHIVE_AREA in ${LB_ARCHIVE_AREAS}; do echo ${LB_MIRROR_CHROOT}/dists/${LB_DISTRIBUTION}/${_ARCHIVE_AREA}/Contents-${LB_ARCHITECTURES}.gz; done)" + + rm -f cache/contents.chroot/contents.${LB_DISTRIBUTION}.${LB_ARCHITECTURES} + + for _CONTENT in ${_CONTENTS} + do + wget ${WGET_OPTIONS} ${_CONTENT} -O - | gunzip -c >> cache/contents.chroot/contents.${LB_DISTRIBUTION}.${LB_ARCHITECTURES} + + FIRMWARE_PACKAGES="${FIRMWARE_PACKAGES} $(awk '/^lib\/firmware/ { print $2 }' cache/contents.chroot/contents.${LB_DISTRIBUTION}.${LB_ARCHITECTURES} | sort -u)" + done + fi + + # Drop section and keep package names only + for _PACKAGE in ${FIRMWARE_PACKAGES} + do + DI_FIRMWARE_PACKAGES="${DI_FIRMWARE_PACKAGES} $(echo ${_PACKAGE} | awk -F/ '{ print $NF }')" + done + fi + + # Set apt command prefix + _LB_APT_COMMAND="apt-get ${APT_OPTIONS} -o Dir::Cache=/binary.deb -o APT::Install-Recommends=false --download-only" + + if [ "${LB_DEBIAN_INSTALLER}" = "live" ] + then + # We don't want to duplicate .debs of packages in binary/pool that are already + # installed to target/ via live-installer. + # + # However, we need to force various packages' inclusion in binary/pool as + # d-i does not support (for example) re-installing grub from target/ - the grub + # .debs must actually exist. + + # Download .debs of the required packages + Chroot chroot ${_LB_APT_COMMAND} install ${DI_PACKAGES} ${DI_FIRMWARE_PACKAGES} ${DI_REQ_PACKAGES} + + # Drop the packages already installed that d-i doesn't explicitely need + _REMAINING_PACKAGES="$(echo ${DI_FIRMWARE_PACKAGES} ${DI_REQ_PACKAGES} | sed -e 's# #|#g')" + _REMAINING_PACKAGES="$(sed -n -e 's|Package: ||p' chroot/var/lib/dpkg/status.tmp | grep -E -v "^(${_REMAINING_PACKAGES})\$")" + + for _PACKAGE in ${_REMAINING_PACKAGES} + do + rm -f chroot/binary.deb/archives/${_PACKAGE}_*.deb + done + else + # Download .debs of the required packages + Chroot chroot ${_LB_APT_COMMAND} install ${DI_PACKAGES} ${DI_FIRMWARE_PACKAGES} + fi + + # Revert dpkg status file + mv chroot/var/lib/dpkg/status.tmp chroot/var/lib/dpkg/status + + mv chroot/binary.deb ./ + + for _ARCHIVE_AREA in $(echo ${LB_PARENT_ARCHIVE_AREAS} ${LB_ARCHIVE_AREAS}) + do + mkdir -p binary/pool/${_ARCHIVE_AREA} + done + + if Find_files binary.deb/archives/*.deb + then + for FILE in binary.deb/archives/*.deb + do + Install_file "${FILE}" "binary/pool" + done + fi + + if [ "${LB_DEBIAN_INSTALLER}" != "live" ] + then + # Including base debian packages + if ls cache/packages.bootstrap/*.deb > /dev/null 2>&1 + then + for FILE in cache/packages.bootstrap/*.deb + do + Install_file "${FILE}" "binary/pool" + done + else + Echo_error "Could not find packages in cache/packages.bootstrap." + Echo_error "You selected values of LB_CACHE, LB_CACHE_PACKAGES, LB_CACHE_STAGES and LB_DEBIAN_INSTALLER which will result in 'bootstrap' packages not being cached - these are required when integrating the Debian Installer." + exit 1 + fi + fi + + # Including local debs + if Find_files config/packages.binary/*_"${LB_ARCHITECTURES}".deb || Find_files config/packages/*_"${LB_ARCHITECTURES}".deb + then + for FILE in config/packages.binary/*_"${LB_ARCHITECTURES}".deb config/packages/*_"${LB_ARCHITECTURES}".deb + do + if [ -e "${FILE}" ] + then + Install_file "${FILE}" "binary/pool" + fi + done + fi + + if Find_files config/packages.binary/*_all.deb || Find_files config/packages/*_all.deb + then + for FILE in config/packages.binary/*_all.deb config/packages/*_all.deb + do + if [ -e "${FILE}" ] + then + Install_file "${FILE}" "binary/pool" + fi + done + fi + + # Generating deb indices + for _ARCHIVE_AREA in $(cd binary/pool && ls) + do + mkdir -p binary/dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/${_ARCHIVE_AREA}/binary-${LB_ARCHITECTURES} + + mv binary chroot/root + echo "cd /root/binary && apt-ftparchive packages pool/${_ARCHIVE_AREA} > dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/${_ARCHIVE_AREA}/binary-${LB_ARCHITECTURES}/Packages" > chroot/binary.sh + Chroot chroot "sh binary.sh" + rm -f chroot/binary.sh + mv chroot/root/binary ./ + + gzip -9 -c binary/dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/${_ARCHIVE_AREA}/binary-${LB_ARCHITECTURES}/Packages > binary/dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/${_ARCHIVE_AREA}/binary-${LB_ARCHITECTURES}/Packages.gz + + # Fetching release + Download_file binary/dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/${_ARCHIVE_AREA}/binary-${LB_ARCHITECTURES}/Release "${LB_PARENT_MIRROR_CHROOT}"/dists/"${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}"/${_ARCHIVE_AREA}/binary-"${LB_ARCHITECTURES}"/Release + done + + # Symlink firmware packages to /firmware + if [ -n "${DI_FIRMWARE_PACKAGES}" ] + then + mkdir -p binary/firmware + cd binary/firmware + + for _PACKAGE in ${DI_FIRMWARE_PACKAGES} + do + for _FILE in $(find ../pool -name "${_PACKAGE}_*.deb") + do + ln -sf ${_FILE} ./ + done + done + + cd "${OLDPWD}" + fi + + # Udeb handling + mkdir binary.udeb + cd binary.udeb + + # Downloading udeb indices + Download_file Packages.gz "${LB_PARENT_MIRROR_CHROOT}"/dists/"${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}"/main/debian-installer/binary-"${LB_ARCHITECTURES}"/Packages.gz + gunzip -c Packages.gz > Packages + + if [ "${LB_DERIVATIVE}" = "true" ] + then + Download_file Packages.derivative.gz "${LB_MIRROR_CHROOT}"/dists/"${LB_DEBIAN_INSTALLER_DISTRIBUTION}"/main/debian-installer/binary-"${LB_ARCHITECTURES}"/Packages.gz + gunzip -c Packages.derivative.gz > Packages.derivative + fi + + # Sorting udebs + if [ "${LB_DERIVATIVE}" = true ] + then + UDEBS="$(awk '/Filename: / { print $2 }' Packages.derivative)" + fi + + UDEBS="${UDEBS} $(awk '/Filename: / { print $2 }' Packages)" + + # Downloading udebs packages + Echo_message "Downloading udebs..." + + if [ "${LB_DERIVATIVE}" = "true" ] + then + Echo_message "Building in derivative mode in debian+ layout.. a lot of 404 errors are ok here." + fi + + for UDEB in ${UDEBS} + do + if [ -f ../cache/packages.installer_debian-installer.udeb/"$(basename ${UDEB})" ] + then + # Copying cached udebs + cp ../cache/packages.installer_debian-installer.udeb/"$(basename ${UDEB})" ./ + else + # Downloading udebs + if ! ls "$(basename ${UDEB} | awk -F_ '{ print $1 }')"_* > /dev/null 2>&1 + then + wget ${WGET_OPTIONS} "${LB_MIRROR_CHROOT}"/${UDEB} || wget ${WGET_OPTIONS} "${LB_PARENT_MIRROR_CHROOT}"/${UDEB} + fi + fi + done + + # Caching udebs + rm -rf ../cache/packages.installer_debian-installer.udeb + mkdir -p ../cache/packages.installer_debian-installer.udeb + cp *.udeb ../cache/packages.installer_debian-installer.udeb + + # Including local udebs + if Find_files ../config/packages.binary/*_"${LB_ARCHITECTURES}".udeb || Find_files ../config/packages/*_"${LB_ARCHITECTURES}".udeb + then + for FILE in ../config/packages.binary/*_"${LB_ARCHITECTURES}".udeb ../config/packages/*_"${LB_ARCHITECTURES}".udeb + do + if [ -e "${FILE}" ] + then + Install_file "${FILE}" "pool" + + # Prefer local udebs over downloaded udebs + rm -f "$(basename ${FILE} | awk -F_ '{ print $1 }')"_*.udeb + fi + done + fi + + if Find_files ../config/packages.binary/*_all.udeb || Find_files ../config/packages/*_all.udeb + then + for FILE in ../config/packages.binary/*_all.udeb ../config/packages/*_all.udeb + do + if [ -e "${FILE}" ] + then + Install_file "${FILE}" "pool" + + # Prefer local udebs over downloaded udebs + rm -f "$(basename ${FILE} | awk -F_ '{ print $1 }')"_*.udeb + fi + done + fi + + # Excluding udebs + for LOCATION in "${LIVE_BUILD}/data/debian-cd" /usr/share/live/build/data/debian-cd + do + if [ -e "${LOCATION}" ] + then + grep -v "^#" "${LOCATION}/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/udeb_exclude" > exclude || true + grep -v "^#" "${LOCATION}/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/exclude-udebs" >> exclude || true + grep -v "^#" "${LOCATION}/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/exclude-udebs-${LB_ARCHITECTURES}" >> exclude || true + + continue + fi + done + + # Local exclude file + if [ -e ../config/debian-installer/udeb_exclude ] + then + cat ../config/debian-installer/udeb_exclude >> exclude + fi + + # Excluding udebs from excludes because we want them to be in the image on purpose + sed -i -e 's|di-utils-exit-installer||' exclude # used for live-installer-launcher + + while read EXCLUDE + do + if [ "${LB_DEBIAN_INSTALLER}" = "live" ] && [ "${EXCLUDE}" = "live-installer" ] + then + continue + fi + + rm -f ${EXCLUDE}_*.udeb + done < exclude + + # Moving udebs + for UDEB in ${UDEBS} + do + if [ -f "$(basename ${UDEB})" ] + then + mkdir -p $(dirname ${UDEB}) + mv "$(basename ${UDEB})" "$(dirname ${UDEB})" + fi + done + + # Creating udeb indices + mkdir -p dists/"${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}"/main/debian-installer/binary-"${LB_ARCHITECTURES}" + cd "${OLDPWD}" + + mv binary.udeb chroot/root + echo "cd /root/binary.udeb && apt-ftparchive packages pool/main > dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/main/debian-installer/binary-${LB_ARCHITECTURES}/Packages" > chroot/binary.sh + Chroot chroot "sh binary.sh" + rm -f chroot/binary.sh + mv chroot/root/binary.udeb ./ + + cd binary.udeb + gzip -9 -c dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/main/debian-installer/binary-${LB_ARCHITECTURES}/Packages > dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/main/debian-installer/binary-${LB_ARCHITECTURES}/Packages.gz + + rm -f Packages* exclude + find . | cpio -dmpu "${OLDPWD}"/binary + cd "${OLDPWD}" + + rm -rf binary.udeb + rm -rf binary.deb + + # Generating release file + mv binary chroot/root + + if [ -e chroot/etc/os-release ] + then + _VERSION="$(. chroot/etc/os-release && echo ${VERSION_ID})" + fi + + if [ -n "${_VERSION}" ]; then + _LB_APT_VERSION_OPT='-o APT::FTPArchive::Release::Version="'"${_VERSION}"'"' + fi + + case "${LB_PARENT_DISTRIBUTION}" in + sid) + _SUITE="unstable" + ;; + + *) + _SUITE="${LB_PARENT_DISTRIBUTION}" + ;; + esac + +cat > chroot/binary.sh << EOF +cd /root/binary && apt-ftparchive \ + -o APT::FTPArchive::Release::Origin="Debian" \ + -o APT::FTPArchive::Release::Label="Debian" \ + -o APT::FTPArchive::Release::Suite="${_SUITE}" \ + ${_LB_APT_VERSION_OPT} \ + -o APT::FTPArchive::Release::Codename="${LB_PARENT_DISTRIBUTION}" \ + -o APT::FTPArchive::Release::Date="$(date -R)" \ + -o APT::FTPArchive::Release::Architectures="${LB_ARCHITECTURES}" \ + -o APT::FTPArchive::Release::Components="${LB_PARENT_ARCHIVE_AREAS}" \ + -o APT::FTPArchive::Release::Description="Last updated: $(date -R)" \ + release dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION} > dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}/Release +EOF + + Chroot chroot "sh binary.sh" + rm -f chroot/binary.sh + mv chroot/root/binary ./ + + case "${LB_PARENT_DISTRIBUTION}" in + jessie) + DISTRIBUTIONS="stable" + ;; + + *) + DISTRIBUTIONS="stable testing unstable" + ;; + esac + + if [ "${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION}" != "${LB_PARENT_DISTRIBUTION}" ] + then + DISTRIBUTIONS="${DISTRIBUTIONS} ${LB_PARENT_DISTRIBUTION}" + fi + + case "${LIVE_IMAGE_TYPE}" in + hdd) + case "${LB_BINARY_FILESYSTEM}" in + fat*|ntfs) + # Creating dist directories + for DISTRIBUTION in ${DISTRIBUTIONS} + do + cp -a binary/dists/${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION} binary/dists/${DISTRIBUTION} + done + ;; + esac + ;; + + *) + # Creating dist symlinks + for DISTRIBUTION in ${DISTRIBUTIONS} + do + ln -s ${LB_PARENT_DEBIAN_INSTALLER_DISTRIBUTION} binary/dists/${DISTRIBUTION} + done + + ln -s . binary/debian + ;; + esac +fi + +Repack_initrd() +{ + local TARGET_INITRD + local INCLUDE_PATH + TARGET_INITRD="${1}" + INCLUDE_PATH="${2}" + REPACK_TMPDIR="unpacked-initrd" + + if [ -d "${INCLUDE_PATH}" ] + then + INCLUDE_PATH=$(readlink -f ${INCLUDE_PATH}) + fi + + # cpio does not have a "extract to directory", so we must change directory + mkdir -p ${REPACK_TMPDIR} + cd ${REPACK_TMPDIR} + + gzip -d < ../${TARGET_INITRD} | cpio -i --make-directories --no-absolute-filenames + if [ ! -d "${INCLUDE_PATH}" ] + then + # Invoked the old way, just copy the preseeds + for _FILE in ../config/preseed/*.cfg ../config/preseed/*.cfg.installer + do + if [ -e "${_FILE}" ] + then + cp "${_FILE}" . + fi + done + else + # New way, include target directory content in the initrd + REPACK_TMPDIR_ABS="${PWD}" + cd "${INCLUDE_PATH}" + find -print0 | cpio -pumd0 --no-preserve-owner "${REPACK_TMPDIR_ABS}/" + cd "${OLDPWD}" + fi + find -print0 | cpio -H newc -o0 | gzip -9 > ../${TARGET_INITRD} + + cd .. + rm -rf ${REPACK_TMPDIR} +} + +# Preseed d-i by repacking the initrd in certain situations +if [ "${DI_IMAGE_TYPE}" = "netboot" ] && ( ls config/preseed/*.cfg > /dev/null 2>&1 || ls config/preseed/*.cfg.installer > /dev/null 2>&1 ) +then + Repack_initrd "${DESTDIR}"/"${INITRD_DI}" + + if [ -e "${DESTDIR}"/"${INITRD_GI}" ] + then + Repack_initrd "${DESTDIR}"/"${INITRD_GI}" + fi +fi + +# Include content of config/includes.installer if exists and not empty +if [ -d config/includes.installer ] && [ -n "$(ls -A config/includes.installer)" ] +then + Repack_initrd "${DESTDIR}"/"${INITRD_DI}" config/includes.installer + + if [ -e "${DESTDIR}"/"${INITRD_GI}" ] + then + Repack_initrd "${DESTDIR}"/"${INITRD_GI}" config/includes.installer + fi +fi + +case "${LB_MODE}" in + progress-linux) + mv binary/install binary/installer + + rm -f binary/debian + + for _DIRECTORY in dists pool project firmware + do + if [ -e "binary/${_DIRECTORY}" ] + then + mv binary/"${_DIRECTORY}" binary/installer + fi + done + ;; +esac + +# Saving cache +Save_cache cache/packages.binary + +# Removing depends +Remove_package + +# Creating stage file +Create_stagefile .build/installer_debian-installer diff --git a/system-build/scripts/build/installer_preseed b/system-build/scripts/build/installer_preseed new file mode 100755 index 0000000..f17102a --- /dev/null +++ b/system-build/scripts/build/installer_preseed @@ -0,0 +1,72 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'include local preseed in installer')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + + +# Check d-i configuration +case "${LB_DEBIAN_INSTALLER}" in + false) + exit 0 + ;; +esac + +Echo_message "Begin including local preseeds..." + +# Checking stage file +Check_stagefile .build/installer_preseed + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +if ls config/preseed/*.cfg > /dev/null 2>&1 || \ + ls config/preseed/*.cfg.installer > /dev/null 2>&1 || \ + ls chroot/root/packages.installer > /dev/null 2>&1 +then + case "${LB_MODE}" in + progress-linux) + _DIRECTORY="binary/installer" + ;; + + *) + _DIRECTORY="binary/install" + ;; + esac + + rm -f "${_DIRECTORY}/preseed.cfg" + + for _FILE in config/preseed/*.cfg config/preseed/*.cfg.installer chroot/root/packages.installer + do + if [ -e "${_FILE}" ] + then + cat "${_FILE}" >> "${_DIRECTORY}/preseed.cfg" + fi + done + + # Creating stage file + Create_stagefile .build/installer_preseed +fi diff --git a/system-build/scripts/build/source b/system-build/scripts/build/source new file mode 100755 index 0000000..4d4f9bd --- /dev/null +++ b/system-build/scripts/build/source @@ -0,0 +1,66 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Automatically populating config tree +if [ -x auto/config ] && [ ! -e .build/config ] +then + Echo_message "Automatically populating config tree." + lb config +fi + +# Setting static variables +DESCRIPTION="$(Echo 'build source images')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_SOURCE}" != "true" ] +then + exit 0 +fi + +#Require_stagefile + +# Setup cleanup function +Setup_cleanup + +# Enabling network in chroot +lb chroot_hosts install ${@} +lb chroot_resolv install ${@} +lb chroot_hostname install ${@} +lb chroot_archives source install ${@} + +# Preparing images +lb source_live ${@} +lb source_debian ${@} +lb source_disk ${@} +lb source_hooks ${@} +lb source_checksums ${@} + +# Building images +lb source_iso ${@} +lb source_tar ${@} +lb source_hdd ${@} + +# Deconfiguring chroot +lb chroot_archives chroot remove ${@} +lb chroot_hostname remove ${@} +lb chroot_resolv remove ${@} +lb chroot_hosts remove ${@} diff --git a/system-build/scripts/build/source_checksums b/system-build/scripts/build/source_checksums new file mode 100755 index 0000000..8b3172f --- /dev/null +++ b/system-build/scripts/build/source_checksums @@ -0,0 +1,101 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'create source checksums')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_CHECKSUMS}" = "none" ] || [ "${LB_SOURCE}" != "true" ] +then + exit 0 +fi + +# Requiring stage file +Require_stagefile .build/config .build/source_debian + +# Checking stage file +Check_stagefile .build/source_checksums + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +for DIRECTORY in source/debian source/live +do + if [ ! -d ${DIRECTORY} ] + then + continue + fi + + for CHECKSUM in ${LB_CHECKSUMS} + do + case "${LB_MODE}" in + progress-linux) + CHECKSUMS="$(echo ${CHECKSUM} | tr [a-z] [A-Z])SUMS" + ;; + + *) + CHECKSUMS="${CHECKSUM}sum.txt" + ;; + esac + + Echo_message "Begin creating source ${CHECKSUMS}..." + + # Remove old checksums + if [ -f ${DIRECTORY}/${CHECKSUMS} ] + then + rm -f ${DIRECTORY}/${CHECKSUMS} + fi + + # Calculating checksums + cd ${DIRECTORY} + find . -type f \ + \! -path './*SUMS' \ + \! -path './*sum.txt' \ + -print0 | sort -z | xargs -0 ${CHECKSUM}sum > ../${CHECKSUMS} + +cat > ${CHECKSUMS} << EOF +## This file contains the list of ${CHECKSUM} checksums of all files on this +## medium. +## +## You can verify them automatically with the 'verify-checksums' boot parameter, +## or, manually with: '${CHECKSUM}sum -c ${CHECKSUMS}'. +## +## +EOF + + cat ../${CHECKSUMS} >> ${CHECKSUMS} + rm -f ../${CHECKSUMS} + + cd "${OLDPWD}" + done + + # File list + cd ${DIRECTORY} + find . | sed -e 's|^.||g' | grep "^/" | sort > ../../${LIVE_IMAGE_NAME}-source.$(basename ${DIRECTORY}).contents + cd "${OLDPWD}" +done + +# Creating stage file +Create_stagefile .build/source_checksums diff --git a/system-build/scripts/build/source_debian b/system-build/scripts/build/source_debian new file mode 100755 index 0000000..49e53db --- /dev/null +++ b/system-build/scripts/build/source_debian @@ -0,0 +1,207 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'debian sources')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_SOURCE}" != "true" ] +then + exit 0 +fi + +Echo_message "Begin downloading sources..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/source_debian + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Remove old sources +if [ -d source/debian ] +then + rm -rf source/debian +fi + +# Download sources +Chroot chroot "dpkg --get-selections" | awk '{ print $1 }' > source-selection.txt + +echo "${LB_BOOTLOADERS}" | \ +while IFS="," read -r BOOTLOADER +do + cat >> source-selection.txt << EOF + ${BOOTLOADER} +EOF +done + +cat >> source-selection.txt << EOF +live-build +EOF + +case "${LB_BINARY_IMAGES}" in + iso*) + echo "xorriso" >> source-selection.txt + ;; + + hdd*) + echo "parted" >> source-selection.txt + ;; +esac + +case "${LB_CHROOT_FILESYSTEM}" in + squashfs) + echo "squashfs-tools" >> source-selection.txt + ;; +esac + +case "${LB_BINARY_FILESYSTEM}" in + fat*) + echo "dosfstools" >> source-selection.txt + ;; + + ntfs) + echo "ntfs-3g" >> source-selection.txt + ;; +esac + +case "${LB_ARCHITECTURES}" in + amd64|i386) + +cat >> source-selection.txt << EOF +mtools +syslinux +grub +EOF + + if [ "${LB_MEMTEST}" != "false" ] && [ "${LB_MEMTEST}" != "none" ] + then + echo "${LB_MEMTEST}" >> source-selection.txt + fi + ;; +esac + +if [ -n "${LB_TASKS}" ] +then + echo "${LB_TASKSEL}" >> source-selection.txt +fi + +# apt-get source does not respect pinning +# building images with backports included but not enabled +# will result in apt-get source download stuff from backports +# where available. workaround: disable backports +case "${LB_MODE}" in + progress-linux) + case "${LB_DISTRIBUTION}" in + *-backports) + + ;; + + *) + if grep -qs "${LB_DISTRIBUTION}-backports" chroot/etc/apt/sources.list.d/progress-linux.list + then + cp chroot/etc/apt/sources.list.d/progress-linux.list chroot/etc/apt/sources.list.d/progress-linux.list.orig + + while read _LINE + do + if echo "${_LINE}" | grep -qs ${LB_DISTRIBUTION}-backports + then + sed -i -e "s|${_LINE}|#${_LINE}|" chroot/etc/apt/sources.list.d/progress-linux.list + fi + done < chroot/etc/apt/sources.list.d/progress-linux.list.orig + + Apt chroot update + fi + ;; + esac + ;; +esac + +MISSING="" + +grep . source-selection.txt | \ +while read PACKAGE +do + if ! Chroot chroot "apt-get ${APT_OPTIONS} --download-only source ${PACKAGE}" + then + MISSING="${MISSING} ${PACKAGE}" + fi +done + +if [ -n "${MISSING}" ] +then + cat > source/missing-source.txt << EOF +This file contains the list of binary packages that are installed on this live +system that do not have a corresponding source package. + +EOF + + for PACKAGE in ${MISSING} + do + Chroot chroot "dpkg -l ${PACKAGE}" | tail -n1 >> source/missing-source.txt + done +fi + +rm -f source-selection.txt + +# Sort sources +for DSC in chroot/*.dsc +do + SOURCE="$(sed -n 's|^Source: ||p' ${DSC} 2>/dev/null || :)" + # The sed may fail if multiple dsc files exist for same source, as the + # first one to match will have already been moved. + [ -n "$SOURCE" ] || continue + + case "${SOURCE}" in + lib?*) + LETTER="$(echo ${SOURCE} | sed 's|\(....\).*|\1|')" + ;; + + *) + LETTER="$(echo ${SOURCE} | sed 's|\(.\).*|\1|')" + ;; + esac + + # Install directory + mkdir -p source/debian/"${LETTER}"/"${SOURCE}" + + # Move files + mv chroot/"${SOURCE}"_* source/debian/"${LETTER}"/"${SOURCE}" +done + +# Reverting apt sources again +if [ -e chroot/etc/apt/sources.list.d/progress-linux.list.orig ] +then + mv chroot/etc/apt/sources.list.d/progress-linux.list.orig chroot/etc/apt/sources.list.d/progress-linux.list + + Apt chroot update +fi + +# Creating stage file +Create_stagefile .build/source_debian +Create_stagefile .build/source diff --git a/system-build/scripts/build/source_debian-live b/system-build/scripts/build/source_debian-live new file mode 100755 index 0000000..3af41e5 --- /dev/null +++ b/system-build/scripts/build/source_debian-live @@ -0,0 +1,62 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'copy debian-live config into source')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_SOURCE}" != "true" ] +then + exit 0 +fi + +Echo_message "Begin copying live-build configuration..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/source_debian-live + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Remove old sources +if [ -d source/debian-live ] +then + rm -rf source/debian-live +fi + +# Copy system configuration +mkdir -p source/debian-live +cp -a config source/debian-live + +if Find_files auto/* +then + cp -a auto source/debian-live +fi + +# Creating stage file +Create_stagefile .build/source_debian-live diff --git a/system-build/scripts/build/source_disk b/system-build/scripts/build/source_disk new file mode 100755 index 0000000..9cac2b3 --- /dev/null +++ b/system-build/scripts/build/source_disk @@ -0,0 +1,123 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'install disk information into source')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +case "${LB_SOURCE_IMAGES}" in + iso*|hdd*) + ;; + + *) + exit 0 + ;; +esac + +Echo_message "Begin installing disk information..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/source_disk + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +mkdir -p source/.disk + +DISTRIBUTION="$(echo ${LB_DISTRIBUTION} | cut -b 1 | tr '[a-z]' '[A-Z]')" +DISTRIBUTION="${DISTRIBUTION}$(echo ${LB_DISTRIBUTION} | cut -b 2-)" + +if [ -e chroot/etc/os-release ] +then + VERSION="$(. chroot/etc/os-release && echo ${VERSION_ID})" +fi + +VERSION="${VERSION:-none}" + +case "${LB_MODE}" in + debian) + TITLE="Debian GNU/Linux" + STRING="Official Snapshot ${ARCHITECTURE}" + TRACE="project/trace/ftp-master.debian.org" + ;; + + progress-linux) + TITLE="Progress Linux" + STRING="${VERSION} (${DISTRIBUTION}) - ${ARCHITECTURE}" + TRACE="project/trace/archive-master.progress-linux.org" + ;; + + *) + TITLE="Debian GNU/Linux" + STRING="Snapshot ${ARCHITECTURE}" + TRACE="" + ;; +esac + +if [ -n "${TRACE}" ] +then + case "${LB_DERIVATIVE}" in + true) + echo "$(echo ${LB_PARENT_MIRROR_BOOTSTRAP} | awk -F:// '{ print $2 }'): $(wget -q ${LB_PARENT_MIRROR_BOOTSTRAP}/${TRACE} -O - | head -n 1)" \ + > source/.disk/archive_trace + + echo "$(echo ${LB_MIRROR_BOOTSTRAP} | awk -F:// '{ print $2 }'): $(wget -q ${LB_MIRROR_BOOTSTRAP}/${TRACE} -O - | head -n 1)" \ + >> source/.disk/archive_trace + ;; + + false) + echo "$(wget -q ${LB_PARENT_MIRROR_BOOTSTRAP}/${TRACE} -O - | head -n 1)" \ + > source/.disk/archive_trace + ;; + esac +fi + +case "${LB_DEBIAN_INSTALLER}" in + cdrom) + echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/CD Source $(date +%Y%m%d-%H:%M)" > source/.disk/info + ;; + + true|netinst) + echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/NETINST Source $(date +%Y%m%d-%H:%M)" > source/.disk/info + ;; + + live) + echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/INSTALL Source $(date +%Y%m%d-%H:%M)" > source/.disk/info + ;; + + businesscard) + echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE/BC Source $(date +%Y%m%d-%H:%M)" > source/.disk/info + ;; + + false) + echo "${TITLE} ${VERSION} \"${DISTRIBUTION}\" - ${STRING} LIVE Source $(date +%Y%m%d-%H:%M)" > source/.disk/info + ;; +esac + +# Creating stage file +Create_stagefile .build/source_disk diff --git a/system-build/scripts/build/source_hdd b/system-build/scripts/build/source_hdd new file mode 100755 index 0000000..e9947ab --- /dev/null +++ b/system-build/scripts/build/source_hdd @@ -0,0 +1,155 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'build source image')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_SOURCE}" != "true" ] +then + exit 0 +fi + +if ! In_list hdd "${LB_SOURCE_IMAGES}" +then + exit 0 +fi + +Echo_message "Begin building source hdd image..." + +# Requiring stage file +Require_stagefile .build/config .build/source_debian + +# Checking stage file +Check_stagefile .build/source_hdd + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Checking depends +Check_package chroot /sbin/mkdosfs dosfstools +Check_package chroot /sbin/parted parted + +# Installing depends +Install_package + +# Remove old source +if [ -f ${LIVE_IMAGE_NAME}-source.img ] +then + rm -f ${LIVE_IMAGE_NAME}-source.img +fi + +# Everything which comes here needs to be cleaned up, +DU_DIM="$(du -ms source | cut -f1)" +REAL_DIM="$(Calculate_partition_size ${DU_DIM} ${LB_BINARY_FILESYSTEM})" +dd if=/dev/zero of=${LIVE_IMAGE_NAME}-source.img bs=1024k count=0 seek=${REAL_DIM} +FREELO="$(${LB_LOSETUP} -f)" +if [ ! -b chroot/${FREELO} ] +then + MAKEDEV="true" + + mv chroot/dev chroot/dev.tmp + find /dev | cpio -dmpu chroot +fi + +case "${LB_BINARY_FILESYSTEM}" in + ext2|ext3|ext4) + PARTITION_TYPE="ext2" + ;; + + fat16|fat32) + PARTITION_TYPE="${LB_BINARY_FILESYSTEM}" + ;; + + ntfs) + PARTITION_TYPE="NTFS" + ;; + + *) + Echo_error "Unsupported binary filesystem %s" "${LB_BINARY_FILESYSTEM}" + exit 1 + ;; +esac + +Echo_warning "!!! The following error/warning messages can be ignored !!!" +Losetup $FREELO ${LIVE_IMAGE_NAME}-source.img 0 +Chroot chroot "parted -s ${FREELO} mklabel msdos" || true +Chroot chroot "parted -a optimal -s ${FREELO} mkpart primary ${PARTITION_TYPE} 0.0 100%" || true +Lodetach ${FREELO} + +Losetup $FREELO ${LIVE_IMAGE_NAME}-source.img 1 + +case "${LB_BINARY_FILESYSTEM}" in + ext2|ext3|ext4) + MKFS="${LB_BINARY_FILESYSTEM}" + MKFS_OPTIONS="-L ${LB_HDD_LABEL} -m 0 -O ^64bit" + MOUNT_OPTIONS="" + ;; + + fat16) + MKFS="vfat" + MKFS_OPTIONS="-F 16 -n ${LB_HDD_LABEL}" + MOUNT_OPTIONS="" + ;; + + fat32) + MKFS="vfat" + MKFS_OPTIONS="-F 32 -n ${LB_HDD_LABEL}" + MOUNT_OPTIONS="" + ;; + + ntfs) + MKFS="ntfs" + MKFS_OPTIONS="-L ${LB_HDD_LABEL}" + MOUNT_OPTIONS="-t ntfs-3g" + ;; +esac + +Chroot chroot "mkfs.${MKFS} ${MKFS_OPTIONS} ${FREELO}" + +mkdir -p source.tmp +mount ${MOUNT_OPTIONS} ${FREELO} source.tmp +cp -r source/* source.tmp +umount source.tmp +rmdir source.tmp +Lodetach ${FREELO} +Echo_warning "!!! The above error/warning messages can be ignored !!!" + +FREELO="$(${LB_LOSETUP} -f)" +Losetup "$FREELO" ${LIVE_IMAGE_NAME}-source.img 0 +Chroot chroot "parted -s ${FREELO} set 1 lba off" || true +Lodetach ${FREELO} + +if [ -n "${MAKEDEV}" ] +then + rm -rf chroot/dev + mv chroot/dev.tmp chroot/dev +fi + +# Removing depends +Remove_package + +# Creating stage file +Create_stagefile .build/source_hdd diff --git a/system-build/scripts/build/source_hooks b/system-build/scripts/build/source_hooks new file mode 100755 index 0000000..4a7b1a4 --- /dev/null +++ b/system-build/scripts/build/source_hooks @@ -0,0 +1,81 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'execute hooks in source')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/source config/source +Set_defaults + +Echo_message "Begin executing hooks..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/source_hooks + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +## Processing distribution hooks + +# Running hooks +for _HOOK in ${LB_BINARY_HOOKS} +do + for LOCATION in "${LIVE_BUILD}/hooks" /usr/share/live/build/hooks + do + for FILE in "${LOCATION}"/????-"${_HOOK}".source + do + if [ -e "${FILE}" ] + then + cd source + "${FILE}" || { Echo_error "${_HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;} + cd "${OLDPWD}" + fi + done + done +done + +## Processing local hooks +for HOOK in config/hooks/normal/*.source config/hooks/live/*.source +do + if [ ! -e "${HOOK}" ] + then + continue + fi + + # Making hook executable + if [ ! -x "${HOOK}" ] + then + chmod +x "${HOOK}" + fi + + # Executing hook + cd source + ../"${HOOK}" || { Echo_error "${HOOK} failed (exit non-zero). You should check for errors."; exit 1 ;} + cd "${OLDPWD}" +done + +# Creating stage file +Create_stagefile .build/source_hooks diff --git a/system-build/scripts/build/source_iso b/system-build/scripts/build/source_iso new file mode 100755 index 0000000..b0b3036 --- /dev/null +++ b/system-build/scripts/build/source_iso @@ -0,0 +1,122 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'build iso source image')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_SOURCE}" != "true" ] +then + exit 0 +fi + +case "${LB_SOURCE_IMAGES}" in + iso*) + ;; + + *) + exit 0 + ;; +esac + +Echo_message "Begin building source iso image..." + +# Requiring stage file +Require_stagefile .build/config .build/source_debian + +# Checking stage file +Check_stagefile .build/source_iso + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Checking depends +Check_package chroot /usr/bin/xorriso xorriso + +# Installing depends +Install_package + +# Remove old iso image +if [ -f ${LIVE_IMAGE_NAME}-source.iso ] +then + rm -f ${LIVE_IMAGE_NAME}-source.iso +fi + +# Handle xorriso generic options +XORRISO_OPTIONS="-as mkisofs -r -J -joliet-long -l -cache-inodes" + +# Handle xorriso live-build specific options +if [ "${_QUIET}" = "true" ] +then + XORRISO_OPTIONS="${XORRISO_OPTIONS} -quiet" +fi + +if [ "${_VERBOSE}" = "true" ] +then + XORRISO_OPTIONS="${XORRISO_OPTIONS} -v" +fi + +if [ -n "${LB_ISO_APPLICATION}" ] && [ "${LB_ISO_APPLICATION}" != "none" ] +then + XORRISO_OPTIONS="${XORRISO_OPTIONS} -A \"${LB_ISO_APPLICATION}\"" +fi + +if [ -n "${LB_ISO_PREPARER}" ] && [ "${LB_ISO_PREPARER}" != "none" ] +then + XORRISO_OPTIONS="${XORRISO_OPTIONS} -p \"${LB_ISO_PREPARER}\"" +fi + +if [ -n "${LB_ISO_PUBLISHER}" ] && [ "${LB_ISO_PUBLISHER}" != "none" ] +then + XORRISO_OPTIONS="${XORRISO_OPTIONS} -publisher \"${LB_ISO_PUBLISHER}\"" +fi + +if [ -n "${LB_ISO_VOLUME}" ] && [ "${LB_ISO_VOLUME}" != "none" ] +then + XORRISO_OPTIONS="${XORRISO_OPTIONS} -V \"${LB_ISO_VOLUME}\"" +fi + +# Set an explicit modification date +XORRISO_OPTIONS="${XORRISO_OPTIONS} --modification-date=$(date --utc --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}" +%Y%m%d%H%m%S00)" + +# Moving image +mv source chroot + +cat >> chroot/source.sh << EOF +xorriso ${XORRISO_OPTIONS} -o source.iso source +EOF + +Chroot chroot "sh source.sh" + +# Move image +mv chroot/source ./ +mv chroot/source.iso ${LIVE_IMAGE_NAME}-source.iso +rm -f chroot/source.sh + +# Removing depends +Remove_package + +# Creating stage file +Create_stagefile .build/source_iso diff --git a/system-build/scripts/build/source_live b/system-build/scripts/build/source_live new file mode 100755 index 0000000..67e71c9 --- /dev/null +++ b/system-build/scripts/build/source_live @@ -0,0 +1,62 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'copy live config into source')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_SOURCE}" != "true" ] +then + exit 0 +fi + +Echo_message "Begin copying live-build configuration..." + +# Requiring stage file +Require_stagefile .build/config .build/bootstrap + +# Checking stage file +Check_stagefile .build/source_live + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Remove old sources +if [ -d source/live ] +then + rm -rf source/live +fi + +# Copy system configuration +mkdir -p source/live +cp -a config source/live + +if Find_files auto/* +then + cp -a auto source/live +fi + +# Creating stage file +Create_stagefile .build/source_live diff --git a/system-build/scripts/build/source_tar b/system-build/scripts/build/source_tar new file mode 100755 index 0000000..d4b3555 --- /dev/null +++ b/system-build/scripts/build/source_tar @@ -0,0 +1,85 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +# Including common functions +[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh + +# Setting static variables +DESCRIPTION="$(Echo 'build source tarball')" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/system config/binary config/source +Set_defaults + +if [ "${LB_SOURCE}" != "true" ] +then + exit 0 +fi + +if ! In_list tar "${LB_SOURCE_IMAGES}" +then + exit 0 +fi + +Echo_message "Begin building source tarball..." +Echo_message "This may take a while." + +# Requiring stage file +Require_stagefile .build/config .build/source_debian + +# Checking stage file +Check_stagefile .build/source_tar + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +# Remove old source +rm -f ${LIVE_IMAGE_NAME}-source.orig.tar.bz2 ${LIVE_IMAGE_NAME}-source.orig.tar.gz ${LIVE_IMAGE_NAME}-source.orig.tar.lz ${LIVE_IMAGE_NAME}-source.orig.tar +rm -f ${LIVE_IMAGE_NAME}-source.config.tar.bz2 ${LIVE_IMAGE_NAME}-source.config.tar.gz ${LIVE_IMAGE_NAME}-source.config.tar.lz ${LIVE_IMAGE_NAME}-source.config.tar + +tar cf ${LIVE_IMAGE_NAME}-source.orig.tar source/debian +tar cf ${LIVE_IMAGE_NAME}-source.config.tar source/live + +case "${LB_COMPRESSION}" in + bzip2) + bzip2 ${BZIP2_OPTIONS} ${LIVE_IMAGE_NAME}-source.orig.tar + bzip2 ${BZIP2_OPTIONS} ${LIVE_IMAGE_NAME}-source.config.tar + ;; + + gzip) + gzip ${GZIP_OPTIONS} ${LIVE_IMAGE_NAME}-source.orig.tar + gzip ${GZIP_OPTIONS} ${LIVE_IMAGE_NAME}-source.config.tar + ;; + + lzip) + lzip ${LZIP_OPTIONS} ${LIVE_IMAGE_NAME}-source.orig.tar + lzip ${LZIP_OPTIONS} ${LIVE_IMAGE_NAME}-source.config.tar + ;; + + xz) + xz ${XZ_OPTIONS} ${LIVE_IMAGE_NAME}-source.orig.tar + xz ${XZ_OPTIONS} ${LIVE_IMAGE_NAME}-source.config.tar + ;; + + none) + ;; +esac + +# Creating stage file +Create_stagefile .build/source_tar diff --git a/system-build/share/bin/Packages b/system-build/share/bin/Packages new file mode 100755 index 0000000..fa6cbba --- /dev/null +++ b/system-build/share/bin/Packages @@ -0,0 +1,31 @@ +#!/bin/sh + +## live-build(7) - System Build Scripts +## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch> +## +## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +## This is free software, and you are welcome to redistribute it +## under certain conditions; see COPYING for details. + + +set -e + +if [ ! -e /usr/bin/grep-aptavail ] +then + echo "E: /usr/bin/grep-aptavail: No such file." + + exit 1 +fi + +if [ -z "${2}" ] +then + echo "Usage: $(basename ${0}) FIELD VALUE" + + exit 1 +fi + +_FIELD="${1}" +_VALUE="${2}" + +# For compatibility with tasksel, exclude lib and non-main packages +grep-aptavail -n -sPackage -F${_FIELD} ${_VALUE} -a -! -e -FSection '^(lib|/)' | sort diff --git a/system-build/share/bootloaders/extlinux/advanced.cfg b/system-build/share/bootloaders/extlinux/advanced.cfg new file mode 100644 index 0000000..373451a --- /dev/null +++ b/system-build/share/bootloaders/extlinux/advanced.cfg @@ -0,0 +1,7 @@ +label hdt + menu label ^Hardware Detection Tool (HDT) + com32 hdt.c32 + +label memtest + menu label ^Memory Diagnostic Tool (memtest86+) + linux /live/memtest diff --git a/system-build/share/bootloaders/extlinux/extlinux.conf b/system-build/share/bootloaders/extlinux/extlinux.conf new file mode 100644 index 0000000..a3e3eab --- /dev/null +++ b/system-build/share/bootloaders/extlinux/extlinux.conf @@ -0,0 +1,4 @@ +include menu.cfg +default vesamenu.c32 +prompt 0 +timeout 0 diff --git a/system-build/share/bootloaders/extlinux/hdt.c32 b/system-build/share/bootloaders/extlinux/hdt.c32 new file mode 120000 index 0000000..f84c641 --- /dev/null +++ b/system-build/share/bootloaders/extlinux/hdt.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/hdt.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/extlinux/install.cfg b/system-build/share/bootloaders/extlinux/install.cfg new file mode 100644 index 0000000..ba09752 --- /dev/null +++ b/system-build/share/bootloaders/extlinux/install.cfg @@ -0,0 +1,11 @@ +label install + menu label ^Install + linux /install/vmlinuz + initrd /install/initrd.gz + append vga=788 @APPEND_INSTALL@ --- quiet + +label installgui + menu label ^Graphical install + linux /install/gtk/vmlinuz + initrd /install/gtk/initrd.gz + append video=vesa:ywrap,mtrr vga=788 @APPEND_INSTALL@ --- quiet diff --git a/system-build/share/bootloaders/extlinux/ldlinux.c32 b/system-build/share/bootloaders/extlinux/ldlinux.c32 new file mode 120000 index 0000000..df554c7 --- /dev/null +++ b/system-build/share/bootloaders/extlinux/ldlinux.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/ldlinux.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/extlinux/libcom32.c32 b/system-build/share/bootloaders/extlinux/libcom32.c32 new file mode 120000 index 0000000..44ab36b --- /dev/null +++ b/system-build/share/bootloaders/extlinux/libcom32.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libcom32.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/extlinux/libgpl.c32 b/system-build/share/bootloaders/extlinux/libgpl.c32 new file mode 120000 index 0000000..81c83fb --- /dev/null +++ b/system-build/share/bootloaders/extlinux/libgpl.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libgpl.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/extlinux/libmenu.c32 b/system-build/share/bootloaders/extlinux/libmenu.c32 new file mode 120000 index 0000000..2491ff9 --- /dev/null +++ b/system-build/share/bootloaders/extlinux/libmenu.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libmenu.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/extlinux/libutil.c32 b/system-build/share/bootloaders/extlinux/libutil.c32 new file mode 120000 index 0000000..478194e --- /dev/null +++ b/system-build/share/bootloaders/extlinux/libutil.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libutil.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/extlinux/live.cfg.in b/system-build/share/bootloaders/extlinux/live.cfg.in new file mode 100644 index 0000000..97ceb92 --- /dev/null +++ b/system-build/share/bootloaders/extlinux/live.cfg.in @@ -0,0 +1,12 @@ +label live-@FLAVOUR@ + menu label ^Live (@FLAVOUR@) + menu default + linux @LINUX@ + initrd @INITRD@ + append @APPEND_LIVE@ + +label live-@FLAVOUR@-failsafe + menu label ^Live (@FLAVOUR@ failsafe) + linux @LINUX@ + initrd @INITRD@ + append @APPEND_LIVE_FAILSAFE@ diff --git a/system-build/share/bootloaders/extlinux/menu.cfg b/system-build/share/bootloaders/extlinux/menu.cfg new file mode 100644 index 0000000..d2daa80 --- /dev/null +++ b/system-build/share/bootloaders/extlinux/menu.cfg @@ -0,0 +1,17 @@ +menu hshift 0 +menu width 82 + +menu title Boot menu +include stdmenu.cfg +include live.cfg +include install.cfg +menu begin advanced + menu title Advanced options + include stdmenu.cfg + label mainmenu + menu label ^Back.. + menu exit + include advanced.cfg +menu end + +menu clear diff --git a/system-build/share/bootloaders/extlinux/splash.svg b/system-build/share/bootloaders/extlinux/splash.svg new file mode 100644 index 0000000..963624c --- /dev/null +++ b/system-build/share/bootloaders/extlinux/splash.svg @@ -0,0 +1,383 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="640" + height="480" + id="svg3320" + version="1.1" + inkscape:version="0.48.3.1 r9886" + sodipodi:docname="splash.svg.in"> + <defs + id="defs3322"> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.402663,0,0,1.115648,-6.237984,0.0533075)" + r="18.370251" + fy="10.943316" + fx="15.491823" + cy="10.943316" + cx="15.491823" + id="radialGradient2813" + xlink:href="#linearGradient2807" + inkscape:collect="always" /> + <radialGradient + r="35.934704" + fy="424.15677" + fx="131.23691" + cy="424.15677" + cx="131.23691" + gradientTransform="matrix(0.101953,-0.04272301,0.09621296,0.229599,-48.67227,-64.24148)" + gradientUnits="userSpaceOnUse" + id="radialGradient2798" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.415385,0,26.70146)" + r="30.365856" + fy="45.673546" + fx="29.898689" + cy="45.673546" + cx="29.898689" + id="radialGradient18290" + xlink:href="#linearGradient18284" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.105628,-0.04514018,0.06692574,0.156607,-46.01605,-24.35485)" + r="103.26014" + fy="409.83737" + fx="340.35886" + cy="409.83737" + cx="340.35886" + id="radialGradient13895" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.08174351,0.01024998,-0.04335971,0.345793,6.123413,-84.50421)" + r="38.451698" + fy="270.67969" + fx="424.99243" + cy="270.67969" + cx="424.99243" + id="radialGradient11208" + xlink:href="#linearGradient11202" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.272962,-0.071724,0.05616202,0.213737,-78.54657,-24.30491)" + r="48.782982" + fy="243.06874" + fx="293.81989" + cy="243.06874" + cx="293.81989" + id="radialGradient10317" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.224796,0.01017229,-0.00975947,0.215674,-73.87964,-54.89804)" + r="40.975471" + fy="286.46918" + fx="500.97794" + cy="286.46918" + cx="500.97794" + id="radialGradient9434" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.163532,-0.01065754,0.01078108,0.165425,-46.18187,-65.65506)" + r="235.88632" + fy="685.99139" + fx="420.87839" + cy="685.99139" + cx="420.87839" + id="radialGradient8549" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + r="297.21338" + fy="-72.420044" + fx="336.73767" + cy="-72.420044" + cx="336.73767" + gradientTransform="matrix(0.136507,0,-4.484926e-5,0.07137743,-23.39816,12.31028)" + gradientUnits="userSpaceOnUse" + id="radialGradient7666" + xlink:href="#linearGradient5012" + inkscape:collect="always" /> + <linearGradient + id="linearGradient5012"> + <stop + id="stop5014" + offset="0" + style="stop-color:#fdf188;stop-opacity:1;" /> + <stop + id="stop5016" + offset="1" + style="stop-color:#d3bc00;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient8543"> + <stop + id="stop8545" + offset="0" + style="stop-color:#fffef5;stop-opacity:0.94117647;" /> + <stop + id="stop8547" + offset="1" + style="stop-color:#fce94f;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient11202"> + <stop + id="stop11204" + offset="0" + style="stop-color:#c4a000;stop-opacity:1;" /> + <stop + id="stop11206" + offset="1" + style="stop-color:#c4a000;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient18284"> + <stop + id="stop18286" + offset="0" + style="stop-color:#000000;stop-opacity:1;" /> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0.5" + id="stop20913" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop19165" /> + </linearGradient> + <linearGradient + id="linearGradient2807" + inkscape:collect="always"> + <stop + id="stop2809" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop2811" + offset="1" + style="stop-color:#ffffff;stop-opacity:0;" /> + </linearGradient> + <inkscape:perspective + id="perspective47" + inkscape:persp3d-origin="24 : 16 : 1" + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.775" + inkscape:cx="574.36733" + inkscape:cy="250.84337" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1016" + inkscape:window-height="570" + inkscape:window-x="0" + inkscape:window-y="1" + inkscape:window-maximized="0" /> + <metadata + id="metadata3325"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-572.3622)"> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect3328" + width="640" + height="480" + x="0" + y="572.36218" /> + <text + transform="scale(1.0000015,0.99999849)" + sodipodi:linespacing="100%" + id="text3002" + y="619.20685" + x="190.68135" + style="font-size:35.65467453px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Bold" + xml:space="preserve"><tspan + y="619.20685" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3045">@PROJECT@ @VERSION@ (@DISTRIBUTION@)</tspan><tspan + y="639.20679" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3041">@ARCHITECTURE@</tspan><tspan + y="659.20679" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3037" /><tspan + y="679.20679" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3039">Build: @YEAR@-@MONTH@-@DAY@ @HOUR@:@MINUTE@:@SECOND@</tspan><tspan + y="699.20673" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3098" /><tspan + y="719.20667" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3102">linux: @LINUX_VERSIONS@</tspan><tspan + y="739.20667" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3076">system-build: @SYSTEM_BUILD_VERSION@</tspan><tspan + y="759.20667" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3068">system-boot: @SYSTEM_BOOT_VERSION@</tspan><tspan + y="779.2066" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3070">system-config: @SYSTEM_CONFIG_VERSION@</tspan><tspan + y="799.20654" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3066" /></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="200" + y="336.7742" + id="text3114" + sodipodi:linespacing="125%" + transform="translate(0,572.3622)"><tspan + sodipodi:role="line" + id="tspan3116" /></text> + <g + id="layer1-9" + inkscape:label="Layer 1" + transform="matrix(2.8369273,0,0,2.8369235,27.782921,602.43406)"> + <path + transform="matrix(0.742527,0,-0.05812964,1.428611,4.500517,-36.68345)" + d="m 60.264545,45.673546 c 0,6.966249 -13.595256,12.613509 -30.365856,12.613509 -16.770599,0 -30.3658559,-5.64726 -30.3658559,-12.613509 0,-6.966249 13.5952569,-12.613509 30.3658559,-12.613509 16.7706,0 30.365856,5.64726 30.365856,12.613509 z" + sodipodi:ry="12.613509" + sodipodi:rx="30.365856" + sodipodi:cy="45.673546" + sodipodi:cx="29.898689" + id="path17409" + style="fill:url(#radialGradient18290);fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="cccscsssscsccsc" + id="path3120" + d="M 23.152758,1.1801876 C 20.380218,1.2190783 17.86582,1.8908769 15.634281,3.0196314 14.541531,5.1714614 10.9437,7.7293655 9.4689484,8.0015561 6.5691703,11.460832 4.6887193,15.805035 3.9754523,19.98162 c -4.375e-4,0.0026 4.366e-4,0.0052 0,0.0077 -1.1863594,1.549717 -1.6900108,3.396594 -1.3773472,5.53256 1.1211744,7.659314 3.2821678,14.888292 8.1850959,16.556275 7.154429,2.433946 21.871769,1.785847 25.129507,0.458258 7.13903,-2.909286 7.771453,-9.285098 8.891432,-16.780256 0.305554,-2.044832 -0.144835,-3.841202 -1.230601,-5.372942 -0.009,-0.0556 -0.01849,-0.111474 -0.02832,-0.167342 C 42.763966,15.777007 40.697859,11.326849 37.602582,7.8466935 35.508773,7.62926 31.462964,4.270333 30.483158,2.6229925 28.330506,1.7020155 25.961342,1.1801876 23.407632,1.1801876 c -0.08532,0 -0.170037,-0.00119 -0.254874,0 z" + style="fill:url(#radialGradient7666);fill-opacity:1;stroke:#c4a000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccscc" + id="path7668" + d="M 43.629688,22.792984 C 39.033494,39.233217 10.438199,40.802737 3.7832765,23.04227 3.7410682,39.366403 10.103414,44.083889 28.189955,43.247454 c 3.061977,-0.140689 10.00982,0.04287 14.614484,-9.136776 2.238365,-11.5104 0.825249,-11.317694 0.825249,-11.317694 z" + style="opacity:0.66666667;fill:url(#radialGradient8549);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccc" + id="path8553" + d="m 34.691565,7.6783057 2.500881,1.1253976 c 0,0 -1.310404,10.1226397 -6.669016,16.4849717 1.771665,-6.455834 4.188975,-17.6103693 4.168135,-17.6103693 z" + style="fill:url(#radialGradient9434);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccc" + id="path9436" + d="m 15.872437,4.1562328 c 1.50053,9.0656942 6.50229,19.4860282 6.002115,20.0070452 -4.584948,-6.981624 -6.502291,-12.921217 -8.00282,-17.9229779 0,-0.083363 2.000705,-2.0632267 2.000705,-2.0840673 z" + style="fill:url(#radialGradient10317);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccsc" + id="path10319" + d="M 30.21082,3.8227818 C 26.126047,20.328594 25.959322,23.079563 25.959322,23.079563 c 0,0 6.335566,-16.7559003 6.335566,-17.1727135 0,-8e-7 -1.583891,-1.5005286 -2.084068,-2.0840677 z" + style="fill:url(#radialGradient11208);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <flowRoot + id="flowRoot12974" + xml:space="preserve"><flowRegion + id="flowRegion12976"><rect + y="412.80496" + x="86.787514" + height="16.02231" + width="40.055775" + id="rect12978" /></flowRegion><flowPara + id="flowPara12980" /></flowRoot> <path + sodipodi:nodetypes="ccccccc" + id="path13014" + d="m 16.18209,34.476182 -0.04467,-9.569745 14.493727,0 1.642604,-1.263542 -16.931465,0 0.04467,10.640581 0.795134,0.192706 z" + style="fill:url(#radialGradient13895);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccc" + id="path13897" + d="m 31.043495,24.81709 0.08168,9.804611 0.686144,-0.214742 0.01198,-10.85341 -0.779803,1.263541 z" + style="fill:#958401;fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccscc" + id="path16526" + d="m 4.2551267,24.106065 c 0,0 2.3166503,8.115689 10.2209413,8.766037 1.105608,2.490418 -1.13497,4.124601 -1.13497,4.124601 L 9.7315781,36.745641 c 0,0 -6.2387745,-7.992942 -6.4882087,-9.900882 -0.2494325,-1.907937 0.1632835,-3.407793 0.1632835,-3.407793 l 0.8484738,0.669099 z" + style="fill:url(#radialGradient2798);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + style="opacity:0.74444442;fill:none;stroke:#ffffff;stroke-width:0.99999976;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 23.184204,2.3889904 C 20.570275,2.4256563 18.199721,3.0590226 16.095844,4.1232033 15.065608,6.1519314 11.673602,8.563503 10.283218,8.8201221 7.5493302,12.0815 5.776456,16.17718 5.1039936,20.11483 c -4.124e-4,0.0024 4.116e-4,0.0049 0,0.0073 -1.1184901,1.46106 -1.8584936,3.246475 -1.5637169,5.260247 1.0570343,7.22114 2.9276025,13.709677 7.3279793,15.639454 5.923141,2.597582 21.539722,1.785935 24.611092,0.534295 6.73062,-2.742852 7.061699,-8.930694 8.117606,-15.997069 0.288074,-1.927851 -0.13655,-3.621454 -1.160201,-5.065566 -0.0084,-0.05242 -0.01743,-0.105097 -0.0267,-0.157769 C 41.673494,16.150755 39.725585,11.955182 36.807382,8.6741189 34.833356,8.4691243 31.019,5.3023548 30.095246,3.7492553 28.065743,2.8809656 25.832115,2.3889904 23.424497,2.3889904 c -0.08044,0 -0.160309,-0.00112 -0.240293,0 z" + id="path2703" + sodipodi:nodetypes="cccscsssscsccsc" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccssccscccssc" + id="path2800" + d="m 22.59375,2.78125 c -2.329557,0.1165682 -4.440971,0.7250384 -6.34375,1.6875 -1.010725,1.9903059 -4.354698,4.373241 -5.71875,4.625 -2.6821095,3.199611 -4.4027734,7.199424 -5.0625,11.0625 -4.046e-4,0.0024 4.038e-4,0.02888 0,0.03125 -1.0973069,1.43339 -1.4580267,3.591148 -1.4580267,3.591148 4.685267,3.605062 7.6416117,0.213892 14.3188727,-2.01722 12.59928,1.923141 18.748338,-0.995945 22.514154,-5.667678 0.0069,-0.0085 -0.0035,-0.02088 0,-0.03125 C 39.852567,13.479666 38.411479,11.016387 36.5625,8.9375 34.62586,8.7363873 30.875008,5.6486852 29.96875,4.125 27.977684,3.2731547 25.79952,2.78125 23.4375,2.78125 c -0.07892,10e-8 -0.171531,-0.0011 -0.25,0 -0.200346,0.00281 -0.39633,-0.00988 -0.59375,0 z" + style="opacity:0.59444424;fill:url(#radialGradient2813);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/system-build/share/bootloaders/extlinux/stdmenu.cfg b/system-build/share/bootloaders/extlinux/stdmenu.cfg new file mode 100644 index 0000000..671b16f --- /dev/null +++ b/system-build/share/bootloaders/extlinux/stdmenu.cfg @@ -0,0 +1,15 @@ +menu background splash.png +menu color title * #FFFFFFFF * +menu color border * #00000000 #00000000 none +menu color sel * #ffffffff #76a1d0ff * +menu color hotsel 1;7;37;40 #ffffffff #76a1d0ff * +menu color tabmsg * #ffffffff #00000000 * +menu color help 37;40 #ffdddd00 #00000000 none +menu vshift 12 +menu rows 10 +menu helpmsgrow 15 +# The command line must be at least one line from the bottom. +menu cmdlinerow 16 +menu timeoutrow 16 +menu tabmsgrow 18 +menu tabmsg Press ENTER to boot or TAB to edit a menu entry diff --git a/system-build/share/bootloaders/extlinux/vesamenu.c32 b/system-build/share/bootloaders/extlinux/vesamenu.c32 new file mode 120000 index 0000000..84e2eff --- /dev/null +++ b/system-build/share/bootloaders/extlinux/vesamenu.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/vesamenu.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/grub-legacy/menu.lst b/system-build/share/bootloaders/grub-legacy/menu.lst new file mode 100644 index 0000000..3b866e5 --- /dev/null +++ b/system-build/share/bootloaders/grub-legacy/menu.lst @@ -0,0 +1,9 @@ +default 0 +color cyan/blue white/blue +splashimage /boot/grub/splash.xpm.gz + +LINUX_LIVE + +LINUX_INSTALL + +MEMTEST diff --git a/system-build/share/bootloaders/grub-legacy/splash.xpm.gz b/system-build/share/bootloaders/grub-legacy/splash.xpm.gz Binary files differnew file mode 100644 index 0000000..f32e228 --- /dev/null +++ b/system-build/share/bootloaders/grub-legacy/splash.xpm.gz diff --git a/system-build/share/bootloaders/grub-pc/grub.cfg b/system-build/share/bootloaders/grub-pc/grub.cfg new file mode 100644 index 0000000..3430b63 --- /dev/null +++ b/system-build/share/bootloaders/grub-pc/grub.cfg @@ -0,0 +1,12 @@ +set default=0 + +insmod tga +background_image ($root)/boot/grub/splash.tga +set color_normal=cyan/blue +set color_highlight=white/blue + +LINUX_LIVE + +LINUX_INSTALL + +MEMTEST diff --git a/system-build/share/bootloaders/grub-pc/splash.tga b/system-build/share/bootloaders/grub-pc/splash.tga Binary files differnew file mode 100644 index 0000000..90b790d --- /dev/null +++ b/system-build/share/bootloaders/grub-pc/splash.tga diff --git a/system-build/share/bootloaders/isolinux/advanced.cfg b/system-build/share/bootloaders/isolinux/advanced.cfg new file mode 100644 index 0000000..373451a --- /dev/null +++ b/system-build/share/bootloaders/isolinux/advanced.cfg @@ -0,0 +1,7 @@ +label hdt + menu label ^Hardware Detection Tool (HDT) + com32 hdt.c32 + +label memtest + menu label ^Memory Diagnostic Tool (memtest86+) + linux /live/memtest diff --git a/system-build/share/bootloaders/isolinux/hdt.c32 b/system-build/share/bootloaders/isolinux/hdt.c32 new file mode 120000 index 0000000..f84c641 --- /dev/null +++ b/system-build/share/bootloaders/isolinux/hdt.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/hdt.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/isolinux/install.cfg b/system-build/share/bootloaders/isolinux/install.cfg new file mode 100644 index 0000000..ba09752 --- /dev/null +++ b/system-build/share/bootloaders/isolinux/install.cfg @@ -0,0 +1,11 @@ +label install + menu label ^Install + linux /install/vmlinuz + initrd /install/initrd.gz + append vga=788 @APPEND_INSTALL@ --- quiet + +label installgui + menu label ^Graphical install + linux /install/gtk/vmlinuz + initrd /install/gtk/initrd.gz + append video=vesa:ywrap,mtrr vga=788 @APPEND_INSTALL@ --- quiet diff --git a/system-build/share/bootloaders/isolinux/isolinux.bin b/system-build/share/bootloaders/isolinux/isolinux.bin new file mode 120000 index 0000000..33a2ad6 --- /dev/null +++ b/system-build/share/bootloaders/isolinux/isolinux.bin @@ -0,0 +1 @@ +/usr/lib/ISOLINUX/isolinux.bin
\ No newline at end of file diff --git a/system-build/share/bootloaders/isolinux/isolinux.cfg b/system-build/share/bootloaders/isolinux/isolinux.cfg new file mode 100644 index 0000000..a3e3eab --- /dev/null +++ b/system-build/share/bootloaders/isolinux/isolinux.cfg @@ -0,0 +1,4 @@ +include menu.cfg +default vesamenu.c32 +prompt 0 +timeout 0 diff --git a/system-build/share/bootloaders/isolinux/ldlinux.c32 b/system-build/share/bootloaders/isolinux/ldlinux.c32 new file mode 120000 index 0000000..df554c7 --- /dev/null +++ b/system-build/share/bootloaders/isolinux/ldlinux.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/ldlinux.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/isolinux/libcom32.c32 b/system-build/share/bootloaders/isolinux/libcom32.c32 new file mode 120000 index 0000000..44ab36b --- /dev/null +++ b/system-build/share/bootloaders/isolinux/libcom32.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libcom32.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/isolinux/libgpl.c32 b/system-build/share/bootloaders/isolinux/libgpl.c32 new file mode 120000 index 0000000..81c83fb --- /dev/null +++ b/system-build/share/bootloaders/isolinux/libgpl.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libgpl.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/isolinux/libmenu.c32 b/system-build/share/bootloaders/isolinux/libmenu.c32 new file mode 120000 index 0000000..2491ff9 --- /dev/null +++ b/system-build/share/bootloaders/isolinux/libmenu.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libmenu.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/isolinux/libutil.c32 b/system-build/share/bootloaders/isolinux/libutil.c32 new file mode 120000 index 0000000..478194e --- /dev/null +++ b/system-build/share/bootloaders/isolinux/libutil.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libutil.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/isolinux/live.cfg.in b/system-build/share/bootloaders/isolinux/live.cfg.in new file mode 100644 index 0000000..97ceb92 --- /dev/null +++ b/system-build/share/bootloaders/isolinux/live.cfg.in @@ -0,0 +1,12 @@ +label live-@FLAVOUR@ + menu label ^Live (@FLAVOUR@) + menu default + linux @LINUX@ + initrd @INITRD@ + append @APPEND_LIVE@ + +label live-@FLAVOUR@-failsafe + menu label ^Live (@FLAVOUR@ failsafe) + linux @LINUX@ + initrd @INITRD@ + append @APPEND_LIVE_FAILSAFE@ diff --git a/system-build/share/bootloaders/isolinux/menu.cfg b/system-build/share/bootloaders/isolinux/menu.cfg new file mode 100644 index 0000000..d2daa80 --- /dev/null +++ b/system-build/share/bootloaders/isolinux/menu.cfg @@ -0,0 +1,17 @@ +menu hshift 0 +menu width 82 + +menu title Boot menu +include stdmenu.cfg +include live.cfg +include install.cfg +menu begin advanced + menu title Advanced options + include stdmenu.cfg + label mainmenu + menu label ^Back.. + menu exit + include advanced.cfg +menu end + +menu clear diff --git a/system-build/share/bootloaders/isolinux/splash.svg b/system-build/share/bootloaders/isolinux/splash.svg new file mode 100644 index 0000000..963624c --- /dev/null +++ b/system-build/share/bootloaders/isolinux/splash.svg @@ -0,0 +1,383 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="640" + height="480" + id="svg3320" + version="1.1" + inkscape:version="0.48.3.1 r9886" + sodipodi:docname="splash.svg.in"> + <defs + id="defs3322"> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.402663,0,0,1.115648,-6.237984,0.0533075)" + r="18.370251" + fy="10.943316" + fx="15.491823" + cy="10.943316" + cx="15.491823" + id="radialGradient2813" + xlink:href="#linearGradient2807" + inkscape:collect="always" /> + <radialGradient + r="35.934704" + fy="424.15677" + fx="131.23691" + cy="424.15677" + cx="131.23691" + gradientTransform="matrix(0.101953,-0.04272301,0.09621296,0.229599,-48.67227,-64.24148)" + gradientUnits="userSpaceOnUse" + id="radialGradient2798" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.415385,0,26.70146)" + r="30.365856" + fy="45.673546" + fx="29.898689" + cy="45.673546" + cx="29.898689" + id="radialGradient18290" + xlink:href="#linearGradient18284" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.105628,-0.04514018,0.06692574,0.156607,-46.01605,-24.35485)" + r="103.26014" + fy="409.83737" + fx="340.35886" + cy="409.83737" + cx="340.35886" + id="radialGradient13895" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.08174351,0.01024998,-0.04335971,0.345793,6.123413,-84.50421)" + r="38.451698" + fy="270.67969" + fx="424.99243" + cy="270.67969" + cx="424.99243" + id="radialGradient11208" + xlink:href="#linearGradient11202" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.272962,-0.071724,0.05616202,0.213737,-78.54657,-24.30491)" + r="48.782982" + fy="243.06874" + fx="293.81989" + cy="243.06874" + cx="293.81989" + id="radialGradient10317" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.224796,0.01017229,-0.00975947,0.215674,-73.87964,-54.89804)" + r="40.975471" + fy="286.46918" + fx="500.97794" + cy="286.46918" + cx="500.97794" + id="radialGradient9434" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.163532,-0.01065754,0.01078108,0.165425,-46.18187,-65.65506)" + r="235.88632" + fy="685.99139" + fx="420.87839" + cy="685.99139" + cx="420.87839" + id="radialGradient8549" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + r="297.21338" + fy="-72.420044" + fx="336.73767" + cy="-72.420044" + cx="336.73767" + gradientTransform="matrix(0.136507,0,-4.484926e-5,0.07137743,-23.39816,12.31028)" + gradientUnits="userSpaceOnUse" + id="radialGradient7666" + xlink:href="#linearGradient5012" + inkscape:collect="always" /> + <linearGradient + id="linearGradient5012"> + <stop + id="stop5014" + offset="0" + style="stop-color:#fdf188;stop-opacity:1;" /> + <stop + id="stop5016" + offset="1" + style="stop-color:#d3bc00;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient8543"> + <stop + id="stop8545" + offset="0" + style="stop-color:#fffef5;stop-opacity:0.94117647;" /> + <stop + id="stop8547" + offset="1" + style="stop-color:#fce94f;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient11202"> + <stop + id="stop11204" + offset="0" + style="stop-color:#c4a000;stop-opacity:1;" /> + <stop + id="stop11206" + offset="1" + style="stop-color:#c4a000;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient18284"> + <stop + id="stop18286" + offset="0" + style="stop-color:#000000;stop-opacity:1;" /> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0.5" + id="stop20913" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop19165" /> + </linearGradient> + <linearGradient + id="linearGradient2807" + inkscape:collect="always"> + <stop + id="stop2809" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop2811" + offset="1" + style="stop-color:#ffffff;stop-opacity:0;" /> + </linearGradient> + <inkscape:perspective + id="perspective47" + inkscape:persp3d-origin="24 : 16 : 1" + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.775" + inkscape:cx="574.36733" + inkscape:cy="250.84337" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1016" + inkscape:window-height="570" + inkscape:window-x="0" + inkscape:window-y="1" + inkscape:window-maximized="0" /> + <metadata + id="metadata3325"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-572.3622)"> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect3328" + width="640" + height="480" + x="0" + y="572.36218" /> + <text + transform="scale(1.0000015,0.99999849)" + sodipodi:linespacing="100%" + id="text3002" + y="619.20685" + x="190.68135" + style="font-size:35.65467453px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Bold" + xml:space="preserve"><tspan + y="619.20685" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3045">@PROJECT@ @VERSION@ (@DISTRIBUTION@)</tspan><tspan + y="639.20679" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3041">@ARCHITECTURE@</tspan><tspan + y="659.20679" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3037" /><tspan + y="679.20679" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3039">Build: @YEAR@-@MONTH@-@DAY@ @HOUR@:@MINUTE@:@SECOND@</tspan><tspan + y="699.20673" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3098" /><tspan + y="719.20667" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3102">linux: @LINUX_VERSIONS@</tspan><tspan + y="739.20667" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3076">system-build: @SYSTEM_BUILD_VERSION@</tspan><tspan + y="759.20667" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3068">system-boot: @SYSTEM_BOOT_VERSION@</tspan><tspan + y="779.2066" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3070">system-config: @SYSTEM_CONFIG_VERSION@</tspan><tspan + y="799.20654" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3066" /></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="200" + y="336.7742" + id="text3114" + sodipodi:linespacing="125%" + transform="translate(0,572.3622)"><tspan + sodipodi:role="line" + id="tspan3116" /></text> + <g + id="layer1-9" + inkscape:label="Layer 1" + transform="matrix(2.8369273,0,0,2.8369235,27.782921,602.43406)"> + <path + transform="matrix(0.742527,0,-0.05812964,1.428611,4.500517,-36.68345)" + d="m 60.264545,45.673546 c 0,6.966249 -13.595256,12.613509 -30.365856,12.613509 -16.770599,0 -30.3658559,-5.64726 -30.3658559,-12.613509 0,-6.966249 13.5952569,-12.613509 30.3658559,-12.613509 16.7706,0 30.365856,5.64726 30.365856,12.613509 z" + sodipodi:ry="12.613509" + sodipodi:rx="30.365856" + sodipodi:cy="45.673546" + sodipodi:cx="29.898689" + id="path17409" + style="fill:url(#radialGradient18290);fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="cccscsssscsccsc" + id="path3120" + d="M 23.152758,1.1801876 C 20.380218,1.2190783 17.86582,1.8908769 15.634281,3.0196314 14.541531,5.1714614 10.9437,7.7293655 9.4689484,8.0015561 6.5691703,11.460832 4.6887193,15.805035 3.9754523,19.98162 c -4.375e-4,0.0026 4.366e-4,0.0052 0,0.0077 -1.1863594,1.549717 -1.6900108,3.396594 -1.3773472,5.53256 1.1211744,7.659314 3.2821678,14.888292 8.1850959,16.556275 7.154429,2.433946 21.871769,1.785847 25.129507,0.458258 7.13903,-2.909286 7.771453,-9.285098 8.891432,-16.780256 0.305554,-2.044832 -0.144835,-3.841202 -1.230601,-5.372942 -0.009,-0.0556 -0.01849,-0.111474 -0.02832,-0.167342 C 42.763966,15.777007 40.697859,11.326849 37.602582,7.8466935 35.508773,7.62926 31.462964,4.270333 30.483158,2.6229925 28.330506,1.7020155 25.961342,1.1801876 23.407632,1.1801876 c -0.08532,0 -0.170037,-0.00119 -0.254874,0 z" + style="fill:url(#radialGradient7666);fill-opacity:1;stroke:#c4a000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccscc" + id="path7668" + d="M 43.629688,22.792984 C 39.033494,39.233217 10.438199,40.802737 3.7832765,23.04227 3.7410682,39.366403 10.103414,44.083889 28.189955,43.247454 c 3.061977,-0.140689 10.00982,0.04287 14.614484,-9.136776 2.238365,-11.5104 0.825249,-11.317694 0.825249,-11.317694 z" + style="opacity:0.66666667;fill:url(#radialGradient8549);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccc" + id="path8553" + d="m 34.691565,7.6783057 2.500881,1.1253976 c 0,0 -1.310404,10.1226397 -6.669016,16.4849717 1.771665,-6.455834 4.188975,-17.6103693 4.168135,-17.6103693 z" + style="fill:url(#radialGradient9434);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccc" + id="path9436" + d="m 15.872437,4.1562328 c 1.50053,9.0656942 6.50229,19.4860282 6.002115,20.0070452 -4.584948,-6.981624 -6.502291,-12.921217 -8.00282,-17.9229779 0,-0.083363 2.000705,-2.0632267 2.000705,-2.0840673 z" + style="fill:url(#radialGradient10317);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccsc" + id="path10319" + d="M 30.21082,3.8227818 C 26.126047,20.328594 25.959322,23.079563 25.959322,23.079563 c 0,0 6.335566,-16.7559003 6.335566,-17.1727135 0,-8e-7 -1.583891,-1.5005286 -2.084068,-2.0840677 z" + style="fill:url(#radialGradient11208);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <flowRoot + id="flowRoot12974" + xml:space="preserve"><flowRegion + id="flowRegion12976"><rect + y="412.80496" + x="86.787514" + height="16.02231" + width="40.055775" + id="rect12978" /></flowRegion><flowPara + id="flowPara12980" /></flowRoot> <path + sodipodi:nodetypes="ccccccc" + id="path13014" + d="m 16.18209,34.476182 -0.04467,-9.569745 14.493727,0 1.642604,-1.263542 -16.931465,0 0.04467,10.640581 0.795134,0.192706 z" + style="fill:url(#radialGradient13895);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccc" + id="path13897" + d="m 31.043495,24.81709 0.08168,9.804611 0.686144,-0.214742 0.01198,-10.85341 -0.779803,1.263541 z" + style="fill:#958401;fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccscc" + id="path16526" + d="m 4.2551267,24.106065 c 0,0 2.3166503,8.115689 10.2209413,8.766037 1.105608,2.490418 -1.13497,4.124601 -1.13497,4.124601 L 9.7315781,36.745641 c 0,0 -6.2387745,-7.992942 -6.4882087,-9.900882 -0.2494325,-1.907937 0.1632835,-3.407793 0.1632835,-3.407793 l 0.8484738,0.669099 z" + style="fill:url(#radialGradient2798);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + style="opacity:0.74444442;fill:none;stroke:#ffffff;stroke-width:0.99999976;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 23.184204,2.3889904 C 20.570275,2.4256563 18.199721,3.0590226 16.095844,4.1232033 15.065608,6.1519314 11.673602,8.563503 10.283218,8.8201221 7.5493302,12.0815 5.776456,16.17718 5.1039936,20.11483 c -4.124e-4,0.0024 4.116e-4,0.0049 0,0.0073 -1.1184901,1.46106 -1.8584936,3.246475 -1.5637169,5.260247 1.0570343,7.22114 2.9276025,13.709677 7.3279793,15.639454 5.923141,2.597582 21.539722,1.785935 24.611092,0.534295 6.73062,-2.742852 7.061699,-8.930694 8.117606,-15.997069 0.288074,-1.927851 -0.13655,-3.621454 -1.160201,-5.065566 -0.0084,-0.05242 -0.01743,-0.105097 -0.0267,-0.157769 C 41.673494,16.150755 39.725585,11.955182 36.807382,8.6741189 34.833356,8.4691243 31.019,5.3023548 30.095246,3.7492553 28.065743,2.8809656 25.832115,2.3889904 23.424497,2.3889904 c -0.08044,0 -0.160309,-0.00112 -0.240293,0 z" + id="path2703" + sodipodi:nodetypes="cccscsssscsccsc" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccssccscccssc" + id="path2800" + d="m 22.59375,2.78125 c -2.329557,0.1165682 -4.440971,0.7250384 -6.34375,1.6875 -1.010725,1.9903059 -4.354698,4.373241 -5.71875,4.625 -2.6821095,3.199611 -4.4027734,7.199424 -5.0625,11.0625 -4.046e-4,0.0024 4.038e-4,0.02888 0,0.03125 -1.0973069,1.43339 -1.4580267,3.591148 -1.4580267,3.591148 4.685267,3.605062 7.6416117,0.213892 14.3188727,-2.01722 12.59928,1.923141 18.748338,-0.995945 22.514154,-5.667678 0.0069,-0.0085 -0.0035,-0.02088 0,-0.03125 C 39.852567,13.479666 38.411479,11.016387 36.5625,8.9375 34.62586,8.7363873 30.875008,5.6486852 29.96875,4.125 27.977684,3.2731547 25.79952,2.78125 23.4375,2.78125 c -0.07892,10e-8 -0.171531,-0.0011 -0.25,0 -0.200346,0.00281 -0.39633,-0.00988 -0.59375,0 z" + style="opacity:0.59444424;fill:url(#radialGradient2813);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/system-build/share/bootloaders/isolinux/stdmenu.cfg b/system-build/share/bootloaders/isolinux/stdmenu.cfg new file mode 100644 index 0000000..671b16f --- /dev/null +++ b/system-build/share/bootloaders/isolinux/stdmenu.cfg @@ -0,0 +1,15 @@ +menu background splash.png +menu color title * #FFFFFFFF * +menu color border * #00000000 #00000000 none +menu color sel * #ffffffff #76a1d0ff * +menu color hotsel 1;7;37;40 #ffffffff #76a1d0ff * +menu color tabmsg * #ffffffff #00000000 * +menu color help 37;40 #ffdddd00 #00000000 none +menu vshift 12 +menu rows 10 +menu helpmsgrow 15 +# The command line must be at least one line from the bottom. +menu cmdlinerow 16 +menu timeoutrow 16 +menu tabmsgrow 18 +menu tabmsg Press ENTER to boot or TAB to edit a menu entry diff --git a/system-build/share/bootloaders/isolinux/vesamenu.c32 b/system-build/share/bootloaders/isolinux/vesamenu.c32 new file mode 120000 index 0000000..84e2eff --- /dev/null +++ b/system-build/share/bootloaders/isolinux/vesamenu.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/vesamenu.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/pxelinux/advanced.cfg b/system-build/share/bootloaders/pxelinux/advanced.cfg new file mode 100644 index 0000000..373451a --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/advanced.cfg @@ -0,0 +1,7 @@ +label hdt + menu label ^Hardware Detection Tool (HDT) + com32 hdt.c32 + +label memtest + menu label ^Memory Diagnostic Tool (memtest86+) + linux /live/memtest diff --git a/system-build/share/bootloaders/pxelinux/hdt.c32 b/system-build/share/bootloaders/pxelinux/hdt.c32 new file mode 120000 index 0000000..f84c641 --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/hdt.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/hdt.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/pxelinux/install.cfg b/system-build/share/bootloaders/pxelinux/install.cfg new file mode 100644 index 0000000..ba09752 --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/install.cfg @@ -0,0 +1,11 @@ +label install + menu label ^Install + linux /install/vmlinuz + initrd /install/initrd.gz + append vga=788 @APPEND_INSTALL@ --- quiet + +label installgui + menu label ^Graphical install + linux /install/gtk/vmlinuz + initrd /install/gtk/initrd.gz + append video=vesa:ywrap,mtrr vga=788 @APPEND_INSTALL@ --- quiet diff --git a/system-build/share/bootloaders/pxelinux/ldlinux.c32 b/system-build/share/bootloaders/pxelinux/ldlinux.c32 new file mode 120000 index 0000000..df554c7 --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/ldlinux.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/ldlinux.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/pxelinux/libcom32.c32 b/system-build/share/bootloaders/pxelinux/libcom32.c32 new file mode 120000 index 0000000..44ab36b --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/libcom32.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libcom32.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/pxelinux/libgpl.c32 b/system-build/share/bootloaders/pxelinux/libgpl.c32 new file mode 120000 index 0000000..81c83fb --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/libgpl.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libgpl.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/pxelinux/libmenu.c32 b/system-build/share/bootloaders/pxelinux/libmenu.c32 new file mode 120000 index 0000000..2491ff9 --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/libmenu.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libmenu.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/pxelinux/libutil.c32 b/system-build/share/bootloaders/pxelinux/libutil.c32 new file mode 120000 index 0000000..478194e --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/libutil.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libutil.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/pxelinux/live.cfg.in b/system-build/share/bootloaders/pxelinux/live.cfg.in new file mode 100644 index 0000000..97ceb92 --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/live.cfg.in @@ -0,0 +1,12 @@ +label live-@FLAVOUR@ + menu label ^Live (@FLAVOUR@) + menu default + linux @LINUX@ + initrd @INITRD@ + append @APPEND_LIVE@ + +label live-@FLAVOUR@-failsafe + menu label ^Live (@FLAVOUR@ failsafe) + linux @LINUX@ + initrd @INITRD@ + append @APPEND_LIVE_FAILSAFE@ diff --git a/system-build/share/bootloaders/pxelinux/menu.cfg b/system-build/share/bootloaders/pxelinux/menu.cfg new file mode 100644 index 0000000..d2daa80 --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/menu.cfg @@ -0,0 +1,17 @@ +menu hshift 0 +menu width 82 + +menu title Boot menu +include stdmenu.cfg +include live.cfg +include install.cfg +menu begin advanced + menu title Advanced options + include stdmenu.cfg + label mainmenu + menu label ^Back.. + menu exit + include advanced.cfg +menu end + +menu clear diff --git a/system-build/share/bootloaders/pxelinux/pxelinux.0 b/system-build/share/bootloaders/pxelinux/pxelinux.0 new file mode 120000 index 0000000..f723d02 --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/pxelinux.0 @@ -0,0 +1 @@ +/usr/lib/PXELINUX/pxelinux.0
\ No newline at end of file diff --git a/system-build/share/bootloaders/pxelinux/pxelinux.cfg/default b/system-build/share/bootloaders/pxelinux/pxelinux.cfg/default new file mode 100644 index 0000000..a3e3eab --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/pxelinux.cfg/default @@ -0,0 +1,4 @@ +include menu.cfg +default vesamenu.c32 +prompt 0 +timeout 0 diff --git a/system-build/share/bootloaders/pxelinux/splash.svg b/system-build/share/bootloaders/pxelinux/splash.svg new file mode 100644 index 0000000..963624c --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/splash.svg @@ -0,0 +1,383 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="640" + height="480" + id="svg3320" + version="1.1" + inkscape:version="0.48.3.1 r9886" + sodipodi:docname="splash.svg.in"> + <defs + id="defs3322"> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.402663,0,0,1.115648,-6.237984,0.0533075)" + r="18.370251" + fy="10.943316" + fx="15.491823" + cy="10.943316" + cx="15.491823" + id="radialGradient2813" + xlink:href="#linearGradient2807" + inkscape:collect="always" /> + <radialGradient + r="35.934704" + fy="424.15677" + fx="131.23691" + cy="424.15677" + cx="131.23691" + gradientTransform="matrix(0.101953,-0.04272301,0.09621296,0.229599,-48.67227,-64.24148)" + gradientUnits="userSpaceOnUse" + id="radialGradient2798" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.415385,0,26.70146)" + r="30.365856" + fy="45.673546" + fx="29.898689" + cy="45.673546" + cx="29.898689" + id="radialGradient18290" + xlink:href="#linearGradient18284" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.105628,-0.04514018,0.06692574,0.156607,-46.01605,-24.35485)" + r="103.26014" + fy="409.83737" + fx="340.35886" + cy="409.83737" + cx="340.35886" + id="radialGradient13895" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.08174351,0.01024998,-0.04335971,0.345793,6.123413,-84.50421)" + r="38.451698" + fy="270.67969" + fx="424.99243" + cy="270.67969" + cx="424.99243" + id="radialGradient11208" + xlink:href="#linearGradient11202" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.272962,-0.071724,0.05616202,0.213737,-78.54657,-24.30491)" + r="48.782982" + fy="243.06874" + fx="293.81989" + cy="243.06874" + cx="293.81989" + id="radialGradient10317" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.224796,0.01017229,-0.00975947,0.215674,-73.87964,-54.89804)" + r="40.975471" + fy="286.46918" + fx="500.97794" + cy="286.46918" + cx="500.97794" + id="radialGradient9434" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.163532,-0.01065754,0.01078108,0.165425,-46.18187,-65.65506)" + r="235.88632" + fy="685.99139" + fx="420.87839" + cy="685.99139" + cx="420.87839" + id="radialGradient8549" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + r="297.21338" + fy="-72.420044" + fx="336.73767" + cy="-72.420044" + cx="336.73767" + gradientTransform="matrix(0.136507,0,-4.484926e-5,0.07137743,-23.39816,12.31028)" + gradientUnits="userSpaceOnUse" + id="radialGradient7666" + xlink:href="#linearGradient5012" + inkscape:collect="always" /> + <linearGradient + id="linearGradient5012"> + <stop + id="stop5014" + offset="0" + style="stop-color:#fdf188;stop-opacity:1;" /> + <stop + id="stop5016" + offset="1" + style="stop-color:#d3bc00;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient8543"> + <stop + id="stop8545" + offset="0" + style="stop-color:#fffef5;stop-opacity:0.94117647;" /> + <stop + id="stop8547" + offset="1" + style="stop-color:#fce94f;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient11202"> + <stop + id="stop11204" + offset="0" + style="stop-color:#c4a000;stop-opacity:1;" /> + <stop + id="stop11206" + offset="1" + style="stop-color:#c4a000;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient18284"> + <stop + id="stop18286" + offset="0" + style="stop-color:#000000;stop-opacity:1;" /> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0.5" + id="stop20913" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop19165" /> + </linearGradient> + <linearGradient + id="linearGradient2807" + inkscape:collect="always"> + <stop + id="stop2809" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop2811" + offset="1" + style="stop-color:#ffffff;stop-opacity:0;" /> + </linearGradient> + <inkscape:perspective + id="perspective47" + inkscape:persp3d-origin="24 : 16 : 1" + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.775" + inkscape:cx="574.36733" + inkscape:cy="250.84337" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1016" + inkscape:window-height="570" + inkscape:window-x="0" + inkscape:window-y="1" + inkscape:window-maximized="0" /> + <metadata + id="metadata3325"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-572.3622)"> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect3328" + width="640" + height="480" + x="0" + y="572.36218" /> + <text + transform="scale(1.0000015,0.99999849)" + sodipodi:linespacing="100%" + id="text3002" + y="619.20685" + x="190.68135" + style="font-size:35.65467453px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Bold" + xml:space="preserve"><tspan + y="619.20685" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3045">@PROJECT@ @VERSION@ (@DISTRIBUTION@)</tspan><tspan + y="639.20679" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3041">@ARCHITECTURE@</tspan><tspan + y="659.20679" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3037" /><tspan + y="679.20679" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3039">Build: @YEAR@-@MONTH@-@DAY@ @HOUR@:@MINUTE@:@SECOND@</tspan><tspan + y="699.20673" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3098" /><tspan + y="719.20667" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3102">linux: @LINUX_VERSIONS@</tspan><tspan + y="739.20667" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3076">system-build: @SYSTEM_BUILD_VERSION@</tspan><tspan + y="759.20667" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3068">system-boot: @SYSTEM_BOOT_VERSION@</tspan><tspan + y="779.2066" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3070">system-config: @SYSTEM_CONFIG_VERSION@</tspan><tspan + y="799.20654" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3066" /></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="200" + y="336.7742" + id="text3114" + sodipodi:linespacing="125%" + transform="translate(0,572.3622)"><tspan + sodipodi:role="line" + id="tspan3116" /></text> + <g + id="layer1-9" + inkscape:label="Layer 1" + transform="matrix(2.8369273,0,0,2.8369235,27.782921,602.43406)"> + <path + transform="matrix(0.742527,0,-0.05812964,1.428611,4.500517,-36.68345)" + d="m 60.264545,45.673546 c 0,6.966249 -13.595256,12.613509 -30.365856,12.613509 -16.770599,0 -30.3658559,-5.64726 -30.3658559,-12.613509 0,-6.966249 13.5952569,-12.613509 30.3658559,-12.613509 16.7706,0 30.365856,5.64726 30.365856,12.613509 z" + sodipodi:ry="12.613509" + sodipodi:rx="30.365856" + sodipodi:cy="45.673546" + sodipodi:cx="29.898689" + id="path17409" + style="fill:url(#radialGradient18290);fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="cccscsssscsccsc" + id="path3120" + d="M 23.152758,1.1801876 C 20.380218,1.2190783 17.86582,1.8908769 15.634281,3.0196314 14.541531,5.1714614 10.9437,7.7293655 9.4689484,8.0015561 6.5691703,11.460832 4.6887193,15.805035 3.9754523,19.98162 c -4.375e-4,0.0026 4.366e-4,0.0052 0,0.0077 -1.1863594,1.549717 -1.6900108,3.396594 -1.3773472,5.53256 1.1211744,7.659314 3.2821678,14.888292 8.1850959,16.556275 7.154429,2.433946 21.871769,1.785847 25.129507,0.458258 7.13903,-2.909286 7.771453,-9.285098 8.891432,-16.780256 0.305554,-2.044832 -0.144835,-3.841202 -1.230601,-5.372942 -0.009,-0.0556 -0.01849,-0.111474 -0.02832,-0.167342 C 42.763966,15.777007 40.697859,11.326849 37.602582,7.8466935 35.508773,7.62926 31.462964,4.270333 30.483158,2.6229925 28.330506,1.7020155 25.961342,1.1801876 23.407632,1.1801876 c -0.08532,0 -0.170037,-0.00119 -0.254874,0 z" + style="fill:url(#radialGradient7666);fill-opacity:1;stroke:#c4a000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccscc" + id="path7668" + d="M 43.629688,22.792984 C 39.033494,39.233217 10.438199,40.802737 3.7832765,23.04227 3.7410682,39.366403 10.103414,44.083889 28.189955,43.247454 c 3.061977,-0.140689 10.00982,0.04287 14.614484,-9.136776 2.238365,-11.5104 0.825249,-11.317694 0.825249,-11.317694 z" + style="opacity:0.66666667;fill:url(#radialGradient8549);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccc" + id="path8553" + d="m 34.691565,7.6783057 2.500881,1.1253976 c 0,0 -1.310404,10.1226397 -6.669016,16.4849717 1.771665,-6.455834 4.188975,-17.6103693 4.168135,-17.6103693 z" + style="fill:url(#radialGradient9434);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccc" + id="path9436" + d="m 15.872437,4.1562328 c 1.50053,9.0656942 6.50229,19.4860282 6.002115,20.0070452 -4.584948,-6.981624 -6.502291,-12.921217 -8.00282,-17.9229779 0,-0.083363 2.000705,-2.0632267 2.000705,-2.0840673 z" + style="fill:url(#radialGradient10317);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccsc" + id="path10319" + d="M 30.21082,3.8227818 C 26.126047,20.328594 25.959322,23.079563 25.959322,23.079563 c 0,0 6.335566,-16.7559003 6.335566,-17.1727135 0,-8e-7 -1.583891,-1.5005286 -2.084068,-2.0840677 z" + style="fill:url(#radialGradient11208);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <flowRoot + id="flowRoot12974" + xml:space="preserve"><flowRegion + id="flowRegion12976"><rect + y="412.80496" + x="86.787514" + height="16.02231" + width="40.055775" + id="rect12978" /></flowRegion><flowPara + id="flowPara12980" /></flowRoot> <path + sodipodi:nodetypes="ccccccc" + id="path13014" + d="m 16.18209,34.476182 -0.04467,-9.569745 14.493727,0 1.642604,-1.263542 -16.931465,0 0.04467,10.640581 0.795134,0.192706 z" + style="fill:url(#radialGradient13895);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccc" + id="path13897" + d="m 31.043495,24.81709 0.08168,9.804611 0.686144,-0.214742 0.01198,-10.85341 -0.779803,1.263541 z" + style="fill:#958401;fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccscc" + id="path16526" + d="m 4.2551267,24.106065 c 0,0 2.3166503,8.115689 10.2209413,8.766037 1.105608,2.490418 -1.13497,4.124601 -1.13497,4.124601 L 9.7315781,36.745641 c 0,0 -6.2387745,-7.992942 -6.4882087,-9.900882 -0.2494325,-1.907937 0.1632835,-3.407793 0.1632835,-3.407793 l 0.8484738,0.669099 z" + style="fill:url(#radialGradient2798);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + style="opacity:0.74444442;fill:none;stroke:#ffffff;stroke-width:0.99999976;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 23.184204,2.3889904 C 20.570275,2.4256563 18.199721,3.0590226 16.095844,4.1232033 15.065608,6.1519314 11.673602,8.563503 10.283218,8.8201221 7.5493302,12.0815 5.776456,16.17718 5.1039936,20.11483 c -4.124e-4,0.0024 4.116e-4,0.0049 0,0.0073 -1.1184901,1.46106 -1.8584936,3.246475 -1.5637169,5.260247 1.0570343,7.22114 2.9276025,13.709677 7.3279793,15.639454 5.923141,2.597582 21.539722,1.785935 24.611092,0.534295 6.73062,-2.742852 7.061699,-8.930694 8.117606,-15.997069 0.288074,-1.927851 -0.13655,-3.621454 -1.160201,-5.065566 -0.0084,-0.05242 -0.01743,-0.105097 -0.0267,-0.157769 C 41.673494,16.150755 39.725585,11.955182 36.807382,8.6741189 34.833356,8.4691243 31.019,5.3023548 30.095246,3.7492553 28.065743,2.8809656 25.832115,2.3889904 23.424497,2.3889904 c -0.08044,0 -0.160309,-0.00112 -0.240293,0 z" + id="path2703" + sodipodi:nodetypes="cccscsssscsccsc" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccssccscccssc" + id="path2800" + d="m 22.59375,2.78125 c -2.329557,0.1165682 -4.440971,0.7250384 -6.34375,1.6875 -1.010725,1.9903059 -4.354698,4.373241 -5.71875,4.625 -2.6821095,3.199611 -4.4027734,7.199424 -5.0625,11.0625 -4.046e-4,0.0024 4.038e-4,0.02888 0,0.03125 -1.0973069,1.43339 -1.4580267,3.591148 -1.4580267,3.591148 4.685267,3.605062 7.6416117,0.213892 14.3188727,-2.01722 12.59928,1.923141 18.748338,-0.995945 22.514154,-5.667678 0.0069,-0.0085 -0.0035,-0.02088 0,-0.03125 C 39.852567,13.479666 38.411479,11.016387 36.5625,8.9375 34.62586,8.7363873 30.875008,5.6486852 29.96875,4.125 27.977684,3.2731547 25.79952,2.78125 23.4375,2.78125 c -0.07892,10e-8 -0.171531,-0.0011 -0.25,0 -0.200346,0.00281 -0.39633,-0.00988 -0.59375,0 z" + style="opacity:0.59444424;fill:url(#radialGradient2813);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/system-build/share/bootloaders/pxelinux/stdmenu.cfg b/system-build/share/bootloaders/pxelinux/stdmenu.cfg new file mode 100644 index 0000000..671b16f --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/stdmenu.cfg @@ -0,0 +1,15 @@ +menu background splash.png +menu color title * #FFFFFFFF * +menu color border * #00000000 #00000000 none +menu color sel * #ffffffff #76a1d0ff * +menu color hotsel 1;7;37;40 #ffffffff #76a1d0ff * +menu color tabmsg * #ffffffff #00000000 * +menu color help 37;40 #ffdddd00 #00000000 none +menu vshift 12 +menu rows 10 +menu helpmsgrow 15 +# The command line must be at least one line from the bottom. +menu cmdlinerow 16 +menu timeoutrow 16 +menu tabmsgrow 18 +menu tabmsg Press ENTER to boot or TAB to edit a menu entry diff --git a/system-build/share/bootloaders/pxelinux/vesamenu.c32 b/system-build/share/bootloaders/pxelinux/vesamenu.c32 new file mode 120000 index 0000000..84e2eff --- /dev/null +++ b/system-build/share/bootloaders/pxelinux/vesamenu.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/vesamenu.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/syslinux/advanced.cfg b/system-build/share/bootloaders/syslinux/advanced.cfg new file mode 100644 index 0000000..373451a --- /dev/null +++ b/system-build/share/bootloaders/syslinux/advanced.cfg @@ -0,0 +1,7 @@ +label hdt + menu label ^Hardware Detection Tool (HDT) + com32 hdt.c32 + +label memtest + menu label ^Memory Diagnostic Tool (memtest86+) + linux /live/memtest diff --git a/system-build/share/bootloaders/syslinux/hdt.c32 b/system-build/share/bootloaders/syslinux/hdt.c32 new file mode 120000 index 0000000..f84c641 --- /dev/null +++ b/system-build/share/bootloaders/syslinux/hdt.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/hdt.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/syslinux/install.cfg b/system-build/share/bootloaders/syslinux/install.cfg new file mode 100644 index 0000000..ba09752 --- /dev/null +++ b/system-build/share/bootloaders/syslinux/install.cfg @@ -0,0 +1,11 @@ +label install + menu label ^Install + linux /install/vmlinuz + initrd /install/initrd.gz + append vga=788 @APPEND_INSTALL@ --- quiet + +label installgui + menu label ^Graphical install + linux /install/gtk/vmlinuz + initrd /install/gtk/initrd.gz + append video=vesa:ywrap,mtrr vga=788 @APPEND_INSTALL@ --- quiet diff --git a/system-build/share/bootloaders/syslinux/ldlinux.c32 b/system-build/share/bootloaders/syslinux/ldlinux.c32 new file mode 120000 index 0000000..df554c7 --- /dev/null +++ b/system-build/share/bootloaders/syslinux/ldlinux.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/ldlinux.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/syslinux/libcom32.c32 b/system-build/share/bootloaders/syslinux/libcom32.c32 new file mode 120000 index 0000000..44ab36b --- /dev/null +++ b/system-build/share/bootloaders/syslinux/libcom32.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libcom32.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/syslinux/libgpl.c32 b/system-build/share/bootloaders/syslinux/libgpl.c32 new file mode 120000 index 0000000..81c83fb --- /dev/null +++ b/system-build/share/bootloaders/syslinux/libgpl.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libgpl.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/syslinux/libmenu.c32 b/system-build/share/bootloaders/syslinux/libmenu.c32 new file mode 120000 index 0000000..2491ff9 --- /dev/null +++ b/system-build/share/bootloaders/syslinux/libmenu.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libmenu.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/syslinux/libutil.c32 b/system-build/share/bootloaders/syslinux/libutil.c32 new file mode 120000 index 0000000..478194e --- /dev/null +++ b/system-build/share/bootloaders/syslinux/libutil.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/libutil.c32
\ No newline at end of file diff --git a/system-build/share/bootloaders/syslinux/live.cfg.in b/system-build/share/bootloaders/syslinux/live.cfg.in new file mode 100644 index 0000000..97ceb92 --- /dev/null +++ b/system-build/share/bootloaders/syslinux/live.cfg.in @@ -0,0 +1,12 @@ +label live-@FLAVOUR@ + menu label ^Live (@FLAVOUR@) + menu default + linux @LINUX@ + initrd @INITRD@ + append @APPEND_LIVE@ + +label live-@FLAVOUR@-failsafe + menu label ^Live (@FLAVOUR@ failsafe) + linux @LINUX@ + initrd @INITRD@ + append @APPEND_LIVE_FAILSAFE@ diff --git a/system-build/share/bootloaders/syslinux/menu.cfg b/system-build/share/bootloaders/syslinux/menu.cfg new file mode 100644 index 0000000..9368260 --- /dev/null +++ b/system-build/share/bootloaders/syslinux/menu.cfg @@ -0,0 +1,17 @@ +menu hshift 0 +menu width 82 + +menu title Boot menu +include stdmenu.cfg +include live.cfg +include install.cfg +menu begin advanced + menu title ^Advanced options + include stdmenu.cfg + label mainmenu + menu label ^Back.. + menu exit + include advanced.cfg +menu end + +menu clear diff --git a/system-build/share/bootloaders/syslinux/splash.svg b/system-build/share/bootloaders/syslinux/splash.svg new file mode 100644 index 0000000..963624c --- /dev/null +++ b/system-build/share/bootloaders/syslinux/splash.svg @@ -0,0 +1,383 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="640" + height="480" + id="svg3320" + version="1.1" + inkscape:version="0.48.3.1 r9886" + sodipodi:docname="splash.svg.in"> + <defs + id="defs3322"> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1.402663,0,0,1.115648,-6.237984,0.0533075)" + r="18.370251" + fy="10.943316" + fx="15.491823" + cy="10.943316" + cx="15.491823" + id="radialGradient2813" + xlink:href="#linearGradient2807" + inkscape:collect="always" /> + <radialGradient + r="35.934704" + fy="424.15677" + fx="131.23691" + cy="424.15677" + cx="131.23691" + gradientTransform="matrix(0.101953,-0.04272301,0.09621296,0.229599,-48.67227,-64.24148)" + gradientUnits="userSpaceOnUse" + id="radialGradient2798" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(1,0,0,0.415385,0,26.70146)" + r="30.365856" + fy="45.673546" + fx="29.898689" + cy="45.673546" + cx="29.898689" + id="radialGradient18290" + xlink:href="#linearGradient18284" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.105628,-0.04514018,0.06692574,0.156607,-46.01605,-24.35485)" + r="103.26014" + fy="409.83737" + fx="340.35886" + cy="409.83737" + cx="340.35886" + id="radialGradient13895" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.08174351,0.01024998,-0.04335971,0.345793,6.123413,-84.50421)" + r="38.451698" + fy="270.67969" + fx="424.99243" + cy="270.67969" + cx="424.99243" + id="radialGradient11208" + xlink:href="#linearGradient11202" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.272962,-0.071724,0.05616202,0.213737,-78.54657,-24.30491)" + r="48.782982" + fy="243.06874" + fx="293.81989" + cy="243.06874" + cx="293.81989" + id="radialGradient10317" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.224796,0.01017229,-0.00975947,0.215674,-73.87964,-54.89804)" + r="40.975471" + fy="286.46918" + fx="500.97794" + cy="286.46918" + cx="500.97794" + id="radialGradient9434" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + gradientTransform="matrix(0.163532,-0.01065754,0.01078108,0.165425,-46.18187,-65.65506)" + r="235.88632" + fy="685.99139" + fx="420.87839" + cy="685.99139" + cx="420.87839" + id="radialGradient8549" + xlink:href="#linearGradient8543" + inkscape:collect="always" /> + <radialGradient + r="297.21338" + fy="-72.420044" + fx="336.73767" + cy="-72.420044" + cx="336.73767" + gradientTransform="matrix(0.136507,0,-4.484926e-5,0.07137743,-23.39816,12.31028)" + gradientUnits="userSpaceOnUse" + id="radialGradient7666" + xlink:href="#linearGradient5012" + inkscape:collect="always" /> + <linearGradient + id="linearGradient5012"> + <stop + id="stop5014" + offset="0" + style="stop-color:#fdf188;stop-opacity:1;" /> + <stop + id="stop5016" + offset="1" + style="stop-color:#d3bc00;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient8543"> + <stop + id="stop8545" + offset="0" + style="stop-color:#fffef5;stop-opacity:0.94117647;" /> + <stop + id="stop8547" + offset="1" + style="stop-color:#fce94f;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient11202"> + <stop + id="stop11204" + offset="0" + style="stop-color:#c4a000;stop-opacity:1;" /> + <stop + id="stop11206" + offset="1" + style="stop-color:#c4a000;stop-opacity:0;" /> + </linearGradient> + <linearGradient + id="linearGradient18284"> + <stop + id="stop18286" + offset="0" + style="stop-color:#000000;stop-opacity:1;" /> + <stop + style="stop-color:#000000;stop-opacity:1;" + offset="0.5" + id="stop20913" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop19165" /> + </linearGradient> + <linearGradient + id="linearGradient2807" + inkscape:collect="always"> + <stop + id="stop2809" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop2811" + offset="1" + style="stop-color:#ffffff;stop-opacity:0;" /> + </linearGradient> + <inkscape:perspective + id="perspective47" + inkscape:persp3d-origin="24 : 16 : 1" + inkscape:vp_z="48 : 24 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 24 : 1" + sodipodi:type="inkscape:persp3d" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.775" + inkscape:cx="574.36733" + inkscape:cy="250.84337" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1016" + inkscape:window-height="570" + inkscape:window-x="0" + inkscape:window-y="1" + inkscape:window-maximized="0" /> + <metadata + id="metadata3325"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-572.3622)"> + <rect + style="fill:#000000;fill-opacity:1;stroke:none" + id="rect3328" + width="640" + height="480" + x="0" + y="572.36218" /> + <text + transform="scale(1.0000015,0.99999849)" + sodipodi:linespacing="100%" + id="text3002" + y="619.20685" + x="190.68135" + style="font-size:35.65467453px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;font-family:DejaVu Sans;-inkscape-font-specification:DejaVu Sans Bold" + xml:space="preserve"><tspan + y="619.20685" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3045">@PROJECT@ @VERSION@ (@DISTRIBUTION@)</tspan><tspan + y="639.20679" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3041">@ARCHITECTURE@</tspan><tspan + y="659.20679" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3037" /><tspan + y="679.20679" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3039">Build: @YEAR@-@MONTH@-@DAY@ @HOUR@:@MINUTE@:@SECOND@</tspan><tspan + y="699.20673" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:bold;-inkscape-font-specification:DejaVu Sans Bold" + id="tspan3098" /><tspan + y="719.20667" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3102">linux: @LINUX_VERSIONS@</tspan><tspan + y="739.20667" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3076">system-build: @SYSTEM_BUILD_VERSION@</tspan><tspan + y="759.20667" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3068">system-boot: @SYSTEM_BOOT_VERSION@</tspan><tspan + y="779.2066" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3070">system-config: @SYSTEM_CONFIG_VERSION@</tspan><tspan + y="799.20654" + x="190.68135" + sodipodi:role="line" + style="font-size:19.99996948px;font-style:normal;font-weight:normal;-inkscape-font-specification:DejaVu Sans" + id="tspan3066" /></text> + <text + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="200" + y="336.7742" + id="text3114" + sodipodi:linespacing="125%" + transform="translate(0,572.3622)"><tspan + sodipodi:role="line" + id="tspan3116" /></text> + <g + id="layer1-9" + inkscape:label="Layer 1" + transform="matrix(2.8369273,0,0,2.8369235,27.782921,602.43406)"> + <path + transform="matrix(0.742527,0,-0.05812964,1.428611,4.500517,-36.68345)" + d="m 60.264545,45.673546 c 0,6.966249 -13.595256,12.613509 -30.365856,12.613509 -16.770599,0 -30.3658559,-5.64726 -30.3658559,-12.613509 0,-6.966249 13.5952569,-12.613509 30.3658559,-12.613509 16.7706,0 30.365856,5.64726 30.365856,12.613509 z" + sodipodi:ry="12.613509" + sodipodi:rx="30.365856" + sodipodi:cy="45.673546" + sodipodi:cx="29.898689" + id="path17409" + style="fill:url(#radialGradient18290);fill-opacity:1;stroke:none" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="cccscsssscsccsc" + id="path3120" + d="M 23.152758,1.1801876 C 20.380218,1.2190783 17.86582,1.8908769 15.634281,3.0196314 14.541531,5.1714614 10.9437,7.7293655 9.4689484,8.0015561 6.5691703,11.460832 4.6887193,15.805035 3.9754523,19.98162 c -4.375e-4,0.0026 4.366e-4,0.0052 0,0.0077 -1.1863594,1.549717 -1.6900108,3.396594 -1.3773472,5.53256 1.1211744,7.659314 3.2821678,14.888292 8.1850959,16.556275 7.154429,2.433946 21.871769,1.785847 25.129507,0.458258 7.13903,-2.909286 7.771453,-9.285098 8.891432,-16.780256 0.305554,-2.044832 -0.144835,-3.841202 -1.230601,-5.372942 -0.009,-0.0556 -0.01849,-0.111474 -0.02832,-0.167342 C 42.763966,15.777007 40.697859,11.326849 37.602582,7.8466935 35.508773,7.62926 31.462964,4.270333 30.483158,2.6229925 28.330506,1.7020155 25.961342,1.1801876 23.407632,1.1801876 c -0.08532,0 -0.170037,-0.00119 -0.254874,0 z" + style="fill:url(#radialGradient7666);fill-opacity:1;stroke:#c4a000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccscc" + id="path7668" + d="M 43.629688,22.792984 C 39.033494,39.233217 10.438199,40.802737 3.7832765,23.04227 3.7410682,39.366403 10.103414,44.083889 28.189955,43.247454 c 3.061977,-0.140689 10.00982,0.04287 14.614484,-9.136776 2.238365,-11.5104 0.825249,-11.317694 0.825249,-11.317694 z" + style="opacity:0.66666667;fill:url(#radialGradient8549);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccc" + id="path8553" + d="m 34.691565,7.6783057 2.500881,1.1253976 c 0,0 -1.310404,10.1226397 -6.669016,16.4849717 1.771665,-6.455834 4.188975,-17.6103693 4.168135,-17.6103693 z" + style="fill:url(#radialGradient9434);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccc" + id="path9436" + d="m 15.872437,4.1562328 c 1.50053,9.0656942 6.50229,19.4860282 6.002115,20.0070452 -4.584948,-6.981624 -6.502291,-12.921217 -8.00282,-17.9229779 0,-0.083363 2.000705,-2.0632267 2.000705,-2.0840673 z" + style="fill:url(#radialGradient10317);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccsc" + id="path10319" + d="M 30.21082,3.8227818 C 26.126047,20.328594 25.959322,23.079563 25.959322,23.079563 c 0,0 6.335566,-16.7559003 6.335566,-17.1727135 0,-8e-7 -1.583891,-1.5005286 -2.084068,-2.0840677 z" + style="fill:url(#radialGradient11208);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <flowRoot + id="flowRoot12974" + xml:space="preserve"><flowRegion + id="flowRegion12976"><rect + y="412.80496" + x="86.787514" + height="16.02231" + width="40.055775" + id="rect12978" /></flowRegion><flowPara + id="flowPara12980" /></flowRoot> <path + sodipodi:nodetypes="ccccccc" + id="path13014" + d="m 16.18209,34.476182 -0.04467,-9.569745 14.493727,0 1.642604,-1.263542 -16.931465,0 0.04467,10.640581 0.795134,0.192706 z" + style="fill:url(#radialGradient13895);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccc" + id="path13897" + d="m 31.043495,24.81709 0.08168,9.804611 0.686144,-0.214742 0.01198,-10.85341 -0.779803,1.263541 z" + style="fill:#958401;fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="ccccscc" + id="path16526" + d="m 4.2551267,24.106065 c 0,0 2.3166503,8.115689 10.2209413,8.766037 1.105608,2.490418 -1.13497,4.124601 -1.13497,4.124601 L 9.7315781,36.745641 c 0,0 -6.2387745,-7.992942 -6.4882087,-9.900882 -0.2494325,-1.907937 0.1632835,-3.407793 0.1632835,-3.407793 l 0.8484738,0.669099 z" + style="fill:url(#radialGradient2798);fill-opacity:1;fill-rule:evenodd;stroke:none" + inkscape:connector-curvature="0" /> + <path + style="opacity:0.74444442;fill:none;stroke:#ffffff;stroke-width:0.99999976;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="M 23.184204,2.3889904 C 20.570275,2.4256563 18.199721,3.0590226 16.095844,4.1232033 15.065608,6.1519314 11.673602,8.563503 10.283218,8.8201221 7.5493302,12.0815 5.776456,16.17718 5.1039936,20.11483 c -4.124e-4,0.0024 4.116e-4,0.0049 0,0.0073 -1.1184901,1.46106 -1.8584936,3.246475 -1.5637169,5.260247 1.0570343,7.22114 2.9276025,13.709677 7.3279793,15.639454 5.923141,2.597582 21.539722,1.785935 24.611092,0.534295 6.73062,-2.742852 7.061699,-8.930694 8.117606,-15.997069 0.288074,-1.927851 -0.13655,-3.621454 -1.160201,-5.065566 -0.0084,-0.05242 -0.01743,-0.105097 -0.0267,-0.157769 C 41.673494,16.150755 39.725585,11.955182 36.807382,8.6741189 34.833356,8.4691243 31.019,5.3023548 30.095246,3.7492553 28.065743,2.8809656 25.832115,2.3889904 23.424497,2.3889904 c -0.08044,0 -0.160309,-0.00112 -0.240293,0 z" + id="path2703" + sodipodi:nodetypes="cccscsssscsccsc" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccssccscccssc" + id="path2800" + d="m 22.59375,2.78125 c -2.329557,0.1165682 -4.440971,0.7250384 -6.34375,1.6875 -1.010725,1.9903059 -4.354698,4.373241 -5.71875,4.625 -2.6821095,3.199611 -4.4027734,7.199424 -5.0625,11.0625 -4.046e-4,0.0024 4.038e-4,0.02888 0,0.03125 -1.0973069,1.43339 -1.4580267,3.591148 -1.4580267,3.591148 4.685267,3.605062 7.6416117,0.213892 14.3188727,-2.01722 12.59928,1.923141 18.748338,-0.995945 22.514154,-5.667678 0.0069,-0.0085 -0.0035,-0.02088 0,-0.03125 C 39.852567,13.479666 38.411479,11.016387 36.5625,8.9375 34.62586,8.7363873 30.875008,5.6486852 29.96875,4.125 27.977684,3.2731547 25.79952,2.78125 23.4375,2.78125 c -0.07892,10e-8 -0.171531,-0.0011 -0.25,0 -0.200346,0.00281 -0.39633,-0.00988 -0.59375,0 z" + style="opacity:0.59444424;fill:url(#radialGradient2813);fill-opacity:1;stroke:none" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/system-build/share/bootloaders/syslinux/stdmenu.cfg b/system-build/share/bootloaders/syslinux/stdmenu.cfg new file mode 100644 index 0000000..671b16f --- /dev/null +++ b/system-build/share/bootloaders/syslinux/stdmenu.cfg @@ -0,0 +1,15 @@ +menu background splash.png +menu color title * #FFFFFFFF * +menu color border * #00000000 #00000000 none +menu color sel * #ffffffff #76a1d0ff * +menu color hotsel 1;7;37;40 #ffffffff #76a1d0ff * +menu color tabmsg * #ffffffff #00000000 * +menu color help 37;40 #ffdddd00 #00000000 none +menu vshift 12 +menu rows 10 +menu helpmsgrow 15 +# The command line must be at least one line from the bottom. +menu cmdlinerow 16 +menu timeoutrow 16 +menu tabmsgrow 18 +menu tabmsg Press ENTER to boot or TAB to edit a menu entry diff --git a/system-build/share/bootloaders/syslinux/syslinux.cfg b/system-build/share/bootloaders/syslinux/syslinux.cfg new file mode 100644 index 0000000..a3e3eab --- /dev/null +++ b/system-build/share/bootloaders/syslinux/syslinux.cfg @@ -0,0 +1,4 @@ +include menu.cfg +default vesamenu.c32 +prompt 0 +timeout 0 diff --git a/system-build/share/bootloaders/syslinux/vesamenu.c32 b/system-build/share/bootloaders/syslinux/vesamenu.c32 new file mode 120000 index 0000000..84e2eff --- /dev/null +++ b/system-build/share/bootloaders/syslinux/vesamenu.c32 @@ -0,0 +1 @@ +/usr/lib/syslinux/modules/bios/vesamenu.c32
\ No newline at end of file diff --git a/system-build/share/hooks/live/0010-disable-kexec-tools.hook.chroot b/system-build/share/hooks/live/0010-disable-kexec-tools.hook.chroot new file mode 100755 index 0000000..403d1d4 --- /dev/null +++ b/system-build/share/hooks/live/0010-disable-kexec-tools.hook.chroot @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +# Disable kexec-tools + +if [ -e /sbin/kexec ] +then + echo "kexec-tools kexec-tools/load_kexec boolean false" > /root/preseed + + debconf-set-selections /root/preseed + + rm -f /root/preseed + + dpkg-reconfigure kexec-tools +fi diff --git a/system-build/share/hooks/live/0050-disable-sysvinit-tmpfs.hook.chroot b/system-build/share/hooks/live/0050-disable-sysvinit-tmpfs.hook.chroot new file mode 100755 index 0000000..37750b3 --- /dev/null +++ b/system-build/share/hooks/live/0050-disable-sysvinit-tmpfs.hook.chroot @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +# Disable tmpfs on /tmp + +if [ -e /etc/default/rcS ] +then + sed -i -e 's|^ *RAMTMP=.*|RAMTMP=no|' /etc/default/rcS +fi diff --git a/system-build/share/hooks/normal/0020-create-mtab-symlink.hook.chroot b/system-build/share/hooks/normal/0020-create-mtab-symlink.hook.chroot new file mode 100755 index 0000000..5c2fa64 --- /dev/null +++ b/system-build/share/hooks/normal/0020-create-mtab-symlink.hook.chroot @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +# Create /etc/mtab symlink, replacing a regular file if necessary + +if [ ! -L /etc/mtab ] +then + rm -f /etc/mtab + ln -s /proc/mounts /etc/mtab +fi diff --git a/system-build/share/hooks/normal/0030-enable-cryptsetup.hook.chroot b/system-build/share/hooks/normal/0030-enable-cryptsetup.hook.chroot new file mode 100755 index 0000000..54c2978 --- /dev/null +++ b/system-build/share/hooks/normal/0030-enable-cryptsetup.hook.chroot @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +# Enable cryptsetup + +if [ -e /sbin/cryptsetup ] +then + if [ ! -e /etc/initramfs-tools/conf.d/cryptsetup ] + then + mkdir -p /etc/initramfs-tools/conf.d + +cat > /etc/initramfs-tools/conf.d/cryptsetup << EOF +# /etc/initramfs-tools/conf.d/cryptsetup + +CRYPTSETUP=yes +export CRYPTSETUP +EOF + + fi +fi diff --git a/system-build/share/hooks/normal/0040-create-locales-files.hook.chroot b/system-build/share/hooks/normal/0040-create-locales-files.hook.chroot new file mode 100755 index 0000000..8a5a867 --- /dev/null +++ b/system-build/share/hooks/normal/0040-create-locales-files.hook.chroot @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +# Create /etc/environment and /etc/default/locale +touch /etc/environment +touch /etc/default/locale diff --git a/system-build/share/hooks/normal/0100-remove-adjtime-configuration.hook.chroot b/system-build/share/hooks/normal/0100-remove-adjtime-configuration.hook.chroot new file mode 100755 index 0000000..7fe5bbd --- /dev/null +++ b/system-build/share/hooks/normal/0100-remove-adjtime-configuration.hook.chroot @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +# Reset generated file + +cat > /etc/adjtime << EOF +0.0 0 0.0 +0 +UTC +EOF diff --git a/system-build/share/hooks/normal/0110-remove-backup-files.hook.chroot b/system-build/share/hooks/normal/0110-remove-backup-files.hook.chroot new file mode 100755 index 0000000..8fe1726 --- /dev/null +++ b/system-build/share/hooks/normal/0110-remove-backup-files.hook.chroot @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +# Remove backup files +rm -f /boot/*.bak +rm -f /boot/*.old-dkms + +rm -f /etc/apt/sources.list~ +rm -f /etc/apt/trusted.gpg~ + +rm -f /etc/passwd- +rm -f /etc/group- +rm -f /etc/shadow- +rm -f /etc/gshadow- + +rm -f /var/cache/debconf/*-old +rm -f /var/lib/dpkg/*-old + +# Workaround for user-setup +touch /etc/passwd- diff --git a/system-build/share/hooks/normal/0120-remove-dbus-machine-id.hook.chroot b/system-build/share/hooks/normal/0120-remove-dbus-machine-id.hook.chroot new file mode 100755 index 0000000..230099e --- /dev/null +++ b/system-build/share/hooks/normal/0120-remove-dbus-machine-id.hook.chroot @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +# Remove dbus machine id. +# +# This removes dbus machine id that cache that makes each system unique. + +rm -f /var/lib/dbus/machine-id diff --git a/system-build/share/hooks/normal/0130-remove-gnome-icon-cache.hook.chroot b/system-build/share/hooks/normal/0130-remove-gnome-icon-cache.hook.chroot new file mode 100755 index 0000000..ab35a1d --- /dev/null +++ b/system-build/share/hooks/normal/0130-remove-gnome-icon-cache.hook.chroot @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +# Remove GNOME icon cache. +# +# This saves space some space. + +rm -f /usr/share/icons/*/icon-theme.cache diff --git a/system-build/share/hooks/normal/0140-remove-log-files.hook.chroot b/system-build/share/hooks/normal/0140-remove-log-files.hook.chroot new file mode 100755 index 0000000..f95e546 --- /dev/null +++ b/system-build/share/hooks/normal/0140-remove-log-files.hook.chroot @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +# Truncate log files +for _FILE in $(find /var/log/ -type f) +do + : > ${_FILE} +done diff --git a/system-build/share/hooks/normal/0150-remove-mdadm-configuration.hook.chroot b/system-build/share/hooks/normal/0150-remove-mdadm-configuration.hook.chroot new file mode 100755 index 0000000..206b494 --- /dev/null +++ b/system-build/share/hooks/normal/0150-remove-mdadm-configuration.hook.chroot @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +# Remove generated files + +rm -f /etc/mdadm/mdadm.conf diff --git a/system-build/share/hooks/normal/0160-remove-openssh-server-host-keys.hook.chroot b/system-build/share/hooks/normal/0160-remove-openssh-server-host-keys.hook.chroot new file mode 100755 index 0000000..b108526 --- /dev/null +++ b/system-build/share/hooks/normal/0160-remove-openssh-server-host-keys.hook.chroot @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +# Remove OpenSSH Host Keys. +# +# This removes openssh-server host keys, they are regenerated by system-config +# on system start. + +rm -f /etc/ssh/ssh_host_*_key /etc/ssh/ssh_host_*_key.pub diff --git a/system-build/share/hooks/normal/0170-remove-python-py.hook.chroot b/system-build/share/hooks/normal/0170-remove-python-py.hook.chroot new file mode 100755 index 0000000..ff70583 --- /dev/null +++ b/system-build/share/hooks/normal/0170-remove-python-py.hook.chroot @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +# Remove Python *.py files. +# +# This removes byte-compiled Python modules to save some space. + +find /usr -name "*.pyc" -print0 | xargs -0r rm -f diff --git a/system-build/share/hooks/normal/0180-remove-systemd-machine-id.hook.chroot b/system-build/share/hooks/normal/0180-remove-systemd-machine-id.hook.chroot new file mode 100755 index 0000000..ed5d6bf --- /dev/null +++ b/system-build/share/hooks/normal/0180-remove-systemd-machine-id.hook.chroot @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + +# Blank out systemd machine id. If it does not exist, systemd-journald +# will fail, but if it exists and is empty, systemd will automatically +# set up a new unique ID. + +if [ -e /etc/machine-id ] +then + rm -f /etc/machine-id + : > /etc/machine-id +fi diff --git a/system-build/share/hooks/normal/0185-remove-systemd-journal-database.hook.chroot b/system-build/share/hooks/normal/0185-remove-systemd-journal-database.hook.chroot new file mode 100755 index 0000000..01ac200 --- /dev/null +++ b/system-build/share/hooks/normal/0185-remove-systemd-journal-database.hook.chroot @@ -0,0 +1,6 @@ +#!/bin/sh + +set -e + +# Remove journal database +rm -f /var/lib/systemd/catalog/database diff --git a/system-build/share/hooks/normal/0190-remove-temporary-files.hook.chroot b/system-build/share/hooks/normal/0190-remove-temporary-files.hook.chroot new file mode 100755 index 0000000..fd220e0 --- /dev/null +++ b/system-build/share/hooks/normal/0190-remove-temporary-files.hook.chroot @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +# Remove temporary files +rm -rf /var/cache/man/* + +for _DIRECTORY in /tmp /var/tmp +do + rm -rf ${_DIRECTORY} + + mkdir -p ${_DIRECTORY} + chmod 1777 ${_DIRECTORY} +done diff --git a/system-build/share/hooks/normal/0195-remove-ssl-cert-snakeoil.hook.chroot b/system-build/share/hooks/normal/0195-remove-ssl-cert-snakeoil.hook.chroot new file mode 100755 index 0000000..cdfe39d --- /dev/null +++ b/system-build/share/hooks/normal/0195-remove-ssl-cert-snakeoil.hook.chroot @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + +# Remove ssl-cert snakeoil + +if [ -e /etc/ssl/certs/ssl-cert-snakeoil.pem ] +then + rm -f /etc/ssl/certs/$(openssl x509 -hash -noout -in /etc/ssl/certs/ssl-cert-snakeoil.pem) + + rm -f /etc/ssl/certs/ssl-cert-snakeoil.pem + rm -f /etc/ssl/private/ssl-cert-snakeoil.key +fi diff --git a/system-build/share/hooks/normal/0196-remote-apt-auto-removal.hook.chroot b/system-build/share/hooks/normal/0196-remote-apt-auto-removal.hook.chroot new file mode 100755 index 0000000..9bbfec7 --- /dev/null +++ b/system-build/share/hooks/normal/0196-remote-apt-auto-removal.hook.chroot @@ -0,0 +1,6 @@ +#!/bin/sh + +set -e + +# Remove auto-generated file +rm -f /etc/apt/apt.conf.d/01autoremove-kernels diff --git a/system-build/share/hooks/normal/0200-remove-udev-persistent-cd-rules.hook.chroot b/system-build/share/hooks/normal/0200-remove-udev-persistent-cd-rules.hook.chroot new file mode 100755 index 0000000..bdfe52d --- /dev/null +++ b/system-build/share/hooks/normal/0200-remove-udev-persistent-cd-rules.hook.chroot @@ -0,0 +1,13 @@ +#!/bin/sh + +set -e + +# Remove udev persistent rules. +# +# This removes udev persistent rules that cache the host systems cd drive as +# well as the running live systems cd drive to remember its device name. + +if [ -e /etc/udev/rules.d ] +then + > /etc/udev/rules.d/70-persistent-cd.rules +fi diff --git a/system-build/share/hooks/normal/0300-remove-udev-persistent-net-rules.hook.chroot b/system-build/share/hooks/normal/0300-remove-udev-persistent-net-rules.hook.chroot new file mode 100755 index 0000000..148ba30 --- /dev/null +++ b/system-build/share/hooks/normal/0300-remove-udev-persistent-net-rules.hook.chroot @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +# Remove udev persistent rules. +# +# This removes udev persistent rules that cache the host systems mac address to +# remember its device name. + +for _FILE in /etc/udev/rules.d/*persistent-net.rules +do + if [ -e "${_FILE}" ] + then + : > ${_FILE} + fi +done diff --git a/system-build/share/hooks/normal/0400-update-apt-file-cache.hook.chroot b/system-build/share/hooks/normal/0400-update-apt-file-cache.hook.chroot new file mode 100755 index 0000000..771e903 --- /dev/null +++ b/system-build/share/hooks/normal/0400-update-apt-file-cache.hook.chroot @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +# Update the Apt File cache. +# +# This allows to use using apt-file out-of-the-box. + +. /live-build/config/binary + +if [ -x /usr/bin/apt-file ] && [ "${LB_APT_INDICES}" = "true" ] +then + apt-file update +fi diff --git a/system-build/share/hooks/normal/0410-update-apt-xapian-index.hook.chroot b/system-build/share/hooks/normal/0410-update-apt-xapian-index.hook.chroot new file mode 100755 index 0000000..dcb39b2 --- /dev/null +++ b/system-build/share/hooks/normal/0410-update-apt-xapian-index.hook.chroot @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +# Update the Apt Xapian index. +# +# The package would do this itself, but (a) it checks policy-rc.d which says it +# is not allowed to, and (b) it wants to build the index in the background which +# will be racy in the context of live-build. + +if [ -x /usr/sbin/update-apt-xapian-index ] +then + PYTHONDONTWRITEBYTECODE=1 /usr/sbin/update-apt-xapian-index --force --quiet +fi diff --git a/system-build/share/hooks/normal/0420-update-glx-alternative.hook.chroot b/system-build/share/hooks/normal/0420-update-glx-alternative.hook.chroot new file mode 100755 index 0000000..8c36c43 --- /dev/null +++ b/system-build/share/hooks/normal/0420-update-glx-alternative.hook.chroot @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +# Use mesa renderer by default +if [ -e /etc/alternatives/glx ] +then + update-alternatives --quiet --set glx /usr/lib/mesa-diverted +fi diff --git a/system-build/share/hooks/normal/0430-update-mlocate-database.hook.chroot b/system-build/share/hooks/normal/0430-update-mlocate-database.hook.chroot new file mode 100755 index 0000000..6bfdb3d --- /dev/null +++ b/system-build/share/hooks/normal/0430-update-mlocate-database.hook.chroot @@ -0,0 +1,14 @@ +#!/bin/sh + +set -e + +# Update the mlocate database. +# +# It is convenient for this to be already up to date on the live system, and it +# means that if the live system is later installed to a hard disk then less +# work will be required after installation. + +if [ -x /usr/bin/updatedb.mlocate ] +then + updatedb.mlocate +fi diff --git a/system-build/share/hooks/normal/0440-update-nvidia-alternative.hook.chroot b/system-build/share/hooks/normal/0440-update-nvidia-alternative.hook.chroot new file mode 100755 index 0000000..e73b967 --- /dev/null +++ b/system-build/share/hooks/normal/0440-update-nvidia-alternative.hook.chroot @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +# Use newest nvidia version by default +if [ -e /etc/alternatives/nvidia ] && [ -e /usr/lib/nvidia/current ] +then + update-alternatives --quiet --set nvidia /usr/lib/nvidia/current +fi diff --git a/system-build/share/hooks/normal/0910-remove-apt-sources-lists b/system-build/share/hooks/normal/0910-remove-apt-sources-lists new file mode 100755 index 0000000..1c8ca2d --- /dev/null +++ b/system-build/share/hooks/normal/0910-remove-apt-sources-lists @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +# Remove apt sources.list files + +rm -f /etc/apt/sources.list +rm -f /etc/apt/sources.list.d/*.list |