Dante Brooklyn 3 Open Source Licenses

busybox

Version: 1.32.0

https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt

GNU GENERAL PUBLIC LICENSE

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.,

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Everyone is permitted to copy and distribute verbatim copies

of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your

freedom to share and change it. By contrast, the GNU General Public

License is intended to guarantee your freedom to share and change free

software–to make sure the software is free for all its users. This

General Public License applies to most of the Free Software

Foundation’s software and to any other program whose authors commit to

using it. (Some other Free Software Foundation software is covered by

the GNU Lesser General Public License instead.) You can apply it to

your programs, too.

When we speak of free software, we are referring to freedom, not

price. Our General Public Licenses are designed to make sure that you

have the freedom to distribute copies of free software (and charge for

this service if you wish), that you receive source code or can get it

if you want it, that you can change the software or use pieces of it

in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid

anyone to deny you these rights or to ask you to surrender the rights.

These restrictions translate to certain responsibilities for you if you

distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether

gratis or for a fee, you must give the recipients all the rights that

you have. You must make sure that they, too, receive or can get the

source code. And you must show them these terms so they know their

rights.

We protect your rights with two steps: (1) copyright the software, and

(2) offer you this license which gives you legal permission to copy,

distribute and/or modify the software.

Also, for each author’s protection and ours, we want to make certain

that everyone understands that there is no warranty for this free

software. If the software is modified by someone else and passed on, we

want its recipients to know that what they have is not the original, so

that any problems introduced by others will not reflect on the original

authors’ reputations.

Finally, any free program is threatened constantly by software

patents. We wish to avoid the danger that redistributors of a free

program will individually obtain patent licenses, in effect making the

program proprietary. To prevent this, we have made it clear that any

patent must be licensed for everyone’s free use or not licensed at all.

The precise terms and conditions for copying, distribution and

modification follow.

GNU GENERAL PUBLIC LICENSE

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains

a notice placed by the copyright holder saying it may be distributed

under the terms of this General Public License. The “Program”, below,

refers to any such program or work, and a “work based on the Program”

means either the Program or any derivative work under copyright law:

that is to say, a work containing the Program or a portion of it,

either verbatim or with modifications and/or translated into another

language. (Hereinafter, translation is included without limitation in

the term “modification”.) Each licensee is addressed as “you”.

Activities other than copying, distribution and modification are not

covered by this License; they are outside its scope. The act of

running the Program is not restricted, and the output from the Program

is covered only if its contents constitute a work based on the

Program (independent of having been made by running the Program).

Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program’s

source code as you receive it, in any medium, provided that you

conspicuously and appropriately publish on each copy an appropriate

copyright notice and disclaimer of warranty; keep intact all the

notices that refer to this License and to the absence of any warranty;

and give any other recipients of the Program a copy of this License

along with the Program.

You may charge a fee for the physical act of transferring a copy, and

you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion

of it, thus forming a work based on the Program, and copy and

distribute such modifications or work under the terms of Section 1

above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices

stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in

whole or in part contains or is derived from the Program or any

part thereof, to be licensed as a whole at no charge to all third

parties under the terms of this License.

c) If the modified program normally reads commands interactively

when run, you must cause it, when started running for such

interactive use in the most ordinary way, to print or display an

announcement including an appropriate copyright notice and a

notice that there is no warranty (or else, saying that you provide

a warranty) and that users may redistribute the program under

these conditions, and telling the user how to view a copy of this

License. (Exception: if the Program itself is interactive but

does not normally print such an announcement, your work based on

the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If

identifiable sections of that work are not derived from the Program,

and can be reasonably considered independent and separate works in

themselves, then this License, and its terms, do not apply to those

sections when you distribute them as separate works. But when you

distribute the same sections as part of a whole which is a work based

on the Program, the distribution of the whole must be on the terms of

this License, whose permissions for other licensees extend to the

entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest

your rights to work written entirely by you; rather, the intent is to

exercise the right to control the distribution of derivative or

collective works based on the Program.

In addition, mere aggregation of another work not based on the Program

with the Program (or with a work based on the Program) on a volume of

a storage or distribution medium does not bring the other work under

the scope of this License.

3. You may copy and distribute the Program (or a work based on it,

under Section 2) in object code or executable form under the terms of

Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable

source code, which must be distributed under the terms of Sections

1 and 2 above on a medium customarily used for software interchange; or,

b) Accompany it with a written offer, valid for at least three

years, to give any third party, for a charge no more than your

cost of physically performing source distribution, a complete

machine-readable copy of the corresponding source code, to be

distributed under the terms of Sections 1 and 2 above on a medium

customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer

to distribute corresponding source code. (This alternative is

allowed only for noncommercial distribution and only if you

received the program in object code or executable form with such

an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for

making modifications to it. For an executable work, complete source

code means all the source code for all modules it contains, plus any

associated interface definition files, plus the scripts used to

control compilation and installation of the executable. However, as a

special exception, the source code distributed need not include

anything that is normally distributed (in either source or binary

form) with the major components (compiler, kernel, and so on) of the

operating system on which the executable runs, unless that component

itself accompanies the executable.

If distribution of executable or object code is made by offering

access to copy from a designated place, then offering equivalent

access to copy the source code from the same place counts as

distribution of the source code, even though third parties are not

compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program

except as expressly provided under this License. Any attempt

otherwise to copy, modify, sublicense or distribute the Program is

void, and will automatically terminate your rights under this License.

However, parties who have received copies, or rights, from you under

this License will not have their licenses terminated so long as such

parties remain in full compliance.

5. You are not required to accept this License, since you have not

signed it. However, nothing else grants you permission to modify or

distribute the Program or its derivative works. These actions are

prohibited by law if you do not accept this License. Therefore, by

modifying or distributing the Program (or any work based on the

Program), you indicate your acceptance of this License to do so, and

all its terms and conditions for copying, distributing or modifying

the Program or works based on it.

6. Each time you redistribute the Program (or any work based on the

Program), the recipient automatically receives a license from the

original licensor to copy, distribute or modify the Program subject to

these terms and conditions. You may not impose any further

restrictions on the recipients’ exercise of the rights granted herein.

You are not responsible for enforcing compliance by third parties to

this License.

7. If, as a consequence of a court judgment or allegation of patent

infringement or for any other reason (not limited to patent issues),

conditions are imposed on you (whether by court order, agreement or

otherwise) that contradict the conditions of this License, they do not

excuse you from the conditions of this License. If you cannot

distribute so as to satisfy simultaneously your obligations under this

License and any other pertinent obligations, then as a consequence you

may not distribute the Program at all. For example, if a patent

license would not permit royalty-free redistribution of the Program by

all those who receive copies directly or indirectly through you, then

the only way you could satisfy both it and this License would be to

refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under

any particular circumstance, the balance of the section is intended to

apply and the section as a whole is intended to apply in other

circumstances.

It is not the purpose of this section to induce you to infringe any

patents or other property right claims or to contest validity of any

such claims; this section has the sole purpose of protecting the

integrity of the free software distribution system, which is

implemented by public license practices. Many people have made

generous contributions to the wide range of software distributed

through that system in reliance on consistent application of that

system; it is up to the author/donor to decide if he or she is willing

to distribute software through any other system and a licensee cannot

impose that choice.

This section is intended to make thoroughly clear what is believed to

be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in

certain countries either by patents or by copyrighted interfaces, the

original copyright holder who places the Program under this License

may add an explicit geographical distribution limitation excluding

those countries, so that distribution is permitted only in or among

countries not thus excluded. In such case, this License incorporates

the limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new versions

of the General Public License from time to time. Such new versions will

be similar in spirit to the present version, but may differ in detail to

address new problems or concerns.

Each version is given a distinguishing version number. If the Program

specifies a version number of this License which applies to it and “any

later version”, you have the option of following the terms and conditions

either of that version or of any later version published by the Free

Software Foundation. If the Program does not specify a version number of

this License, you may choose any version ever published by the Free Software

Foundation.

10. If you wish to incorporate parts of the Program into other free

programs whose distribution conditions are different, write to the author

to ask for permission. For software which is copyrighted by the Free

Software Foundation, write to the Free Software Foundation; we sometimes

make exceptions for this. Our decision will be guided by the two goals

of preserving the free status of all derivatives of our free software and

of promoting the sharing and reuse of software generally.

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY

FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN

OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES

PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED

OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS

TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE

PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,

REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING

WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR

REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,

INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING

OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED

TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY

YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER

PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE

POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest

possible use to the public, the best way to achieve this is to make it

free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest

to attach them to the start of each source file to most effectively

convey the exclusion of warranty; and each file should have at least

the “copyright” line and a pointer to where the full notice is found.

Copyright (C)

This program is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License along

with this program; if not, write to the Free Software Foundation, Inc.,

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this

when it starts in an interactive mode:

Gnomovision version 69, Copyright (C) year name of author

Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w’.

This is free software, and you are welcome to redistribute it

under certain conditions; type `show c’ for details.

The hypothetical commands `show w’ and `show c’ should show the appropriate

parts of the General Public License. Of course, the commands you use may

be called something other than `show w’ and `show c’; they could even be

mouse-clicks or menu items–whatever suits your program.

You should also get your employer (if you work as a programmer) or your

school, if any, to sign a “copyright disclaimer” for the program, if

necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyright interest in the program

`Gnomovision’ (which makes passes at compilers) written by James Hacker.


, 1 April 1989

Ty Coon, President of Vice

This General Public License does not permit incorporating your program into

proprietary programs. If your program is a subroutine library, you may

consider it more useful to permit linking proprietary applications with the

library. If this is what you want to do, use the GNU Lesser General

Public License instead of this License.

logrotate

Version: 3.20.1

https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt

GNU GENERAL PUBLIC LICENSE

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.,

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Everyone is permitted to copy and distribute verbatim copies

of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your

freedom to share and change it. By contrast, the GNU General Public

License is intended to guarantee your freedom to share and change free

software–to make sure the software is free for all its users. This

General Public License applies to most of the Free Software

Foundation’s software and to any other program whose authors commit to

using it. (Some other Free Software Foundation software is covered by

the GNU Lesser General Public License instead.) You can apply it to

your programs, too.

When we speak of free software, we are referring to freedom, not

price. Our General Public Licenses are designed to make sure that you

have the freedom to distribute copies of free software (and charge for

this service if you wish), that you receive source code or can get it

if you want it, that you can change the software or use pieces of it

in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid

anyone to deny you these rights or to ask you to surrender the rights.

These restrictions translate to certain responsibilities for you if you

distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether

gratis or for a fee, you must give the recipients all the rights that

you have. You must make sure that they, too, receive or can get the

source code. And you must show them these terms so they know their

rights.

We protect your rights with two steps: (1) copyright the software, and

(2) offer you this license which gives you legal permission to copy,

distribute and/or modify the software.

Also, for each author’s protection and ours, we want to make certain

that everyone understands that there is no warranty for this free

software. If the software is modified by someone else and passed on, we

want its recipients to know that what they have is not the original, so

that any problems introduced by others will not reflect on the original

authors’ reputations.

Finally, any free program is threatened constantly by software

patents. We wish to avoid the danger that redistributors of a free

program will individually obtain patent licenses, in effect making the

program proprietary. To prevent this, we have made it clear that any

patent must be licensed for everyone’s free use or not licensed at all.

The precise terms and conditions for copying, distribution and

modification follow.

GNU GENERAL PUBLIC LICENSE

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains

a notice placed by the copyright holder saying it may be distributed

under the terms of this General Public License. The “Program”, below,

refers to any such program or work, and a “work based on the Program”

means either the Program or any derivative work under copyright law:

that is to say, a work containing the Program or a portion of it,

either verbatim or with modifications and/or translated into another

language. (Hereinafter, translation is included without limitation in

the term “modification”.) Each licensee is addressed as “you”.

Activities other than copying, distribution and modification are not

covered by this License; they are outside its scope. The act of

running the Program is not restricted, and the output from the Program

is covered only if its contents constitute a work based on the

Program (independent of having been made by running the Program).

Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program’s

source code as you receive it, in any medium, provided that you

conspicuously and appropriately publish on each copy an appropriate

copyright notice and disclaimer of warranty; keep intact all the

notices that refer to this License and to the absence of any warranty;

and give any other recipients of the Program a copy of this License

along with the Program.

You may charge a fee for the physical act of transferring a copy, and

you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion

of it, thus forming a work based on the Program, and copy and

distribute such modifications or work under the terms of Section 1

above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices

stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in

whole or in part contains or is derived from the Program or any

part thereof, to be licensed as a whole at no charge to all third

parties under the terms of this License.

c) If the modified program normally reads commands interactively

when run, you must cause it, when started running for such

interactive use in the most ordinary way, to print or display an

announcement including an appropriate copyright notice and a

notice that there is no warranty (or else, saying that you provide

a warranty) and that users may redistribute the program under

these conditions, and telling the user how to view a copy of this

License. (Exception: if the Program itself is interactive but

does not normally print such an announcement, your work based on

the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If

identifiable sections of that work are not derived from the Program,

and can be reasonably considered independent and separate works in

themselves, then this License, and its terms, do not apply to those

sections when you distribute them as separate works. But when you

distribute the same sections as part of a whole which is a work based

on the Program, the distribution of the whole must be on the terms of

this License, whose permissions for other licensees extend to the

entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest

your rights to work written entirely by you; rather, the intent is to

exercise the right to control the distribution of derivative or

collective works based on the Program.

In addition, mere aggregation of another work not based on the Program

with the Program (or with a work based on the Program) on a volume of

a storage or distribution medium does not bring the other work under

the scope of this License.

3. You may copy and distribute the Program (or a work based on it,

under Section 2) in object code or executable form under the terms of

Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable

source code, which must be distributed under the terms of Sections

1 and 2 above on a medium customarily used for software interchange; or,

b) Accompany it with a written offer, valid for at least three

years, to give any third party, for a charge no more than your

cost of physically performing source distribution, a complete

machine-readable copy of the corresponding source code, to be

distributed under the terms of Sections 1 and 2 above on a medium

customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer

to distribute corresponding source code. (This alternative is

allowed only for noncommercial distribution and only if you

received the program in object code or executable form with such

an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for

making modifications to it. For an executable work, complete source

code means all the source code for all modules it contains, plus any

associated interface definition files, plus the scripts used to

control compilation and installation of the executable. However, as a

special exception, the source code distributed need not include

anything that is normally distributed (in either source or binary

form) with the major components (compiler, kernel, and so on) of the

operating system on which the executable runs, unless that component

itself accompanies the executable.

If distribution of executable or object code is made by offering

access to copy from a designated place, then offering equivalent

access to copy the source code from the same place counts as

distribution of the source code, even though third parties are not

compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program

except as expressly provided under this License. Any attempt

otherwise to copy, modify, sublicense or distribute the Program is

void, and will automatically terminate your rights under this License.

However, parties who have received copies, or rights, from you under

this License will not have their licenses terminated so long as such

parties remain in full compliance.

5. You are not required to accept this License, since you have not

signed it. However, nothing else grants you permission to modify or

distribute the Program or its derivative works. These actions are

prohibited by law if you do not accept this License. Therefore, by

modifying or distributing the Program (or any work based on the

Program), you indicate your acceptance of this License to do so, and

all its terms and conditions for copying, distributing or modifying

the Program or works based on it.

6. Each time you redistribute the Program (or any work based on the

Program), the recipient automatically receives a license from the

original licensor to copy, distribute or modify the Program subject to

these terms and conditions. You may not impose any further

restrictions on the recipients’ exercise of the rights granted herein.

You are not responsible for enforcing compliance by third parties to

this License.

7. If, as a consequence of a court judgment or allegation of patent

infringement or for any other reason (not limited to patent issues),

conditions are imposed on you (whether by court order, agreement or

otherwise) that contradict the conditions of this License, they do not

excuse you from the conditions of this License. If you cannot

distribute so as to satisfy simultaneously your obligations under this

License and any other pertinent obligations, then as a consequence you

may not distribute the Program at all. For example, if a patent

license would not permit royalty-free redistribution of the Program by

all those who receive copies directly or indirectly through you, then

the only way you could satisfy both it and this License would be to

refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under

any particular circumstance, the balance of the section is intended to

apply and the section as a whole is intended to apply in other

circumstances.

It is not the purpose of this section to induce you to infringe any

patents or other property right claims or to contest validity of any

such claims; this section has the sole purpose of protecting the

integrity of the free software distribution system, which is

implemented by public license practices. Many people have made

generous contributions to the wide range of software distributed

through that system in reliance on consistent application of that

system; it is up to the author/donor to decide if he or she is willing

to distribute software through any other system and a licensee cannot

impose that choice.

This section is intended to make thoroughly clear what is believed to

be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in

certain countries either by patents or by copyrighted interfaces, the

original copyright holder who places the Program under this License

may add an explicit geographical distribution limitation excluding

those countries, so that distribution is permitted only in or among

countries not thus excluded. In such case, this License incorporates

the limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new versions

of the General Public License from time to time. Such new versions will

be similar in spirit to the present version, but may differ in detail to

address new problems or concerns.

Each version is given a distinguishing version number. If the Program

specifies a version number of this License which applies to it and “any

later version”, you have the option of following the terms and conditions

either of that version or of any later version published by the Free

Software Foundation. If the Program does not specify a version number of

this License, you may choose any version ever published by the Free Software

Foundation.

10. If you wish to incorporate parts of the Program into other free

programs whose distribution conditions are different, write to the author

to ask for permission. For software which is copyrighted by the Free

Software Foundation, write to the Free Software Foundation; we sometimes

make exceptions for this. Our decision will be guided by the two goals

of preserving the free status of all derivatives of our free software and

of promoting the sharing and reuse of software generally.

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY

FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN

OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES

PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED

OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS

TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE

PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,

REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING

WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR

REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,

INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING

OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED

TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY

YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER

PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE

POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest

possible use to the public, the best way to achieve this is to make it

free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest

to attach them to the start of each source file to most effectively

convey the exclusion of warranty; and each file should have at least

the “copyright” line and a pointer to where the full notice is found.

Copyright (C)

This program is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License along

with this program; if not, write to the Free Software Foundation, Inc.,

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this

when it starts in an interactive mode:

Gnomovision version 69, Copyright (C) year name of author

Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w’.

This is free software, and you are welcome to redistribute it

under certain conditions; type `show c’ for details.

The hypothetical commands `show w’ and `show c’ should show the appropriate

parts of the General Public License. Of course, the commands you use may

be called something other than `show w’ and `show c’; they could even be

mouse-clicks or menu items–whatever suits your program.

You should also get your employer (if you work as a programmer) or your

school, if any, to sign a “copyright disclaimer” for the program, if

necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyright interest in the program

`Gnomovision’ (which makes passes at compilers) written by James Hacker.


, 1 April 1989

Ty Coon, President of Vice

This General Public License does not permit incorporating your program into

proprietary programs. If your program is a subroutine library, you may

consider it more useful to permit linking proprietary applications with the

library. If this is what you want to do, use the GNU Lesser General

Public License instead of this License.

popt

Version: 1.18

https://raw.githubusercontent.com/rpm-software-management/popt/master/COPYING

Copyright (c) 1998 Red Hat Software

Permission is hereby granted, free of charge, to any person obtaining a copy

of this software and associated documentation files (the “Software”), to deal

in the Software without restriction, including without limitation the rights

to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

copies of the Software, and to permit persons to whom the Software is

furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in

all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

SOFTWARE.

vsftpd

Version: 3.0.5

https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt

GNU GENERAL PUBLIC LICENSE

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.,

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Everyone is permitted to copy and distribute verbatim copies

of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your

freedom to share and change it. By contrast, the GNU General Public

License is intended to guarantee your freedom to share and change free

software–to make sure the software is free for all its users. This

General Public License applies to most of the Free Software

Foundation’s software and to any other program whose authors commit to

using it. (Some other Free Software Foundation software is covered by

the GNU Lesser General Public License instead.) You can apply it to

your programs, too.

When we speak of free software, we are referring to freedom, not

price. Our General Public Licenses are designed to make sure that you

have the freedom to distribute copies of free software (and charge for

this service if you wish), that you receive source code or can get it

if you want it, that you can change the software or use pieces of it

in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid

anyone to deny you these rights or to ask you to surrender the rights.

These restrictions translate to certain responsibilities for you if you

distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether

gratis or for a fee, you must give the recipients all the rights that

you have. You must make sure that they, too, receive or can get the

source code. And you must show them these terms so they know their

rights.

We protect your rights with two steps: (1) copyright the software, and

(2) offer you this license which gives you legal permission to copy,

distribute and/or modify the software.

Also, for each author’s protection and ours, we want to make certain

that everyone understands that there is no warranty for this free

software. If the software is modified by someone else and passed on, we

want its recipients to know that what they have is not the original, so

that any problems introduced by others will not reflect on the original

authors’ reputations.

Finally, any free program is threatened constantly by software

patents. We wish to avoid the danger that redistributors of a free

program will individually obtain patent licenses, in effect making the

program proprietary. To prevent this, we have made it clear that any

patent must be licensed for everyone’s free use or not licensed at all.

The precise terms and conditions for copying, distribution and

modification follow.

GNU GENERAL PUBLIC LICENSE

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains

a notice placed by the copyright holder saying it may be distributed

under the terms of this General Public License. The “Program”, below,

refers to any such program or work, and a “work based on the Program”

means either the Program or any derivative work under copyright law:

that is to say, a work containing the Program or a portion of it,

either verbatim or with modifications and/or translated into another

language. (Hereinafter, translation is included without limitation in

the term “modification”.) Each licensee is addressed as “you”.

Activities other than copying, distribution and modification are not

covered by this License; they are outside its scope. The act of

running the Program is not restricted, and the output from the Program

is covered only if its contents constitute a work based on the

Program (independent of having been made by running the Program).

Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program’s

source code as you receive it, in any medium, provided that you

conspicuously and appropriately publish on each copy an appropriate

copyright notice and disclaimer of warranty; keep intact all the

notices that refer to this License and to the absence of any warranty;

and give any other recipients of the Program a copy of this License

along with the Program.

You may charge a fee for the physical act of transferring a copy, and

you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion

of it, thus forming a work based on the Program, and copy and

distribute such modifications or work under the terms of Section 1

above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices

stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in

whole or in part contains or is derived from the Program or any

part thereof, to be licensed as a whole at no charge to all third

parties under the terms of this License.

c) If the modified program normally reads commands interactively

