From ed7eb9215fec97871b0257cb54b8f7bb261877b0 Mon Sep 17 00:00:00 2001 From: Igor Date: Mon, 30 Dec 2024 11:39:33 +0100 Subject: [PATCH] Improve welcome page, adjust contribution.md, add licence (#331) * Improve welcome page, add new image, adjust contribution.md, add licence --- .github/images/common.png | Bin 0 -> 41166 bytes CONTRIBUTING.md | 15 +- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++ README.md | 77 +++-- 4 files changed, 732 insertions(+), 34 deletions(-) create mode 100644 .github/images/common.png create mode 100644 LICENSE diff --git a/.github/images/common.png b/.github/images/common.png new file mode 100644 index 0000000000000000000000000000000000000000..5491d3e3c8f06824c678b9e77f9d150410a876e4 GIT binary patch literal 41166 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 Y=%*atx_nne+6#~xPgg&ebxsLQ0JhWdIsgCw literal 0 HcmV?d00001 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 93b01522..6408da31 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ -# Contributing to Armbian Linux build framework +# Contributing to Armbian Config -We would love to have you join the Armbian community! Below summarizes the processes that we follow. +We would love to have you join the Armbian developers community! Below summarizes the processes that we follow. ## Reporting issues @@ -66,7 +66,7 @@ This section describes how to start contributing to Armbian. gh auth login --with-token <<< 'your_token' ``` -### Fork and clone Armbian +### Fork and clone Armbian Config * Fork armbian/configng, clone and add remote @@ -77,10 +77,17 @@ This section describes how to start contributing to Armbian. * Create branch ```bash - cd build + cd configng git checkout -b your_branch_name # change branch name for your patch ``` +### Testing features + +```bash +tools/config-assemble.sh -p # Use -t for testing +bin/armbian-config +``` + ## Submitting pull requests No Pull Request (PR) is too small! Typos, additional comments in the code, new test cases, bug fixes, new features, more documentation, ... everything is welcome! diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..9cecc1d4 --- /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 index 57dd64af..23c14ddc 100644 --- a/README.md +++ b/README.md @@ -7,62 +7,79 @@ GitHub Workflow Status GitHub Workflow Status GitHub Workflow Status

+**armbian-config** provides configuration and installation routines for customizing and automating tasks within Armbian Linux environment. These utilties help streamline setup processes for various use cases. -> Note: Some references may still use the old name during the transition period. + -armbian-config provides configuration scripts for customizing and automating tasks within Armbian environments. These scripts help streamline setup processes for various configurations and use cases. +## Key Advantages +- **Lightweight**: Minimal dependencies for optimal performance. +- **Flexible**: Supports JSON, TUI, CLI, and API interfaces. +- **Modern**: A fresh approach to configuration. +- **Low entropy**: Byte clean uninstall for most targets ## Features -- **System Configuration**: Automate system-level settings, including hardware configuration and performance tuning. -- **Network Management**: Manage network settings such as IP configuration, Wi-Fi, and other connectivity options. -- **Localization Settings**: Configure time zone, language, and other localization preferences. -- **Software Installation/Uninstallation**: Simplify software management, including installing or removing packages as needed. +- **System Configuration**: + - kernel manamenent, headers, hardware tweaks. + - NFS and ZFS storage management. + - SSH user access tweaks. + - system updates, rolling / stable, containers update. +- **Network Management**: + - fixed / dynamic IP configuration. + - connecting to wireless network. + - access point management. +- **Localization Settings**: + - Configure time zone. + - Set language and locales. + - Change hostname. +- **Software Management**: + - Software installation and removal. + - Native and containerized environment. + - Standardised, updatable, maintained. ## Compatibility -This tool is tailored to works best with [**Armbian Linux**](https://www.armbian.com) but it has also been automatically tested on **Debian Bookworm**, **Ubuntu Jammy** and **Ubuntu Noble**. In theory it should work on all apt based Linux distributions. +This tool is tailored to works best with [**Armbian Linux**](https://www.armbian.com) but it has also been automatically tested on: +- Debian Bookworm +- Ubuntu Jammy +- Ubuntu Noble -## Key Advantages -- **Extremely Lightweight**: Minimal dependencies for optimal performance. -- **Redesigned from Scratch**: A fresh approach to configuration. -- **Flexible Menu Structure**: Supports JSON, TUI, CLI, and API interfaces. +In theory it should work on all systemd APT based Linux distributions: Linux Mint, Elementary OS, Kali Linux, MX Linux, Parrot OS, Proxmox, Raspberry Pi OS, ... ## Getting Started -We expect to deploy this tool in production with the upcoming release. Your help with testing and completion is invaluable! -### Clone and run -Run the following commands in your terminal: +Armbian config is preinstalled on Armbian. Open or login into your terminal and run: ```bash -git clone https://github.com/armbian/configng -cd configng -tools/config-assemble.sh -p # Use -t for testing -sudo bin/armbian-config +armbian-config ``` -### Install from Development Repository -Run the following commands in your terminal: +#### Compatible distributions + +Add Armbian repository and install the tool: ```bash -echo "deb [signed-by=/usr/share/keyrings/armbian.gpg] https://github.armbian.com/configng stable main" | sudo tee /etc/apt/sources.list.d/armbian-development.list > /dev/null +echo "deb [signed-by=/usr/share/keyrings/armbian.gpg] \ +https://github.armbian.com/configng stable main" | \ +sudo tee /etc/apt/sources.list.d/armbian-development.list > /dev/null sudo apt update sudo apt -y install armbian-config ``` +```bash +armbian-config +``` + ## Contributing -Contributions are welcome! Please refer to general [CONTRIBUTING.md](CONTRIBUTING.md) and guidelines for [adding a new feature](https://docs.armbian.com/User-Guide_Armbian-Software/#adding-example). +Please refer to general [CONTRIBUTING.md](CONTRIBUTING.md) and specific guidelines for [adding a new feature](https://docs.armbian.com/Contribute/Armbian-config/). -## Support Us +## Donations -Join the community and be a part of Armbian userspace testing and development. +Sustainability of Armbian development relies on [donations](https://www.armbian.com/donate/) and [sponsorships](https://github.com/sponsors/armbian). -- **Discord**: [invite](https://discord.com/invite/armbian) -- **Forums**: [Join us](https://forum.armbian.com/) -- **IRC**: [how to](https://docs.armbian.com/Community_IRC/) +## License -- **Donate**: [Armbian](https://www.armbian.com/donate/) -- **Sponsor**: [Sponsor Armbian](https://github.com/sponsors/armbian) -- **Subscribe**: [Armbian Forum Subscriptions](https://forum.armbian.com/subscriptions/) +(c) [Contributors](https://github.com/armbian/configng/graphs/contributors) +All code is licensed under the GPL, v3 or later. See [LICENSE](LICENSE) file for details.