From bae32fe130c14bcef4a259f8945f8a71e8a3deeb Mon Sep 17 00:00:00 2001 From: Velsoth Date: Thu, 1 Jun 2017 19:19:43 +0100 Subject: [PATCH] Initial commit --- LICENSE | 674 +++++++++++++++++++++++++++++++++ README.md | 100 +++++ auto-run | 16 + binaries/stock_bios_goes_here | 0 cb-helper | 295 +++++++++++++++ config/coreboot.config | 647 +++++++++++++++++++++++++++++++ config/grub.cfg | 205 ++++++++++ config/grub.config | 630 ++++++++++++++++++++++++++++++ config/grub_memdisk.cfg | 4 + config/grub_modules.conf | 209 ++++++++++ misc/dejavusansmono.pf2 | Bin 0 -> 100513 bytes misc/dejavusansmono_24bold.pf2 | Bin 0 -> 158307 bytes misc/usqwerty.gkb | Bin 0 -> 2572 bytes 13 files changed, 2780 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100755 auto-run create mode 100644 binaries/stock_bios_goes_here create mode 100755 cb-helper create mode 100644 config/coreboot.config create mode 100644 config/grub.cfg create mode 100644 config/grub.config create mode 100644 config/grub_memdisk.cfg create mode 100644 config/grub_modules.conf create mode 100644 misc/dejavusansmono.pf2 create mode 100644 misc/dejavusansmono_24bold.pf2 create mode 100644 misc/usqwerty.gkb diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..9cecc1d --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + 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 . + +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: + + {project} Copyright (C) {year} {fullname} + 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 +. + + 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 +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..ccda076 --- /dev/null +++ b/README.md @@ -0,0 +1,100 @@ +# x220 Coreboot Setup + + +Configuration and helper script for easily build, assembly and installation of Coreboot on the Thinkpad X220 + +This setup keeps the descriptor, gbe config and Intel ME from the stock BIOS, neutralizes the Intel ME by removing most of its partitions with [me_cleaner](https://github.com/corna/me_cleaner) and prepares a flash image with [Coreboot](https://www.coreboot.org/) using [SeaBIOS](https://www.seabios.org)+[GRUB](https://www.gnu.org/software/grub/) with LUKS+LVM support as the default payload + +Usage: + + ./cb-helper operation [parameters] + +Alternatively the **auto-run** script can be launched to automatically run through all the operations in order, provided a valid BIOS stock image as been placed in "binaries/bios.bin" + + + +## Configs + +**coreboot.config** - Coreboot build configuration + +**grub.config** - GRUB build configuration + +**grub.cfg** - GRUB configuration and boot menu + +**grub_memdisk.cfg** - GRUB configuration inside the memdisk + +**grub_modules.conf** - GRUB modules, installed and loaded + + + +## Operations + +**download_code** + +Download repositories for Coreboot, GRUB and me_cleaner + + +**build_utils** + +Build useful utilities like cbfstool and idftool + + +**split_bios** + +Splits the stock bios ("binaries/bios.bin") into descriptor, gbe configuration and Intel ME + + +**neuter_me** + +Neutralize Intel ME by removing most of its partitions using me_cleaner + + +**pre_build_coreboot** + +Copy config files and build Coreboot's toolchain + + +**build_coreboot** + +Build Coreboot + + +**build_grub** + +Build GRUB + + +**assemble_grub** + +Assembles configurations and resources in a nice usable GRUB payload + + +**config_seabios** + +Configure SeaBIOS to boot GRUB directly from the CBFS volume + + +**install_grub** + +Install the GRUB payload and configuration in the CBFS volume + + +**flash** operation programmer + +Read or write flash chips with a multitude of programmers + +Valid operations: check, read, write + +Valid programmers: internal, ftdi, u2, rpi + + + +## Attribuition + +config/**grub.cfg**, config/**grub_modules.conf** and misc/**usqwerty.gkb** are based on their [Libreboot](https://libreboot.org/) counterparts + +**DejaVuSans Mono** is licensed under [a free license](https://dejavu-fonts.github.io/License.html) + +Converted to bitmap with the following command + + grub/grub-mkfont --size=24 --bold -o "misc/dejavusansmono.pf2" /usr/share/fonts/TTF/DejaVuSansMono.ttf diff --git a/auto-run b/auto-run new file mode 100755 index 0000000..7d5d37c --- /dev/null +++ b/auto-run @@ -0,0 +1,16 @@ +#!/bin/bash + +printf "Starting auto run" + +bash ./cb-helper download_code || exit 1 +bash ./cb-helper build_utils || exit 1 +bash ./cb-helper split_bios || exit 1 +bash ./cb-helper neuter_me || exit 1 +bash ./cb-helper pre_build_coreboot || exit 1 +bash ./cb-helper build_coreboot || exit 1 +bash ./cb-helper build_grub || exit 1 +bash ./cb-helper assemble_grub || exit 1 +bash ./cb-helper config_seabios || exit 1 +bash ./cb-helper install_grub || exit 1 + +printf "Auto run finished successfully" diff --git a/binaries/stock_bios_goes_here b/binaries/stock_bios_goes_here new file mode 100644 index 0000000..e69de29 diff --git a/cb-helper b/cb-helper new file mode 100755 index 0000000..5505f48 --- /dev/null +++ b/cb-helper @@ -0,0 +1,295 @@ +#!/bin/bash + + +# Download stuffs +if [ "$1" == "download_code" ]; then + + # Coreboot + if [ ! -d ./coreboot ]; then + printf "Downloading Coreboot\n" + git clone --recursive http://review.coreboot.org/coreboot.git ./coreboot + else + printf "Coreboot repository is already present\n" + fi + + # GRUB + if [ ! -d ./grub ]; then + printf "Downloading GRUB\n" + git clone git://git.savannah.gnu.org/grub.git ./grub + + # Checkout this specific version + cd ./grub + git checkout "tags/2.02" + cd .. + else + printf "GRUB repository is already present\n" + fi + + # me_cleaner + if [ ! -d ./me_cleaner ]; then + printf "Downloading me_cleaner\n" + git clone https://github.com/corna/me_cleaner.git ./me_cleaner + else + printf "me_cleaner repository is already present\n" + fi + + +# Build Coreboot Utilities +elif [ "$1" == "build_utils" ]; then + + if [ ! -d "coreboot/.git" ]; then + printf "No Coreboot repository found in coreboot/\nDownload the code first\n" + exit 1 + fi + + # Build ifdtool for stock BIOS splitting + cd coreboot/util/ifdtool + make -j${nproc} + cd ../../../ + + # Build cbfstool for managing Coreboot's filesystem + cd coreboot/util/cbfstool + make -j${nproc} + cd ../../../ + + +# Split the stock rom and organize the parts +elif [ "$1" == "split_bios" ]; then + + if [ ! -f "binaries/bios.bin" ]; then + printf "No stock bios (bios.bin) file found in binaries/\n" + exit 1 + fi + + if [ ! -f "coreboot/util/ifdtool/ifdtool" ]; then + printf "No ifdtool present, build the Coreboot utils first\n" + exit 1 + fi + + cd binaries/ + ../coreboot/util/ifdtool/ifdtool -x bios.bin + mv flashregion_0_flashdescriptor.bin descriptor.bin + rm flashregion_1_bios.bin + mv flashregion_2_intel_me.bin me.bin + mv flashregion_3_gbe.bin gbe.bin + cd .. + + +# Neuter Intel ME +elif [ "$1" == "neuter_me" ]; then + + if [ ! -f "binaries/me.bin" ]; then + printf "No Intel ME (me.bin) binary found in binaries/\n" + exit 1 + fi + + cp binaries/me.bin binaries/me_neutered.bin + python3 me_cleaner/me_cleaner.py binaries/me_neutered.bin + + +# Prepare Coreboot for compilation +elif [ "$1" == "pre_build_coreboot" ]; then + + # Copy the config + cp "config/coreboot.config" coreboot/.config + + # Goto the Coreboot directory + cd coreboot + + # Build toolchain + make crossgcc-i386 CPUS=${nproc} -b + + # Build IASL + make -j${nproc} iasl + + # Get back + cd .. + + +# Build Coreboot +elif [ "$1" == "build_coreboot" ]; then + + # Goto the coreboot directory + cd coreboot + + # Clean last build + make clean + rm ../out/coreboot.rom + + # Just make + make -j${nproc} || make -j${nproc} + + # Exit if failed + if [ $? -ne 0 ]; then + printf "Failed to build Coreboot.\nExiting...\n" + exit 1 + fi + + # Get back + cd .. + + # Copy the resulting binary to a more accessible folder + if [ ! -d out/ ]; then mkdir out/; fi + mv coreboot/build/coreboot.rom out/coreboot.rom + + +# Build GRUB +elif [ "$1" == "build_grub" ]; then + + # Check if the GRUB code is present + if [ ! -d "grub/.git" ]; then + printf "No GRUB repository found in grub/\nDownload the code first\n" + exit 1 + fi + + # Change title just for goofs + sed -i "s/_(\"GNU GRUB version %s\"), PACKAGE_VERSION/\"COREBOOT\"/g" grub/grub-core/normal/main.c + + # Copy the config + cp "config/grub.config" "grub/.config" + + # Clean last build + cd grub + make clean + cd .. + + # Build GRUB + cd grub + ./autogen.sh + ./configure --with-platform=coreboot + make -j${nproc} + cd .. + + +# Assemble the GRUB payload +elif [ "$1" == "assemble_grub" ]; then + + printf "Assembling the GRUB payload\n" + + # Load modules config + source "config/grub_modules.conf" + + # Assemble GRUB + grub/grub-mkstandalone \ + --grub-mkimage="grub/grub-mkimage" \ + -O i386-coreboot \ + -o "out/grub.elf" \ + -d "grub/grub-core/" \ + --fonts= --themes= --locales= \ + --modules="${grub_modules}" \ + --install-modules="${grub_install_modules}" \ + /boot/grub/grub.cfg="config/grub_memdisk.cfg" \ + /dejavusansmono.pf2="misc/dejavusansmono_24bold.pf2" \ + /boot/grub/layouts/usqwerty.gkb="misc/usqwerty.gkb" + + +# Configure SeaBIOS to chainload with GRUB +elif [ "$1" == "config_seabios" ]; then + + printf "Configure SeaBIOS\n" + + if [ ! -f "out/coreboot.rom" ]; then + printf "No Coreboot image found.\nBuild Coreboot first.\n" + exit 1 + fi + + # Set GRUB as the default boot device + printf "/rom@img/grub2\n" > "out/bootorder" + coreboot/util/cbfstool/cbfstool "out/coreboot.rom" add -f "out/bootorder" -n bootorder -t raw + rm -f "out/bootorder" + + # Hide SeaBIOS + coreboot/util/cbfstool/cbfstool "out/coreboot.rom" add-int -i 0 -n etc/show-boot-menu + + # Don't load anything else + coreboot/util/cbfstool/cbfstool "out/coreboot.rom" add-int -i 0 -n etc/pci-optionrom-exec + + # Print the contents of the CBFS volume + coreboot/util/cbfstool/cbfstool "out/coreboot.rom" print + + +# Install and config GRUB +elif [ "$1" == "install_grub" ]; then + + printf "Install GRUB in the CBFS volume\n" + + if [ ! -f "out/coreboot.rom" ]; then + printf "No Coreboot image found.\nBuild Coreboot first.\n" + exit 1 + fi + + # Compress and add GRUB payload + coreboot/util/cbfstool/cbfstool "out/coreboot.rom" add-payload -c lzma -f "out/grub.elf" -n img/grub2 && rm "out/grub.elf" + + # Add grub.cfg + coreboot/util/cbfstool/cbfstool "out/coreboot.rom" add -f "config/grub.cfg" -n grub.cfg -t raw + + # Print the contents of the CBFS volume + coreboot/util/cbfstool/cbfstool "out/coreboot.rom" print + + +# Flashing activities +elif [ "$1" == "flash" ]; then + + # Define which programmer to use + case "$3" in + + # Internal + "internal" ) + programmer="internal:laptop=force_I_want_a_brick" + ;; + + # Raspberry Pi + "rpi" ) + programmer="linux_spi:dev=/dev/spidev0.0" + ;; + + # Arduino Boards with Xu2 USB chips + "u2" ) + programmer="serprog:dev=/dev/ttyACM0:115200" + ;; + + # Arduino Boards with FTDI USB chips + "ftdi" ) + programmer="serprog:dev=/dev/ttyUSB0:2000000" + ;; + + # Exit if no programmer is specified + * ) + printf "You must specify the programmer\n" + exit 1 + ;; + + esac + + # Write to the flash chip + if [ "$2" == "write" ]; then + + # Exit if Coreboot hasn't been successfully compiled yet + if [ ! -f "out/coreboot.rom" ]; then + printf "Build Coreboot first\n" + exit 1 + fi + + flashrom -p $programmer -w "out/coreboot.rom" + + # Do consecutive reads of the flash chip and compare them + elif [ "$2" == "read" ]; then + mkdir binaries/reads + + for i in {1..5}; do + flashrom -p $programmer -r "binaries/reads/bios$i.bin" + md5sum "binaries/reads/*.bin" + done + + # Check if the flash chip is detected + elif [ "$2" == "check" ]; then + flashrom -p $programmer + fi + +# Exit if no operation is specified +else + printf "No operation specified\n" + exit 1 + +fi diff --git a/config/coreboot.config b/config/coreboot.config new file mode 100644 index 0000000..76a3724 --- /dev/null +++ b/config/coreboot.config @@ -0,0 +1,647 @@ +# +# Automatically generated file; DO NOT EDIT. +# coreboot configuration +# + +# +# General setup +# +CONFIG_COREBOOT_BUILD=y +CONFIG_LOCALVERSION="" +CONFIG_CBFS_PREFIX="fallback" +CONFIG_COMPILER_GCC=y +# CONFIG_COMPILER_LLVM_CLANG is not set +# CONFIG_ANY_TOOLCHAIN is not set +# CONFIG_CCACHE is not set +# CONFIG_FMD_GENPARSER is not set +# CONFIG_UTIL_GENPARSER is not set +# CONFIG_USE_OPTION_TABLE is not set +CONFIG_COMPRESS_RAMSTAGE=y +CONFIG_INCLUDE_CONFIG_FILE=y +# CONFIG_COLLECT_TIMESTAMPS is not set +CONFIG_USE_BLOBS=y +# CONFIG_COVERAGE is not set +CONFIG_RELOCATABLE_RAMSTAGE=y +# CONFIG_UPDATE_IMAGE is not set +# CONFIG_BOOTSPLASH_IMAGE is not set + +# +# Mainboard +# + +# +# Important: Run 'make distclean' before switching boards +# +# CONFIG_VENDOR_A_TREND is not set +# CONFIG_VENDOR_AAEON is not set +# CONFIG_VENDOR_ABIT is not set +# CONFIG_VENDOR_ADI is not set +# CONFIG_VENDOR_ADLINK is not set +# CONFIG_VENDOR_ADVANSUS is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_AOPEN is not set +# CONFIG_VENDOR_APPLE is not set +# CONFIG_VENDOR_ARTECGROUP is not set +# CONFIG_VENDOR_ASROCK is not set +# CONFIG_VENDOR_ASUS is not set +# CONFIG_VENDOR_AVALUE is not set +# CONFIG_VENDOR_AZZA is not set +# CONFIG_VENDOR_BACHMANN is not set +# CONFIG_VENDOR_BAP is not set +# CONFIG_VENDOR_BCOM is not set +# CONFIG_VENDOR_BIFFEROS is not set +# CONFIG_VENDOR_BIOSTAR is not set +# CONFIG_VENDOR_BROADCOM is not set +# CONFIG_VENDOR_COMPAQ is not set +# CONFIG_VENDOR_CUBIETECH is not set +# CONFIG_VENDOR_DIGITALLOGIC is not set +# CONFIG_VENDOR_DMP is not set +# CONFIG_VENDOR_ECS is not set +# CONFIG_VENDOR_ELMEX is not set +# CONFIG_VENDOR_EMULATION is not set +# CONFIG_VENDOR_ESD is not set +# CONFIG_VENDOR_GETAC is not set +# CONFIG_VENDOR_GIGABYTE is not set +# CONFIG_VENDOR_GIZMOSPHERE is not set +# CONFIG_VENDOR_GOOGLE is not set +# CONFIG_VENDOR_HP is not set +# CONFIG_VENDOR_IBASE is not set +# CONFIG_VENDOR_IEI is not set +# CONFIG_VENDOR_INTEL is not set +# CONFIG_VENDOR_IWAVE is not set +# CONFIG_VENDOR_IWILL is not set +# CONFIG_VENDOR_JETWAY is not set +# CONFIG_VENDOR_KONTRON is not set +# CONFIG_VENDOR_LANNER is not set +CONFIG_VENDOR_LENOVO=y +# CONFIG_VENDOR_LINUTOP is not set +# CONFIG_VENDOR_LIPPERT is not set +# CONFIG_VENDOR_LOWRISC is not set +# CONFIG_VENDOR_MITAC is not set +# CONFIG_VENDOR_MSI is not set +# CONFIG_VENDOR_NEC is not set +# CONFIG_VENDOR_NOKIA is not set +# CONFIG_VENDOR_NVIDIA is not set +# CONFIG_VENDOR_PACKARDBELL is not set +# CONFIG_VENDOR_PCENGINES is not set +# CONFIG_VENDOR_PURISM is not set +# CONFIG_VENDOR_RCA is not set +# CONFIG_VENDOR_RODA is not set +# CONFIG_VENDOR_SAMSUNG is not set +# CONFIG_VENDOR_SAPPHIRE is not set +# CONFIG_VENDOR_SIEMENS is not set +# CONFIG_VENDOR_SOYO is not set +# CONFIG_VENDOR_SUNW is not set +# CONFIG_VENDOR_SUPERMICRO is not set +# CONFIG_VENDOR_TECHNEXION is not set +# CONFIG_VENDOR_THOMSON is not set +# CONFIG_VENDOR_TI is not set +# CONFIG_VENDOR_TRAVERSE is not set +# CONFIG_VENDOR_TYAN is not set +# CONFIG_VENDOR_VIA is not set +# CONFIG_VENDOR_WINENT is not set +# CONFIG_VENDOR_WYSE is not set +CONFIG_BOARD_SPECIFIC_OPTIONS=y +CONFIG_MAINBOARD_DIR="lenovo/x220" +CONFIG_MAINBOARD_PART_NUMBER="ThinkPad X220" +CONFIG_MAINBOARD_VENDOR="LENOVO" +CONFIG_MAX_CPUS=8 +CONFIG_CACHE_ROM_SIZE_OVERRIDE=0x0 +CONFIG_CBFS_SIZE=0x200000 +CONFIG_PAYLOAD_CONFIGFILE="" +CONFIG_VGA_BIOS_ID="8086,0126" +# CONFIG_ONBOARD_VGA_IS_PRIMARY is not set +CONFIG_DIMM_SPD_SIZE=256 +# CONFIG_VGA_BIOS is not set +CONFIG_DCACHE_RAM_BASE=0xfefe0000 +CONFIG_DCACHE_RAM_SIZE=0x20000 +CONFIG_VGA_BIOS_FILE="pci8086,0126.rom" +CONFIG_MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID=0x17aa +CONFIG_MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID=0x21db +CONFIG_HAVE_IFD_BIN=y +CONFIG_HAVE_ME_BIN=y +CONFIG_MMCONF_BASE_ADDRESS=0xf8000000 +CONFIG_DRAM_RESET_GATE_GPIO=10 +# CONFIG_POST_IO is not set +CONFIG_DEVICETREE="devicetree.cb" +CONFIG_MAX_REBOOT_CNT=3 +CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT=y +CONFIG_ID_SECTION_OFFSET=0x80 +# CONFIG_POST_DEVICE is not set +CONFIG_USBDEBUG_HCD_INDEX=2 +# CONFIG_VBOOT is not set +CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 +CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 +# CONFIG_DRIVERS_UART_8250IO is not set +CONFIG_FMDFILE="" +CONFIG_IFD_BIN_PATH="../binaries/descriptor.bin" +CONFIG_ME_BIN_PATH="../binaries/me_neutered.bin" +CONFIG_HAVE_GBE_BIN=y +# CONFIG_BOARD_LENOVO_G505S is not set +# CONFIG_BOARD_LENOVO_L520 is not set +# CONFIG_BOARD_LENOVO_R400 is not set +# CONFIG_BOARD_LENOVO_S230U is not set +# CONFIG_BOARD_LENOVO_T400 is not set +# CONFIG_BOARD_LENOVO_T420 is not set +# CONFIG_BOARD_LENOVO_T420S is not set +# CONFIG_BOARD_LENOVO_THINKPAD_T430 is not set +# CONFIG_BOARD_LENOVO_T430S is not set +# CONFIG_BOARD_LENOVO_T500 is not set +# CONFIG_BOARD_LENOVO_T520 is not set +# CONFIG_BOARD_LENOVO_T530 is not set +# CONFIG_BOARD_LENOVO_T60 is not set +# CONFIG_BOARD_LENOVO_X1_CARBON_GEN1 is not set +# CONFIG_BOARD_LENOVO_X200 is not set +# CONFIG_BOARD_LENOVO_X201 is not set +CONFIG_BOARD_LENOVO_X220=y +# CONFIG_BOARD_LENOVO_X220I is not set +# CONFIG_BOARD_LENOVO_X230 is not set +# CONFIG_BOARD_LENOVO_X60 is not set +CONFIG_CPU_ADDR_BITS=36 +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=8 +# CONFIG_USBDEBUG is not set +CONFIG_DRIVERS_PS2_KEYBOARD=y +# CONFIG_NO_POST is not set +CONFIG_BOARD_ROMSIZE_KB_8192=y +# CONFIG_COREBOOT_ROMSIZE_KB_64 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_128 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set +CONFIG_COREBOOT_ROMSIZE_KB_8192=y +# CONFIG_COREBOOT_ROMSIZE_KB_12288 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_16384 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_32768 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set +CONFIG_COREBOOT_ROMSIZE_KB=8192 +CONFIG_ROM_SIZE=0x800000 +# CONFIG_MAINBOARD_HAS_TPM2 is not set +CONFIG_SYSTEM_TYPE_LAPTOP=y +# CONFIG_CBFS_AUTOGEN_ATTRIBUTES is not set + +# +# Chipset +# + +# +# SoC +# +# CONFIG_SOC_BROADCOM_CYGNUS is not set +CONFIG_BOOTBLOCK_CPU_INIT="cpu/intel/model_206ax/bootblock.c" +CONFIG_CPU_SPECIFIC_OPTIONS=y +CONFIG_C_ENV_BOOTBLOCK_SIZE=0x10000 +CONFIG_X86_TOP4G_BOOTMEDIA_MAP=y +CONFIG_ROMSTAGE_ADDR=0x2000000 +CONFIG_VERSTAGE_ADDR=0x2000000 +CONFIG_HEAP_SIZE=0x4000 +CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y +CONFIG_SMM_TSEG_SIZE=0x800000 +CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x0 +# CONFIG_BUILD_WITH_FAKE_IFD is not set +CONFIG_BOOTBLOCK_NORTHBRIDGE_INIT="northbridge/intel/sandybridge/bootblock.c" +CONFIG_BOOTBLOCK_SOUTHBRIDGE_INIT="southbridge/intel/bd82x6x/bootblock.c" +CONFIG_CACHE_MRC_SIZE_KB=512 +CONFIG_EHCI_BAR=0xfef00000 +CONFIG_SERIRQ_CONTINUOUS_MODE=y +CONFIG_RAMTOP=0x200000 +# CONFIG_CONSOLE_CBMEM is not set +CONFIG_UART_PCI_ADDR=0x0 +CONFIG_HPET_MIN_TICKS=0x80 +# CONFIG_SOC_INTEL_KABYLAKE is not set +# CONFIG_SOC_LOWRISC_LOWRISC is not set +# CONFIG_SOC_MARVELL_MVMAP2315 is not set +# CONFIG_SOC_MEDIATEK_MT8173 is not set +# CONFIG_SOC_NVIDIA_TEGRA124 is not set +# CONFIG_SOC_NVIDIA_TEGRA210 is not set +# CONFIG_SOC_QC_IPQ40XX is not set +# CONFIG_SOC_QC_IPQ806X is not set +# CONFIG_SOC_ROCKCHIP_RK3288 is not set +# CONFIG_SOC_ROCKCHIP_RK3399 is not set +# CONFIG_CPU_SAMSUNG_EXYNOS5250 is not set +# CONFIG_CPU_SAMSUNG_EXYNOS5420 is not set +# CONFIG_SOC_UCB_RISCV is not set + +# +# CPU +# +# CONFIG_CPU_ALLWINNER_A10 is not set +CONFIG_SOCKET_SPECIFIC_OPTIONS=y +CONFIG_XIP_ROM_SIZE=0x20000 +CONFIG_NUM_IPI_STARTS=2 +# CONFIG_CPU_AMD_AGESA is not set +# CONFIG_CPU_AMD_PI is not set +# CONFIG_CPU_ARMLTD_CORTEX_A9 is not set +CONFIG_CPU_INTEL_MODEL_206AX=y +CONFIG_SSE2=y +CONFIG_CPU_INTEL_SOCKET_RPGA989=y +# CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE is not set +# CONFIG_CPU_INTEL_TURBO_NOT_PACKAGE_SCOPED is not set +CONFIG_CPU_INTEL_COMMON=y +CONFIG_ENABLE_VMX=y +# CONFIG_SET_VMX_LOCK_BIT is not set +# CONFIG_CPU_TI_AM335X is not set +# CONFIG_PARALLEL_CPU_INIT is not set +# CONFIG_PARALLEL_MP is not set +# CONFIG_UDELAY_IO is not set +CONFIG_UDELAY_LAPIC=y +CONFIG_LAPIC_MONOTONIC_TIMER=y +# CONFIG_UDELAY_TSC is not set +# CONFIG_UDELAY_TIMER2 is not set +# CONFIG_TSC_SYNC_LFENCE is not set +CONFIG_TSC_SYNC_MFENCE=y +# CONFIG_NO_FIXED_XIP_ROM_SIZE is not set +CONFIG_LOGICAL_CPUS=y +CONFIG_SMM_TSEG=y +CONFIG_SMM_MODULE_HEAP_SIZE=0x4000 +# CONFIG_SMM_LAPIC_REMAP_MITIGATION is not set +# CONFIG_SERIALIZED_SMM_INITIALIZATION is not set +# CONFIG_X86_AMD_FIXED_MTRRS is not set +# CONFIG_PLATFORM_USES_FSP1_0 is not set +# CONFIG_MIRROR_PAYLOAD_TO_RAM_BEFORE_LOADING is not set +# CONFIG_SOC_SETS_MSRS is not set +CONFIG_CACHE_AS_RAM=y +# CONFIG_NO_CAR_GLOBAL_MIGRATION is not set +CONFIG_SMP=y +CONFIG_AP_SIPI_VECTOR=0xfffff000 +CONFIG_MMX=y +CONFIG_SSE=y +CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y +# CONFIG_USES_MICROCODE_HEADER_FILES is not set +# CONFIG_CPU_MICROCODE_CBFS_GENERATE is not set +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set +CONFIG_CPU_MICROCODE_CBFS_NONE=y + +# +# Northbridge +# +# CONFIG_NORTHBRIDGE_AMD_AGESA is not set +# CONFIG_NO_MMCONF_SUPPORT is not set +# CONFIG_AMD_NB_CIMX is not set +# CONFIG_NORTHBRIDGE_AMD_CIMX_RD890 is not set +CONFIG_VIDEO_MB=0 +# CONFIG_NORTHBRIDGE_AMD_PI is not set +CONFIG_RAMBASE=0x100000 +CONFIG_NORTHBRIDGE_INTEL_COMMON_MRC_CACHE=y +CONFIG_MRC_CACHE_SIZE=0x10000 +CONFIG_NORTHBRIDGE_INTEL_SANDYBRIDGE=y +CONFIG_USE_NATIVE_RAMINIT=y +CONFIG_SANDYBRIDGE_IVYBRIDGE_LVDS=y +CONFIG_HPET_ADDRESS=0xfed00000 +CONFIG_MAX_PIRQ_LINKS=4 + +# +# Southbridge +# +# CONFIG_AMD_SB_CIMX is not set +# CONFIG_SOUTHBRIDGE_AMD_CIMX_SB800 is not set +# CONFIG_SOUTHBRIDGE_AMD_CIMX_SB900 is not set +CONFIG_SOUTHBRIDGE_INTEL_C216=y +CONFIG_SOUTH_BRIDGE_OPTIONS=y +CONFIG_LOCK_SPI_ON_RESUME_NONE=y +# CONFIG_LOCK_SPI_ON_RESUME_RO is not set +# CONFIG_LOCK_SPI_ON_RESUME_NO_ACCESS is not set +CONFIG_SOUTHBRIDGE_INTEL_COMMON=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_GPIO=y +# CONFIG_LOCK_MANAGEMENT_ENGINE is not set + +# +# Super I/O +# +# CONFIG_SUPERIO_NUVOTON_NCT6776_COM_A is not set + +# +# Embedded Controllers +# +CONFIG_EC_ACPI=y +CONFIG_EC_LENOVO_H8=y +CONFIG_SEABIOS_PS2_TIMEOUT=3000 +CONFIG_EC_LENOVO_PMH7=y +CONFIG_HAVE_INTEL_FIRMWARE=y + +# +# Intel Firmware +# +# CONFIG_EM100 is not set +CONFIG_CHECK_ME=y +# CONFIG_USE_ME_CLEANER is not set +CONFIG_GBE_BIN_PATH="../binaries/gbe.bin" +# CONFIG_HAVE_EC_BIN is not set + +# +# Verified Boot (vboot) +# +# CONFIG_MAINBOARD_HAS_CHROMEOS is not set +# CONFIG_GOOGLE_SMBIOS_MAINBOARD_VERSION is not set +# CONFIG_UEFI_2_4_BINDING is not set +# CONFIG_UDK_2015_BINDING is not set +# CONFIG_USE_SIEMENS_HWILIB is not set +# CONFIG_ARCH_ARM is not set +# CONFIG_ARCH_BOOTBLOCK_ARM is not set +# CONFIG_ARCH_VERSTAGE_ARM is not set +# CONFIG_ARCH_ROMSTAGE_ARM is not set +# CONFIG_ARCH_RAMSTAGE_ARM is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV4 is not set +# CONFIG_ARCH_VERSTAGE_ARMV4 is not set +# CONFIG_ARCH_ROMSTAGE_ARMV4 is not set +# CONFIG_ARCH_RAMSTAGE_ARMV4 is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV7 is not set +# CONFIG_ARCH_VERSTAGE_ARMV7 is not set +# CONFIG_ARCH_ROMSTAGE_ARMV7 is not set +# CONFIG_ARCH_RAMSTAGE_ARMV7 is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV7_M is not set +# CONFIG_ARCH_VERSTAGE_ARMV7_M is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV7_R is not set +# CONFIG_ARCH_VERSTAGE_ARMV7_R is not set +# CONFIG_ARCH_ROMSTAGE_ARMV7_R is not set +# CONFIG_ARCH_RAMSTAGE_ARMV7_R is not set +# CONFIG_ARM_LPAE is not set +# CONFIG_ARCH_ARM64 is not set +# CONFIG_ARCH_BOOTBLOCK_ARM64 is not set +# CONFIG_ARCH_VERSTAGE_ARM64 is not set +# CONFIG_ARCH_ROMSTAGE_ARM64 is not set +# CONFIG_ARCH_RAMSTAGE_ARM64 is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV8_64 is not set +# CONFIG_ARCH_VERSTAGE_ARMV8_64 is not set +# CONFIG_ARCH_ROMSTAGE_ARMV8_64 is not set +# CONFIG_ARCH_RAMSTAGE_ARMV8_64 is not set +# CONFIG_ARM64_A53_ERRATUM_843419 is not set +# CONFIG_ARCH_MIPS is not set +# CONFIG_ARCH_BOOTBLOCK_MIPS is not set +# CONFIG_ARCH_VERSTAGE_MIPS is not set +# CONFIG_ARCH_ROMSTAGE_MIPS is not set +# CONFIG_ARCH_RAMSTAGE_MIPS is not set +# CONFIG_ARCH_POWER8 is not set +# CONFIG_ARCH_BOOTBLOCK_POWER8 is not set +# CONFIG_ARCH_VERSTAGE_POWER8 is not set +# CONFIG_ARCH_ROMSTAGE_POWER8 is not set +# CONFIG_ARCH_RAMSTAGE_POWER8 is not set +# CONFIG_ARCH_RISCV is not set +# CONFIG_ARCH_BOOTBLOCK_RISCV is not set +# CONFIG_ARCH_VERSTAGE_RISCV is not set +# CONFIG_ARCH_ROMSTAGE_RISCV is not set +# CONFIG_ARCH_RAMSTAGE_RISCV is not set +CONFIG_ARCH_X86=y +CONFIG_ARCH_BOOTBLOCK_X86_32=y +CONFIG_ARCH_VERSTAGE_X86_32=y +CONFIG_ARCH_ROMSTAGE_X86_32=y +CONFIG_ARCH_RAMSTAGE_X86_32=y +# CONFIG_ARCH_BOOTBLOCK_X86_64 is not set +# CONFIG_ARCH_VERSTAGE_X86_64 is not set +# CONFIG_ARCH_ROMSTAGE_X86_64 is not set +# CONFIG_ARCH_RAMSTAGE_X86_64 is not set +# CONFIG_USE_MARCH_586 is not set +# CONFIG_AP_IN_SIPI_WAIT is not set +# CONFIG_SIPI_VECTOR_IN_ROM is not set +# CONFIG_ROMCC is not set +# CONFIG_CBMEM_TOP_BACKUP is not set +# CONFIG_LATE_CBMEM_INIT is not set +CONFIG_PC80_SYSTEM=y +# CONFIG_BOOTBLOCK_DEBUG_SPINLOOP is not set +# CONFIG_BOOTBLOCK_SAVE_BIST_AND_TIMESTAMP is not set +CONFIG_HAVE_CMOS_DEFAULT=y +CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" +CONFIG_IOAPIC_INTERRUPTS_ON_FSB=y +# CONFIG_IOAPIC_INTERRUPTS_ON_APIC_SERIAL_BUS is not set +# CONFIG_POSTCAR_STAGE is not set +# CONFIG_VERSTAGE_DEBUG_SPINLOOP is not set +# CONFIG_ROMSTAGE_DEBUG_SPINLOOP is not set +CONFIG_BOOTBLOCK_SIMPLE=y +# CONFIG_BOOTBLOCK_NORMAL is not set +CONFIG_BOOTBLOCK_SOURCE="bootblock_simple.c" + +# +# Devices +# +CONFIG_MAINBOARD_HAS_NATIVE_VGA_INIT=y +CONFIG_NATIVE_VGA_INIT_USE_EDID=y +CONFIG_MAINBOARD_HAS_NATIVE_VGA_INIT_TEXTMODECFG=y +# CONFIG_MAINBOARD_HAS_LIBGFXINIT is not set +# CONFIG_ON_DEVICE_ROM_LOAD is not set +# CONFIG_MULTIPLE_VGA_ADAPTERS is not set +# CONFIG_SMBUS_HAS_AUX_CHANNELS is not set +CONFIG_PCI=y +CONFIG_MMCONF_SUPPORT=y +# CONFIG_HYPERTRANSPORT_PLUGIN_SUPPORT is not set +CONFIG_PCIX_PLUGIN_SUPPORT=y +CONFIG_CARDBUS_PLUGIN_SUPPORT=y +# CONFIG_AZALIA_PLUGIN_SUPPORT is not set +CONFIG_PCIEXP_PLUGIN_SUPPORT=y +CONFIG_PCIEXP_COMMON_CLOCK=y +CONFIG_PCIEXP_ASPM=y +# CONFIG_PCIEXP_CLK_PM is not set +# CONFIG_PCIEXP_L1_SUB_STATE is not set +# CONFIG_EARLY_PCI_BRIDGE is not set +CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 +CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +# CONFIG_SOFTWARE_I2C is not set + +# +# Display +# +CONFIG_FRAMEBUFFER_KEEP_VESA_MODE=y + +# +# Generic Drivers +# +# CONFIG_DRIVERS_AS3722_RTC is not set +# CONFIG_GIC is not set +# CONFIG_IPMI_KCS is not set +# CONFIG_DRIVERS_LENOVO_WACOM is not set +# CONFIG_DRIVERS_LENOVO_HYBRID_GRAPHICS is not set +CONFIG_SPI_FLASH=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y +# CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY is not set +# CONFIG_SPI_FLASH_SMM is not set +# CONFIG_SPI_FLASH_NO_FAST_READ is not set +CONFIG_SPI_FLASH_ADESTO=y +CONFIG_SPI_FLASH_AMIC=y +CONFIG_SPI_FLASH_ATMEL=y +CONFIG_SPI_FLASH_EON=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_STMICRO=y +CONFIG_SPI_FLASH_WINBOND=y +# CONFIG_SPI_FLASH_FAST_READ_DUAL_OUTPUT_3B is not set +# CONFIG_SPI_FLASH_HAS_VOLATILE_GROUP is not set +# CONFIG_HAVE_SPI_CONSOLE_SUPPORT is not set +# CONFIG_DRIVERS_UART is not set +CONFIG_NO_UART_ON_SUPERIO=y +# CONFIG_UART_OVERRIDE_INPUT_CLOCK_DIVIDER is not set +# CONFIG_UART_OVERRIDE_REFCLK is not set +# CONFIG_DRIVERS_UART_8250MEM is not set +# CONFIG_DRIVERS_UART_8250MEM_32 is not set +# CONFIG_HAVE_UART_SPECIAL is not set +# CONFIG_DRIVERS_UART_OXPCIE is not set +# CONFIG_DRIVERS_UART_PL011 is not set +# CONFIG_UART_USE_REFCLK_AS_INPUT_CLOCK is not set +CONFIG_HAVE_USBDEBUG=y +CONFIG_HAVE_USBDEBUG_OPTIONS=y +CONFIG_SMBIOS_PROVIDED_BY_MOBO=y +# CONFIG_DRIVERS_I2C_MAX98927 is not set +# CONFIG_DRIVERS_I2C_PCF8523 is not set +# CONFIG_DRIVERS_I2C_RTD2132 is not set +# CONFIG_DRIVERS_I2C_RX6110SA is not set +# CONFIG_MAINBOARD_HAS_I2C_TPM_ATMEL is not set +# CONFIG_MAINBOARD_HAS_I2C_TPM_CR50 is not set +# CONFIG_INTEL_DDI is not set +CONFIG_INTEL_EDID=y +CONFIG_INTEL_INT15=y +CONFIG_INTEL_GMA_ACPI=y +# CONFIG_INTEL_GMA_SSC_ALTERNATE_REF is not set +# CONFIG_DRIVER_INTEL_I210 is not set +# CONFIG_DRIVERS_INTEL_MIPI_CAMERA is not set +CONFIG_DRIVERS_INTEL_WIFI=y +# CONFIG_USE_SAR is not set +# CONFIG_DRIVER_MAXIM_MAX77686 is not set +# CONFIG_DRIVER_PARADE_PS8625 is not set +# CONFIG_DRIVER_PARADE_PS8640 is not set +CONFIG_DRIVERS_MC146818=y +CONFIG_MAINBOARD_HAS_LPC_TPM=y +# CONFIG_LPC_TPM is not set +CONFIG_VGA=y +CONFIG_DRIVERS_RICOH_RCE822=y +# CONFIG_DRIVER_SIEMENS_NC_FPGA is not set +# CONFIG_DRIVERS_SIL_3114 is not set +# CONFIG_MAINBOARD_HAS_SPI_TPM_CR50 is not set +# CONFIG_DRIVER_TI_TPS65090 is not set +# CONFIG_DRIVERS_TI_TPS65913 is not set +# CONFIG_DRIVERS_TI_TPS65913_RTC is not set +# CONFIG_DRIVER_XPOWERS_AXP209 is not set +# CONFIG_COMMONLIB_STORAGE is not set +CONFIG_ACPI_SATA_GENERATOR=y +CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y +# CONFIG_BOOT_DEVICE_NOT_SPI_FLASH is not set +CONFIG_BOOT_DEVICE_SPI_FLASH=y +CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y +# CONFIG_BOOT_DEVICE_SUPPORTS_WRITES is not set +CONFIG_RTC=y +# CONFIG_TPM is not set +# CONFIG_MAINBOARD_HAS_TPM_CR50 is not set +CONFIG_STACK_SIZE=0x1000 + +# +# Console +# +CONFIG_SQUELCH_EARLY_SMP=y +# CONFIG_SPKMODEM is not set +# CONFIG_CONSOLE_NE2K is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8=y +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0 is not set +# CONFIG_CMOS_POST is not set +CONFIG_CONSOLE_POST=y +# CONFIG_NO_EARLY_BOOTBLOCK_POSTCODES is not set +CONFIG_HWBASE_DEBUG_CB=y +CONFIG_HAVE_ACPI_RESUME=y +# CONFIG_ACPI_HUGE_LOWMEM_BACKUP is not set +CONFIG_RESUME_PATH_SAME_AS_BOOT=y +CONFIG_HAVE_HARD_RESET=y +# CONFIG_HAVE_ROMSTAGE_CONSOLE_SPINLOCK is not set +# CONFIG_HAVE_ROMSTAGE_NVRAM_CBFS_SPINLOCK is not set +# CONFIG_HAVE_ROMSTAGE_MICROCODE_CBFS_SPINLOCK is not set +CONFIG_HAVE_MONOTONIC_TIMER=y +# CONFIG_GENERIC_UDELAY is not set +# CONFIG_TIMER_QUEUE is not set +CONFIG_HAVE_OPTION_TABLE=y +# CONFIG_PIRQ_ROUTE is not set +CONFIG_HAVE_SMI_HANDLER=y +# CONFIG_PCI_IO_CFG_EXT is not set +CONFIG_IOAPIC=y +CONFIG_USE_WATCHDOG_ON_BOOT=y +# CONFIG_GFXUMA is not set +CONFIG_HAVE_ACPI_TABLES=y +CONFIG_COMMON_FADT=y +# CONFIG_ACPI_NHLT is not set + +# +# System tables +# +# CONFIG_GENERATE_MP_TABLE is not set +# CONFIG_GENERATE_PIRQ_TABLE is not set +CONFIG_GENERATE_SMBIOS_TABLES=y + +# +# Payload +# +# CONFIG_PAYLOAD_NONE is not set +# CONFIG_PAYLOAD_ELF is not set +# CONFIG_PAYLOAD_BAYOU is not set +# CONFIG_PAYLOAD_FILO is not set +# CONFIG_PAYLOAD_GRUB2 is not set +CONFIG_PAYLOAD_SEABIOS=y +# CONFIG_PAYLOAD_UBOOT is not set +# CONFIG_PAYLOAD_LINUX is not set +# CONFIG_PAYLOAD_TIANOCORE is not set +CONFIG_PAYLOAD_FILE="payloads/external/SeaBIOS/seabios/out/bios.bin.elf" +# CONFIG_SEABIOS_STABLE is not set +CONFIG_SEABIOS_MASTER=y +# CONFIG_SEABIOS_REVISION is not set +CONFIG_SEABIOS_THREAD_OPTIONROMS=y +CONFIG_SEABIOS_VGA_COREBOOT=y +CONFIG_SEABIOS_BOOTORDER_FILE="" +CONFIG_PAYLOAD_VGABIOS_FILE="payloads/external/SeaBIOS/seabios/out/vgabios.bin" +CONFIG_SEABIOS_DEBUG_LEVEL=-1 + +# +# Using default SeaBIOS log level +# +CONFIG_PAYLOAD_OPTIONS="" +# CONFIG_PXE is not set +CONFIG_COMPRESSED_PAYLOAD_LZMA=y +# CONFIG_PAYLOAD_IS_FLAT_BINARY is not set + +# +# Secondary Payloads +# +# CONFIG_COREINFO_SECONDARY_PAYLOAD is not set +# CONFIG_MEMTEST_SECONDARY_PAYLOAD is not set +# CONFIG_NVRAMCUI_SECONDARY_PAYLOAD is not set +# CONFIG_TINT_SECONDARY_PAYLOAD is not set + +# +# Debugging +# +# CONFIG_FATAL_ASSERTS is not set +# CONFIG_DEBUG_CBFS is not set +CONFIG_HAVE_DEBUG_RAM_SETUP=y +# CONFIG_DEBUG_RAM_SETUP is not set +# CONFIG_HAVE_DEBUG_CAR is not set +# CONFIG_HAVE_DEBUG_SMBUS is not set +# CONFIG_DEBUG_SMI is not set +# CONFIG_DEBUG_SMM_RELOCATION is not set +# CONFIG_DEBUG_MALLOC is not set +# CONFIG_DEBUG_ACPI is not set +# CONFIG_DEBUG_SPI_FLASH is not set +# CONFIG_TRACE is not set +# CONFIG_DEBUG_BOOT_STATE is not set +# CONFIG_DEBUG_ADA_CODE is not set +# CONFIG_ENABLE_APIC_EXT_ID is not set +CONFIG_WARNINGS_ARE_ERRORS=y +# CONFIG_POWER_BUTTON_DEFAULT_ENABLE is not set +# CONFIG_POWER_BUTTON_DEFAULT_DISABLE is not set +# CONFIG_POWER_BUTTON_FORCE_ENABLE is not set +# CONFIG_POWER_BUTTON_FORCE_DISABLE is not set +# CONFIG_POWER_BUTTON_IS_OPTIONAL is not set +# CONFIG_REG_SCRIPT is not set +# CONFIG_CREATE_BOARD_CHECKLIST is not set +# CONFIG_MAKE_CHECKLIST_PUBLIC is not set +# CONFIG_RAMSTAGE_ADA is not set +# CONFIG_RAMSTAGE_LIBHWBASE is not set +CONFIG_HWBASE_DYNAMIC_MMIO=y +# CONFIG_NO_XIP_EARLY_STAGES is not set +CONFIG_EARLY_CBMEM_INIT=y +# CONFIG_EARLY_CBMEM_LIST is not set +CONFIG_RELOCATABLE_MODULES=y +# CONFIG_BOARD_ID_AUTO is not set +# CONFIG_BOARD_ID_MANUAL is not set +CONFIG_BOOTBLOCK_CUSTOM=y diff --git a/config/grub.cfg b/config/grub.cfg new file mode 100644 index 0000000..12a0630 --- /dev/null +++ b/config/grub.cfg @@ -0,0 +1,205 @@ +set prefix=(memdisk)/boot/grub + +insmod nativedisk +insmod ehci +insmod ohci +insmod uhci +insmod usb +insmod usbms +insmod usbserial_pl2303 +insmod usbserial_ftdi +insmod usbserial_usbdebug +insmod chain + +# Serial and keyboard configuration, very important. +serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1 +terminal_input --append serial +terminal_output --append serial +terminal_input --append at_keyboard +terminal_output --append cbmemc + +gfxpayload=keep +terminal_output --append gfxterm + +# Default to first option, automatically boot after 1 second +set default="0>0" +set timeout=1 + +# This is useful when using 'cat' on long files on GRUB terminal +set pager=1 +insmod jpeg + +# Set a background image from CBFS +#background_image (cbfsdisk)/background.jpg + +# Set DejaVu Sans Mono as the default font +loadfont (memdisk)/dejavusansmono.pf2 + +# Default keymap +keymap usqwerty + +function try_user_config { + set root="${1}" + for dir in boot grub grub2 boot/grub boot/grub2; do + for name in '' autoboot_ libreboot_ coreboot_; do + if [ -f /"${dir}"/"${name}"grub.cfg ]; then + unset superusers + configfile /"${dir}"/"${name}"grub.cfg + fi + done + done +} +function search_grub { + for i in 0 1; do + # raw devices + try_user_config "(${1}${i})" + for part in 1 2 3 4 5; do + # MBR/GPT partitions + try_user_config "(${1}${i},${part})" + done + done +} +function try_isolinux_config { + set root="${1}" + for dir in '' /boot; do + if [ -f "${dir}"/isolinux/isolinux.cfg ]; then + syslinux_configfile -i "${dir}"/isolinux/isolinux.cfg + elif [ -f "${dir}"/syslinux/syslinux.cfg ]; then + syslinux_configfile -s "${dir}"/syslinux/syslinux.cfg + fi + done +} +function search_isolinux { + for i in 0 1; do + # raw devices + try_isolinux_config "(${1}${i})" + for part in 1 2 3 4 5; do + # MBR/GPT partitions + try_isolinux_config "(${1}${i},${part})" + done + done +} + +submenu 'Boot from a LUKS+LVM setup [l]' --hotkey='l' { + menuentry 'Linux-libre kernel' { + cryptomount -a + set root='lvm/matrix-system' + linux /boot/vmlinuz-linux-libre root=/dev/matrix/system cryptdevice=/dev/sda1:lvm cryptkey=rootfs:/etc/keyfile resume=/dev/mapper/matrix-swap + initrd /boot/initramfs-linux-libre.img + } + menuentry 'Linux-libre-lts kernel' { + cryptomount -a + set root='lvm/matrix-system' + linux /boot/vmlinuz-linux-libre-lts root=/dev/matrix/system cryptdevice=/dev/sda1:lvm cryptkey=rootfs:/etc/keyfile resume=/dev/mapper/matrix-swap + initrd /boot/initramfs-linux-libre-lts.img + } + menuentry 'Linux-libre-grsec kernel' { + cryptomount -a + set root='lvm/matrix-system' + linux /boot/vmlinuz-linux-libre-grsec root=/dev/matrix/system cryptdevice=/dev/sda1:lvm cryptkey=rootfs:/etc/keyfile resume=/dev/mapper/matrix-swap + initrd /boot/initramfs-linux-libre-grsec.img + } + menuentry 'Linux kernel' { + cryptomount -a + set root='lvm/matrix-system' + linux /boot/vmlinuz-linux root=/dev/matrix/system cryptdevice=/dev/sda1:lvm cryptkey=rootfs:/etc/keyfile resume=/dev/mapper/matrix-swap + initrd /boot/initramfs-linux.img + } +} +menuentry 'Load operating system from HDD [o]' --hotkey='o' { +# GRUB2 handles (almost) every possible disk setup, but only the location of +# /boot is actually important since GRUB2 only loads the user's config. + +# LVM, RAID, filesystems and encryption on both raw devices and partitions in +# all various combinations need to be supported. Since full disk encryption is +# possible with GRUB2 as payload and probably even used by most users, this +# configuration tries to load the operating system in the following way: + +# 1. Look for user configuration on unencrypted devices first to avoid +# unnecessary decryption routines in the following order: + +# 1) raw devices and MBR/GPT partitions + search_grub ahci + search_grub ata +# 2) LVM and RAID which might be used accross multiple devices + lvm="lvm/matrix-rootvol lvm/matrix-boot" + raid="md/0 md/1 md/2 md/3 md/4 md/5 md/6 md/7 md/8 md/9" + for vol in ${lvm} ${raid}; do + try_user_config "(${vol})" + done +# 2. In case no configuration could be found, try decrypting devices. Look +# on raw crypto devices as well as inside LVM volumes this time. + +# The user will be prompted for a passphrase if a LUKS header was found. + for dev in ahci0 ata0 ${lvm}; do + cryptomount "(${dev})" + done +# 3) encrypted devices/partitions + for i in 0 1; do + for part in 1 2 3 4 5; do + for type in ahci ata; do + cryptomount "(${type}${i},${part})" + done + done + done + +# 3) encrypted devices/partitions + search_grub crypto +# 4) LVM inside LUKS containers + for vol in ${lvm}; do + try_user_config "(${vol})" + done + + # Last resort, if all else fails + set root=ahci0,1 + for p in / /boot/; do + if [ -f "${p}vmlinuz" ]; then + linux ${p}vmlinuz root=/dev/sda1 rw + if [ -f "${p}initrd.img" ]; then + initrd ${p}initrd.img + fi + fi + done + + # Last resort (for GA-G41-ES2L which uses IDE emulation mode for SATA) + set root=ata0,1 + for p in / /boot/; do + if [ -f "${p}vmlinuz" ]; then + linux ${p}vmlinuz root=/dev/sda1 rw + if [ -f "${p}initrd.img" ]; then + initrd ${p}initrd.img + fi + fi + done +} +submenu 'Search for systems on external media [u]' --hotkey="u" { + menuentry 'Search ISOLINUX menu (USB) [u]' --hotkey='u' { + search_isolinux usb + } + menuentry 'Search ISOLINUX menu (AHCI) [a]' --hotkey='a' { + search_isolinux ahci + } + menuentry 'Search ISOLINUX menu (CD/DVD) [d]' --hotkey='d' { + insmod ata + for dev in ata0 ata1 ata2 ata3 ahci1; do + try_isolinux_config "(${dev})" + done + } + menuentry 'Search for GRUB2 configuration on external media [s]' --hotkey='s' { + search_grub usb + } + menuentry 'Load test configuration (grubtest.cfg) inside of CBFS [t]' --hotkey='t' { + set root='(cbfsdisk)' + configfile /grubtest.cfg + } + menuentry 'Chainload bootloader on external media [c]' --hotkey='c' { + set root='(usb0)' + chainloader +1 + } +} +menuentry 'Reboot [r]' --hotkey='r' { + reboot +} +menuentry 'Poweroff [p]' --hotkey='p' { + halt +} diff --git a/config/grub.config b/config/grub.config new file mode 100644 index 0000000..2aa93a1 --- /dev/null +++ b/config/grub.config @@ -0,0 +1,630 @@ +# +# Automatically generated file; DO NOT EDIT. +# coreboot configuration +# + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_CBFS_PREFIX="fallback" +CONFIG_COMPILER_GCC=y +# CONFIG_COMPILER_LLVM_CLANG is not set +# CONFIG_ANY_TOOLCHAIN is not set +# CONFIG_CCACHE is not set +# CONFIG_FMD_GENPARSER is not set +# CONFIG_SCONFIG_GENPARSER is not set +CONFIG_USE_OPTION_TABLE=y +CONFIG_STATIC_OPTION_TABLE=y +CONFIG_COMPRESS_RAMSTAGE=y +CONFIG_INCLUDE_CONFIG_FILE=y +# CONFIG_COLLECT_TIMESTAMPS is not set +# CONFIG_USE_BLOBS is not set +# CONFIG_COVERAGE is not set +CONFIG_RELOCATABLE_RAMSTAGE=y +# CONFIG_CACHE_RELOCATED_RAMSTAGE_OUTSIDE_CBMEM is not set +CONFIG_BOOTBLOCK_SIMPLE=y +# CONFIG_BOOTBLOCK_NORMAL is not set +CONFIG_BOOTBLOCK_SOURCE="bootblock_simple.c" +# CONFIG_UPDATE_IMAGE is not set +# CONFIG_RAM_CODE_SUPPORT is not set +# CONFIG_BOOTSPLASH_IMAGE is not set + +# +# Mainboard +# + +# +# Important: Run 'make distclean' before switching boards +# +# CONFIG_VENDOR_A_TREND is not set +# CONFIG_VENDOR_AAEON is not set +# CONFIG_VENDOR_ABIT is not set +# CONFIG_VENDOR_ADI is not set +# CONFIG_VENDOR_ADLINK is not set +# CONFIG_VENDOR_ADVANSUS is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_AOPEN is not set +# CONFIG_VENDOR_APPLE is not set +# CONFIG_VENDOR_ARTECGROUP is not set +# CONFIG_VENDOR_ASROCK is not set +# CONFIG_VENDOR_ASUS is not set +# CONFIG_VENDOR_AVALUE is not set +# CONFIG_VENDOR_AZZA is not set +# CONFIG_VENDOR_BACHMANN is not set +# CONFIG_VENDOR_BAP is not set +# CONFIG_VENDOR_BCOM is not set +# CONFIG_VENDOR_BIFFEROS is not set +# CONFIG_VENDOR_BIOSTAR is not set +# CONFIG_VENDOR_BROADCOM is not set +# CONFIG_VENDOR_COMPAQ is not set +# CONFIG_VENDOR_CUBIETECH is not set +# CONFIG_VENDOR_DIGITALLOGIC is not set +# CONFIG_VENDOR_DMP is not set +# CONFIG_VENDOR_ECS is not set +# CONFIG_VENDOR_ELMEX is not set +# CONFIG_VENDOR_EMULATION is not set +# CONFIG_VENDOR_ESD is not set +# CONFIG_VENDOR_GETAC is not set +# CONFIG_VENDOR_GIGABYTE is not set +# CONFIG_VENDOR_GIZMOSPHERE is not set +# CONFIG_VENDOR_GOOGLE is not set +# CONFIG_VENDOR_HP is not set +# CONFIG_VENDOR_IBASE is not set +# CONFIG_VENDOR_IEI is not set +# CONFIG_VENDOR_INTEL is not set +# CONFIG_VENDOR_IWAVE is not set +# CONFIG_VENDOR_IWILL is not set +# CONFIG_VENDOR_JETWAY is not set +# CONFIG_VENDOR_KONTRON is not set +# CONFIG_VENDOR_LANNER is not set +CONFIG_VENDOR_LENOVO=y +# CONFIG_VENDOR_LINUTOP is not set +# CONFIG_VENDOR_LIPPERT is not set +# CONFIG_VENDOR_LOWRISC is not set +# CONFIG_VENDOR_MITAC is not set +# CONFIG_VENDOR_MSI is not set +# CONFIG_VENDOR_NEC is not set +# CONFIG_VENDOR_NOKIA is not set +# CONFIG_VENDOR_NVIDIA is not set +# CONFIG_VENDOR_PACKARDBELL is not set +# CONFIG_VENDOR_PCENGINES is not set +# CONFIG_VENDOR_PURISM is not set +# CONFIG_VENDOR_RCA is not set +# CONFIG_VENDOR_RODA is not set +# CONFIG_VENDOR_SAMSUNG is not set +# CONFIG_VENDOR_SIEMENS is not set +# CONFIG_VENDOR_SOYO is not set +# CONFIG_VENDOR_SUNW is not set +# CONFIG_VENDOR_SUPERMICRO is not set +# CONFIG_VENDOR_TECHNEXION is not set +# CONFIG_VENDOR_THOMSON is not set +# CONFIG_VENDOR_TI is not set +# CONFIG_VENDOR_TRAVERSE is not set +# CONFIG_VENDOR_TYAN is not set +# CONFIG_VENDOR_VIA is not set +# CONFIG_VENDOR_WINENT is not set +# CONFIG_VENDOR_WYSE is not set +CONFIG_BOARD_SPECIFIC_OPTIONS=y +CONFIG_MAINBOARD_DIR="lenovo/x220" +CONFIG_MAINBOARD_PART_NUMBER="ThinkPad X220" +CONFIG_MAINBOARD_VENDOR="LENOVO" +CONFIG_MAX_CPUS=8 +CONFIG_CACHE_ROM_SIZE_OVERRIDE=0x0 +CONFIG_CBFS_SIZE=0x200000 +CONFIG_VGA_BIOS_ID="8086,0126" +# CONFIG_ONBOARD_VGA_IS_PRIMARY is not set +# CONFIG_VGA_BIOS is not set +CONFIG_DCACHE_RAM_BASE=0xfefe0000 +CONFIG_DCACHE_RAM_SIZE=0x20000 +CONFIG_VGA_BIOS_FILE="pci8086,0126.rom" +CONFIG_MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID=0x17aa +CONFIG_MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID=0x21db +CONFIG_MMCONF_BASE_ADDRESS=0xf8000000 +# CONFIG_HAVE_IFD_BIN is not set +# CONFIG_HAVE_ME_BIN is not set +CONFIG_DRAM_RESET_GATE_GPIO=10 +CONFIG_POST_IO=y +CONFIG_MAX_REBOOT_CNT=3 +CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT=y +CONFIG_ID_SECTION_OFFSET=0x80 +CONFIG_POST_DEVICE=y +CONFIG_USBDEBUG_HCD_INDEX=2 +CONFIG_DEVICETREE="devicetree.cb" +CONFIG_BOOT_DEVICE_SPI_FLASH_BUS=0 +# CONFIG_DRIVERS_PS2_KEYBOARD is not set +# CONFIG_CONSOLE_POST is not set +# CONFIG_DRIVERS_UART_8250IO is not set +CONFIG_PRERAM_CBMEM_CONSOLE_SIZE=0xc00 +# CONFIG_BOARD_LENOVO_G505S is not set +# CONFIG_BOARD_LENOVO_L520 is not set +# CONFIG_BOARD_LENOVO_R400 is not set +# CONFIG_BOARD_LENOVO_T400 is not set +# CONFIG_BOARD_LENOVO_T420 is not set +# CONFIG_BOARD_LENOVO_T420S is not set +# CONFIG_BOARD_LENOVO_T430S is not set +# CONFIG_BOARD_LENOVO_T500 is not set +# CONFIG_BOARD_LENOVO_T520 is not set +# CONFIG_BOARD_LENOVO_T530 is not set +# CONFIG_BOARD_LENOVO_T60 is not set +# CONFIG_BOARD_LENOVO_X200 is not set +# CONFIG_BOARD_LENOVO_X201 is not set +CONFIG_BOARD_LENOVO_X220=y +# CONFIG_BOARD_LENOVO_X220I is not set +# CONFIG_BOARD_LENOVO_X230 is not set +# CONFIG_BOARD_LENOVO_X60 is not set +CONFIG_CPU_ADDR_BITS=36 +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=8 +# CONFIG_USBDEBUG is not set +# CONFIG_NO_POST is not set +CONFIG_BOARD_ROMSIZE_KB_8192=y +# CONFIG_COREBOOT_ROMSIZE_KB_64 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_128 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_256 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_512 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_1024 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_2048 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_4096 is not set +CONFIG_COREBOOT_ROMSIZE_KB_8192=y +# CONFIG_COREBOOT_ROMSIZE_KB_12288 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_16384 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_32768 is not set +# CONFIG_COREBOOT_ROMSIZE_KB_65536 is not set +CONFIG_COREBOOT_ROMSIZE_KB=8192 +CONFIG_ROM_SIZE=0x800000 +CONFIG_FMDFILE="" +# CONFIG_MAINBOARD_HAS_TPM2 is not set +CONFIG_SYSTEM_TYPE_LAPTOP=y +# CONFIG_CBFS_AUTOGEN_ATTRIBUTES is not set + +# +# Chipset +# + +# +# SoC +# +# CONFIG_SOC_BROADCOM_CYGNUS is not set +CONFIG_BOOTBLOCK_CPU_INIT="cpu/intel/model_206ax/bootblock.c" +CONFIG_CPU_SPECIFIC_OPTIONS=y +CONFIG_C_ENV_BOOTBLOCK_SIZE=0x10000 +CONFIG_X86_TOP4G_BOOTMEDIA_MAP=y +CONFIG_ROMSTAGE_ADDR=0x2000000 +CONFIG_VERSTAGE_ADDR=0x2000000 +CONFIG_HEAP_SIZE=0x4000 +CONFIG_SPI_FLASH_INCLUDE_ALL_DRIVERS=y +CONFIG_SMM_TSEG_SIZE=0x800000 +CONFIG_DCACHE_RAM_MRC_VAR_SIZE=0x0 +# CONFIG_BUILD_WITH_FAKE_IFD is not set +CONFIG_BOOTBLOCK_NORTHBRIDGE_INIT="northbridge/intel/sandybridge/bootblock.c" +CONFIG_BOOTBLOCK_SOUTHBRIDGE_INIT="southbridge/intel/bd82x6x/bootblock.c" +CONFIG_CACHE_MRC_SIZE_KB=512 +CONFIG_EHCI_BAR=0xfef00000 +CONFIG_SERIRQ_CONTINUOUS_MODE=y +CONFIG_RAMTOP=0x200000 +CONFIG_CONSOLE_CBMEM=y +CONFIG_UART_PCI_ADDR=0x0 +CONFIG_HPET_MIN_TICKS=0x80 +# CONFIG_SOC_LOWRISC_LOWRISC is not set +# CONFIG_SOC_MARVELL_ARMADA38X is not set +# CONFIG_SOC_MARVELL_BG4CD is not set +# CONFIG_SOC_MARVELL_MVMAP2315 is not set +# CONFIG_SOC_MEDIATEK_MT8173 is not set +# CONFIG_SOC_NVIDIA_TEGRA124 is not set +# CONFIG_SOC_NVIDIA_TEGRA210 is not set +# CONFIG_SOC_QC_IPQ40XX is not set +# CONFIG_SOC_QC_IPQ806X is not set +# CONFIG_SOC_ROCKCHIP_RK3288 is not set +# CONFIG_SOC_ROCKCHIP_RK3399 is not set +# CONFIG_CPU_SAMSUNG_EXYNOS5250 is not set +# CONFIG_CPU_SAMSUNG_EXYNOS5420 is not set +# CONFIG_SOC_UCB_RISCV is not set + +# +# CPU +# +# CONFIG_CPU_ALLWINNER_A10 is not set +CONFIG_SOCKET_SPECIFIC_OPTIONS=y +CONFIG_XIP_ROM_SIZE=0x20000 +CONFIG_NUM_IPI_STARTS=2 +# CONFIG_CPU_AMD_AGESA is not set +# CONFIG_CPU_AMD_PI is not set +# CONFIG_CPU_ARMLTD_CORTEX_A9 is not set +CONFIG_CPU_INTEL_MODEL_206AX=y +CONFIG_SSE2=y +CONFIG_CPU_INTEL_SOCKET_RPGA989=y +# CONFIG_CPU_INTEL_FIRMWARE_INTERFACE_TABLE is not set +# CONFIG_CPU_INTEL_TURBO_NOT_PACKAGE_SCOPED is not set +CONFIG_CPU_INTEL_COMMON=y +# CONFIG_ENABLE_VMX is not set +# CONFIG_CPU_TI_AM335X is not set +# CONFIG_PARALLEL_CPU_INIT is not set +# CONFIG_PARALLEL_MP is not set +# CONFIG_UDELAY_IO is not set +CONFIG_UDELAY_LAPIC=y +CONFIG_LAPIC_MONOTONIC_TIMER=y +# CONFIG_UDELAY_TSC is not set +# CONFIG_UDELAY_TIMER2 is not set +# CONFIG_TSC_SYNC_LFENCE is not set +CONFIG_TSC_SYNC_MFENCE=y +# CONFIG_NO_FIXED_XIP_ROM_SIZE is not set +CONFIG_LOGICAL_CPUS=y +CONFIG_SMM_TSEG=y +CONFIG_SMM_MODULE_HEAP_SIZE=0x4000 +# CONFIG_SMM_LAPIC_REMAP_MITIGATION is not set +# CONFIG_SERIALIZED_SMM_INITIALIZATION is not set +# CONFIG_X86_AMD_FIXED_MTRRS is not set +# CONFIG_PLATFORM_USES_FSP1_0 is not set +# CONFIG_MIRROR_PAYLOAD_TO_RAM_BEFORE_LOADING is not set +# CONFIG_SOC_SETS_MSRS is not set +CONFIG_CACHE_AS_RAM=y +CONFIG_SMP=y +CONFIG_AP_SIPI_VECTOR=0xfffff000 +CONFIG_MMX=y +CONFIG_SSE=y +CONFIG_SUPPORT_CPU_UCODE_IN_CBFS=y +# CONFIG_USES_MICROCODE_HEADER_FILES is not set +# CONFIG_CPU_MICROCODE_CBFS_GENERATE is not set +# CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_HEADER is not set +CONFIG_CPU_MICROCODE_CBFS_NONE=y + +# +# Northbridge +# +# CONFIG_NORTHBRIDGE_AMD_AGESA is not set +# CONFIG_NO_MMCONF_SUPPORT is not set +# CONFIG_AMD_NB_CIMX is not set +# CONFIG_NORTHBRIDGE_AMD_CIMX_RD890 is not set +CONFIG_VIDEO_MB=0 +# CONFIG_NORTHBRIDGE_AMD_PI is not set +CONFIG_RAMBASE=0x100000 +CONFIG_NORTHBRIDGE_INTEL_COMMON_MRC_CACHE=y +CONFIG_MRC_CACHE_SIZE=0x10000 +CONFIG_NORTHBRIDGE_INTEL_SANDYBRIDGE=y +CONFIG_USE_NATIVE_RAMINIT=y +CONFIG_SANDYBRIDGE_IVYBRIDGE_LVDS=y +CONFIG_HPET_ADDRESS=0xfed00000 +CONFIG_MAX_PIRQ_LINKS=4 + +# +# Southbridge +# +# CONFIG_AMD_SB_CIMX is not set +# CONFIG_SOUTHBRIDGE_AMD_CIMX_SB800 is not set +# CONFIG_SOUTHBRIDGE_AMD_CIMX_SB900 is not set +CONFIG_SOUTHBRIDGE_INTEL_C216=y +CONFIG_SOUTH_BRIDGE_OPTIONS=y +CONFIG_LOCK_SPI_ON_RESUME_NONE=y +# CONFIG_LOCK_SPI_ON_RESUME_RO is not set +# CONFIG_LOCK_SPI_ON_RESUME_NO_ACCESS is not set +CONFIG_SOUTHBRIDGE_INTEL_COMMON=y +CONFIG_SOUTHBRIDGE_INTEL_COMMON_GPIO=y +# CONFIG_LOCK_MANAGEMENT_ENGINE is not set + +# +# Super I/O +# +# CONFIG_SUPERIO_NUVOTON_NCT6776_COM_A is not set + +# +# Embedded Controllers +# +CONFIG_EC_ACPI=y +CONFIG_EC_LENOVO_H8=y +CONFIG_EC_LENOVO_PMH7=y +CONFIG_HAVE_INTEL_FIRMWARE=y + +# +# Intel Firmware +# +CONFIG_VBOOT_VBNV_OFFSET=0x26 +# CONFIG_VBOOT_VBNV_CMOS is not set +# CONFIG_VBOOT_VBNV_EC is not set +# CONFIG_VBOOT is not set +# CONFIG_MAINBOARD_HAS_CHROMEOS is not set +# CONFIG_GOOGLE_SMBIOS_MAINBOARD_VERSION is not set +# CONFIG_UEFI_2_4_BINDING is not set +# CONFIG_UDK_2015_BINDING is not set +# CONFIG_USE_SIEMENS_HWILIB is not set +# CONFIG_ARCH_ARM is not set +# CONFIG_ARCH_BOOTBLOCK_ARM is not set +# CONFIG_ARCH_VERSTAGE_ARM is not set +# CONFIG_ARCH_ROMSTAGE_ARM is not set +# CONFIG_ARCH_RAMSTAGE_ARM is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV4 is not set +# CONFIG_ARCH_VERSTAGE_ARMV4 is not set +# CONFIG_ARCH_ROMSTAGE_ARMV4 is not set +# CONFIG_ARCH_RAMSTAGE_ARMV4 is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV7 is not set +# CONFIG_ARCH_VERSTAGE_ARMV7 is not set +# CONFIG_ARCH_ROMSTAGE_ARMV7 is not set +# CONFIG_ARCH_RAMSTAGE_ARMV7 is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV7_M is not set +# CONFIG_ARCH_VERSTAGE_ARMV7_M is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV7_R is not set +# CONFIG_ARCH_VERSTAGE_ARMV7_R is not set +# CONFIG_ARCH_ROMSTAGE_ARMV7_R is not set +# CONFIG_ARCH_RAMSTAGE_ARMV7_R is not set +# CONFIG_ARM_LPAE is not set +# CONFIG_ARCH_ARM64 is not set +# CONFIG_ARCH_BOOTBLOCK_ARM64 is not set +# CONFIG_ARCH_VERSTAGE_ARM64 is not set +# CONFIG_ARCH_ROMSTAGE_ARM64 is not set +# CONFIG_ARCH_RAMSTAGE_ARM64 is not set +# CONFIG_ARCH_BOOTBLOCK_ARMV8_64 is not set +# CONFIG_ARCH_VERSTAGE_ARMV8_64 is not set +# CONFIG_ARCH_ROMSTAGE_ARMV8_64 is not set +# CONFIG_ARCH_RAMSTAGE_ARMV8_64 is not set +# CONFIG_ARM64_A53_ERRATUM_843419 is not set +# CONFIG_ARCH_MIPS is not set +# CONFIG_ARCH_BOOTBLOCK_MIPS is not set +# CONFIG_ARCH_VERSTAGE_MIPS is not set +# CONFIG_ARCH_ROMSTAGE_MIPS is not set +# CONFIG_ARCH_RAMSTAGE_MIPS is not set +# CONFIG_ARCH_POWER8 is not set +# CONFIG_ARCH_BOOTBLOCK_POWER8 is not set +# CONFIG_ARCH_VERSTAGE_POWER8 is not set +# CONFIG_ARCH_ROMSTAGE_POWER8 is not set +# CONFIG_ARCH_RAMSTAGE_POWER8 is not set +# CONFIG_ARCH_RISCV is not set +# CONFIG_ARCH_BOOTBLOCK_RISCV is not set +# CONFIG_ARCH_VERSTAGE_RISCV is not set +# CONFIG_ARCH_ROMSTAGE_RISCV is not set +# CONFIG_ARCH_RAMSTAGE_RISCV is not set +CONFIG_ARCH_X86=y +CONFIG_ARCH_BOOTBLOCK_X86_32=y +CONFIG_ARCH_VERSTAGE_X86_32=y +CONFIG_ARCH_ROMSTAGE_X86_32=y +CONFIG_ARCH_RAMSTAGE_X86_32=y +# CONFIG_ARCH_BOOTBLOCK_X86_64 is not set +# CONFIG_ARCH_VERSTAGE_X86_64 is not set +# CONFIG_ARCH_ROMSTAGE_X86_64 is not set +# CONFIG_ARCH_RAMSTAGE_X86_64 is not set +# CONFIG_USE_MARCH_586 is not set +# CONFIG_AP_IN_SIPI_WAIT is not set +# CONFIG_SIPI_VECTOR_IN_ROM is not set +# CONFIG_ROMCC is not set +# CONFIG_LATE_CBMEM_INIT is not set +CONFIG_PC80_SYSTEM=y +# CONFIG_BOOTBLOCK_DEBUG_SPINLOOP is not set +# CONFIG_BOOTBLOCK_SAVE_BIST_AND_TIMESTAMP is not set +CONFIG_HAVE_CMOS_DEFAULT=y +CONFIG_CMOS_DEFAULT_FILE="src/mainboard/$(MAINBOARDDIR)/cmos.default" +CONFIG_IOAPIC_INTERRUPTS_ON_FSB=y +# CONFIG_IOAPIC_INTERRUPTS_ON_APIC_SERIAL_BUS is not set +# CONFIG_POSTCAR_STAGE is not set +# CONFIG_VERSTAGE_DEBUG_SPINLOOP is not set +# CONFIG_ROMSTAGE_DEBUG_SPINLOOP is not set + +# +# Devices +# +CONFIG_MAINBOARD_HAS_NATIVE_VGA_INIT=y +CONFIG_NATIVE_VGA_INIT_USE_EDID=y +CONFIG_MAINBOARD_HAS_NATIVE_VGA_INIT_TEXTMODECFG=y +# CONFIG_MAINBOARD_HAS_LIBGFXINIT is not set +# CONFIG_ON_DEVICE_ROM_LOAD is not set +# CONFIG_MULTIPLE_VGA_ADAPTERS is not set +# CONFIG_SMBUS_HAS_AUX_CHANNELS is not set +# CONFIG_SPD_CACHE is not set +CONFIG_PCI=y +CONFIG_MMCONF_SUPPORT=y +# CONFIG_HYPERTRANSPORT_PLUGIN_SUPPORT is not set +CONFIG_PCIX_PLUGIN_SUPPORT=y +CONFIG_CARDBUS_PLUGIN_SUPPORT=y +# CONFIG_AZALIA_PLUGIN_SUPPORT is not set +CONFIG_PCIEXP_PLUGIN_SUPPORT=y +CONFIG_PCIEXP_COMMON_CLOCK=y +CONFIG_PCIEXP_ASPM=y +# CONFIG_PCIEXP_CLK_PM is not set +# CONFIG_PCIEXP_L1_SUB_STATE is not set +# CONFIG_EARLY_PCI_BRIDGE is not set +CONFIG_SUBSYSTEM_VENDOR_ID=0x0000 +CONFIG_SUBSYSTEM_DEVICE_ID=0x0000 +# CONFIG_SOFTWARE_I2C is not set + +# +# Display +# +CONFIG_FRAMEBUFFER_KEEP_VESA_MODE=y + +# +# Generic Drivers +# +# CONFIG_DRIVERS_AS3722_RTC is not set +# CONFIG_GIC is not set +# CONFIG_IPMI_KCS is not set +# CONFIG_DRIVERS_LENOVO_WACOM is not set +# CONFIG_DRIVERS_LENOVO_HYBRID_GRAPHICS is not set +CONFIG_SPI_FLASH=y +CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP=y +# CONFIG_BOOT_DEVICE_SPI_FLASH_RW_NOMMAP_EARLY is not set +# CONFIG_SPI_FLASH_SMM is not set +# CONFIG_SPI_FLASH_NO_FAST_READ is not set +CONFIG_SPI_FLASH_ADESTO=y +CONFIG_SPI_FLASH_AMIC=y +CONFIG_SPI_FLASH_ATMEL=y +CONFIG_SPI_FLASH_EON=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_SST=y +CONFIG_SPI_FLASH_STMICRO=y +CONFIG_SPI_FLASH_WINBOND=y +# CONFIG_SPI_FLASH_FAST_READ_DUAL_OUTPUT_3B is not set +# CONFIG_SPI_FLASH_HAS_VOLATILE_GROUP is not set +# CONFIG_HAVE_SPI_CONSOLE_SUPPORT is not set +# CONFIG_DRIVERS_UART is not set +CONFIG_NO_UART_ON_SUPERIO=y +# CONFIG_UART_OVERRIDE_INPUT_CLOCK_DIVIDER is not set +# CONFIG_UART_OVERRIDE_REFCLK is not set +# CONFIG_DRIVERS_UART_8250MEM is not set +# CONFIG_DRIVERS_UART_8250MEM_32 is not set +# CONFIG_HAVE_UART_SPECIAL is not set +# CONFIG_DRIVERS_UART_OXPCIE is not set +# CONFIG_DRIVERS_UART_PL011 is not set +# CONFIG_UART_USE_REFCLK_AS_INPUT_CLOCK is not set +CONFIG_HAVE_USBDEBUG=y +CONFIG_HAVE_USBDEBUG_OPTIONS=y +CONFIG_SMBIOS_PROVIDED_BY_MOBO=y +# CONFIG_DRIVERS_I2C_PCF8523 is not set +# CONFIG_DRIVERS_I2C_RTD2132 is not set +# CONFIG_MAINBOARD_HAS_I2C_TPM_CR50 is not set +# CONFIG_DRIVER_I2C_TPM_ACPI is not set +# CONFIG_INTEL_DP is not set +# CONFIG_INTEL_DDI is not set +CONFIG_INTEL_EDID=y +CONFIG_INTEL_INT15=y +CONFIG_INTEL_GMA_ACPI=y +# CONFIG_INTEL_GMA_SSC_ALTERNATE_REF is not set +CONFIG_GFX_GMA_CPU="Sandybridge" +CONFIG_GFX_GMA_CPU_VARIANT="Normal" +CONFIG_GFX_GMA_INTERNAL_IS_EDP=y +# CONFIG_GFX_GMA_INTERNAL_IS_LVDS is not set +CONFIG_GFX_GMA_INTERNAL_PORT="DP" +# CONFIG_GFX_GMA_ANALOG_I2C_HDMI_B is not set +# CONFIG_GFX_GMA_ANALOG_I2C_HDMI_C is not set +# CONFIG_GFX_GMA_ANALOG_I2C_HDMI_D is not set +CONFIG_GFX_GMA_ANALOG_I2C_PORT="PCH_DAC" +# CONFIG_DRIVER_INTEL_I210 is not set +CONFIG_DRIVERS_INTEL_WIFI=y +# CONFIG_USE_SAR is not set +# CONFIG_DRIVER_MAXIM_MAX77686 is not set +# CONFIG_DRIVER_PARADE_PS8625 is not set +# CONFIG_DRIVER_PARADE_PS8640 is not set +CONFIG_DRIVERS_MC146818=y +CONFIG_MAINBOARD_HAS_LPC_TPM=y +# CONFIG_LPC_TPM is not set +CONFIG_DRIVERS_RICOH_RCE822=y +# CONFIG_DRIVER_SIEMENS_NC_FPGA is not set +# CONFIG_DRIVERS_SIL_3114 is not set +# CONFIG_DRIVER_TI_TPS65090 is not set +# CONFIG_DRIVERS_TI_TPS65913 is not set +# CONFIG_DRIVERS_TI_TPS65913_RTC is not set +# CONFIG_DRIVER_XPOWERS_AXP209 is not set +CONFIG_ACPI_SATA_GENERATOR=y +CONFIG_ACPI_INTEL_HARDWARE_SLEEP_VALUES=y +# CONFIG_BOOT_DEVICE_NOT_SPI_FLASH is not set +CONFIG_BOOT_DEVICE_SPI_FLASH=y +CONFIG_BOOT_DEVICE_MEMORY_MAPPED=y +# CONFIG_BOOT_DEVICE_SUPPORTS_WRITES is not set +CONFIG_RTC=y +# CONFIG_TPM is not set +CONFIG_STACK_SIZE=0x1000 + +# +# Console +# +CONFIG_SQUELCH_EARLY_SMP=y +# CONFIG_SPKMODEM is not set +# CONFIG_CONSOLE_NE2K is not set +CONFIG_CONSOLE_CBMEM_BUFFER_SIZE=0x20000 +# CONFIG_CONSOLE_CBMEM_DUMP_TO_UART is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8=y +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_1 is not set +# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_0 is not set +# CONFIG_CMOS_POST is not set +CONFIG_POST_DEVICE_NONE=y +# CONFIG_POST_DEVICE_LPC is not set +# CONFIG_POST_DEVICE_PCI_PCIE is not set +CONFIG_POST_IO_PORT=0x80 +# CONFIG_NO_EARLY_BOOTBLOCK_POSTCODES is not set +CONFIG_HWBASE_DEBUG_CB=y +CONFIG_HAVE_ACPI_RESUME=y +# CONFIG_ACPI_HUGE_LOWMEM_BACKUP is not set +CONFIG_RESUME_PATH_SAME_AS_BOOT=y +CONFIG_HAVE_HARD_RESET=y +# CONFIG_HAVE_ROMSTAGE_CONSOLE_SPINLOCK is not set +# CONFIG_HAVE_ROMSTAGE_NVRAM_CBFS_SPINLOCK is not set +# CONFIG_HAVE_ROMSTAGE_MICROCODE_CBFS_SPINLOCK is not set +CONFIG_HAVE_MONOTONIC_TIMER=y +# CONFIG_GENERIC_UDELAY is not set +# CONFIG_TIMER_QUEUE is not set +CONFIG_HAVE_OPTION_TABLE=y +# CONFIG_PIRQ_ROUTE is not set +CONFIG_HAVE_SMI_HANDLER=y +# CONFIG_PCI_IO_CFG_EXT is not set +CONFIG_IOAPIC=y +CONFIG_USE_WATCHDOG_ON_BOOT=y +CONFIG_VGA=y +# CONFIG_GFXUMA is not set +CONFIG_HAVE_ACPI_TABLES=y +CONFIG_COMMON_FADT=y +# CONFIG_ACPI_NHLT is not set + +# +# System tables +# +# CONFIG_GENERATE_MP_TABLE is not set +# CONFIG_GENERATE_PIRQ_TABLE is not set +CONFIG_GENERATE_SMBIOS_TABLES=y + +# +# Payload +# +# CONFIG_PAYLOAD_NONE is not set +CONFIG_PAYLOAD_ELF=y +# CONFIG_PAYLOAD_BAYOU is not set +# CONFIG_PAYLOAD_FILO is not set +# CONFIG_PAYLOAD_GRUB2 is not set +# CONFIG_PAYLOAD_SEABIOS is not set +# CONFIG_PAYLOAD_UBOOT is not set +# CONFIG_PAYLOAD_LINUX is not set +# CONFIG_PAYLOAD_TIANOCORE is not set +CONFIG_PAYLOAD_FILE="grub.elf" +CONFIG_PAYLOAD_OPTIONS="" +# CONFIG_PXE is not set +CONFIG_COMPRESSED_PAYLOAD_LZMA=y +# CONFIG_PAYLOAD_IS_FLAT_BINARY is not set + +# +# Secondary Payloads +# +# CONFIG_COREINFO_SECONDARY_PAYLOAD is not set +# CONFIG_MEMTEST_SECONDARY_PAYLOAD is not set +# CONFIG_NVRAMCUI_SECONDARY_PAYLOAD is not set +# CONFIG_TINT_SECONDARY_PAYLOAD is not set + +# +# Debugging +# +# CONFIG_FATAL_ASSERTS is not set +# CONFIG_DEBUG_CBFS is not set +CONFIG_HAVE_DEBUG_RAM_SETUP=y +# CONFIG_DEBUG_RAM_SETUP is not set +# CONFIG_HAVE_DEBUG_CAR is not set +# CONFIG_HAVE_DEBUG_SMBUS is not set +# CONFIG_DEBUG_SMI is not set +# CONFIG_DEBUG_SMM_RELOCATION is not set +# CONFIG_DEBUG_MALLOC is not set +# CONFIG_DEBUG_ACPI is not set +# CONFIG_DEBUG_SPI_FLASH is not set +# CONFIG_TRACE is not set +# CONFIG_DEBUG_BOOT_STATE is not set +# CONFIG_DEBUG_ADA_CODE is not set +# CONFIG_ENABLE_APIC_EXT_ID is not set +CONFIG_WARNINGS_ARE_ERRORS=y +# CONFIG_POWER_BUTTON_DEFAULT_ENABLE is not set +# CONFIG_POWER_BUTTON_DEFAULT_DISABLE is not set +# CONFIG_POWER_BUTTON_FORCE_ENABLE is not set +# CONFIG_POWER_BUTTON_FORCE_DISABLE is not set +# CONFIG_POWER_BUTTON_IS_OPTIONAL is not set +# CONFIG_REG_SCRIPT is not set +# CONFIG_CREATE_BOARD_CHECKLIST is not set +# CONFIG_MAKE_CHECKLIST_PUBLIC is not set +# CONFIG_RAMSTAGE_ADA is not set +# CONFIG_RAMSTAGE_LIBHWBASE is not set +CONFIG_HWBASE_DYNAMIC_MMIO=y +# CONFIG_NO_XIP_EARLY_STAGES is not set +CONFIG_EARLY_CBMEM_INIT=y +# CONFIG_EARLY_CBMEM_LIST is not set +CONFIG_RELOCATABLE_MODULES=y +# CONFIG_BOARD_ID_AUTO is not set +# CONFIG_BOARD_ID_MANUAL is not set +CONFIG_BOOTBLOCK_CUSTOM=y diff --git a/config/grub_memdisk.cfg b/config/grub_memdisk.cfg new file mode 100644 index 0000000..c9f22ff --- /dev/null +++ b/config/grub_memdisk.cfg @@ -0,0 +1,4 @@ +set prefix=(memdisk)/boot/grub + +set root='cbfsdisk' +source (cbfsdisk)/grub.cfg diff --git a/config/grub_modules.conf b/config/grub_modules.conf new file mode 100644 index 0000000..775ae22 --- /dev/null +++ b/config/grub_modules.conf @@ -0,0 +1,209 @@ +# Install modules (installed, but not automatically loaded) +grub_install_modules=" \ +adler32 \ +all_video \ +archelp \ +ata \ +backtrace \ +bitmap \ +bitmap_scale \ +cmp \ +cpio_be \ +cpio \ +cpuid \ +crc64 \ +cs5536 \ +div_test \ +efiemu \ +elf \ +eval \ +exfat \ +extcmd \ +file \ +fshelp \ +gettext \ +gfxmenu \ +gptsync \ +gzio \ +hashsum \ +hexdump \ +http \ +linux16 \ +loadenv \ +lzopio \ +mda_text \ +mmap \ +mpi \ +msdospart \ +multiboot2 \ +multiboot \ +nativedisk \ +net \ +newc \ +ntfscomp \ +ntfs \ +odc \ +offsetio \ +parttool \ +priority_queue \ +procfs \ +progress \ +read \ +relocator \ +scsi \ +search_fs_file \ +search_fs_uuid \ +search_label \ +search \ +setjmp \ +setpci \ +sleep \ +squash4 \ +tar \ +terminfo \ +testload \ +testspeed \ +tftp \ +time \ +trig \ +tr \ +true \ +udf \ +ufs1_be \ +ufs1 \ +ufs2 \ +usbserial_common \ +usbserial_ftdi \ +usbserial_pl2303 \ +usbserial_usbdebug \ +usbtest \ +video_colors \ +videotest_checksum \ +xzio \ +" + +# Modules (and always loaded) +grub_modules=" \ +acpi \ +ahci \ +at_keyboard \ +boot \ +cat \ +cbfs \ +cbls \ +cbtime \ +chain \ +cmosdump \ +cmostest \ +cbmemc \ +crypto \ +cryptodisk \ +configfile \ +datehook \ +date \ +datetime \ +diskfilter \ +disk \ +echo \ +ext2 \ +ehci \ +fat \ +halt \ +help \ +iorw \ +iso9660 \ +keystatus \ +linux \ +loopback \ +ls \ +lsacpi \ +lsmmap \ +lspci \ +luks \ +lvm \ +mdraid09_be \ +mdraid09 \ +mdraid1x \ +raid5rec \ +raid6rec \ +memdisk \ +minicmd \ +memrw \ +morse \ +normal \ +ohci \ +part_gpt \ +part_msdos \ +password \ +password_pbkdf2 \ +pbkdf2 \ +pcidump \ +pci \ +play \ +probe \ +reboot \ +serial \ +terminal \ +test \ +usb_keyboard \ +usbms \ +uhci \ +gcry_arcfour \ +gcry_blowfish \ +gcry_camellia \ +gcry_cast5 \ +gcry_crc \ +gcry_des \ +gcry_dsa \ +gcry_idea \ +gcry_md4 \ +gcry_md5 \ +gcry_rfc2268 \ +gcry_rijndael \ +gcry_rmd160 \ +gcry_rsa \ +gcry_seed \ +gcry_serpent \ +gcry_sha1 \ +gcry_sha256 \ +gcry_sha512 \ +gcry_tiger \ +gcry_twofish \ +gcry_whirlpool \ +hdparm \ +regexp \ +spkmodem \ +syslinuxcfg \ +usb \ +verify \ +videoinfo \ +videotest \ +xfs \ +btrfs \ +zfs \ +sfs \ +romfs \ +reiserfs \ +nilfs2 \ +minix_be \ +minix3_be \ +minix3 \ +minix2_be \ +minix2 \ +minix \ +jfs \ +hfsplus \ +hfs \ +bfs \ +afs \ +affs \ +gfxmenu \ +gfxterm_background \ +gfxterm_menu \ +jpeg \ +png \ +tga \ +pata \ +bsd \ +part_bsd \ +" diff --git a/misc/dejavusansmono.pf2 b/misc/dejavusansmono.pf2 new file mode 100644 index 0000000000000000000000000000000000000000..9ba557e9d653eae37074e1cd8db95111c130f81a GIT binary patch literal 100513 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 aGt`>dwXNU}=C!kin(v`Wy=bp63;zYuiwLIx literal 0 HcmV?d00001 diff --git a/misc/dejavusansmono_24bold.pf2 b/misc/dejavusansmono_24bold.pf2 new file mode 100644 index 0000000000000000000000000000000000000000..7d8bc84226dc858ed9d4e10d8da5fc7250ef21d1 GIT binary patch literal 158307 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 literal 0 HcmV?d00001