when run, you must cause it, when started running for such

interactive use in the most ordinary way, to print or display an

announcement including an appropriate copyright notice and a

notice that there is no warranty (or else, saying that you provide

a warranty) and that users may redistribute the program under

these conditions, and telling the user how to view a copy of this

License. (Exception: if the Program itself is interactive but

does not normally print such an announcement, your work based on

the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If

identifiable sections of that work are not derived from the Program,

and can be reasonably considered independent and separate works in

themselves, then this License, and its terms, do not apply to those

sections when you distribute them as separate works. But when you

distribute the same sections as part of a whole which is a work based

on the Program, the distribution of the whole must be on the terms of

this License, whose permissions for other licensees extend to the

entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest

your rights to work written entirely by you; rather, the intent is to

exercise the right to control the distribution of derivative or

collective works based on the Program.

In addition, mere aggregation of another work not based on the Program

with the Program (or with a work based on the Program) on a volume of

a storage or distribution medium does not bring the other work under

the scope of this License.

3. You may copy and distribute the Program (or a work based on it,

under Section 2) in object code or executable form under the terms of

Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable

source code, which must be distributed under the terms of Sections

1 and 2 above on a medium customarily used for software interchange; or,

b) Accompany it with a written offer, valid for at least three

years, to give any third party, for a charge no more than your

cost of physically performing source distribution, a complete

machine-readable copy of the corresponding source code, to be

distributed under the terms of Sections 1 and 2 above on a medium

customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer

to distribute corresponding source code. (This alternative is

allowed only for noncommercial distribution and only if you

received the program in object code or executable form with such

an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for

making modifications to it. For an executable work, complete source

code means all the source code for all modules it contains, plus any

associated interface definition files, plus the scripts used to

control compilation and installation of the executable. However, as a

special exception, the source code distributed need not include

anything that is normally distributed (in either source or binary

form) with the major components (compiler, kernel, and so on) of the

operating system on which the executable runs, unless that component

itself accompanies the executable.

If distribution of executable or object code is made by offering

access to copy from a designated place, then offering equivalent

access to copy the source code from the same place counts as

distribution of the source code, even though third parties are not

compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program

except as expressly provided under this License. Any attempt

otherwise to copy, modify, sublicense or distribute the Program is

void, and will automatically terminate your rights under this License.

However, parties who have received copies, or rights, from you under

this License will not have their licenses terminated so long as such

parties remain in full compliance.

5. You are not required to accept this License, since you have not

signed it. However, nothing else grants you permission to modify or

distribute the Program or its derivative works. These actions are

prohibited by law if you do not accept this License. Therefore, by

modifying or distributing the Program (or any work based on the

Program), you indicate your acceptance of this License to do so, and

all its terms and conditions for copying, distributing or modifying

the Program or works based on it.

6. Each time you redistribute the Program (or any work based on the

Program), the recipient automatically receives a license from the

original licensor to copy, distribute or modify the Program subject to

these terms and conditions. You may not impose any further

restrictions on the recipients’ exercise of the rights granted herein.

You are not responsible for enforcing compliance by third parties to

this License.

7. If, as a consequence of a court judgment or allegation of patent

infringement or for any other reason (not limited to patent issues),

conditions are imposed on you (whether by court order, agreement or

otherwise) that contradict the conditions of this License, they do not

excuse you from the conditions of this License. If you cannot

distribute so as to satisfy simultaneously your obligations under this

License and any other pertinent obligations, then as a consequence you

may not distribute the Program at all. For example, if a patent

license would not permit royalty-free redistribution of the Program by

all those who receive copies directly or indirectly through you, then

the only way you could satisfy both it and this License would be to

refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under

any particular circumstance, the balance of the section is intended to

apply and the section as a whole is intended to apply in other

circumstances.

It is not the purpose of this section to induce you to infringe any

patents or other property right claims or to contest validity of any

such claims; this section has the sole purpose of protecting the

integrity of the free software distribution system, which is

implemented by public license practices. Many people have made

generous contributions to the wide range of software distributed

through that system in reliance on consistent application of that

system; it is up to the author/donor to decide if he or she is willing

to distribute software through any other system and a licensee cannot

impose that choice.

This section is intended to make thoroughly clear what is believed to

be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in

certain countries either by patents or by copyrighted interfaces, the

original copyright holder who places the Program under this License

may add an explicit geographical distribution limitation excluding

those countries, so that distribution is permitted only in or among

countries not thus excluded. In such case, this License incorporates

the limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new versions

of the General Public License from time to time. Such new versions will

be similar in spirit to the present version, but may differ in detail to

address new problems or concerns.

Each version is given a distinguishing version number. If the Program

specifies a version number of this License which applies to it and “any

later version”, you have the option of following the terms and conditions

either of that version or of any later version published by the Free

Software Foundation. If the Program does not specify a version number of

this License, you may choose any version ever published by the Free Software

Foundation.

10. If you wish to incorporate parts of the Program into other free

programs whose distribution conditions are different, write to the author

to ask for permission. For software which is copyrighted by the Free

Software Foundation, write to the Free Software Foundation; we sometimes

make exceptions for this. Our decision will be guided by the two goals

of preserving the free status of all derivatives of our free software and

of promoting the sharing and reuse of software generally.

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY

FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN

OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES

PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED

OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS

TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE

PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,

REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING

WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR

REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,

INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING

OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED

TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY

YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER

PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE

POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest

possible use to the public, the best way to achieve this is to make it

free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest

to attach them to the start of each source file to most effectively

convey the exclusion of warranty; and each file should have at least

the “copyright” line and a pointer to where the full notice is found.

Copyright (C)

This program is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License along

with this program; if not, write to the Free Software Foundation, Inc.,

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this

when it starts in an interactive mode:

Gnomovision version 69, Copyright (C) year name of author

Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w’.

This is free software, and you are welcome to redistribute it

under certain conditions; type `show c’ for details.

The hypothetical commands `show w’ and `show c’ should show the appropriate

parts of the General Public License. Of course, the commands you use may

be called something other than `show w’ and `show c’; they could even be

mouse-clicks or menu items–whatever suits your program.

You should also get your employer (if you work as a programmer) or your

school, if any, to sign a “copyright disclaimer” for the program, if

necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyright interest in the program

`Gnomovision’ (which makes passes at compilers) written by James Hacker.


, 1 April 1989

Ty Coon, President of Vice

This General Public License does not permit incorporating your program into

proprietary programs. If your program is a subroutine library, you may

consider it more useful to permit linking proprietary applications with the

library. If this is what you want to do, use the GNU Lesser General

Public License instead of this License.

linux

Version: 4.19.290

https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt

GNU GENERAL PUBLIC LICENSE

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.,

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Everyone is permitted to copy and distribute verbatim copies

of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your

freedom to share and change it. By contrast, the GNU General Public

License is intended to guarantee your freedom to share and change free

software–to make sure the software is free for all its users. This

General Public License applies to most of the Free Software

Foundation’s software and to any other program whose authors commit to

using it. (Some other Free Software Foundation software is covered by

the GNU Lesser General Public License instead.) You can apply it to

your programs, too.

When we speak of free software, we are referring to freedom, not

price. Our General Public Licenses are designed to make sure that you

have the freedom to distribute copies of free software (and charge for

this service if you wish), that you receive source code or can get it

if you want it, that you can change the software or use pieces of it

in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid

anyone to deny you these rights or to ask you to surrender the rights.

These restrictions translate to certain responsibilities for you if you

distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether

gratis or for a fee, you must give the recipients all the rights that

you have. You must make sure that they, too, receive or can get the

source code. And you must show them these terms so they know their

rights.

We protect your rights with two steps: (1) copyright the software, and

(2) offer you this license which gives you legal permission to copy,

distribute and/or modify the software.

Also, for each author’s protection and ours, we want to make certain

that everyone understands that there is no warranty for this free

software. If the software is modified by someone else and passed on, we

want its recipients to know that what they have is not the original, so

that any problems introduced by others will not reflect on the original

authors’ reputations.

Finally, any free program is threatened constantly by software

patents. We wish to avoid the danger that redistributors of a free

program will individually obtain patent licenses, in effect making the

program proprietary. To prevent this, we have made it clear that any

patent must be licensed for everyone’s free use or not licensed at all.

The precise terms and conditions for copying, distribution and

modification follow.

GNU GENERAL PUBLIC LICENSE

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains

a notice placed by the copyright holder saying it may be distributed

under the terms of this General Public License. The “Program”, below,

refers to any such program or work, and a “work based on the Program”

means either the Program or any derivative work under copyright law:

that is to say, a work containing the Program or a portion of it,

either verbatim or with modifications and/or translated into another

language. (Hereinafter, translation is included without limitation in

the term “modification”.) Each licensee is addressed as “you”.

Activities other than copying, distribution and modification are not

covered by this License; they are outside its scope. The act of

running the Program is not restricted, and the output from the Program

is covered only if its contents constitute a work based on the

Program (independent of having been made by running the Program).

Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program’s

source code as you receive it, in any medium, provided that you

conspicuously and appropriately publish on each copy an appropriate

copyright notice and disclaimer of warranty; keep intact all the

notices that refer to this License and to the absence of any warranty;

and give any other recipients of the Program a copy of this License

along with the Program.

You may charge a fee for the physical act of transferring a copy, and

you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion

of it, thus forming a work based on the Program, and copy and

distribute such modifications or work under the terms of Section 1

above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices

stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in

whole or in part contains or is derived from the Program or any

part thereof, to be licensed as a whole at no charge to all third

parties under the terms of this License.

c) If the modified program normally reads commands interactively

when run, you must cause it, when started running for such

interactive use in the most ordinary way, to print or display an

announcement including an appropriate copyright notice and a

notice that there is no warranty (or else, saying that you provide

a warranty) and that users may redistribute the program under

these conditions, and telling the user how to view a copy of this

License. (Exception: if the Program itself is interactive but

does not normally print such an announcement, your work based on

the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If

identifiable sections of that work are not derived from the Program,

and can be reasonably considered independent and separate works in

themselves, then this License, and its terms, do not apply to those

sections when you distribute them as separate works. But when you

distribute the same sections as part of a whole which is a work based

on the Program, the distribution of the whole must be on the terms of

this License, whose permissions for other licensees extend to the

entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest

your rights to work written entirely by you; rather, the intent is to

exercise the right to control the distribution of derivative or

collective works based on the Program.

In addition, mere aggregation of another work not based on the Program

with the Program (or with a work based on the Program) on a volume of

a storage or distribution medium does not bring the other work under

the scope of this License.

3. You may copy and distribute the Program (or a work based on it,

under Section 2) in object code or executable form under the terms of

Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable

source code, which must be distributed under the terms of Sections

1 and 2 above on a medium customarily used for software interchange; or,

b) Accompany it with a written offer, valid for at least three

years, to give any third party, for a charge no more than your

cost of physically performing source distribution, a complete

machine-readable copy of the corresponding source code, to be

distributed under the terms of Sections 1 and 2 above on a medium

customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer

to distribute corresponding source code. (This alternative is

allowed only for noncommercial distribution and only if you

received the program in object code or executable form with such

an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for

making modifications to it. For an executable work, complete source

code means all the source code for all modules it contains, plus any

associated interface definition files, plus the scripts used to

control compilation and installation of the executable. However, as a

special exception, the source code distributed need not include

anything that is normally distributed (in either source or binary

form) with the major components (compiler, kernel, and so on) of the

operating system on which the executable runs, unless that component

itself accompanies the executable.

If distribution of executable or object code is made by offering

access to copy from a designated place, then offering equivalent

access to copy the source code from the same place counts as

distribution of the source code, even though third parties are not

compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program

except as expressly provided under this License. Any attempt

otherwise to copy, modify, sublicense or distribute the Program is

void, and will automatically terminate your rights under this License.

However, parties who have received copies, or rights, from you under

this License will not have their licenses terminated so long as such

parties remain in full compliance.

5. You are not required to accept this License, since you have not

signed it. However, nothing else grants you permission to modify or

distribute the Program or its derivative works. These actions are

prohibited by law if you do not accept this License. Therefore, by

modifying or distributing the Program (or any work based on the

Program), you indicate your acceptance of this License to do so, and

all its terms and conditions for copying, distributing or modifying

the Program or works based on it.

6. Each time you redistribute the Program (or any work based on the

Program), the recipient automatically receives a license from the

original licensor to copy, distribute or modify the Program subject to

these terms and conditions. You may not impose any further

restrictions on the recipients’ exercise of the rights granted herein.

You are not responsible for enforcing compliance by third parties to

this License.

7. If, as a consequence of a court judgment or allegation of patent

infringement or for any other reason (not limited to patent issues),

conditions are imposed on you (whether by court order, agreement or

otherwise) that contradict the conditions of this License, they do not

excuse you from the conditions of this License. If you cannot

distribute so as to satisfy simultaneously your obligations under this

License and any other pertinent obligations, then as a consequence you

may not distribute the Program at all. For example, if a patent

license would not permit royalty-free redistribution of the Program by

all those who receive copies directly or indirectly through you, then

the only way you could satisfy both it and this License would be to

refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under

any particular circumstance, the balance of the section is intended to

apply and the section as a whole is intended to apply in other

circumstances.

It is not the purpose of this section to induce you to infringe any

patents or other property right claims or to contest validity of any

such claims; this section has the sole purpose of protecting the

integrity of the free software distribution system, which is

implemented by public license practices. Many people have made

generous contributions to the wide range of software distributed

through that system in reliance on consistent application of that

system; it is up to the author/donor to decide if he or she is willing

to distribute software through any other system and a licensee cannot

impose that choice.

This section is intended to make thoroughly clear what is believed to

be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in

certain countries either by patents or by copyrighted interfaces, the

original copyright holder who places the Program under this License

may add an explicit geographical distribution limitation excluding

those countries, so that distribution is permitted only in or among

countries not thus excluded. In such case, this License incorporates

the limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new versions

of the General Public License from time to time. Such new versions will

be similar in spirit to the present version, but may differ in detail to

address new problems or concerns.

Each version is given a distinguishing version number. If the Program

specifies a version number of this License which applies to it and “any

later version”, you have the option of following the terms and conditions

either of that version or of any later version published by the Free

Software Foundation. If the Program does not specify a version number of

this License, you may choose any version ever published by the Free Software

Foundation.

10. If you wish to incorporate parts of the Program into other free

programs whose distribution conditions are different, write to the author

to ask for permission. For software which is copyrighted by the Free

Software Foundation, write to the Free Software Foundation; we sometimes

make exceptions for this. Our decision will be guided by the two goals

of preserving the free status of all derivatives of our free software and

of promoting the sharing and reuse of software generally.

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY

FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN

OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES

PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED

OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS

TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE

PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,

REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING

WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR

REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,

INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING

OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED

TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY

YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER

PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE

POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest

possible use to the public, the best way to achieve this is to make it

free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest

to attach them to the start of each source file to most effectively

convey the exclusion of warranty; and each file should have at least

the “copyright” line and a pointer to where the full notice is found.

Copyright (C)

This program is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License along

with this program; if not, write to the Free Software Foundation, Inc.,

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this

when it starts in an interactive mode:

Gnomovision version 69, Copyright (C) year name of author

Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w’.

This is free software, and you are welcome to redistribute it

under certain conditions; type `show c’ for details.

The hypothetical commands `show w’ and `show c’ should show the appropriate

parts of the General Public License. Of course, the commands you use may

be called something other than `show w’ and `show c’; they could even be

mouse-clicks or menu items–whatever suits your program.

You should also get your employer (if you work as a programmer) or your

school, if any, to sign a “copyright disclaimer” for the program, if

necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyright interest in the program

`Gnomovision’ (which makes passes at compilers) written by James Hacker.


, 1 April 1989

Ty Coon, President of Vice

This General Public License does not permit incorporating your program into

proprietary programs. If your program is a subroutine library, you may

consider it more useful to permit linking proprietary applications with the

library. If this is what you want to do, use the GNU Lesser General

Public License instead of this License.

u-boot

Version: 2019.01

https://raw.githubusercontent.com/u-boot/u-boot/master/README

# SPDX-License-Identifier: GPL-2.0+

#

# (C) Copyright 2000 – 2013

# Wolfgang Denk, DENX Software Engineering, [email protected].

Summary:

========

This directory contains the source code for U-Boot, a boot loader for

Embedded boards based on PowerPC, ARM, MIPS and several other

processors, which can be installed in a boot ROM and used to

initialize and test the hardware or to download and run application

code.

The development of U-Boot is closely related to Linux: some parts of

the source code originate in the Linux source tree, we have some

header files in common, and special provision has been made to

support booting of Linux images.

Some attention has been paid to make this software easily

configurable and extendable. For instance, all monitor commands are

implemented with the same call interface, so that it’s very easy to

add new commands. Also, instead of permanently adding rarely used

code (for instance hardware test utilities) to the monitor, you can

load and run it dynamically.

Status:

=======

In general, all boards for which a default configuration file exists in the

configs/ directory have been tested to some extent and can be considered

“working”. In fact, many of them are used in production systems.

In case of problems you can use

scripts/get_maintainer.pl

to identify the people or companies responsible for various boards and

subsystems. Or have a look at the git log.

Where to get help:

==================

In case you have questions about, problems with or contributions for

U-Boot, you should send a message to the U-Boot mailing list at

. There is also an archive of previous traffic

on the mailing list – please search the archive before asking FAQ’s.

Please see https://lists.denx.de/pipermail/u-boot and

https://marc.info/?l=u-boot

Where to get source code:

=========================

The U-Boot source code is maintained in the Git repository at

https://source.denx.de/u-boot/u-boot.git ; you can browse it online at

https://source.denx.de/u-boot/u-boot

The “Tags” links on this page allow you to download tarballs of

any version you might be interested in. Official releases are also

available from the DENX file server through HTTPS or FTP.

https://ftp.denx.de/pub/u-boot/

ftp://ftp.denx.de/pub/u-boot/

Where we come from:

===================

– start from 8xxrom sources

– create PPCBoot project (https://sourceforge.net/projects/ppcboot)

– clean up code

– make it easier to add custom boards

– make it possible to add other [PowerPC] CPUs

– extend functions, especially:

* Provide extended interface to Linux boot loader

* S-Record download

* network boot

* ATA disk / SCSI … boot

– create ARMBoot project (https://sourceforge.net/projects/armboot)

– add other CPU families (starting with ARM)

– create U-Boot project (https://sourceforge.net/projects/u-boot)

– current project page: see https://www.denx.de/wiki/U-Boot

Names and Spelling:

===================

The “official” name of this project is “Das U-Boot”. The spelling

“U-Boot” shall be used in all written text (documentation, comments

in source files etc.). Example:

This is the README file for the U-Boot project.

File names etc. shall be based on the string “u-boot”. Examples:

include/asm-ppc/u-boot.h

#include

Variable names, preprocessor constants etc. shall be either based on

the string “u_boot” or on “U_BOOT”. Example:

U_BOOT_VERSION u_boot_logo

IH_OS_U_BOOT u_boot_hush_start

Software Configuration:

=======================

Selection of Processor Architecture and Board Type:

—————————————————

For all supported boards there are ready-to-use default

configurations available; just type “make

_defconfig”.

Example: For a TQM823L module type:

cd u-boot

make TQM823L_defconfig

Note: If you’re looking for the default configuration file for a board

you’re sure used to be there but is now missing, check the file

doc/README.scrapyard for a list of no longer supported boards.

Sandbox Environment:

——————–

U-Boot can be built natively to run on a Linux host using the ‘sandbox’

board. This allows feature development which is not board- or architecture-

specific to be undertaken on a native platform. The sandbox is also used to

run some of U-Boot’s tests.

See doc/arch/sandbox/sandbox.rst for more details.

Board Initialisation Flow:

————————–

This is the intended start-up flow for boards. This should apply for both

SPL and U-Boot proper (i.e. they both follow the same rules).

Note: “SPL” stands for “Secondary Program Loader,” which is explained in

more detail later in this file.

At present, SPL mostly uses a separate code path, but the function names

and roles of each function are the same. Some boards or architectures

may not conform to this. At least most ARM boards which use

CONFIG_SPL_FRAMEWORK conform to this.

Execution typically starts with an architecture-specific (and possibly

CPU-specific) start.S file, such as:

– arch/arm/cpu/armv7/start.S

– arch/powerpc/cpu/mpc83xx/start.S

– arch/mips/cpu/start.S

and so on. From there, three functions are called; the purpose and

limitations of each of these functions are described below.

lowlevel_init():

– purpose: essential init to permit execution to reach board_init_f()

– no global_data or BSS

– there is no stack (ARMv7 may have one but it will soon be removed)

– must not set up SDRAM or use console

– must only do the bare minimum to allow execution to continue to

board_init_f()

– this is almost never needed

– return normally from this function

board_init_f():

– purpose: set up the machine ready for running board_init_r():

i.e. SDRAM and serial UART

– global_data is available

– stack is in SRAM

– BSS is not available, so you cannot use global/static variables,

only stack variables and global_data

Non-SPL-specific notes:

– dram_init() is called to set up DRAM. If already done in SPL this

can do nothing

SPL-specific notes:

– you can override the entire board_init_f() function with your own

version as needed.

– preloader_console_init() can be called here in extremis

– should set up SDRAM, and anything needed to make the UART work

– there is no need to clear BSS, it will be done by crt0.S

– for specific scenarios on certain architectures an early BSS *can*

be made available (via CONFIG_SPL_EARLY_BSS by moving the clearing

of BSS prior to entering board_init_f()) but doing so is discouraged.

Instead it is strongly recommended to architect any code changes

or additions such to not depend on the availability of BSS during

board_init_f() as indicated in other sections of this README to

maintain compatibility and consistency across the entire code base.

– must return normally from this function (don’t call board_init_r()

directly)

Here the BSS is cleared. For SPL, if CONFIG_SPL_STACK_R is defined, then at

this point the stack and global_data are relocated to below

CONFIG_SPL_STACK_R_ADDR. For non-SPL, U-Boot is relocated to run at the top of

memory.

board_init_r():

– purpose: main execution, common code

– global_data is available

– SDRAM is available

– BSS is available, all static/global variables can be used

– execution eventually continues to main_loop()

Non-SPL-specific notes:

– U-Boot is relocated to the top of memory and is now running from

there.

SPL-specific notes:

– stack is optionally in SDRAM, if CONFIG_SPL_STACK_R is defined and

CONFIG_SYS_FSL_HAS_CCI400

Defined For SoC that has cache coherent interconnect

CCN-400

CONFIG_SYS_FSL_HAS_CCN504

Defined for SoC that has cache coherent interconnect CCN-504

The following options need to be configured:

– CPU Type: Define exactly one, e.g. CONFIG_MPC85XX.

– Board Type: Define exactly one, e.g. CONFIG_MPC8540ADS.

– 85xx CPU Options:

CONFIG_SYS_PPC64

Specifies that the core is a 64-bit PowerPC implementation (implements

the “64” category of the Power ISA). This is necessary for ePAPR

compliance, among other possible reasons.

CONFIG_SYS_FSL_ERRATUM_A004510

Enables a workaround for erratum A004510. If set,

then CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV and

CFG_SYS_FSL_CORENET_SNOOPVEC_COREONLY must be set.

CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV

CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV2 (optional)

Defines one or two SoC revisions (low 8 bits of SVR)

for which the A004510 workaround should be applied.

The rest of SVR is either not relevant to the decision

of whether the erratum is present (e.g. p2040 versus

p2041) or is implied by the build target, which controls

whether CONFIG_SYS_FSL_ERRATUM_A004510 is set.

See Freescale App Note 4493 for more information about

this erratum.

CFG_SYS_FSL_CORENET_SNOOPVEC_COREONLY

This is the value to write into CCSR offset 0x18600

according to the A004510 workaround.

CONFIG_SYS_FSL_SINGLE_SOURCE_CLK

Single Source Clock is clocking mode present in some of FSL SoC’s.

In this mode, a single differential clock is used to supply

clocks to the sysclock, ddrclock and usbclock.

– Generic CPU options:

CONFIG_SYS_FSL_DDR

Freescale DDR driver in use. This type of DDR controller is

found in mpc83xx, mpc85xx as well as some ARM core SoCs.

CFG_SYS_FSL_DDR_ADDR

Freescale DDR memory-mapped register base.

CONFIG_SYS_FSL_IFC_CLK_DIV

Defines divider of platform clock(clock input to IFC controller).

CONFIG_SYS_FSL_LBC_CLK_DIV

Defines divider of platform clock(clock input to eLBC controller).

CFG_SYS_FSL_DDR_SDRAM_BASE_PHY

Physical address from the view of DDR controllers. It is the

same as CFG_SYS_DDR_SDRAM_BASE for all Power SoCs. But

it could be different for ARM SoCs.

– ARM options:

CFG_SYS_EXCEPTION_VECTORS_HIGH

Select high exception vectors of the ARM core, e.g., do not

clear the V bit of the c1 register of CP15.

COUNTER_FREQUENCY

Generic timer clock source frequency.

COUNTER_FREQUENCY_REAL

Generic timer clock source frequency if the real clock is

different from COUNTER_FREQUENCY, and can only be determined

at run time.

– Linux Kernel Interface:

CONFIG_OF_LIBFDT

New kernel versions are expecting firmware settings to be

passed using flattened device trees (based on open firmware

concepts).

CONFIG_OF_LIBFDT

* New libfdt-based support

* Adds the “fdt” command

* The bootm command automatically updates the fdt

OF_TBCLK – The timebase frequency.

boards with QUICC Engines require OF_QE to set UCC MAC

addresses

CONFIG_OF_IDE_FIXUP

U-Boot can detect if an IDE device is present or not.

If not, and this new config option is activated, U-Boot

removes the ATA node from the DTS before booting Linux,

so the Linux IDE driver does not probe the device and

crash. This is needed for buggy hardware (uc101) where

no pull down resistor is connected to the signal IDE5V_DD7.

– vxWorks boot parameters:

bootvx constructs a valid bootline using the following

environments variables: bootdev, bootfile, ipaddr, netmask,

serverip, gatewayip, hostname, othbootargs.

It loads the vxWorks image pointed bootfile.

Note: If a “bootargs” environment is defined, it will override

the defaults discussed just above.

– Cache Configuration for ARM:

CFG_SYS_PL310_BASE – Physical base address of PL310

controller register space

– Serial Ports:

CFG_PL011_CLOCK

If you have Amba PrimeCell PL011 UARTs, set this variable to

the clock speed of the UARTs.

CFG_PL01x_PORTS

If you have Amba PrimeCell PL010 or PL011 UARTs on your board,

define this to a list of base addresses for each (supported)

port. See e.g. include/configs/versatile.h

CONFIG_SERIAL_HW_FLOW_CONTROL

Define this variable to enable hw flow control in serial driver.

Current user of this option is drivers/serial/nsl16550.c driver

– Removal of commands

If no commands are needed to boot, you can disable

CONFIG_CMDLINE to remove them. In this case, the command line

will not be available, and when U-Boot wants to execute the

boot command (on start-up) it will call board_run_command()

instead. This can reduce image size significantly for very

simple boot procedures.

– Regular expression support:

CONFIG_REGEX

If this variable is defined, U-Boot is linked against

the SLRE (Super Light Regular Expression) library,

which adds regex support to some commands, as for

example “env grep” and “setexpr”.

– Watchdog:

CFG_SYS_WATCHDOG_FREQ

Some platforms automatically call WATCHDOG_RESET()

from the timer interrupt handler every

CFG_SYS_WATCHDOG_FREQ interrupts. If not set by the

board configuration file, a default of CONFIG_SYS_HZ/2

(i.e. 500) is used. Setting CFG_SYS_WATCHDOG_FREQ

to 0 disables calling WATCHDOG_RESET() from the timer

interrupt.

– GPIO Support:

The CFG_SYS_I2C_PCA953X_WIDTH option specifies a list of

chip-ngpio pairs that tell the PCA953X driver the number of

pins supported by a particular chip.

Note that if the GPIO device uses I2C, then the I2C interface

must also be configured. See I2C Support, below.

– I/O tracing:

When CONFIG_IO_TRACE is selected, U-Boot intercepts all I/O

accesses and can checksum them or write a list of them out

to memory. See the ‘iotrace’ command for details. This is

useful for testing device drivers since it can confirm that

the driver behaves the same way before and after a code

change. Currently this is supported on sandbox and arm. To

add support for your architecture, add ‘#include

to the bottom of arch/

/include/asm/io.h and test.

Example output from the ‘iotrace stats’ command is below.

Note that if the trace buffer is exhausted, the checksum will

still continue to operate.

iotrace is enabled

Start: 10000000 (buffer start address)

Size: 00010000 (buffer size)

Offset: 00000120 (current buffer offset)

Output: 10000120 (start + offset)

Count: 00000018 (number of trace records)

CRC32: 9526fb66 (CRC32 of all trace records)

– Timestamp Support:

When CONFIG_TIMESTAMP is selected, the timestamp

(date and time) of an image is printed by image

commands like bootm or iminfo. This option is

automatically enabled when you select CONFIG_CMD_DATE .

– Partition Labels (disklabels) Supported:

Zero or more of the following:

CONFIG_MAC_PARTITION Apple’s MacOS partition table.

CONFIG_ISO_PARTITION ISO partition table, used on CDROM etc.

CONFIG_EFI_PARTITION GPT partition table, common when EFI is the

bootloader. Note 2TB partition limit; see

disk/part_efi.c

CONFIG_SCSI) you must configure support for at

least one non-MTD partition type as well.

– NETWORK Support (PCI):

CONFIG_E1000_SPI

Utility code for direct access to the SPI bus on Intel 8257x.

This does not do anything useful unless you set at least one

of CONFIG_CMD_E1000 or CONFIG_E1000_SPI_GENERIC.

CONFIG_NATSEMI

Support for National dp83815 chips.

CONFIG_NS8382X

Support for National dp8382[01] gigabit chips.

– NETWORK Support (other):

CONFIG_CALXEDA_XGMAC

Support for the Calxeda XGMAC device

CONFIG_LAN91C96

Support for SMSC’s LAN91C96 chips.

CONFIG_LAN91C96_USE_32_BIT

Define this to enable 32 bit addressing

CFG_SYS_DAVINCI_EMAC_PHY_COUNT

Define this if you have more then 3 PHYs.

CONFIG_FTGMAC100

Support for Faraday’s FTGMAC100 Gigabit SoC Ethernet

CONFIG_FTGMAC100_EGIGA

Define this to use GE link update with gigabit PHY.

Define this if FTGMAC100 is connected to gigabit PHY.

If your system has 10/100 PHY only, it might not occur

wrong behavior. Because PHY usually return timeout or

useless data when polling gigabit status and gigabit

control registers. This behavior won’t affect the

correctnessof 10/100 link speed update.

CONFIG_SH_ETHER

Support for Renesas on-chip Ethernet controller

CFG_SH_ETHER_USE_PORT

Define the number of ports to be used

CFG_SH_ETHER_PHY_ADDR

Define the ETH PHY’s address

CFG_SH_ETHER_CACHE_WRITEBACK

If this option is set, the driver enables cache flush.

– TPM Support:

CONFIG_TPM

Support TPM devices.

CONFIG_TPM_TIS_INFINEON

Support for Infineon i2c bus TPM devices. Only one device

per system is supported at this time.

CONFIG_TPM_TIS_I2C_BURST_LIMITATION

Define the burst count bytes upper limit

CONFIG_TPM_ST33ZP24

Support for STMicroelectronics TPM devices. Requires DM_TPM support.

CONFIG_TPM_ST33ZP24_I2C

Support for STMicroelectronics ST33ZP24 I2C devices.

Requires TPM_ST33ZP24 and I2C.

CONFIG_TPM_ST33ZP24_SPI

Support for STMicroelectronics ST33ZP24 SPI devices.

Requires TPM_ST33ZP24 and SPI.

CONFIG_TPM_ATMEL_TWI

Support for Atmel TWI TPM device. Requires I2C support.

CONFIG_TPM_TIS_LPC

Support for generic parallel port TPM devices. Only one device

per system is supported at this time.

CONFIG_TPM

Define this to enable the TPM support library which provides

functional interfaces to some TPM commands.

Requires support for a TPM device.

CONFIG_TPM_AUTH_SESSIONS

Define this to enable authorized functions in the TPM library.

Requires CONFIG_TPM and CONFIG_SHA1.

– USB Support:

At the moment only the UHCI host controller is

supported (PIP405, MIP405); define

CONFIG_USB_UHCI to enable it.

define CONFIG_USB_KEYBOARD to enable the USB Keyboard

and define CONFIG_USB_STORAGE to enable the USB

storage devices.

Note:

Supported are USB Keyboards and USB Floppy drives

(TEAC FD-05PUB).

CONFIG_USB_DWC2_REG_ADDR the physical CPU address of the DWC2

HW module registers.

– USB Device:

Define the below if you wish to use the USB console.

Once firmware is rebuilt from a serial console issue the

command “setenv stdin usbtty; setenv stdout usbtty” and

attach your USB cable. The Unix command “dmesg” should print

it has found a new device. The environment variable usbtty

can be set to gserial or cdc_acm to enable your device to

appear to a USB host as a Linux gserial device or a

Common Device Class Abstract Control Model serial device.

If you select usbtty = gserial you should be able to enumerate

a Linux host by

# modprobe usbserial vendor=0xVendorID product=0xProductID

else if using cdc_acm, simply setting the environment

variable usbtty to be cdc_acm should suffice. The following

might be defined in YourBoardName.h

If you have a USB-IF assigned VendorID then you may wish to

define your own vendor specific values either in BoardName.h

or directly in usbd_vendor_info.h. If you don’t define

CONFIG_USBD_MANUFACTURER, CONFIG_USBD_PRODUCT_NAME,

CONFIG_USBD_VENDORID and CONFIG_USBD_PRODUCTID, then U-Boot

should pretend to be a Linux device to it’s target host.

CONFIG_USBD_MANUFACTURER

Define this string as the name of your company for

– CONFIG_USBD_MANUFACTURER “my company”

CONFIG_USBD_PRODUCT_NAME

Define this string as the name of your product

– CONFIG_USBD_PRODUCT_NAME “acme usb device”

CONFIG_USBD_VENDORID

Define this as your assigned Vendor ID from the USB

Implementors Forum. This *must* be a genuine Vendor ID

to avoid polluting the USB namespace.

– CONFIG_USBD_VENDORID 0xFFFF

CONFIG_USBD_PRODUCTID

Define this as the unique Product ID

for your device

– CONFIG_USBD_PRODUCTID 0xFFFF

– ULPI Layer Support:

The ULPI (UTMI Low Pin (count) Interface) PHYs are supported via

the generic ULPI layer. The generic layer accesses the ULPI PHY

via the platform viewport, so you need both the genric layer and

the viewport enabled. Currently only Chipidea/ARC based

viewport is supported.

To enable the ULPI layer support, define CONFIG_USB_ULPI and

CONFIG_USB_ULPI_VIEWPORT in your board configuration file.

If your ULPI phy needs a different reference clock than the

standard 24 MHz then you have to define CFG_ULPI_REF_CLK to

the appropriate value in Hz.

– MMC Support:

CONFIG_SH_MMCIF

Support for Renesas on-chip MMCIF controller

CONFIG_SH_MMCIF_ADDR

Define the base address of MMCIF registers

CONFIG_SH_MMCIF_CLK

Define the clock frequency for MMCIF

– USB Device Firmware Update (DFU) class support:

CONFIG_DFU_OVER_USB

This enables the USB portion of the DFU USB class

CONFIG_DFU_NAND

This enables support for exposing NAND devices via DFU.

CONFIG_DFU_RAM

This enables support for exposing RAM via DFU.

Note: DFU spec refer to non-volatile memory usage, but

allow usages beyond the scope of spec – here RAM usage,

one that would help mostly the developer.

CONFIG_SYS_DFU_DATA_BUF_SIZE

Dfu transfer uses a buffer before writing data to the

raw storage device. Make the size (in bytes) of this buffer

configurable. The size of this buffer is also configurable

through the “dfu_bufsiz” environment variable.

CONFIG_SYS_DFU_MAX_FILE_SIZE

When updating files rather than the raw storage device,

we use a static buffer to copy the file into and then write

the buffer once we’ve been given the whole file. Define

this to the maximum filesize (in bytes) for the buffer.

Default is 4 MiB if undefined.

DFU_DEFAULT_POLL_TIMEOUT

Poll timeout [ms], is the timeout a device can send to the

host. The host must wait for this timeout before sending

a subsequent DFU_GET_STATUS request to the device.

DFU_MANIFEST_POLL_TIMEOUT

Poll timeout [ms], which the device sends to the host when

entering dfuMANIFEST state. Host waits this timeout, before

sending again an USB request to the device.

– Keyboard Support:

See Kconfig help for available keyboard drivers.

– MII/PHY support:

CONFIG_PHY_CLOCK_FREQ (ppc4xx)

The clock frequency of the MII bus

CONFIG_PHY_CMD_DELAY (ppc4xx)

Some PHY like Intel LXT971A need extra delay after

command issued before MII status register can be read

– BOOTP Recovery Mode:

CONFIG_BOOTP_RANDOM_DELAY

If you have many targets in a network that try to

boot using BOOTP, you may want to avoid that all

systems send out BOOTP requests at precisely the same

moment (which would happen for instance at recovery

from a power failure, when all systems will try to

boot, thus flooding the BOOTP server. Defining

CONFIG_BOOTP_RANDOM_DELAY causes a random delay to be

inserted before sending out BOOTP requests. The

following delays are inserted then:

1st BOOTP request: delay 0 … 1 sec

2nd BOOTP request: delay 0 … 2 sec

3rd BOOTP request: delay 0 … 4 sec

4th and following

BOOTP requests: delay 0 … 8 sec

CFG_BOOTP_ID_CACHE_SIZE

BOOTP packets are uniquely identified using a 32-bit ID. The

server will copy the ID from client requests to responses and

U-Boot will use this to determine if it is the destination of

an incoming response. Some servers will check that addresses

aren’t in use before handing them out (usually using an ARP

ping) and therefore take up to a few hundred milliseconds to

respond. Network congestion may also influence the time it

takes for a response to make it back to the client. If that

time is too long, U-Boot will retransmit requests. In order

to allow earlier responses to still be accepted after these

retransmissions, U-Boot’s BOOTP client keeps a small cache of

IDs. The CFG_BOOTP_ID_CACHE_SIZE controls the size of this

cache. The default is to keep IDs for up to four outstanding

requests. Increasing this will allow U-Boot to accept offers

from a BOOTP client in networks with unusually high latency.

– DHCP Advanced Options:

– Link-local IP address negotiation:

Negotiate with other link-local clients on the local network

for an address that doesn’t require explicit configuration.

This is especially useful if a DHCP server cannot be guaranteed

to exist in all environments that the device must operate.

See doc/README.link-local for more information.

– MAC address from environment variables

FDT_SEQ_MACADDR_FROM_ENV

Fix-up device tree with MAC addresses fetched sequentially from

environment variables. This config work on assumption that

non-usable ethernet node of device-tree are either not present

or their status has been marked as “disabled”.

– CDP Options:

CONFIG_CDP_DEVICE_ID

The device id used in CDP trigger frames.

CONFIG_CDP_DEVICE_ID_PREFIX

A two character string which is prefixed to the MAC address

of the device.

CONFIG_CDP_PORT_ID

A printf format string which contains the ascii name of

the port. Normally is set to “eth%d” which sets

eth0 for the first Ethernet, eth1 for the second etc.

CONFIG_CDP_CAPABILITIES

A 32bit integer which indicates the device capabilities;

0x00000010 for a normal host which does not forwards.

CONFIG_CDP_VERSION

An ascii string containing the version of the software.

CONFIG_CDP_PLATFORM

An ascii string containing the name of the platform.

CONFIG_CDP_TRIGGER

A 32bit integer sent on the trigger.

CONFIG_CDP_POWER_CONSUMPTION

A 16bit integer containing the power consumption of the

device in .1 of milliwatts.

CONFIG_CDP_APPLIANCE_VLAN_TYPE

A byte containing the id of the VLAN.

– Status LED: CONFIG_LED_STATUS

Several configurations allow to display the current

status using a LED. For instance, the LED will blink

fast while running U-Boot code, stop blinking as

soon as a reply to a BOOTP request was received, and

start blinking slow once the Linux kernel is running

(supported by a status LED driver in the Linux

kernel). Defining CONFIG_LED_STATUS enables this

feature in U-Boot.

Additional options:

CONFIG_LED_STATUS_GPIO

The status LED can be connected to a GPIO pin.

In such cases, the gpio_led driver can be used as a

status LED backend implementation. Define CONFIG_LED_STATUS_GPIO

to include the gpio_led driver in the U-Boot binary.

CFG_GPIO_LED_INVERTED_TABLE

Some GPIO connected LEDs may have inverted polarity in which

case the GPIO high value corresponds to LED off state and

GPIO low value corresponds to LED on state.

In such cases CFG_GPIO_LED_INVERTED_TABLE may be defined

with a list of GPIO LEDs that have inverted polarity.

– I2C Support:

CFG_SYS_NUM_I2C_BUSES

Hold the number of i2c buses you want to use.

CFG_SYS_I2C_DIRECT_BUS

define this, if you don’t use i2c muxes on your hardware.

if CFG_SYS_I2C_MAX_HOPS is not defined or == 0 you can

omit this define.

CFG_SYS_I2C_MAX_HOPS

define how many muxes are maximal consecutively connected

on one i2c bus. If you not use i2c muxes, omit this

define.

CFG_SYS_I2C_BUSES

hold a list of buses you want to use, only used if

CFG_SYS_I2C_DIRECT_BUS is not defined, for example

a board with CFG_SYS_I2C_MAX_HOPS = 1 and

CFG_SYS_NUM_I2C_BUSES = 9:

CFG_SYS_I2C_BUSES {{0, {I2C_NULL_HOP}}, \

{0, {{I2C_MUX_PCA9547, 0x70, 1}}}, \

{0, {{I2C_MUX_PCA9547, 0x70, 2}}}, \

{0, {{I2C_MUX_PCA9547, 0x70, 3}}}, \

{0, {{I2C_MUX_PCA9547, 0x70, 4}}}, \

{0, {{I2C_MUX_PCA9547, 0x70, 5}}}, \

{1, {I2C_NULL_HOP}}, \

{1, {{I2C_MUX_PCA9544, 0x72, 1}}}, \

{1, {{I2C_MUX_PCA9544, 0x72, 2}}}, \

}

which defines

bus 0 on adapter 0 without a mux

bus 1 on adapter 0 with a PCA9547 on address 0x70 port 1

bus 2 on adapter 0 with a PCA9547 on address 0x70 port 2

bus 3 on adapter 0 with a PCA9547 on address 0x70 port 3

bus 4 on adapter 0 with a PCA9547 on address 0x70 port 4

bus 5 on adapter 0 with a PCA9547 on address 0x70 port 5

bus 6 on adapter 1 without a mux

bus 7 on adapter 1 with a PCA9544 on address 0x72 port 1

bus 8 on adapter 1 with a PCA9544 on address 0x72 port 2

If you do not have i2c muxes on your board, omit this define.

– Legacy I2C Support:

If you use the software i2c interface (CONFIG_SYS_I2C_SOFT)

then the following macros need to be defined (examples are

from include/configs/lwmon.h):

I2C_INIT

(Optional). Any commands necessary to enable the I2C

controller or configure ports.

eg: #define I2C_INIT (immr->im_cpm.cp_pbdir |= PB_SCL)

I2C_ACTIVE

The code necessary to make the I2C data line active

(driven). If the data line is open collector, this

define can be null.

eg: #define I2C_ACTIVE (immr->im_cpm.cp_pbdir |= PB_SDA)

I2C_TRISTATE

The code necessary to make the I2C data line tri-stated

(inactive). If the data line is open collector, this

define can be null.

eg: #define I2C_TRISTATE (immr->im_cpm.cp_pbdir &= ~PB_SDA)

I2C_READ

Code that returns true if the I2C data line is high,

false if it is low.

eg: #define I2C_READ ((immr->im_cpm.cp_pbdat & PB_SDA) != 0)

I2C_SDA(bit)

If

is true, sets the I2C data line high. If it

is false, it clears it (low).

eg: #define I2C_SDA(bit) \

if(bit) immr->im_cpm.cp_pbdat |= PB_SDA; \

else immr->im_cpm.cp_pbdat &= ~PB_SDA

I2C_SCL(bit)

If

is true, sets the I2C clock line high. If it

is false, it clears it (low).

eg: #define I2C_SCL(bit) \

if(bit) immr->im_cpm.cp_pbdat |= PB_SCL; \

else immr->im_cpm.cp_pbdat &= ~PB_SCL

I2C_DELAY

This delay is invoked four times per clock cycle so this

controls the rate of data transfer. The data rate thus

is 1 / (I2C_DELAY * 4). Often defined to be something

like:

#define I2C_DELAY udelay(2)

CONFIG_SOFT_I2C_GPIO_SCL / CONFIG_SOFT_I2C_GPIO_SDA

If your arch supports the generic GPIO framework (asm/gpio.h),

then you may alternatively define the two GPIOs that are to be

used as SCL / SDA. Any of the previous I2C_xxx macros will

have GPIO-based defaults assigned to them as appropriate.

You should define these to the GPIO value as given directly to

the generic GPIO functions.

CFG_I2C_MULTI_BUS

This option allows the use of multiple I2C buses, each of which

must have a controller. At any point in time, only one bus is

active. To switch to a different bus, use the ‘i2c dev’ command.

Note that bus numbering is zero-based.

CFG_SYS_I2C_NOPROBES

This option specifies a list of I2C devices that will be skipped

when the ‘i2c probe’ command is issued.

e.g.

#define CFG_SYS_I2C_NOPROBES {0x50,0x68}

will skip addresses 0x50 and 0x68 on a board with one I2C bus

CFG_SYS_RTC_BUS_NUM

If defined, then this indicates the I2C bus number for the RTC.

If not defined, then U-Boot assumes that RTC is on I2C bus 0.

CONFIG_SOFT_I2C_READ_REPEATED_START

defining this will force the i2c_read() function in

the soft_i2c driver to perform an I2C repeated start

between writing the address pointer and reading the

data. If this define is omitted the default behaviour

of doing a stop-start sequence will be used. Most I2C

devices can use either method, but some require one or

the other.

– SPI Support: CONFIG_SPI

Enables SPI driver (so far only tested with

SPI EEPROM, also an instance works with Crystal A/D and

D/As on the SACSng board)

CFG_SYS_SPI_MXC_WAIT

Timeout for waiting until spi transfer completed.

default: (CONFIG_SYS_HZ/100) /* 10 ms */

– FPGA Support: CONFIG_FPGA

Enables FPGA subsystem.

CONFIG_FPGA_

Enables support for specific chip vendors.

(ALTERA, XILINX)

CONFIG_FPGA_

Enables support for FPGA family.

(SPARTAN2, SPARTAN3, VIRTEX2, CYCLONE2, ACEX1K, ACEX)

CONFIG_SYS_FPGA_CHECK_BUSY

Enable checks on FPGA configuration interface busy

status by the configuration function. This option

will require a board or device specific function to

be written.

CFG_FPGA_DELAY

If defined, a function that provides delays in the FPGA

configuration driver.

CFG_SYS_FPGA_CHECK_ERROR

Check for configuration errors during FPGA bitfile

loading. For example, abort during Virtex II

configuration if the INIT_B line goes low (which

indicated a CRC error).

CFG_SYS_FPGA_WAIT_INIT

Maximum time to wait for the INIT_B line to de-assert

after PROB_B has been de-asserted during a Virtex II

FPGA configuration sequence. The default time is 500

ms.

CFG_SYS_FPGA_WAIT_BUSY

Maximum time to wait for BUSY to de-assert during

Virtex II FPGA configuration. The default is 5 ms.

CFG_SYS_FPGA_WAIT_CONFIG

Time to wait after FPGA configuration. The default is

200 ms.

– Vendor Parameter Protection:

U-Boot considers the values of the environment

variables “serial#” (Board Serial Number) and

“ethaddr” (Ethernet Address) to be parameters that

are set once by the board vendor / manufacturer, and

protects these variables from casual modification by

the user. Once set, these variables are read-only,

and write or delete attempts are rejected. You can

change this behaviour:

If CONFIG_ENV_OVERWRITE is #defined in your config

file, the write protection for vendor parameters is

completely disabled. Anybody can change or delete

these parameters.

The same can be accomplished in a more flexible way

for any variable by configuring the type of access

to allow for those variables in the “.flags” variable

or define CFG_ENV_FLAGS_LIST_STATIC.

– Protected RAM:

CFG_PRAM

Define this variable to enable the reservation of

“protected RAM”, i. e. RAM which is not overwritten

by U-Boot. Define CFG_PRAM to hold the number of

kB you want to reserve for pRAM. You can overwrite

this default value by defining an environment

variable “pram” to the number of kB you want to

reserve. Note that the board info structure will

still show the full amount of RAM. If pRAM is

reserved, a new environment variable “mem” will

automatically be defined to hold the amount of

remaining RAM in a form that can be passed as boot

argument to Linux, for instance like that:

setenv bootargs … mem=\${mem}

saveenv

This way you can tell Linux not to use this memory,

either, which results in a memory region that will

not be affected by reboots.

*WARNING* If your board configuration uses automatic

detection of the RAM size, you must make sure that

this memory test is non-destructive. So far, the

following board configurations are known to be

“pRAM-clean”:

IVMS8, IVML24, SPD8xx,

HERMES, IP860, RPXlite, LWMON,

FLAGADM

– Error Recovery:

Note:

In the current implementation, the local variables

space and global environment variables space are

separated. Local variables are those you define by

simply typing `name=value’. To access a local

variable later on, you have write `$name’ or

`${name}’; to execute the contents of a variable

directly type `$name’ at the command prompt.

Global environment variables are those you use

setenv/printenv to work with. To run a command stored

in such a variable, you need to use the run command,

and you must not use the ‘$’ sign to access them.

To store commands and special characters in a

variable, please use double quotation marks

surrounding the whole text of the variable, instead

of the backslashes before semicolons and special

symbols.

– Default Environment:

CFG_EXTRA_ENV_SETTINGS

Define this to contain any number of null terminated

strings (variable = value pairs) that will be part of

the default environment compiled into the boot image.

For example, place something like this in your

board’s config file:

#define CFG_EXTRA_ENV_SETTINGS \

“myvar1=value1\0” \

“myvar2=value2\0”

Warning: This method is based on knowledge about the

internal format how the environment is stored by the

U-Boot code. This is NOT an official, exported

interface! Although it is unlikely that this format

will change soon, there is no guarantee either.

You better know what you are doing here.

Note: overly (ab)use of the default environment is

discouraged. Make sure to check other ways to preset

the environment like the “source” command or the

boot command first.

CONFIG_DELAY_ENVIRONMENT

Normally the environment is loaded when the board is

initialised so that it is available to U-Boot. This inhibits

that so that the environment is not available until

explicitly loaded later by U-Boot code. With CONFIG_OF_CONTROL

this is instead controlled by the value of

/config/load-environment.

– Automatic software updates via TFTP server

CONFIG_UPDATE_TFTP

CONFIG_UPDATE_TFTP_CNT_MAX

CONFIG_UPDATE_TFTP_MSEC_MAX

These options enable and control the auto-update feature;

for a more detailed description refer to doc/README.update.

– MTD Support (mtdparts command, UBI support)

CONFIG_MTD_UBI_WL_THRESHOLD

This parameter defines the maximum difference between the highest

erase counter value and the lowest erase counter value of eraseblocks

of UBI devices. When this threshold is exceeded, UBI starts performing

wear leveling by means of moving data from eraseblock with low erase

counter to eraseblocks with high erase counter.

The default value should be OK for SLC NAND flashes, NOR flashes and

other flashes which have eraseblock life-cycle 100000 or more.

However, in case of MLC NAND flashes which typically have eraseblock

life-cycle less than 10000, the threshold should be lessened (e.g.,

to 128 or 256, although it does not have to be power of 2).

default: 4096

CONFIG_MTD_UBI_BEB_LIMIT

This option specifies the maximum bad physical eraseblocks UBI

expects on the MTD device (per 1024 eraseblocks). If the

underlying flash does not admit of bad eraseblocks (e.g. NOR

flash), this value is ignored.

NAND datasheets often specify the minimum and maximum NVM

(Number of Valid Blocks) for the flashes’ endurance lifetime.

The maximum expected bad eraseblocks per 1024 eraseblocks

then can be calculated as “1024 * (1 – MinNVB / MaxNVB)”,

which gives 20 for most NANDs (MaxNVB is basically the total

count of eraseblocks on the chip).

To put it differently, if this value is 20, UBI will try to

reserve about 1.9% of physical eraseblocks for bad blocks

handling. And that will be 1.9% of eraseblocks on the entire

NAND chip, not just the MTD partition UBI attaches. This means

that if you have, say, a NAND flash chip admits maximum 40 bad

eraseblocks, and it is split on two MTD partitions of the same

size, UBI will reserve 40 eraseblocks when attaching a

partition.

default: 20

CONFIG_MTD_UBI_FASTMAP

Fastmap is a mechanism which allows attaching an UBI device

in nearly constant time. Instead of scanning the whole MTD device it

only has to locate a checkpoint (called fastmap) on the device.

The on-flash fastmap contains all information needed to attach

the device. Using fastmap makes only sense on large devices where

attaching by scanning takes long. UBI will not automatically install

a fastmap on old images, but you can set the UBI parameter

CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT to 1 if you want so. Please note

that fastmap-enabled images are still usable with UBI implementations

without fastmap support. On typical flash devices the whole fastmap

fits into one PEB. UBI will reserve PEBs to hold two fastmaps.

CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT

Set this parameter to enable fastmap automatically on images

without a fastmap.

default: 0

CONFIG_MTD_UBI_FM_DEBUG

Enable UBI fastmap debug

default: 0

– SPL framework

CONFIG_SPL

Enable building of SPL globally.

CONFIG_SPL_PANIC_ON_RAW_IMAGE

When defined, SPL will panic() if the image it has

loaded does not have a signature.

Defining this is useful when code which loads images

in SPL cannot guarantee that absolutely all read errors

will be caught.

An example is the LPC32XX MLC NAND driver, which will

consider that a completely unreadable NAND block is bad,

and thus should be skipped silently.

CONFIG_SPL_DISPLAY_PRINT

For ARM, enable an optional function to print more information

about the running system.

CONFIG_SPL_MPC83XX_WAIT_FOR_NAND

Set this for NAND SPL on PPC mpc83xx targets, so that

start.S waits for the rest of the SPL to load before

continuing (the hardware starts execution after just

loading the first page rather than the full 4K).

CONFIG_SPL_UBI

Support for a lightweight UBI (fastmap) scanner and

loader

CONFIG_SYS_NAND_5_ADDR_CYCLE, CONFIG_SYS_NAND_PAGE_SIZE,

CONFIG_SYS_NAND_OOBSIZE, CONFIG_SYS_NAND_BLOCK_SIZE,

CONFIG_SYS_NAND_BAD_BLOCK_POS, CFG_SYS_NAND_ECCPOS,

CFG_SYS_NAND_ECCSIZE, CFG_SYS_NAND_ECCBYTES

Defines the size and behavior of the NAND that SPL uses

to read U-Boot

CFG_SYS_NAND_U_BOOT_DST

Location in memory to load U-Boot to

CFG_SYS_NAND_U_BOOT_SIZE

Size of image to load

CFG_SYS_NAND_U_BOOT_START

Entry point in loaded image to jump to

CONFIG_SPL_RAM_DEVICE

Support for running image already present in ram, in SPL binary

CONFIG_SPL_FIT_PRINT

Printing information about a FIT image adds quite a bit of

code to SPL. So this is normally disabled in SPL. Use this

option to re-enable it. This will affect the output of the

bootm command when booting a FIT image.

– Interrupt support (PPC):

There are common interrupt_init() and timer_interrupt()

for all PPC archs. interrupt_init() calls interrupt_init_cpu()

for CPU specific initialization. interrupt_init_cpu()

should set decrementer_count to appropriate value. If

CPU resets decrementer automatically after interrupt

(ppc4xx) it should set decrementer_count to zero.

timer_interrupt() calls timer_interrupt_cpu() for CPU

specific handling. If board has watchdog / status_led

/ other_activity_monitor it works automatically from

general timer_interrupt().

Board initialization settings:

——————————

During Initialization u-boot calls a number of board specific functions

to allow the preparation of board specific prerequisites, e.g. pin setup

before drivers are initialized. To enable these callbacks the

following configuration macros have to be defined. Currently this is

architecture specific, so please check arch/your_architecture/lib/board.c

typically in board_init_f() and board_init_r().

– CONFIG_BOARD_EARLY_INIT_F: Call board_early_init_f()

– CONFIG_BOARD_EARLY_INIT_R: Call board_early_init_r()

– CONFIG_BOARD_LATE_INIT: Call board_late_init()

Configuration Settings:

———————–

– CONFIG_SYS_LONGHELP: Defined when you want long help messages included;

undefine this when you’re short of memory.

– CFG_SYS_HELP_CMD_WIDTH: Defined when you want to override the default

width of the commands listed in the ‘help’ command output.

– CONFIG_SYS_PROMPT: This is what U-Boot prints on the console to

prompt for user input.

– CFG_SYS_BAUDRATE_TABLE:

List of legal baudrate settings for this board.

– CFG_SYS_MEM_RESERVE_SECURE

Only implemented for ARMv8 for now.

If defined, the size of CFG_SYS_MEM_RESERVE_SECURE memory

is substracted from total RAM and won’t be reported to OS.

This memory can be used as secure memory. A variable

gd->arch.secure_ram is used to track the location. In systems

the RAM base is not zero, or RAM is divided into banks,

this variable needs to be recalcuated to get the address.

– CFG_SYS_SDRAM_BASE:

Physical start address of SDRAM. _Must_ be 0 here.

– CFG_SYS_FLASH_BASE:

Physical start address of Flash memory.

– CONFIG_SYS_MALLOC_LEN:

Size of DRAM reserved for malloc() use.

– CFG_SYS_BOOTMAPSZ:

Maximum size of memory mapped by the startup code of

the Linux kernel; all data that must be processed by

the Linux kernel (bd_info, boot arguments, FDT blob if

used) must be put below this limit, unless “bootm_low”

environment variable is defined and non-zero. In such case

all data for the Linux kernel must be between “bootm_low”

and “bootm_low” + CFG_SYS_BOOTMAPSZ. The environment

variable “bootm_mapsize” will override the value of

CFG_SYS_BOOTMAPSZ. If CFG_SYS_BOOTMAPSZ is undefined,

then the value in “bootm_size” will be used instead.

– CONFIG_SYS_BOOT_GET_CMDLINE:

Enables allocating and saving kernel cmdline in space between

“bootm_low” and “bootm_low” + BOOTMAPSZ.

– CONFIG_SYS_BOOT_GET_KBD:

Enables allocating and saving a kernel copy of the bd_info in

space between “bootm_low” and “bootm_low” + BOOTMAPSZ.

– CONFIG_SYS_FLASH_PROTECTION

If defined, hardware flash sectors protection is used

instead of U-Boot software protection.

– CONFIG_SYS_FLASH_CFI:

Define if the flash driver uses extra elements in the

common flash structure for storing flash geometry.

– CONFIG_FLASH_CFI_DRIVER

This option also enables the building of the cfi_flash driver

in the drivers directory

– CONFIG_FLASH_CFI_MTD

This option enables the building of the cfi_mtd driver

in the drivers directory. The driver exports CFI flash

to the MTD layer.

– CONFIG_SYS_FLASH_USE_BUFFER_WRITE

Use buffered writes to flash.

– CONFIG_ENV_FLAGS_LIST_DEFAULT

– CFG_ENV_FLAGS_LIST_STATIC

Enable validation of the values given to environment variables when

calling env set. Variables can be restricted to only decimal,

hexadecimal, or boolean. If CONFIG_CMD_NET is also defined,

the variables can also be restricted to IP address or MAC address.

The format of the list is:

type_attribute = [s|d|x|b|i|m]

access_attribute = [a|r|o|c]

attributes = type_attribute[access_attribute]

entry = variable_name[:attributes]

list = entry[,list]

The type attributes are:

s – String (default)

d – Decimal

x – Hexadecimal

b – Boolean ([1yYtT|0nNfF])

i – IP address

m – MAC address

The access attributes are:

a – Any (default)

r – Read-only

o – Write-once

c – Change-default

– CONFIG_ENV_FLAGS_LIST_DEFAULT

Define this to a list (string) to define the “.flags”

environment variable in the default or embedded environment.

– CFG_ENV_FLAGS_LIST_STATIC

Define this to a list (string) to define validation that

should be done if an entry is not found in the “.flags”

environment variable. To override a setting in the static

list, simply add an entry for the same variable name to the

“.flags” variable.

If CONFIG_REGEX is defined, the variable_name above is evaluated as a

regular expression. This allows multiple variables to define the same

flags without explicitly listing them for each variable.

The following definitions that deal with the placement and management

of environment data (variable area); in general, we support the

following configurations:

BE CAREFUL! The first access to the environment happens quite early

in U-Boot initialization (when we try to get the setting of for the

console baudrate). You *MUST* have mapped your NVRAM area then, or

U-Boot will hang.

Please note that even with NVRAM we still use a copy of the

environment in RAM: we could work on NVRAM directly, but we want to

keep settings there always unmodified except somebody uses “saveenv”

to save the current settings.

BE CAREFUL! For some special cases, the local device can not use

“saveenv” command. For example, the local device will get the

environment stored in a remote NOR flash by SRIO or PCIE link,

but it can not erase, write this NOR flash by SRIO or PCIE interface.

– CONFIG_NAND_ENV_DST

Defines address in RAM to which the nand_spl code should copy the

environment. If redundant environment is used, it will be copied to

CONFIG_NAND_ENV_DST + CONFIG_ENV_SIZE.

Please note that the environment is read-only until the monitor

has been relocated to RAM and a RAM copy of the environment has been

created; also, when using EEPROM you will have to use env_get_f()

until then to read environment variables.

The environment is protected by a CRC32 checksum. Before the monitor

is relocated into RAM, as a result of a bad CRC you will be working

with the compiled-in default environment – *silently*!!! [This is

necessary, because the first environment variable we need is the

“baudrate” setting for the console – if we have a bad CRC, we don’t

have any device yet where we could complain.]

Note: once the monitor has been relocated, then it will complain if

the default environment is used; a new CRC is computed as soon as you

use the “saveenv” command to store a valid environment.

– CONFIG_SYS_FAULT_MII_ADDR:

MII address of the PHY to check for the Ethernet link state.

– CONFIG_DISPLAY_BOARDINFO

Display information about the board that U-Boot is running on

when U-Boot starts up. The board function checkboard() is called

to do this.

– CONFIG_DISPLAY_BOARDINFO_LATE

Similar to the previous option, but display this information

later, once stdio is running and output goes to the LCD, if

present.

Low Level (hardware related) configuration options:

—————————————————

– CONFIG_SYS_CACHELINE_SIZE:

Cache Line Size of the CPU.

– CONFIG_SYS_CCSRBAR_DEFAULT:

Default (power-on reset) physical address of CCSR on Freescale

PowerPC SOCs.

– CFG_SYS_CCSRBAR:

Virtual address of CCSR. On a 32-bit build, this is typically

the same value as CONFIG_SYS_CCSRBAR_DEFAULT.

– CFG_SYS_CCSRBAR_PHYS:

Physical address of CCSR. CCSR can be relocated to a new

physical address, if desired. In this case, this macro should

be set to that address. Otherwise, it should be set to the

same value as CONFIG_SYS_CCSRBAR_DEFAULT. For example, CCSR

is typically relocated on 36-bit builds. It is recommended

that this macro be defined via the _HIGH and _LOW macros:

#define CFG_SYS_CCSRBAR_PHYS ((CFG_SYS_CCSRBAR_PHYS_HIGH

* 1ull) << 32 | CFG_SYS_CCSRBAR_PHYS_LOW)

– CFG_SYS_CCSRBAR_PHYS_HIGH:

Bits 33-36 of CFG_SYS_CCSRBAR_PHYS. This value is typically

either 0 (32-bit build) or 0xF (36-bit build). This macro is

used in assembly code, so it must not contain typecasts or

integer size suffixes (e.g. “ULL”).

– CFG_SYS_CCSRBAR_PHYS_LOW:

Lower 32-bits of CFG_SYS_CCSRBAR_PHYS. This macro is

used in assembly code, so it must not contain typecasts or

integer size suffixes (e.g. “ULL”).

– CONFIG_SYS_IMMR: Physical address of the Internal Memory.

DO NOT CHANGE unless you know exactly what you’re

doing! (11-4) [MPC8xx systems only]

– CFG_SYS_INIT_RAM_ADDR:

Start address of memory area that can be used for

initial data and stack; please note that this must be

writable memory that is working WITHOUT special

initialization, i. e. you CANNOT use normal RAM which

will become available only after programming the

memory controller and running certain initialization

sequences.

U-Boot uses the following memory types:

– MPC8xx: IMMR (internal memory of the CPU)

– CONFIG_SYS_SCCR: System Clock and reset Control Register (15-27)

– CONFIG_SYS_OR_TIMING_SDRAM:

SDRAM timing

– CONFIG_SYS_SRIOn_MEM_VIRT:

Virtual Address of SRIO port ‘n’ memory region

– CONFIG_SYS_SRIOn_MEM_PHYxS:

Physical Address of SRIO port ‘n’ memory region

– CONFIG_SYS_SRIOn_MEM_SIZE:

Size of SRIO port ‘n’ memory region

– CONFIG_SYS_NAND_BUSWIDTH_16BIT

Defined to tell the NAND controller that the NAND chip is using

a 16 bit bus.

Not all NAND drivers use this symbol.

Example of drivers that use it:

– drivers/mtd/nand/raw/ndfc.c

– drivers/mtd/nand/raw/mxc_nand.c

– CONFIG_SYS_NDFC_EBC0_CFG

Sets the EBC0_CFG register for the NDFC. If not defined

a default value will be used.

– CONFIG_SYS_SPD_BUS_NUM

If SPD EEPROM is on an I2C bus other than the first

one, specify here. Note that the value must resolve

to something your driver can deal with.

– CONFIG_FSL_DDR_INTERACTIVE

Enable interactive DDR debugging. See doc/README.fsl-ddr.

– CONFIG_FSL_DDR_SYNC_REFRESH

Enable sync of refresh for multiple controllers.

– CONFIG_FSL_DDR_BIST

Enable built-in memory test for Freescale DDR controllers.

– CONFIG_RMII

Enable RMII mode for all FECs.

Note that this is a global option, we can’t

have one FEC in standard MII mode and another in RMII mode.

– CONFIG_CRC32_VERIFY

Add a verify option to the crc32 command.

The syntax is:

=> crc32 -v


Where address/count indicate a memory area

and crc32 is the correct crc32 which the

area should have.

– CONFIG_LOOPW

Add the “loopw” memory command. This only takes effect if

the memory commands are activated globally (CONFIG_CMD_MEMORY).

– CONFIG_CMD_MX_CYCLIC

Add the “mdc” and “mwc” memory commands. These are cyclic

“md/mw” commands.

Examples:

=> mdc.b 10 4 500

This command will print 4 bytes (10,11,12,13) each 500 ms.

=> mwc.l 100 12345678 10

This command will write 12345678 to address 100 all 10 ms.

This only takes effect if the memory commands are activated

globally (CONFIG_CMD_MEMORY).

– CONFIG_SPL_BUILD

Set when the currently running compilation is for an artifact

that will end up in one of the ‘xPL’ builds, i.e. SPL, TPL or

VPL. Code that needs phase-specific behaviour can check this,

or (where possible) use spl_phase() instead.

Note that CONFIG_SPL_BUILD *is* always defined when either

of CONFIG_TPL_BUILD / CONFIG_VPL_BUILD is defined. This can be

counter-intuitive and should perhaps be changed.

– CONFIG_TPL_BUILD

Set when the currently running compilation is for an artifact

that will end up in the TPL build (as opposed to SPL, VPL or

U-Boot proper). Code that needs phase-specific behaviour can

check this, or (where possible) use spl_phase() instead.

– CONFIG_VPL_BUILD

Set when the currently running compilation is for an artifact

that will end up in the VPL build (as opposed to the SPL, TPL

or U-Boot proper). Code that needs phase-specific behaviour can

check this, or (where possible) use spl_phase() instead.

– CONFIG_ARCH_MAP_SYSMEM

Generally U-Boot (and in particular the md command) uses

effective address. It is therefore not necessary to regard

U-Boot address as virtual addresses that need to be translated

to physical addresses. However, sandbox requires this, since

it maintains its own little RAM buffer which contains all

addressable memory. This option causes some memory accesses

to be mapped through map_sysmem() / unmap_sysmem().

– CONFIG_X86_RESET_VECTOR

If defined, the x86 reset vector code is included. This is not

needed when U-Boot is running from Coreboot.

Freescale QE/FMAN Firmware Support:

———————————–

The Freescale QUICCEngine (QE) and Frame Manager (FMAN) both support the

loading of “firmware”, which is encoded in the QE firmware binary format.

This firmware often needs to be loaded during U-Boot booting, so macros

are used to identify the storage device (NOR flash, SPI, etc) and the address

within that device.

– CONFIG_SYS_FMAN_FW_ADDR

The address in the storage device where the FMAN microcode is located. The

meaning of this address depends on which CONFIG_SYS_QE_FMAN_FW_IN_xxx macro

is also specified.

– CONFIG_SYS_QE_FW_ADDR

The address in the storage device where the QE microcode is located. The

meaning of this address depends on which CONFIG_SYS_QE_FMAN_FW_IN_xxx macro

is also specified.

– CONFIG_SYS_QE_FMAN_FW_LENGTH

The maximum possible size of the firmware. The firmware binary format

has a field that specifies the actual size of the firmware, but it

might not be possible to read any part of the firmware unless some

local storage is allocated to hold the entire firmware first.

– CONFIG_SYS_QE_FMAN_FW_IN_NOR

Specifies that QE/FMAN firmware is located in NOR flash, mapped as

normal addressable memory via the LBC. CONFIG_SYS_FMAN_FW_ADDR is the

virtual address in NOR flash.

– CONFIG_SYS_QE_FMAN_FW_IN_NAND

Specifies that QE/FMAN firmware is located in NAND flash.

CONFIG_SYS_FMAN_FW_ADDR is the offset within NAND flash.

– CONFIG_SYS_QE_FMAN_FW_IN_MMC

Specifies that QE/FMAN firmware is located on the primary SD/MMC

device. CONFIG_SYS_FMAN_FW_ADDR is the byte offset on that device.

– CONFIG_SYS_QE_FMAN_FW_IN_REMOTE

Specifies that QE/FMAN firmware is located in the remote (master)

memory space. CONFIG_SYS_FMAN_FW_ADDR is a virtual address which

can be mapped from slave TLB->slave LAW->slave SRIO or PCIE outbound

window->master inbound window->master LAW->the ucode address in

master’s memory space.

Freescale Layerscape Management Complex Firmware Support:

———————————————————

The Freescale Layerscape Management Complex (MC) supports the loading of

“firmware”.

This firmware often needs to be loaded during U-Boot booting, so macros

are used to identify the storage device (NOR flash, SPI, etc) and the address

within that device.

– CONFIG_FSL_MC_ENET

Enable the MC driver for Layerscape SoCs.

Freescale Layerscape Debug Server Support:

——————————————-

The Freescale Layerscape Debug Server Support supports the loading of

“Debug Server firmware” and triggering SP boot-rom.

This firmware often needs to be loaded during U-Boot booting.

– CONFIG_SYS_MC_RSV_MEM_ALIGN

Define alignment of reserved memory MC requires

Building the Software:

======================

Building U-Boot has been tested in several native build environments

and in many different cross environments. Of course we cannot support

all possibly existing versions of cross development tools in all

(potentially obsolete) versions. In case of tool chain problems we

recommend to use the ELDK (see https://www.denx.de/wiki/DULG/ELDK)

which is extensively used to build and test U-Boot.

If you are not using a native environment, it is assumed that you

have GNU cross compiling tools available in your path. In this case,

you must set the environment variable CROSS_COMPILE in your shell.

Note that no changes to the Makefile or any other source files are

necessary. For example using the ELDK on a 4xx CPU, please enter:

$ CROSS_COMPILE=ppc_4xx-

$ export CROSS_COMPILE

U-Boot is intended to be simple to build. After installing the

sources you must configure U-Boot for one specific board type. This

is done by typing:

make NAME_defconfig

where “NAME_defconfig” is the name of one of the existing configu-

rations; see configs/*_defconfig for supported names.

Note: for some boards special configuration names may exist; check if

additional information is available from the board vendor; for

instance, the TQM823L systems are available without (standard)

or with LCD support. You can select such additional “features”

when choosing the configuration, i. e.

make TQM823L_defconfig

– will configure for a plain TQM823L, i. e. no LCD support

make TQM823L_LCD_defconfig

– will configure for a TQM823L with U-Boot console on LCD

etc.

Finally, type “make all”, and you should get some working U-Boot

images ready for download to / installation on your system:

– “u-boot.bin” is a raw binary image

– “u-boot” is an image in ELF binary format

– “u-boot.srec” is in Motorola S-Record format

By default the build is performed locally and the objects are saved

in the source directory. One of the two methods can be used to change

this behavior and build U-Boot to some external directory:

1. Add O= to the make command line invocations:

make O=/tmp/build distclean

make O=/tmp/build NAME_defconfig

make O=/tmp/build all

2. Set environment variable KBUILD_OUTPUT to point to the desired location:

export KBUILD_OUTPUT=/tmp/build

make distclean

make NAME_defconfig

make all

Note that the command line “O=” setting overrides the KBUILD_OUTPUT environment

variable.

User specific CPPFLAGS, AFLAGS and CFLAGS can be passed to the compiler by

setting the according environment variables KCPPFLAGS, KAFLAGS and KCFLAGS.

For example to treat all compiler warnings as errors:

make KCFLAGS=-Werror

Please be aware that the Makefiles assume you are using GNU make, so

for instance on NetBSD you might need to use “gmake” instead of

native “make”.

If the system board that you have is not listed, then you will need

to port U-Boot to your hardware platform. To do this, follow these

steps:

1. Create a new directory to hold your board specific code. Add any

files you need. In your board directory, you will need at least

the “Makefile” and a ”

.c”.

2. Create a new configuration file “include/configs/

.h” for

your board.

3. If you’re porting U-Boot to a new CPU, then also create a new

directory to hold your CPU specific code. Add any files you need.

4. Run “make

_defconfig” with your new name.

5. Type “make”, and you should get a working “u-boot.srec” file

to be installed on your target system.

6. Debug and solve any problems that might arise.

[Of course, this last step is much harder than it sounds.]

Testing of U-Boot Modifications, Ports to New Hardware, etc.:

==============================================================

If you have modified U-Boot sources (for instance added a new board

or support for new devices, a new CPU, etc.) you are expected to

provide feedback to the other developers. The feedback normally takes

the form of a “patch”, i.e. a context diff against a certain (latest

official or latest in the git repository) version of U-Boot sources.

But before you submit such a patch, please verify that your modifi-

cation did not break existing code. At least make sure that *ALL* of

the supported boards compile WITHOUT ANY compiler warnings. To do so,

just run the buildman script (tools/buildman/buildman), which will

configure and build U-Boot for ALL supported system. Be warned, this

will take a while. Please see the buildman README, or run ‘buildman -H’

for documentation.

See also “U-Boot Porting Guide” below.

Monitor Commands – Overview:

============================

go – start application at address ‘addr’

run – run commands in an environment variable

bootm – boot application image from memory

bootp – boot image via network using BootP/TFTP protocol

bootz – boot zImage from memory

tftpboot- boot image via network using TFTP protocol

and env variables “ipaddr” and “serverip”

(and eventually “gatewayip”)

tftpput – upload a file via network using TFTP protocol

rarpboot- boot image via network using RARP/TFTP protocol

diskboot- boot from IDE devicebootd – boot default, i.e., run ‘bootcmd’

loads – load S-Record file over serial line

loadb – load binary file over serial line (kermit mode)

loadm – load binary blob from source address to destination address

md – memory display

mm – memory modify (auto-incrementing)

nm – memory modify (constant address)

mw – memory write (fill)

ms – memory search

cp – memory copy

cmp – memory compare

crc32 – checksum calculation

i2c – I2C sub-system

sspi – SPI utility commands

base – print or set address offset

printenv- print environment variables

pwm – control pwm channels

seama – load SEAMA NAND image

setenv – set environment variables

saveenv – save environment variables to persistent storage

protect – enable or disable FLASH write protection

erase – erase FLASH memory

flinfo – print FLASH memory information

nand – NAND memory operations (see doc/README.nand)

bdinfo – print Board Info structure

iminfo – print header information for application image

coninfo – print console devices and informations

ide – IDE sub-system

loop – infinite loop on address range

loopw – infinite write loop on address range

mtest – simple RAM test

icache – enable or disable instruction cache

dcache – enable or disable data cache

reset – Perform RESET of the CPU

echo – echo args to console

version – print monitor version

help – print online help

? – alias for ‘help’

Monitor Commands – Detailed Description:

========================================

TODO.

For now: just type “help

“.

Note for Redundant Ethernet Interfaces:

=======================================

Some boards come with redundant Ethernet interfaces; U-Boot supports

such configurations and is capable of automatic selection of a

“working” interface when needed. MAC assignment works as follows:

Network interfaces are numbered eth0, eth1, eth2, … Corresponding

MAC addresses can be stored in the environment as “ethaddr” (=>eth0),

“eth1addr” (=>eth1), “eth2addr”, …

If the network interface stores some valid MAC address (for instance

in SROM), this is used as default address if there is NO correspon-

ding setting in the environment; if the corresponding environment

variable is set, this overrides the settings in the card; that means:

o If the SROM has a valid MAC address, and there is no address in the

environment, the SROM’s address is used.

o If there is no valid address in the SROM, and a definition in the

environment exists, then the value from the environment variable is

used.

o If both the SROM and the environment contain a MAC address, and

both addresses are the same, this MAC address is used.

o If both the SROM and the environment contain a MAC address, and the

addresses differ, the value from the environment is used and a

warning is printed.

o If neither SROM nor the environment contain a MAC address, an error

is raised. If CONFIG_NET_RANDOM_ETHADDR is defined, then in this case

a random, locally-assigned MAC is used.

If Ethernet drivers implement the ‘write_hwaddr’ function, valid MAC addresses

will be programmed into hardware as part of the initialization process. This

may be skipped by setting the appropriate ‘ethmacskip’ environment variable.

The naming convention is as follows:

“ethmacskip” (=>eth0), “eth1macskip” (=>eth1) etc.

Image Formats:

==============

U-Boot is capable of booting (and performing other auxiliary operations on)

images in two formats:

New uImage format (FIT)

———————–

Flexible and powerful format based on Flattened Image Tree — FIT (similar

to Flattened Device Tree). It allows the use of images with multiple

components (several kernels, ramdisks, etc.), with contents protected by

SHA1, MD5 or CRC32. More details are found in the doc/uImage.FIT directory.

Old uImage format

—————–

Old image format is based on binary files which can be basically anything,

preceded by a special header; see the definitions in include/image.h for

details; basically, the header defines the following image properties:

* Target Operating System (Provisions for OpenBSD, NetBSD, FreeBSD,

4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks,

LynxOS, pSOS, QNX, RTEMS, INTEGRITY;

Currently supported: Linux, NetBSD, VxWorks, QNX, RTEMS, INTEGRITY).

* Target CPU Architecture (Provisions for Alpha, ARM, Intel x86,

IA64, MIPS, Nios II, PowerPC, IBM S390, SuperH, Sparc, Sparc 64 Bit;

Currently supported: ARM, Intel x86, MIPS, Nios II, PowerPC).

* Compression Type (uncompressed, gzip, bzip2)

* Load Address

* Entry Point

* Image Name

* Image Timestamp

The header is marked by a special Magic Number, and both the header

and the data portions of the image are secured against corruption by

CRC32 checksums.

Linux Support:

==============

Although U-Boot should support any OS or standalone application

easily, the main focus has always been on Linux during the design of

U-Boot.

U-Boot includes many features that so far have been part of some

special “boot loader” code within the Linux kernel. Also, any

“initrd” images to be used are no longer part of one big Linux image;

instead, kernel and “initrd” are separate images. This implementation

serves several purposes:

– the same features can be used for other OS or standalone

applications (for instance: using compressed images to reduce the

Flash memory footprint)

– it becomes much easier to port new Linux kernel versions because

lots of low-level, hardware dependent stuff are done by U-Boot

– the same Linux kernel image can now be used with different “initrd”

images; of course this also means that different kernel images can

be run with the same “initrd”. This makes testing easier (you don’t

have to build a new “zImage.initrd” Linux image when you just

change a file in your “initrd”). Also, a field-upgrade of the

software is easier now.

Linux HOWTO:

============

Porting Linux to U-Boot based systems:

—————————————

U-Boot cannot save you from doing all the necessary modifications to

configure the Linux device drivers for use with your target hardware

(no, we don’t intend to provide a full virtual machine interface to

Linux :-).

But now you can ignore ALL boot loader code (in arch/powerpc/mbxboot).

Just make sure your machine specific header file (for instance

include/asm-ppc/tqm8xx.h) includes the same definition of the Board

Information structure as we define in include/asm-

/u-boot.h,

and make sure that your definition of IMAP_ADDR uses the same value

as your U-Boot configuration in CONFIG_SYS_IMMR.

Note that U-Boot now has a driver model, a unified model for drivers.

If you are adding a new driver, plumb it into driver model. If there

is no uclass available, you are encouraged to create one. See

doc/driver-model.

Configuring the Linux kernel:

—————————–

No specific requirements for U-Boot. Make sure you have some root

device (initial ramdisk, NFS) for your target system.

Building a Linux Image:

———————–

With U-Boot, “normal” build targets like “zImage” or “bzImage” are

not used. If you use recent kernel source, a new build target

“uImage” will exist which automatically builds an image usable by

U-Boot. Most older kernels also have support for a “pImage” target,

which was introduced for our predecessor project PPCBoot and uses a

100% compatible format.

Example:

make TQM850L_defconfig

make oldconfig

make dep

make uImage

The “uImage” build target uses a special tool (in ‘tools/mkimage’) to

encapsulate a compressed Linux kernel image with header information,

CRC32 checksum etc. for use with U-Boot. This is what we are doing:

* build a standard “vmlinux” kernel image (in ELF binary format):

* convert the kernel into a raw binary image:

${CROSS_COMPILE}-objcopy -O binary \

-R .note -R .comment \

-S vmlinux linux.bin

* compress the binary image:

gzip -9 linux.bin

* package compressed binary image for U-Boot:

mkimage -A ppc -O linux -T kernel -C gzip \

-a 0 -e 0 -n “Linux Kernel Image” \

-d linux.bin.gz uImage

The “mkimage” tool can also be used to create ramdisk images for use

with U-Boot, either separated from the Linux kernel image, or

combined into one file. “mkimage” encapsulates the images with a 64

byte header containing information about target architecture,

operating system, image type, compression method, entry points, time

stamp, CRC32 checksums, etc.

“mkimage” can be called in two ways: to verify existing images and

print the header information, or to build new images.

In the first form (with “-l” option) mkimage lists the information

contained in the header of an existing U-Boot image; this includes

checksum verification:

tools/mkimage -l image

-l ==> list image header information

The second form (with “-d” option) is used to build a U-Boot image

from a “data file” which is used as image payload:

tools/mkimage -A arch -O os -T type -C comp -a addr -e ep \

-n name -d data_file image

-A ==> set architecture to ‘arch’

-O ==> set operating system to ‘os’

-T ==> set image type to ‘type’

-C ==> set compression type ‘comp’

-a ==> set load address to ‘addr’ (hex)

-e ==> set entry point to ‘ep’ (hex)

-n ==> set image name to ‘name’

-d ==> use image data from ‘datafile’

Right now, all Linux kernels for PowerPC systems use the same load

address (0x00000000), but the entry point address depends on the

kernel version:

– 2.2.x kernels have the entry point at 0x0000000C,

– 2.3.x and later kernels have the entry point at 0x00000000.

So a typical call to build a U-Boot image would read:

-> tools/mkimage -n ‘2.4.4 kernel for TQM850L’ \

> -A ppc -O linux -T kernel -C gzip -a 0 -e 0 \

> -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux.gz \

> examples/uImage.TQM850L

Image Name: 2.4.4 kernel for TQM850L

Created: Wed Jul 19 02:34:59 2000

Image Type: PowerPC Linux Kernel Image (gzip compressed)

Data Size: 335725 Bytes = 327.86 kB = 0.32 MB

Load Address: 0x00000000

Entry Point: 0x00000000

To verify the contents of the image (or check for corruption):

-> tools/mkimage -l examples/uImage.TQM850L

Image Name: 2.4.4 kernel for TQM850L

Created: Wed Jul 19 02:34:59 2000

Image Type: PowerPC Linux Kernel Image (gzip compressed)

Data Size: 335725 Bytes = 327.86 kB = 0.32 MB

Load Address: 0x00000000

Entry Point: 0x00000000

NOTE: for embedded systems where boot time is critical you can trade

speed for memory and install an UNCOMPRESSED image instead: this

needs more space in Flash, but boots much faster since it does not

need to be uncompressed:

-> gunzip /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux.gz

-> tools/mkimage -n ‘2.4.4 kernel for TQM850L’ \

> -A ppc -O linux -T kernel -C none -a 0 -e 0 \

> -d /opt/elsk/ppc_8xx/usr/src/linux-2.4.4/arch/powerpc/coffboot/vmlinux \

> examples/uImage.TQM850L-uncompressed

Image Name: 2.4.4 kernel for TQM850L

Created: Wed Jul 19 02:34:59 2000

Image Type: PowerPC Linux Kernel Image (uncompressed)

Data Size: 792160 Bytes = 773.59 kB = 0.76 MB

Load Address: 0x00000000

Entry Point: 0x00000000

Similar you can build U-Boot images from a ‘ramdisk.image.gz’ file

when your kernel is intended to use an initial ramdisk:

-> tools/mkimage -n ‘Simple Ramdisk Image’ \

> -A ppc -O linux -T ramdisk -C gzip \

> -d /LinuxPPC/images/SIMPLE-ramdisk.image.gz examples/simple-initrd

Image Name: Simple Ramdisk Image

Created: Wed Jan 12 14:01:50 2000

Image Type: PowerPC Linux RAMDisk Image (gzip compressed)

Data Size: 566530 Bytes = 553.25 kB = 0.54 MB

Load Address: 0x00000000

Entry Point: 0x00000000

The “dumpimage” tool can be used to disassemble or list the contents of images

built by mkimage. See dumpimage’s help output (-h) for details.

Installing a Linux Image:

————————-

To downloading a U-Boot image over the serial (console) interface,

you must convert the image to S-Record format:

objcopy -I binary -O srec examples/image examples/image.srec

The ‘objcopy’ does not understand the information in the U-Boot

image header, so the resulting S-Record file will be relative to

address 0x00000000. To load it to a given address, you need to

specify the target address as ‘offset’ parameter with the ‘loads’

command.

Example: install the image to address 0x40100000 (which on the

TQM8xxL is in the first Flash bank):

=> erase 40100000 401FFFFF

………. done

Erased 8 sectors

=> loads 40100000

## Ready for S-Record download …

~>examples/image.srec

1 2 3 4 5 6 7 8 9 10 11 12 13 …

15989 15990 15991 15992

[file transfer complete]

[connected]

## Start Addr = 0x00000000

You can check the success of the download using the ‘iminfo’ command;

this includes a checksum verification so you can be sure no data

corruption happened:

=> imi 40100000

## Checking Image at 40100000 …

Image Name: 2.2.13 for initrd on TQM850L

Image Type: PowerPC Linux Kernel Image (gzip compressed)

Data Size: 335725 Bytes = 327 kB = 0 MB

Load Address: 00000000

Entry Point: 0000000c

Verifying Checksum … OK

Boot Linux:

———–

The “bootm” command is used to boot an application that is stored in

memory (RAM or Flash). In case of a Linux kernel image, the contents

of the “bootargs” environment variable is passed to the kernel as

parameters. You can check and modify this variable using the

“printenv” and “setenv” commands:

=> printenv bootargs

bootargs=root=/dev/ram

=> setenv bootargs root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2

=> printenv bootargs

bootargs=root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2

=> bootm 40020000

## Booting Linux kernel at 40020000 …

Image Name: 2.2.13 for NFS on TQM850L

Image Type: PowerPC Linux Kernel Image (gzip compressed)

Data Size: 381681 Bytes = 372 kB = 0 MB

Load Address: 00000000

Entry Point: 0000000c

Verifying Checksum … OK

Uncompressing Kernel Image … OK

Linux version 2.2.13 ([email protected]) (gcc version 2.95.2 19991024 (release)) #1 Wed Jul 19 02:35:17 MEST 2000

Boot arguments: root=/dev/nfs rw nfsroot=10.0.0.2:/LinuxPPC nfsaddrs=10.0.0.99:10.0.0.2

time_init: decrementer frequency = 187500000/60

Calibrating delay loop… 49.77 BogoMIPS

Memory: 15208k available (700k kernel code, 444k data, 32k init) [c0000000,c1000000]

If you want to boot a Linux kernel with initial RAM disk, you pass

the memory addresses of both the kernel and the initrd image (PPBCOOT

format!) to the “bootm” command:

=> imi 40100000 40200000

## Checking Image at 40100000 …

Image Name: 2.2.13 for initrd on TQM850L

Image Type: PowerPC Linux Kernel Image (gzip compressed)

Data Size: 335725 Bytes = 327 kB = 0 MB

Load Address: 00000000

Entry Point: 0000000c

Verifying Checksum … OK

## Checking Image at 40200000 …

Image Name: Simple Ramdisk Image

Image Type: PowerPC Linux RAMDisk Image (gzip compressed)

Data Size: 566530 Bytes = 553 kB = 0 MB

Load Address: 00000000

Entry Point: 00000000

Verifying Checksum … OK

=> bootm 40100000 40200000

## Booting Linux kernel at 40100000 …

Image Name: 2.2.13 for initrd on TQM850L

Image Type: PowerPC Linux Kernel Image (gzip compressed)

Data Size: 335725 Bytes = 327 kB = 0 MB

Load Address: 00000000

Entry Point: 0000000c

Verifying Checksum … OK

Uncompressing Kernel Image … OK

## Loading RAMDisk Image at 40200000 …

Image Name: Simple Ramdisk Image

Image Type: PowerPC Linux RAMDisk Image (gzip compressed)

Data Size: 566530 Bytes = 553 kB = 0 MB

Load Address: 00000000

Entry Point: 00000000

Verifying Checksum … OK

Loading Ramdisk … OK

Linux version 2.2.13 ([email protected]) (gcc version 2.95.2 19991024 (release)) #1 Wed Jul 19 02:32:08 MEST 2000

Boot arguments: root=/dev/ram

time_init: decrementer frequency = 187500000/60

Calibrating delay loop… 49.77 BogoMIPS

RAMDISK: Compressed image found at block 0

VFS: Mounted root (ext2 filesystem).

bash#

Boot Linux and pass a flat device tree:

———–

First, U-Boot must be compiled with the appropriate defines. See the section

titled “Linux Kernel Interface” above for a more in depth explanation. The

following is an example of how to start a kernel and pass an updated

flat device tree:

=> print oftaddr

oftaddr=0x300000

=> print oft

oft=oftrees/mpc8540ads.dtb

=> tftp $oftaddr $oft

Speed: 1000, full duplex

Using TSEC0 device

TFTP from server 192.168.1.1; our IP address is 192.168.1.101

Filename ‘oftrees/mpc8540ads.dtb’.

Load address: 0x300000

Loading: #

done

Bytes transferred = 4106 (100a hex)

=> tftp $loadaddr $bootfile

Speed: 1000, full duplex

Using TSEC0 device

TFTP from server 192.168.1.1; our IP address is 192.168.1.2

Filename ‘uImage’.

Load address: 0x200000

Loading:############

done

Bytes transferred = 1029407 (fb51f hex)

=> print loadaddr

loadaddr=200000

=> print oftaddr

oftaddr=0x300000

=> bootm $loadaddr – $oftaddr

## Booting image at 00200000 …

Image Name: Linux-2.6.17-dirty

Image Type: PowerPC Linux Kernel Image (gzip compressed)

Data Size: 1029343 Bytes = 1005.2 kB

Load Address: 00000000

Entry Point: 00000000

Verifying Checksum … OK

Uncompressing Kernel Image … OK

Booting using flat device tree at 0x300000

Using MPC85xx ADS machine description

Memory CAM mapping: CAM0=256Mb, CAM1=256Mb, CAM2=0Mb residual: 0Mb

[snip]

More About U-Boot Image Types:

——————————

U-Boot supports the following image types:

“Standalone Programs” are directly runnable in the environment

provided by U-Boot; it is expected that (if they behave

well) you can continue to work in U-Boot after return from

the Standalone Program.

“OS Kernel Images” are usually images of some Embedded OS which

will take over control completely. Usually these programs

will install their own set of exception handlers, device

drivers, set up the MMU, etc. – this means, that you cannot

expect to re-enter U-Boot except by resetting the CPU.

“RAMDisk Images” are more or less just data blocks, and their

parameters (address, size) are passed to an OS kernel that is

being started.

“Multi-File Images” contain several images, typically an OS

(Linux) kernel image and one or more data images like

RAMDisks. This construct is useful for instance when you want

to boot over the network using BOOTP etc., where the boot

server provides just a single image file, but you want to get

for instance an OS kernel and a RAMDisk image.

“Multi-File Images” start with a list of image sizes, each

image size (in bytes) specified by an “uint32_t” in network

byte order. This list is terminated by an “(uint32_t)0”.

Immediately after the terminating 0 follow the images, one by

one, all aligned on “uint32_t” boundaries (size rounded up to

a multiple of 4 bytes).

“Firmware Images” are binary images containing firmware (like

U-Boot or FPGA images) which usually will be programmed to

flash memory.

“Script files” are command sequences that will be executed by

U-Boot’s command interpreter; this feature is especially

useful when you configure U-Boot to use a real shell (hush)

as command interpreter.

Booting the Linux zImage:

————————-

On some platforms, it’s possible to boot Linux zImage. This is done

using the “bootz” command. The syntax of “bootz” command is the same

as the syntax of “bootm” command.

Note, defining the CONFIG_SUPPORT_RAW_INITRD allows user to supply

kernel with raw initrd images. The syntax is slightly different, the

address of the initrd must be augmented by it’s size, in the following

format: ”

:

“.

Standalone HOWTO:

=================

One of the features of U-Boot is that you can dynamically load and

run “standalone” applications, which can use some resources of

U-Boot like console I/O functions or interrupt services.

Two simple examples are included with the sources:

“Hello World” Demo:

——————-

‘examples/hello_world.c’ contains a small “Hello World” Demo

application; it is automatically compiled when you build U-Boot.

It’s configured to run at address 0x00040004, so you can play with it

like that:

=> loads

## Ready for S-Record download …

~>examples/hello_world.srec

1 2 3 4 5 6 7 8 9 10 11 …

[file transfer complete]

[connected]

## Start Addr = 0x00040004

=> go 40004 Hello World! This is a test.

## Starting application at 0x00040004 …

Hello World

argc = 7

argv[0] = “40004”

argv[1] = “Hello”

argv[2] = “World!”

argv[3] = “This”

argv[4] = “is”

argv[5] = “a”

argv[6] = “test.”

argv[7] = ”

Hit any key to exit …

## Application terminated, rc = 0x0

Another example, which demonstrates how to register a CPM interrupt

handler with the U-Boot code, can be found in ‘examples/timer.c’.

Here, a CPM timer is set up to generate an interrupt every second.

The interrupt service routine is trivial, just printing a ‘.’

character, but this is just a demo program. The application can be

controlled by the following keys:

? – print current values og the CPM Timer registers

b – enable interrupts and start timer

e – stop timer and disable interrupts

q – quit application

=> loads

## Ready for S-Record download …

~>examples/timer.srec

1 2 3 4 5 6 7 8 9 10 11 …

[file transfer complete]

[connected]

## Start Addr = 0x00040004

=> go 40004

## Starting application at 0x00040004 …

TIMERS=0xfff00980

Using timer 1

tgcr @ 0xfff00980, tmr @ 0xfff00990, trr @ 0xfff00994, tcr @ 0xfff00998, tcn @ 0xfff0099c, ter @ 0xfff009b0

Hit ‘b’:

[q, b, e, ?] Set interval 1000000 us

Enabling timer

Hit ‘?’:

[q, b, e, ?] ……..

tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0xef6, ter=0x0

Hit ‘?’:

[q, b, e, ?] .

tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0x2ad4, ter=0x0

Hit ‘?’:

[q, b, e, ?] .

tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0x1efc, ter=0x0

Hit ‘?’:

[q, b, e, ?] .

tgcr=0x1, tmr=0xff1c, trr=0x3d09, tcr=0x0, tcn=0x169d, ter=0x0

Hit ‘e’:

[q, b, e, ?] …Stopping timer

Hit ‘q’:

[q, b, e, ?] ## Application terminated, rc = 0x0

Implementation Internals:

=========================

The following is not intended to be a complete description of every

implementation detail. However, it should help to understand the

inner workings of U-Boot and make it easier to port it to custom

hardware.

Initial Stack, Global Data:

—————————

The implementation of U-Boot is complicated by the fact that U-Boot

starts running out of ROM (flash memory), usually without access to

system RAM (because the memory controller is not initialized yet).

This means that we don’t have writable Data or BSS segments, and BSS

is not initialized as zero. To be able to get a C environment working

at all, we have to allocate at least a minimal stack. Implementation

options for this are defined and restricted by the CPU used: Some CPU

models provide on-chip memory (like the IMMR area on MPC8xx and

MPC826x processors), on others (parts of) the data cache can be

locked as (mis-) used as memory, etc.

Chris Hallinan posted a good summary of these issues to the

U-Boot mailing list:

Subject: RE: [U-Boot-Users] RE: More On Memory Bank x (nothingness)?

From: “Chris Hallinan”

Date: Mon, 10 Feb 2003 16:43:46 -0500 (22:43 MET)

Correct me if I’m wrong, folks, but the way I understand it

is this: Using DCACHE as initial RAM for Stack, etc, does not

require any physical RAM backing up the cache. The cleverness

is that the cache is being used as a temporary supply of

necessary storage before the SDRAM controller is setup. It’s

beyond the scope of this list to explain the details, but you

can see how this works by studying the cache architecture and

operation in the architecture and processor-specific manuals.

OCM is On Chip Memory, which I believe the 405GP has 4K. It

is another option for the system designer to use as an

initial stack/RAM area prior to SDRAM being available. Either

option should work for you. Using CS 4 should be fine if your

board designers haven’t used it for something that would

cause you grief during the initial boot! It is frequently not

used.

CFG_SYS_INIT_RAM_ADDR should be somewhere that won’t interfere

with your processor/board/system design. The default value

you will find in any recent u-boot distribution in

walnut.h should work for you. I’d set it to a value larger

than your SDRAM module. If you have a 64MB SDRAM module, set

it above 400_0000. Just make sure your board has no resources

that are supposed to respond to that address! That code in

start.S has been around a while and should work as is when

you get the config right.

-Chris Hallinan

DS4.COM, Inc.

It is essential to remember this, since it has some impact on the C

code for the initialization procedures:

* Initialized global data (data segment) is read-only. Do not attempt

to write it.

* Do not use any uninitialized global data (or implicitly initialized

as zero data – BSS segment) at all – this is undefined, initiali-

zation is performed later (when relocating to RAM).

* Stack space is very limited. Avoid big data buffers or things like

that.

Having only the stack as writable memory limits means we cannot use

normal global data to share information between the code. But it

turned out that the implementation of U-Boot can be greatly

simplified by making a global data structure (gd_t) available to all

functions. We could pass a pointer to this data as argument to _all_

functions, but this would bloat the code. Instead we use a feature of

the GCC compiler (Global Register Variables) to share the data: we

place a pointer (gd) to the global data into a register which we

reserve for this purpose.

When choosing a register for such a purpose we are restricted by the

relevant (E)ABI specifications for the current architecture, and by

GCC’s implementation.

For PowerPC, the following registers have specific use:

R1: stack pointer

R2: reserved for system use

R3-R4: parameter passing and return values

R5-R10: parameter passing

R13: small data area pointer

R30: GOT pointer

R31: frame pointer

(U-Boot also uses R12 as internal GOT pointer. r12

is a volatile register so r12 needs to be reset when

going back and forth between asm and C)

==> U-Boot will use R2 to hold a pointer to the global data

Note: on PPC, we could use a static initializer (since the

address of the global data structure is known at compile time),

but it turned out that reserving a register results in somewhat

smaller code – although the code savings are not that big (on

average for all boards 752 bytes for the whole U-Boot image,

624 text + 127 data).

On ARM, the following registers are used:

R0: function argument word/integer result

R1-R3: function argument word

R9: platform specific

R10: stack limit (used only if stack checking is enabled)

R11: argument (frame) pointer

R12: temporary workspace

R13: stack pointer

R14: link register

R15: program counter

==> U-Boot will use R9 to hold a pointer to the global data

Note: on ARM, only R_ARM_RELATIVE relocations are supported.

On Nios II, the ABI is documented here:

https://www.altera.com/literature/hb/nios2/n2cpu_nii51016.pdf

==> U-Boot will use gp to hold a pointer to the global data

Note: on Nios II, we give “-G0” option to gcc and don’t use gp

to access small data sections, so gp is free.

On RISC-V, the following registers are used:

x0: hard-wired zero (zero)

x1: return address (ra)

x2: stack pointer (sp)

x3: global pointer (gp)

x4: thread pointer (tp)

x5: link register (t0)

x8: frame pointer (fp)

x10-x11: arguments/return values (a0-1)

x12-x17: arguments (a2-7)

x28-31: temporaries (t3-6)

pc: program counter (pc)

==> U-Boot will use gp to hold a pointer to the global data

Memory Management:

——————

U-Boot runs in system state and uses physical addresses, i.e. the

MMU is not used either for address mapping nor for memory protection.

The available memory is mapped to fixed addresses using the memory

controller. In this process, a contiguous block is formed for each

memory type (Flash, SDRAM, SRAM), even when it consists of several

physical memory banks.

U-Boot is installed in the first 128 kB of the first Flash bank (on

TQM8xxL modules this is the range 0x40000000 … 0x4001FFFF). After

booting and sizing and initializing DRAM, the code relocates itself

to the upper end of DRAM. Immediately below the U-Boot code some

memory is reserved for use by malloc() [see CONFIG_SYS_MALLOC_LEN

configuration setting]. Below that, a structure with global Board

Info data is placed, followed by the stack (growing downward).

Additionally, some exception handler code is copied to the low 8 kB

of DRAM (0x00000000 … 0x00001FFF).

So a typical memory configuration with 16 MB of DRAM could look like

this:

0x0000 0000 Exception Vector code

:

0x0000 1FFF

0x0000 2000 Free for Application Use

:

:

:

:

0x00FB FF20 Monitor Stack (Growing downward)

0x00FB FFAC Board Info Data and permanent copy of global data

0x00FC 0000 Malloc Arena

:

0x00FD FFFF

0x00FE 0000 RAM Copy of Monitor Code

… eventually: LCD or video framebuffer

… eventually: pRAM (Protected RAM – unchanged by reset)

0x00FF FFFF [End of RAM]

System Initialization:

———————-

In the reset configuration, U-Boot starts at the reset entry point

(on most PowerPC systems at address 0x00000100). Because of the reset

configuration for CS0# this is a mirror of the on board Flash memory.

To be able to re-map memory U-Boot then jumps to its link address.

To be able to implement the initialization code in C, a (small!)

initial stack is set up in the internal Dual Ported RAM (in case CPUs

which provide such a feature like), or in a locked part of the data

cache. After that, U-Boot initializes the CPU core, the caches and

the SIU.

Next, all (potentially) available memory banks are mapped using a

preliminary mapping. For example, we put them on 512 MB boundaries

(multiples of 0x20000000: SDRAM on 0x00000000 and 0x20000000, Flash

on 0x40000000 and 0x60000000, SRAM on 0x80000000). Then UPM A is

programmed for SDRAM access. Using the temporary configuration, a

simple memory test is run that determines the size of the SDRAM

banks.

When there is more than one SDRAM bank, and the banks are of

different size, the largest is mapped first. For equal size, the first

bank (CS2#) is mapped first. The first mapping is always for address

0x00000000, with any additional banks following immediately to create

contiguous memory starting from 0.

Then, the monitor installs itself at the upper end of the SDRAM area

and allocates memory for use by malloc() and for the global Board

Info data; also, the exception vector code is copied to the low RAM

pages, and the final stack is set up.

Only after this relocation will you have a “normal” C environment;

until that you are restricted in several ways, mostly because you are

running from ROM, and because the code will have to be relocated to a

new address in RAM.

Contributing

============

The U-Boot projects depends on contributions from the user community.

If you want to participate, please, have a look at the ‘General’

section of https://docs.u-boot.org/en/latest/develop/index.html

where we describe coding standards and the patch submission process.

libsodium

Version: 1.0.18

https://raw.githubusercontent.com/jedisct1/libsodium/master/LICENSE

/*

* ISC License

*

* Copyright (c) 2013-2024

* Frank Denis

*

* Permission to use, copy, modify, and/or distribute this software for any

* purpose with or without fee is hereby granted, provided that the above

* copyright notice and this permission notice appear in all copies.

*

* THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES

* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF

* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR

* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES

* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN

* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF

* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

*/

zlib

Version: 1.2.11

https://raw.githubusercontent.com/madler/zlib/develop/LICENSE

Copyright notice:

(C) 1995-2024 Jean-loup Gailly and Mark Adler

This software is provided ‘as-is’, without any express or implied

warranty. In no event will the authors be held liable for any damages

arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,

including commercial applications, and to alter it and redistribute it

freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not

claim that you wrote the original software. If you use this software

in a product, an acknowledgment in the product documentation would be

appreciated but is not required.

2. Altered source versions must be plainly marked as such, and must not be

misrepresented as being the original software.

3. This notice may not be removed or altered from any source distribution.

Jean-loup Gailly Mark Adler

[email protected] [email protected]

mDNSResponder

Version: 258.13

https://raw.githubusercontent.com/apple-oss-distributions/mDNSResponder/main/LICENSE

The majority of the source code in the mDNSResponder project is licensed

under the terms of the Apache License, Version 2.0, available from:

To accommodate license compatibility with the widest possible range

of client code licenses, the shared library code, which is linked

at runtime into the same address space as the client using it, is

licensed under the terms of the “Three-Clause BSD License”.

The Linux Name Service Switch code, contributed by National ICT

Australia Ltd (NICTA) is licensed under the terms of the NICTA Public

Software Licence (which is substantially similar to the “Three-Clause

BSD License”, with some additional language pertaining to Australian law).

glibc

Version: 2.26

https://raw.githubusercontent.com/kraj/glibc/master/COPYING.LIB

GNU LESSER GENERAL PUBLIC LICENSE

Version 2.1, February 1999

Copyright (C) 1991, 1999 Free Software Foundation, Inc.

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Everyone is permitted to copy and distribute verbatim copies

of this license document, but changing it is not allowed.

[This is the first released version of the Lesser GPL. It also counts

as the successor of the GNU Library Public License, version 2, hence

the version number 2.1.]

Preamble

The licenses for most software are designed to take away your

freedom to share and change it. By contrast, the GNU General Public

Licenses are intended to guarantee your freedom to share and change

free software–to make sure the software is free for all its users.

This license, the Lesser General Public License, applies to some

specially designated software packages–typically libraries–of the

Free Software Foundation and other authors who decide to use it. You

can use it too, but we suggest you first think carefully about whether

this license or the ordinary General Public License is the better

strategy to use in any particular case, based on the explanations below.

When we speak of free software, we are referring to freedom of use,

not price. Our General Public Licenses are designed to make sure that

you have the freedom to distribute copies of free software (and charge

for this service if you wish); that you receive source code or can get

it if you want it; that you can change the software and use pieces of

it in new free programs; and that you are informed that you can do

these things.

To protect your rights, we need to make restrictions that forbid

distributors to deny you these rights or to ask you to surrender these

rights. These restrictions translate to certain responsibilities for

you if you distribute copies of the library or if you modify it.

For example, if you distribute copies of the library, whether gratis

or for a fee, you must give the recipients all the rights that we gave

you. You must make sure that they, too, receive or can get the source

code. If you link other code with the library, you must provide

complete object files to the recipients, so that they can relink them

with the library after making changes to the library and recompiling

it. And you must show them these terms so they know their rights.

We protect your rights with a two-step method: (1) we copyright the

library, and (2) we offer you this license, which gives you legal

permission to copy, distribute and/or modify the library.

To protect each distributor, we want to make it very clear that

there is no warranty for the free library. Also, if the library is

modified by someone else and passed on, the recipients should know

that what they have is not the original version, so that the original

author’s reputation will not be affected by problems that might be

introduced by others.

Finally, software patents pose a constant threat to the existence of

any free program. We wish to make sure that a company cannot

effectively restrict the users of a free program by obtaining a

restrictive license from a patent holder. Therefore, we insist that

any patent license obtained for a version of the library must be

consistent with the full freedom of use specified in this license.

Most GNU software, including some libraries, is covered by the

ordinary GNU General Public License. This license, the GNU Lesser

General Public License, applies to certain designated libraries, and

is quite different from the ordinary General Public License. We use

this license for certain libraries in order to permit linking those

libraries into non-free programs.

When a program is linked with a library, whether statically or using

a shared library, the combination of the two is legally speaking a

combined work, a derivative of the original library. The ordinary

General Public License therefore permits such linking only if the

entire combination fits its criteria of freedom. The Lesser General

Public License permits more lax criteria for linking other code with

the library.

We call this license the “Lesser” General Public License because it

does Less to protect the user’s freedom than the ordinary General

Public License. It also provides other free software developers Less

of an advantage over competing non-free programs. These disadvantages

are the reason we use the ordinary General Public License for many

libraries. However, the Lesser license provides advantages in certain

special circumstances.

For example, on rare occasions, there may be a special need to

encourage the widest possible use of a certain library, so that it becomes

a de-facto standard. To achieve this, non-free programs must be

allowed to use the library. A more frequent case is that a free

library does the same job as widely used non-free libraries. In this

case, there is little to gain by limiting the free library to free

software only, so we use the Lesser General Public License.

In other cases, permission to use a particular library in non-free

programs enables a greater number of people to use a large body of

free software. For example, permission to use the GNU C Library in

non-free programs enables many more people to use the whole GNU

operating system, as well as its variant, the GNU/Linux operating

system.

Although the Lesser General Public License is Less protective of the

users’ freedom, it does ensure that the user of a program that is

linked with the Library has the freedom and the wherewithal to run

that program using a modified version of the Library.

The precise terms and conditions for copying, distribution and

modification follow. Pay close attention to the difference between a

“work based on the library” and a “work that uses the library”. The

former contains code derived from the library, whereas the latter must

be combined with the library in order to run.

GNU LESSER GENERAL PUBLIC LICENSE

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License Agreement applies to any software library or other

program which contains a notice placed by the copyright holder or

other authorized party saying it may be distributed under the terms of

this Lesser General Public License (also called “this License”).

Each licensee is addressed as “you”.

A “library” means a collection of software functions and/or data

prepared so as to be conveniently linked with application programs

(which use some of those functions and data) to form executables.

The “Library”, below, refers to any such software library or work

which has been distributed under these terms. A “work based on the

Library” means either the Library or any derivative work under

copyright law: that is to say, a work containing the Library or a

portion of it, either verbatim or with modifications and/or translated

straightforwardly into another language. (Hereinafter, translation is

included without limitation in the term “modification”.)

“Source code” for a work means the preferred form of the work for

making modifications to it. For a library, complete source code means

all the source code for all modules it contains, plus any associated

interface definition files, plus the scripts used to control compilation

and installation of the library.

Activities other than copying, distribution and modification are not

covered by this License; they are outside its scope. The act of

running a program using the Library is not restricted, and output from

such a program is covered only if its contents constitute a work based

on the Library (independent of the use of the Library in a tool for

writing it). Whether that is true depends on what the Library does

and what the program that uses the Library does.

1. You may copy and distribute verbatim copies of the Library’s

complete source code as you receive it, in any medium, provided that

you conspicuously and appropriately publish on each copy an

appropriate copyright notice and disclaimer of warranty; keep intact

all the notices that refer to this License and to the absence of any

warranty; and distribute a copy of this License along with the

Library.

You may charge a fee for the physical act of transferring a copy,

and you may at your option offer warranty protection in exchange for a

fee.

2. You may modify your copy or copies of the Library or any portion

of it, thus forming a work based on the Library, and copy and

distribute such modifications or work under the terms of Section 1

above, provided that you also meet all of these conditions:

a) The modified work must itself be a software library.

b) You must cause the files modified to carry prominent notices

stating that you changed the files and the date of any change.

c) You must cause the whole of the work to be licensed at no

charge to all third parties under the terms of this License.

d) If a facility in the modified Library refers to a function or a

table of data to be supplied by an application program that uses

the facility, other than as an argument passed when the facility

is invoked, then you must make a good faith effort to ensure that,

in the event an application does not supply such function or

table, the facility still operates, and performs whatever part of

its purpose remains meaningful.

(For example, a function in a library to compute square roots has

a purpose that is entirely well-defined independent of the

application. Therefore, Subsection 2d requires that any

application-supplied function or table used by this function must

be optional: if the application does not supply it, the square

root function must still compute square roots.)

These requirements apply to the modified work as a whole. If

identifiable sections of that work are not derived from the Library,

and can be reasonably considered independent and separate works in

themselves, then this License, and its terms, do not apply to those

sections when you distribute them as separate works. But when you

distribute the same sections as part of a whole which is a work based

on the Library, the distribution of the whole must be on the terms of

this License, whose permissions for other licensees extend to the

entire whole, and thus to each and every part regardless of who wrote

it.

Thus, it is not the intent of this section to claim rights or contest

your rights to work written entirely by you; rather, the intent is to

exercise the right to control the distribution of derivative or

collective works based on the Library.

In addition, mere aggregation of another work not based on the Library

with the Library (or with a work based on the Library) on a volume of

a storage or distribution medium does not bring the other work under

the scope of this License.

3. You may opt to apply the terms of the ordinary GNU General Public

License instead of this License to a given copy of the Library. To do

this, you must alter all the notices that refer to this License, so

that they refer to the ordinary GNU General Public License, version 2,

instead of to this License. (If a newer version than version 2 of the

ordinary GNU General Public License has appeared, then you can specify

that version instead if you wish.) Do not make any other change in

these notices.

Once this change is made in a given copy, it is irreversible for

that copy, so the ordinary GNU General Public License applies to all

subsequent copies and derivative works made from that copy.

This option is useful when you wish to copy part of the code of

the Library into a program that is not a library.

4. You may copy and distribute the Library (or a portion or

derivative of it, under Section 2) in object code or executable form

under the terms of Sections 1 and 2 above provided that you accompany

it with the complete corresponding machine-readable source code, which

must be distributed under the terms of Sections 1 and 2 above on a

medium customarily used for software interchange.

If distribution of object code is made by offering access to copy

from a designated place, then offering equivalent access to copy the

source code from the same place satisfies the requirement to

distribute the source code, even though third parties are not

compelled to copy the source along with the object code.

5. A program that contains no derivative of any portion of the

Library, but is designed to work with the Library by being compiled or

linked with it, is called a “work that uses the Library”. Such a

work, in isolation, is not a derivative work of the Library, and

therefore falls outside the scope of this License.

However, linking a “work that uses the Library” with the Library

creates an executable that is a derivative of the Library (because it

contains portions of the Library), rather than a “work that uses the

library”. The executable is therefore covered by this License.

Section 6 states terms for distribution of such executables.

When a “work that uses the Library” uses material from a header file

that is part of the Library, the object code for the work may be a

derivative work of the Library even though the source code is not.

Whether this is true is especially significant if the work can be

linked without the Library, or if the work is itself a library. The

threshold for this to be true is not precisely defined by law.

If such an object file uses only numerical parameters, data

structure layouts and accessors, and small macros and small inline

functions (ten lines or less in length), then the use of the object

file is unrestricted, regardless of whether it is legally a derivative

work. (Executables containing this object code plus portions of the

Library will still fall under Section 6.)

Otherwise, if the work is a derivative of the Library, you may

distribute the object code for the work under the terms of Section 6.

Any executables containing that work also fall under Section 6,

whether or not they are linked directly with the Library itself.

6. As an exception to the Sections above, you may also combine or

link a “work that uses the Library” with the Library to produce a

work containing portions of the Library, and distribute that work

under terms of your choice, provided that the terms permit

modification of the work for the customer’s own use and reverse

engineering for debugging such modifications.

You must give prominent notice with each copy of the work that the

Library is used in it and that the Library and its use are covered by

this License. You must supply a copy of this License. If the work

during execution displays copyright notices, you must include the

copyright notice for the Library among them, as well as a reference

directing the user to the copy of this License. Also, you must do one

of these things:

a) Accompany the work with the complete corresponding

machine-readable source code for the Library including whatever

changes were used in the work (which must be distributed under

Sections 1 and 2 above); and, if the work is an executable linked

with the Library, with the complete machine-readable “work that

uses the Library”, as object code and/or source code, so that the

user can modify the Library and then relink to produce a modified

executable containing the modified Library. (It is understood

that the user who changes the contents of definitions files in the

Library will not necessarily be able to recompile the application

to use the modified definitions.)

b) Use a suitable shared library mechanism for linking with the

Library. A suitable mechanism is one that (1) uses at run time a

copy of the library already present on the user’s computer system,

rather than copying library functions into the executable, and (2)

will operate properly with a modified version of the library, if

the user installs one, as long as the modified version is

interface-compatible with the version that the work was made with.

c) Accompany the work with a written offer, valid for at

least three years, to give the same user the materials

specified in Subsection 6a, above, for a charge no more

than the cost of performing this distribution.

d) If distribution of the work is made by offering access to copy

from a designated place, offer equivalent access to copy the above

specified materials from the same place.

e) Verify that the user has already received a copy of these

materials or that you have already sent this user a copy.

For an executable, the required form of the “work that uses the

Library” must include any data and utility programs needed for

reproducing the executable from it. However, as a special exception,

the materials to be distributed need not include anything that is

normally distributed (in either source or binary form) with the major

components (compiler, kernel, and so on) of the operating system on

which the executable runs, unless that component itself accompanies

the executable.

It may happen that this requirement contradicts the license

restrictions of other proprietary libraries that do not normally

accompany the operating system. Such a contradiction means you cannot

use both them and the Library together in an executable that you

distribute.

7. You may place library facilities that are a work based on the

Library side-by-side in a single library together with other library

facilities not covered by this License, and distribute such a combined

library, provided that the separate distribution of the work based on

the Library and of the other library facilities is otherwise

permitted, and provided that you do these two things:

a) Accompany the combined library with a copy of the same work

based on the Library, uncombined with any other library

facilities. This must be distributed under the terms of the

Sections above.

b) Give prominent notice with the combined library of the fact

that part of it is a work based on the Library, and explaining

where to find the accompanying uncombined form of the same work.

8. You may not copy, modify, sublicense, link with, or distribute

the Library except as expressly provided under this License. Any

attempt otherwise to copy, modify, sublicense, link with, or

distribute the Library is void, and will automatically terminate your

rights under this License. However, parties who have received copies,

or rights, from you under this License will not have their licenses

terminated so long as such parties remain in full compliance.

9. You are not required to accept this License, since you have not

signed it. However, nothing else grants you permission to modify or

distribute the Library or its derivative works. These actions are

prohibited by law if you do not accept this License. Therefore, by

modifying or distributing the Library (or any work based on the

Library), you indicate your acceptance of this License to do so, and

all its terms and conditions for copying, distributing or modifying

the Library or works based on it.

10. Each time you redistribute the Library (or any work based on the

Library), the recipient automatically receives a license from the

original licensor to copy, distribute, link with or modify the Library

subject to these terms and conditions. You may not impose any further

restrictions on the recipients’ exercise of the rights granted herein.

You are not responsible for enforcing compliance by third parties with

this License.

11. If, as a consequence of a court judgment or allegation of patent

infringement or for any other reason (not limited to patent issues),

conditions are imposed on you (whether by court order, agreement or

otherwise) that contradict the conditions of this License, they do not

excuse you from the conditions of this License. If you cannot

distribute so as to satisfy simultaneously your obligations under this

License and any other pertinent obligations, then as a consequence you

may not distribute the Library at all. For example, if a patent

license would not permit royalty-free redistribution of the Library by

all those who receive copies directly or indirectly through you, then

the only way you could satisfy both it and this License would be to

refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any

particular circumstance, the balance of the section is intended to apply,

and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any

patents or other property right claims or to contest validity of any

such claims; this section has the sole purpose of protecting the

integrity of the free software distribution system which is

implemented by public license practices. Many people have made

generous contributions to the wide range of software distributed

through that system in reliance on consistent application of that

system; it is up to the author/donor to decide if he or she is willing

to distribute software through any other system and a licensee cannot

impose that choice.

This section is intended to make thoroughly clear what is believed to

be a consequence of the rest of this License.

12. If the distribution and/or use of the Library is restricted in

certain countries either by patents or by copyrighted interfaces, the

original copyright holder who places the Library under this License may add

an explicit geographical distribution limitation excluding those countries,

so that distribution is permitted only in or among countries not thus

excluded. In such case, this License incorporates the limitation as if

written in the body of this License.

13. The Free Software Foundation may publish revised and/or new

versions of the Lesser 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 Library

specifies a version number of this License which applies to it and

“any later version”, you have the option of following the terms and

conditions either of that version or of any later version published by

the Free Software Foundation. If the Library does not specify a

license version number, you may choose any version ever published by

the Free Software Foundation.

14. If you wish to incorporate parts of the Library into other free

programs whose distribution conditions are incompatible with these,

write to the author to ask for permission. For software which is

copyrighted by the Free Software Foundation, write to the Free

Software Foundation; we sometimes make exceptions for this. Our

decision will be guided by the two goals of preserving the free status

of all derivatives of our free software and of promoting the sharing

and reuse of software generally.

NO WARRANTY

15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO

WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.

EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR

OTHER PARTIES PROVIDE THE LIBRARY “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

LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME

THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN

WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY

AND/OR REDISTRIBUTE THE LIBRARY 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

LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF

SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH

DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Libraries

If you develop a new library, and you want it to be of the greatest

possible use to the public, we recommend making it free software that

everyone can redistribute and change. You can do so by permitting

redistribution under these terms (or, alternatively, under the terms of the

ordinary General Public License).

To apply these terms, attach the following notices to the library. It is

safest to attach them to the start of each source file to most effectively

convey the exclusion of warranty; and each file should have at least the

“copyright” line and a pointer to where the full notice is found.

Copyright (C)

This library is free software; you can redistribute it and/or

modify it under the terms of the GNU Lesser General Public

License as published by the Free Software Foundation; either

version 2.1 of the License, or (at your option) any later version.

This library 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

Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public

License along with this library; if not, write to the Free Software

Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Also add information on how to contact you by electronic and paper mail.

You should also get your employer (if you work as a programmer) or your

school, if any, to sign a “copyright disclaimer” for the library, if

necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyright interest in the

library `Frob’ (a library for tweaking knobs) written by James Random Hacker.


, 1 April 1990

Ty Coon, President of Vice

That’s all there is to it!

ptpd

Version: 1b2

https://raw.githubusercontent.com/ptpd/ptpd/master/COPYRIGHT

/*-

* Copyright (c) 2015 Wojciech Owczarek.

* Copyright (c) 2014 Perseus Telecom.

* Copyright (c) 2013-2014 Harlan Stenn,

* George N. Neville-Neil,

* Wojciech Owczarek,

* Jan Breuer.

* Copyright (c) 2011-2012 George V. Neville-Neil,

* Steven Kreuzer,

* Martin Burnicki,

* Jan Breuer,

* Wojciech Owczarek,

* Gael Mace,

* Alexandre Van Kempen,

* Inaqui Delgado,

* Rick Ratzel,

* National Instruments.

* Copyright (c) 2009-2010 George V. Neville-Neil,

* Steven Kreuzer,

* Martin Burnicki,

* Jan Breuer,

* Gael Mace,

* Alexandre Van Kempen.

*

* Copyright (c) 2005-2008 Kendall Correll, Aidan Williams

*

* All Rights Reserved

*

* Redistribution and use in source and binary forms, with or without

* modification, are permitted provided that the following conditions are

* met:

* 1. Redistributions of source code must retain the above copyright notice,

* this list of conditions and the following disclaimer.

* 2. Redistributions in binary form must reproduce the above copyright

* notice, this list of conditions and the following disclaimer in the

* documentation and/or other materials provided with the distribution.

*

* THIS SOFTWARE IS PROVIDED BY THE AUTHORS “AS IS” AND ANY EXPRESS OR

* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED

* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE

* DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE

* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR

* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,

* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE

* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN

* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*/

cobs

Version:

https://raw.githubusercontent.com/jacquesf/COBS-Consistent-Overhead-Byte-Stuffing/master/LICENSE

Copyright 2011, Jacques Fortier

Permission is hereby granted, free of charge, to any person obtaining a copy of

this software and associated documentation files (the “Software”), to deal in

the Software without restriction, including without limitation the rights to

use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies

of the Software, and to permit persons to whom the Software is furnished to do

so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all

copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

SOFTWARE.

squashfs

Version: 4.5

https://raw.githubusercontent.com/plougher/squashfs-tools/master/COPYING

GNU GENERAL PUBLIC LICENSE

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.,

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Everyone is permitted to copy and distribute verbatim copies

of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your

freedom to share and change it. By contrast, the GNU General Public

License is intended to guarantee your freedom to share and change free

software–to make sure the software is free for all its users. This

General Public License applies to most of the Free Software

Foundation’s software and to any other program whose authors commit to

using it. (Some other Free Software Foundation software is covered by

the GNU Lesser General Public License instead.) You can apply it to

your programs, too.

When we speak of free software, we are referring to freedom, not

price. Our General Public Licenses are designed to make sure that you

have the freedom to distribute copies of free software (and charge for

this service if you wish), that you receive source code or can get it

if you want it, that you can change the software or use pieces of it

in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid

anyone to deny you these rights or to ask you to surrender the rights.

These restrictions translate to certain responsibilities for you if you

distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether

gratis or for a fee, you must give the recipients all the rights that

you have. You must make sure that they, too, receive or can get the

source code. And you must show them these terms so they know their

rights.

We protect your rights with two steps: (1) copyright the software, and

(2) offer you this license which gives you legal permission to copy,

distribute and/or modify the software.

Also, for each author’s protection and ours, we want to make certain

that everyone understands that there is no warranty for this free

software. If the software is modified by someone else and passed on, we

want its recipients to know that what they have is not the original, so

that any problems introduced by others will not reflect on the original

authors’ reputations.

Finally, any free program is threatened constantly by software

patents. We wish to avoid the danger that redistributors of a free

program will individually obtain patent licenses, in effect making the

program proprietary. To prevent this, we have made it clear that any

patent must be licensed for everyone’s free use or not licensed at all.

The precise terms and conditions for copying, distribution and

modification follow.

GNU GENERAL PUBLIC LICENSE

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains

a notice placed by the copyright holder saying it may be distributed

under the terms of this General Public License. The “Program”, below,

refers to any such program or work, and a “work based on the Program”

means either the Program or any derivative work under copyright law:

that is to say, a work containing the Program or a portion of it,

either verbatim or with modifications and/or translated into another

language. (Hereinafter, translation is included without limitation in

the term “modification”.) Each licensee is addressed as “you”.

Activities other than copying, distribution and modification are not

covered by this License; they are outside its scope. The act of

running the Program is not restricted, and the output from the Program

is covered only if its contents constitute a work based on the

Program (independent of having been made by running the Program).

Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program’s

source code as you receive it, in any medium, provided that you

conspicuously and appropriately publish on each copy an appropriate

copyright notice and disclaimer of warranty; keep intact all the

notices that refer to this License and to the absence of any warranty;

and give any other recipients of the Program a copy of this License

along with the Program.

You may charge a fee for the physical act of transferring a copy, and

you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion

of it, thus forming a work based on the Program, and copy and

distribute such modifications or work under the terms of Section 1

above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices

stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in

whole or in part contains or is derived from the Program or any

part thereof, to be licensed as a whole at no charge to all third

parties under the terms of this License.

c) If the modified program normally reads commands interactively

when run, you must cause it, when started running for such

interactive use in the most ordinary way, to print or display an

announcement including an appropriate copyright notice and a

notice that there is no warranty (or else, saying that you provide

a warranty) and that users may redistribute the program under

these conditions, and telling the user how to view a copy of this

License. (Exception: if the Program itself is interactive but

does not normally print such an announcement, your work based on

the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If

identifiable sections of that work are not derived from the Program,

and can be reasonably considered independent and separate works in

themselves, then this License, and its terms, do not apply to those

sections when you distribute them as separate works. But when you

distribute the same sections as part of a whole which is a work based

on the Program, the distribution of the whole must be on the terms of

this License, whose permissions for other licensees extend to the

entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest

your rights to work written entirely by you; rather, the intent is to

exercise the right to control the distribution of derivative or

collective works based on the Program.

In addition, mere aggregation of another work not based on the Program

with the Program (or with a work based on the Program) on a volume of

a storage or distribution medium does not bring the other work under

the scope of this License.

3. You may copy and distribute the Program (or a work based on it,

under Section 2) in object code or executable form under the terms of

Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable

source code, which must be distributed under the terms of Sections

1 and 2 above on a medium customarily used for software interchange; or,

b) Accompany it with a written offer, valid for at least three

years, to give any third party, for a charge no more than your

cost of physically performing source distribution, a complete

machine-readable copy of the corresponding source code, to be

distributed under the terms of Sections 1 and 2 above on a medium

customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer

to distribute corresponding source code. (This alternative is

allowed only for noncommercial distribution and only if you

received the program in object code or executable form with such

an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for

making modifications to it. For an executable work, complete source

code means all the source code for all modules it contains, plus any

associated interface definition files, plus the scripts used to

control compilation and installation of the executable. However, as a

special exception, the source code distributed need not include

anything that is normally distributed (in either source or binary

form) with the major components (compiler, kernel, and so on) of the

operating system on which the executable runs, unless that component

itself accompanies the executable.

If distribution of executable or object code is made by offering

access to copy from a designated place, then offering equivalent

access to copy the source code from the same place counts as

distribution of the source code, even though third parties are not

compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program

except as expressly provided under this License. Any attempt

otherwise to copy, modify, sublicense or distribute the Program is

void, and will automatically terminate your rights under this License.

However, parties who have received copies, or rights, from you under

this License will not have their licenses terminated so long as such

parties remain in full compliance.

5. You are not required to accept this License, since you have not

signed it. However, nothing else grants you permission to modify or

distribute the Program or its derivative works. These actions are

prohibited by law if you do not accept this License. Therefore, by

modifying or distributing the Program (or any work based on the

Program), you indicate your acceptance of this License to do so, and

all its terms and conditions for copying, distributing or modifying

the Program or works based on it.

6. Each time you redistribute the Program (or any work based on the

Program), the recipient automatically receives a license from the

original licensor to copy, distribute or modify the Program subject to

these terms and conditions. You may not impose any further

restrictions on the recipients’ exercise of the rights granted herein.

You are not responsible for enforcing compliance by third parties to

this License.

7. If, as a consequence of a court judgment or allegation of patent

infringement or for any other reason (not limited to patent issues),

conditions are imposed on you (whether by court order, agreement or

otherwise) that contradict the conditions of this License, they do not

excuse you from the conditions of this License. If you cannot

distribute so as to satisfy simultaneously your obligations under this

License and any other pertinent obligations, then as a consequence you

may not distribute the Program at all. For example, if a patent

license would not permit royalty-free redistribution of the Program by

all those who receive copies directly or indirectly through you, then

the only way you could satisfy both it and this License would be to

refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under

any particular circumstance, the balance of the section is intended to

apply and the section as a whole is intended to apply in other

circumstances.

It is not the purpose of this section to induce you to infringe any

patents or other property right claims or to contest validity of any

such claims; this section has the sole purpose of protecting the

integrity of the free software distribution system, which is

implemented by public license practices. Many people have made

generous contributions to the wide range of software distributed

through that system in reliance on consistent application of that

system; it is up to the author/donor to decide if he or she is willing

to distribute software through any other system and a licensee cannot

impose that choice.

This section is intended to make thoroughly clear what is believed to

be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in

certain countries either by patents or by copyrighted interfaces, the

original copyright holder who places the Program under this License

may add an explicit geographical distribution limitation excluding

those countries, so that distribution is permitted only in or among

countries not thus excluded. In such case, this License incorporates

the limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new versions

of the General Public License from time to time. Such new versions will

be similar in spirit to the present version, but may differ in detail to

address new problems or concerns.

Each version is given a distinguishing version number. If the Program

specifies a version number of this License which applies to it and “any

later version”, you have the option of following the terms and conditions

either of that version or of any later version published by the Free

Software Foundation. If the Program does not specify a version number of

this License, you may choose any version ever published by the Free Software

Foundation.

10. If you wish to incorporate parts of the Program into other free

programs whose distribution conditions are different, write to the author

to ask for permission. For software which is copyrighted by the Free

Software Foundation, write to the Free Software Foundation; we sometimes

make exceptions for this. Our decision will be guided by the two goals

of preserving the free status of all derivatives of our free software and

of promoting the sharing and reuse of software generally.

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY

FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN

OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES

PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED

OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS

TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE

PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,

REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING

WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR

REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,

INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING

OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED

TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY

YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER

PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE

POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest

possible use to the public, the best way to achieve this is to make it

free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest

to attach them to the start of each source file to most effectively

convey the exclusion of warranty; and each file should have at least

the “copyright” line and a pointer to where the full notice is found.

Copyright (C)

This program is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License along

with this program; if not, write to the Free Software Foundation, Inc.,

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this

when it starts in an interactive mode:

Gnomovision version 69, Copyright (C) year name of author

Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w’.

This is free software, and you are welcome to redistribute it

under certain conditions; type `show c’ for details.

The hypothetical commands `show w’ and `show c’ should show the appropriate

parts of the General Public License. Of course, the commands you use may

be called something other than `show w’ and `show c’; they could even be

mouse-clicks or menu items–whatever suits your program.

You should also get your employer (if you work as a programmer) or your

school, if any, to sign a “copyright disclaimer” for the program, if

necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyright interest in the program

`Gnomovision’ (which makes passes at compilers) written by James Hacker.


, 1 April 1989

Ty Coon, President of Vice

This General Public License does not permit incorporating your program into

proprietary programs. If your program is a subroutine library, you may

consider it more useful to permit linking proprietary applications with the

library. If this is what you want to do, use the GNU Lesser General

Public License instead of this License.

binutils-gdb

Version: 10.2

https://raw.githubusercontent.com/bminor/binutils-gdb/master/COPYING

GNU GENERAL PUBLIC LICENSE

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Everyone is permitted to copy and distribute verbatim copies

of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your

freedom to share and change it. By contrast, the GNU General Public

License is intended to guarantee your freedom to share and change free

software–to make sure the software is free for all its users. This

General Public License applies to most of the Free Software

Foundation’s software and to any other program whose authors commit to

using it. (Some other Free Software Foundation software is covered by

the GNU Library General Public License instead.) You can apply it to

your programs, too.

When we speak of free software, we are referring to freedom, not

price. Our General Public Licenses are designed to make sure that you

have the freedom to distribute copies of free software (and charge for

this service if you wish), that you receive source code or can get it

if you want it, that you can change the software or use pieces of it

in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid

anyone to deny you these rights or to ask you to surrender the rights.

These restrictions translate to certain responsibilities for you if you

distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether

gratis or for a fee, you must give the recipients all the rights that

you have. You must make sure that they, too, receive or can get the

source code. And you must show them these terms so they know their

rights.

We protect your rights with two steps: (1) copyright the software, and

(2) offer you this license which gives you legal permission to copy,

distribute and/or modify the software.

Also, for each author’s protection and ours, we want to make certain

that everyone understands that there is no warranty for this free

software. If the software is modified by someone else and passed on, we

want its recipients to know that what they have is not the original, so

that any problems introduced by others will not reflect on the original

authors’ reputations.

Finally, any free program is threatened constantly by software

patents. We wish to avoid the danger that redistributors of a free

program will individually obtain patent licenses, in effect making the

program proprietary. To prevent this, we have made it clear that any

patent must be licensed for everyone’s free use or not licensed at all.

The precise terms and conditions for copying, distribution and

modification follow.

GNU GENERAL PUBLIC LICENSE

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains

a notice placed by the copyright holder saying it may be distributed

under the terms of this General Public License. The “Program”, below,

refers to any such program or work, and a “work based on the Program”

means either the Program or any derivative work under copyright law:

that is to say, a work containing the Program or a portion of it,

either verbatim or with modifications and/or translated into another

language. (Hereinafter, translation is included without limitation in

the term “modification”.) Each licensee is addressed as “you”.

Activities other than copying, distribution and modification are not

covered by this License; they are outside its scope. The act of

running the Program is not restricted, and the output from the Program

is covered only if its contents constitute a work based on the

Program (independent of having been made by running the Program).

Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program’s

source code as you receive it, in any medium, provided that you

conspicuously and appropriately publish on each copy an appropriate

copyright notice and disclaimer of warranty; keep intact all the

notices that refer to this License and to the absence of any warranty;

and give any other recipients of the Program a copy of this License

along with the Program.

You may charge a fee for the physical act of transferring a copy, and

you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion

of it, thus forming a work based on the Program, and copy and

distribute such modifications or work under the terms of Section 1

above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices

stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in

whole or in part contains or is derived from the Program or any

part thereof, to be licensed as a whole at no charge to all third

parties under the terms of this License.

c) If the modified program normally reads commands interactively

when run, you must cause it, when started running for such

interactive use in the most ordinary way, to print or display an

announcement including an appropriate copyright notice and a

notice that there is no warranty (or else, saying that you provide

a warranty) and that users may redistribute the program under

these conditions, and telling the user how to view a copy of this

License. (Exception: if the Program itself is interactive but

does not normally print such an announcement, your work based on

the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If

identifiable sections of that work are not derived from the Program,

and can be reasonably considered independent and separate works in

themselves, then this License, and its terms, do not apply to those

sections when you distribute them as separate works. But when you

distribute the same sections as part of a whole which is a work based

on the Program, the distribution of the whole must be on the terms of

this License, whose permissions for other licensees extend to the

entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest

your rights to work written entirely by you; rather, the intent is to

exercise the right to control the distribution of derivative or

collective works based on the Program.

In addition, mere aggregation of another work not based on the Program

with the Program (or with a work based on the Program) on a volume of

a storage or distribution medium does not bring the other work under

the scope of this License.

3. You may copy and distribute the Program (or a work based on it,

under Section 2) in object code or executable form under the terms of

Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable

source code, which must be distributed under the terms of Sections

1 and 2 above on a medium customarily used for software interchange; or,

b) Accompany it with a written offer, valid for at least three

years, to give any third party, for a charge no more than your

cost of physically performing source distribution, a complete

machine-readable copy of the corresponding source code, to be

distributed under the terms of Sections 1 and 2 above on a medium

customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer

to distribute corresponding source code. (This alternative is

allowed only for noncommercial distribution and only if you

received the program in object code or executable form with such

an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for

making modifications to it. For an executable work, complete source

code means all the source code for all modules it contains, plus any

associated interface definition files, plus the scripts used to

control compilation and installation of the executable. However, as a

special exception, the source code distributed need not include

anything that is normally distributed (in either source or binary

form) with the major components (compiler, kernel, and so on) of the

operating system on which the executable runs, unless that component

itself accompanies the executable.

If distribution of executable or object code is made by offering

access to copy from a designated place, then offering equivalent

access to copy the source code from the same place counts as

distribution of the source code, even though third parties are not

compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program

except as expressly provided under this License. Any attempt

otherwise to copy, modify, sublicense or distribute the Program is

void, and will automatically terminate your rights under this License.

However, parties who have received copies, or rights, from you under

this License will not have their licenses terminated so long as such

parties remain in full compliance.

5. You are not required to accept this License, since you have not

signed it. However, nothing else grants you permission to modify or

distribute the Program or its derivative works. These actions are

prohibited by law if you do not accept this License. Therefore, by

modifying or distributing the Program (or any work based on the

Program), you indicate your acceptance of this License to do so, and

all its terms and conditions for copying, distributing or modifying

the Program or works based on it.

6. Each time you redistribute the Program (or any work based on the

Program), the recipient automatically receives a license from the

original licensor to copy, distribute or modify the Program subject to

these terms and conditions. You may not impose any further

restrictions on the recipients’ exercise of the rights granted herein.

You are not responsible for enforcing compliance by third parties to

this License.

7. If, as a consequence of a court judgment or allegation of patent

infringement or for any other reason (not limited to patent issues),

conditions are imposed on you (whether by court order, agreement or

otherwise) that contradict the conditions of this License, they do not

excuse you from the conditions of this License. If you cannot

distribute so as to satisfy simultaneously your obligations under this

License and any other pertinent obligations, then as a consequence you

may not distribute the Program at all. For example, if a patent

license would not permit royalty-free redistribution of the Program by

all those who receive copies directly or indirectly through you, then

the only way you could satisfy both it and this License would be to

refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under

any particular circumstance, the balance of the section is intended to

apply and the section as a whole is intended to apply in other

circumstances.

It is not the purpose of this section to induce you to infringe any

patents or other property right claims or to contest validity of any

such claims; this section has the sole purpose of protecting the

integrity of the free software distribution system, which is

implemented by public license practices. Many people have made

generous contributions to the wide range of software distributed

through that system in reliance on consistent application of that

system; it is up to the author/donor to decide if he or she is willing

to distribute software through any other system and a licensee cannot

impose that choice.

This section is intended to make thoroughly clear what is believed to

be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in

certain countries either by patents or by copyrighted interfaces, the

original copyright holder who places the Program under this License

may add an explicit geographical distribution limitation excluding

those countries, so that distribution is permitted only in or among

countries not thus excluded. In such case, this License incorporates

the limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new versions

of the General Public License from time to time. Such new versions will

be similar in spirit to the present version, but may differ in detail to

address new problems or concerns.

Each version is given a distinguishing version number. If the Program

specifies a version number of this License which applies to it and “any

later version”, you have the option of following the terms and conditions

either of that version or of any later version published by the Free

Software Foundation. If the Program does not specify a version number of

this License, you may choose any version ever published by the Free Software

Foundation.

10. If you wish to incorporate parts of the Program into other free

programs whose distribution conditions are different, write to the author

to ask for permission. For software which is copyrighted by the Free

Software Foundation, write to the Free Software Foundation; we sometimes

make exceptions for this. Our decision will be guided by the two goals

of preserving the free status of all derivatives of our free software and

of promoting the sharing and reuse of software generally.

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY

FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN

OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES

PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED

OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS

TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE

PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,

REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING

WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR

REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,

INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING

OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED

TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY

YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER

PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE

POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest

possible use to the public, the best way to achieve this is to make it

free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest

to attach them to the start of each source file to most effectively

convey the exclusion of warranty; and each file should have at least

the “copyright” line and a pointer to where the full notice is found.

Copyright (C)

This program is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License

along with this program; if not, write to the Free Software

Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this

when it starts in an interactive mode:

Gnomovision version 69, Copyright (C) year name of author

Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w’.

This is free software, and you are welcome to redistribute it

under certain conditions; type `show c’ for details.

The hypothetical commands `show w’ and `show c’ should show the appropriate

parts of the General Public License. Of course, the commands you use may

be called something other than `show w’ and `show c’; they could even be

mouse-clicks or menu items–whatever suits your program.

You should also get your employer (if you work as a programmer) or your

school, if any, to sign a “copyright disclaimer” for the program, if

necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyright interest in the program

`Gnomovision’ (which makes passes at compilers) written by James Hacker.


, 1 April 1989

Ty Coon, President of Vice

This General Public License does not permit incorporating your program into

proprietary programs. If your program is a subroutine library, you may

consider it more useful to permit linking proprietary applications with the

library. If this is what you want to do, use the GNU Library General

Public License instead of this License.

flatfsd

Version: 3.20

https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt

GNU GENERAL PUBLIC LICENSE

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.,

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Everyone is permitted to copy and distribute verbatim copies

of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your

freedom to share and change it. By contrast, the GNU General Public

License is intended to guarantee your freedom to share and change free

software–to make sure the software is free for all its users. This

General Public License applies to most of the Free Software

Foundation’s software and to any other program whose authors commit to

using it. (Some other Free Software Foundation software is covered by

the GNU Lesser General Public License instead.) You can apply it to

your programs, too.

When we speak of free software, we are referring to freedom, not

price. Our General Public Licenses are designed to make sure that you

have the freedom to distribute copies of free software (and charge for

this service if you wish), that you receive source code or can get it

if you want it, that you can change the software or use pieces of it

in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid

anyone to deny you these rights or to ask you to surrender the rights.

These restrictions translate to certain responsibilities for you if you

distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether

gratis or for a fee, you must give the recipients all the rights that

you have. You must make sure that they, too, receive or can get the

source code. And you must show them these terms so they know their

rights.

We protect your rights with two steps: (1) copyright the software, and

(2) offer you this license which gives you legal permission to copy,

distribute and/or modify the software.

Also, for each author’s protection and ours, we want to make certain

that everyone understands that there is no warranty for this free

software. If the software is modified by someone else and passed on, we

want its recipients to know that what they have is not the original, so

that any problems introduced by others will not reflect on the original

authors’ reputations.

Finally, any free program is threatened constantly by software

patents. We wish to avoid the danger that redistributors of a free

program will individually obtain patent licenses, in effect making the

program proprietary. To prevent this, we have made it clear that any

patent must be licensed for everyone’s free use or not licensed at all.

The precise terms and conditions for copying, distribution and

modification follow.

GNU GENERAL PUBLIC LICENSE

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains

a notice placed by the copyright holder saying it may be distributed

under the terms of this General Public License. The “Program”, below,

refers to any such program or work, and a “work based on the Program”

means either the Program or any derivative work under copyright law:

that is to say, a work containing the Program or a portion of it,

either verbatim or with modifications and/or translated into another

language. (Hereinafter, translation is included without limitation in

the term “modification”.) Each licensee is addressed as “you”.

Activities other than copying, distribution and modification are not

covered by this License; they are outside its scope. The act of

running the Program is not restricted, and the output from the Program

is covered only if its contents constitute a work based on the

Program (independent of having been made by running the Program).

Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program’s

source code as you receive it, in any medium, provided that you

conspicuously and appropriately publish on each copy an appropriate

copyright notice and disclaimer of warranty; keep intact all the

notices that refer to this License and to the absence of any warranty;

and give any other recipients of the Program a copy of this License

along with the Program.

You may charge a fee for the physical act of transferring a copy, and

you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion

of it, thus forming a work based on the Program, and copy and

distribute such modifications or work under the terms of Section 1

above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices

stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in

whole or in part contains or is derived from the Program or any

part thereof, to be licensed as a whole at no charge to all third

parties under the terms of this License.

c) If the modified program normally reads commands interactively

when run, you must cause it, when started running for such

interactive use in the most ordinary way, to print or display an

announcement including an appropriate copyright notice and a

notice that there is no warranty (or else, saying that you provide

a warranty) and that users may redistribute the program under

these conditions, and telling the user how to view a copy of this

License. (Exception: if the Program itself is interactive but

does not normally print such an announcement, your work based on

the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If

identifiable sections of that work are not derived from the Program,

and can be reasonably considered independent and separate works in

themselves, then this License, and its terms, do not apply to those

sections when you distribute them as separate works. But when you

distribute the same sections as part of a whole which is a work based

on the Program, the distribution of the whole must be on the terms of

this License, whose permissions for other licensees extend to the

entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest

your rights to work written entirely by you; rather, the intent is to

exercise the right to control the distribution of derivative or

collective works based on the Program.

In addition, mere aggregation of another work not based on the Program

with the Program (or with a work based on the Program) on a volume of

a storage or distribution medium does not bring the other work under

the scope of this License.

3. You may copy and distribute the Program (or a work based on it,

under Section 2) in object code or executable form under the terms of

Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable

source code, which must be distributed under the terms of Sections

1 and 2 above on a medium customarily used for software interchange; or,

b) Accompany it with a written offer, valid for at least three

years, to give any third party, for a charge no more than your

cost of physically performing source distribution, a complete

machine-readable copy of the corresponding source code, to be

distributed under the terms of Sections 1 and 2 above on a medium

customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer

to distribute corresponding source code. (This alternative is

allowed only for noncommercial distribution and only if you

received the program in object code or executable form with such

an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for

making modifications to it. For an executable work, complete source

code means all the source code for all modules it contains, plus any

associated interface definition files, plus the scripts used to

control compilation and installation of the executable. However, as a

special exception, the source code distributed need not include

anything that is normally distributed (in either source or binary

form) with the major components (compiler, kernel, and so on) of the

operating system on which the executable runs, unless that component

itself accompanies the executable.

If distribution of executable or object code is made by offering

access to copy from a designated place, then offering equivalent

access to copy the source code from the same place counts as

distribution of the source code, even though third parties are not

compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program

except as expressly provided under this License. Any attempt

otherwise to copy, modify, sublicense or distribute the Program is

void, and will automatically terminate your rights under this License.

However, parties who have received copies, or rights, from you under

this License will not have their licenses terminated so long as such

parties remain in full compliance.

5. You are not required to accept this License, since you have not

signed it. However, nothing else grants you permission to modify or

distribute the Program or its derivative works. These actions are

prohibited by law if you do not accept this License. Therefore, by

modifying or distributing the Program (or any work based on the

Program), you indicate your acceptance of this License to do so, and

all its terms and conditions for copying, distributing or modifying

the Program or works based on it.

6. Each time you redistribute the Program (or any work based on the

Program), the recipient automatically receives a license from the

original licensor to copy, distribute or modify the Program subject to

these terms and conditions. You may not impose any further

restrictions on the recipients’ exercise of the rights granted herein.

You are not responsible for enforcing compliance by third parties to

this License.

7. If, as a consequence of a court judgment or allegation of patent

infringement or for any other reason (not limited to patent issues),

conditions are imposed on you (whether by court order, agreement or

otherwise) that contradict the conditions of this License, they do not

excuse you from the conditions of this License. If you cannot

distribute so as to satisfy simultaneously your obligations under this

License and any other pertinent obligations, then as a consequence you

may not distribute the Program at all. For example, if a patent

license would not permit royalty-free redistribution of the Program by

all those who receive copies directly or indirectly through you, then

the only way you could satisfy both it and this License would be to

refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under

any particular circumstance, the balance of the section is intended to

apply and the section as a whole is intended to apply in other

circumstances.

It is not the purpose of this section to induce you to infringe any

patents or other property right claims or to contest validity of any

such claims; this section has the sole purpose of protecting the

integrity of the free software distribution system, which is

implemented by public license practices. Many people have made

generous contributions to the wide range of software distributed

through that system in reliance on consistent application of that

system; it is up to the author/donor to decide if he or she is willing

to distribute software through any other system and a licensee cannot

impose that choice.

This section is intended to make thoroughly clear what is believed to

be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in

certain countries either by patents or by copyrighted interfaces, the

original copyright holder who places the Program under this License

may add an explicit geographical distribution limitation excluding

those countries, so that distribution is permitted only in or among

countries not thus excluded. In such case, this License incorporates

the limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new versions

of the General Public License from time to time. Such new versions will

be similar in spirit to the present version, but may differ in detail to

address new problems or concerns.

Each version is given a distinguishing version number. If the Program

specifies a version number of this License which applies to it and “any

later version”, you have the option of following the terms and conditions

either of that version or of any later version published by the Free

Software Foundation. If the Program does not specify a version number of

this License, you may choose any version ever published by the Free Software

Foundation.

10. If you wish to incorporate parts of the Program into other free

programs whose distribution conditions are different, write to the author

to ask for permission. For software which is copyrighted by the Free

Software Foundation, write to the Free Software Foundation; we sometimes

make exceptions for this. Our decision will be guided by the two goals

of preserving the free status of all derivatives of our free software and

of promoting the sharing and reuse of software generally.

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY

FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN

OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES

PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED

OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS

TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE

PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,

REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING

WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR

REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,

INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING

OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED

TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY

YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER

PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE

POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest

possible use to the public, the best way to achieve this is to make it

free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest

to attach them to the start of each source file to most effectively

convey the exclusion of warranty; and each file should have at least

the “copyright” line and a pointer to where the full notice is found.

Copyright (C)

This program is free software; you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation; either version 2 of the License, or

(at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License along

with this program; if not, write to the Free Software Foundation, Inc.,

51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this

when it starts in an interactive mode:

Gnomovision version 69, Copyright (C) year name of author

Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w’.

This is free software, and you are welcome to redistribute it

under certain conditions; type `show c’ for details.

The hypothetical commands `show w’ and `show c’ should show the appropriate

parts of the General Public License. Of course, the commands you use may

be called something other than `show w’ and `show c’; they could even be

mouse-clicks or menu items–whatever suits your program.

You should also get your employer (if you work as a programmer) or your

school, if any, to sign a “copyright disclaimer” for the program, if

necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyright interest in the program

`Gnomovision’ (which makes passes at compilers) written by James Hacker.


, 1 April 1989

Ty Coon, President of Vice

This General Public License does not permit incorporating your program into

proprietary programs. If your program is a subroutine library, you may

consider it more useful to permit linking proprietary applications with the

library. If this is what you want to do, use the GNU Lesser General

Public License instead of this License.