parent
4d25c4e1ff
commit
22f7f75d8d
@ -0,0 +1,340 @@ |
|||||||
|
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. |
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.> |
||||||
|
Copyright (C) <year> <name of author> |
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify |
||||||
|
it under the terms of the GNU General Public License as published by |
||||||
|
the Free Software Foundation; either version 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. |
||||||
|
|
||||||
|
<signature of Ty Coon>, 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. |
@ -0,0 +1,76 @@ |
|||||||
|
# umbrella mkimage-profiles makefile:
|
||||||
|
# iterate over multiple goals/arches,
|
||||||
|
# collect proceedings
|
||||||
|
|
||||||
|
# preferences
|
||||||
|
-include $(HOME)/.mkimage/profiles.mk |
||||||
|
|
||||||
|
# for immediate assignment
|
||||||
|
ifndef ARCH |
||||||
|
ARCH := $(shell arch \
|
||||||
|
| sed 's/i686/i586/; s/armv7.*/armh/; s/armv.*/arm/')
|
||||||
|
endif |
||||||
|
|
||||||
|
ifndef ARCHES |
||||||
|
ARCHES := $(ARCH)
|
||||||
|
endif |
||||||
|
|
||||||
|
export ARCHES ARCH |
||||||
|
|
||||||
|
export PATH := $(CURDIR)/bin:$(PATH)
|
||||||
|
|
||||||
|
# recursive make considered useful for m-p
|
||||||
|
MAKE += -r --no-print-directory
|
||||||
|
|
||||||
|
export DIRECT_TARGETS := help help/distro help/ve help/vm clean distclean check
|
||||||
|
.PHONY: $(DIRECT_TARGETS) |
||||||
|
|
||||||
|
# these build nothing so no use of reports either
|
||||||
|
$(DIRECT_TARGETS): |
||||||
|
@$(MAKE) -f main.mk REPORT= $@
|
||||||
|
|
||||||
|
export NUM_TARGETS := $(words $(MAKECMDGOALS))
|
||||||
|
|
||||||
|
# for pipefail
|
||||||
|
SHELL = /bin/bash
|
||||||
|
|
||||||
|
# don't even consider remaking a configuration file
|
||||||
|
.PHONY: $(HOME)/.mkimage/profiles.mk |
||||||
|
|
||||||
|
# real targets need real work
|
||||||
|
%: |
||||||
|
@n=1; \
|
||||||
|
set -o pipefail; \
|
||||||
|
say() { echo "$$@" >&2; }; \
|
||||||
|
if [ "$(NUM_TARGETS)" -gt 1 ]; then \
|
||||||
|
n="`echo $(MAKECMDGOALS) \
|
||||||
|
| tr '[[:space:]]' '\n' \
|
||||||
|
| grep -nx "$@" \
|
||||||
|
| cut -d: -f1`"; \
|
||||||
|
say "** goal: $@ [$$n/$(NUM_TARGETS)]"; \
|
||||||
|
else \
|
||||||
|
say "** goal: $@"; \
|
||||||
|
fi; \
|
||||||
|
for ARCH in $(ARCHES); do \
|
||||||
|
if [ -z "$(QUIET)" ]; then \
|
||||||
|
if [ "$$ARCH" != "$(firstword $(ARCHES))" ]; then \
|
||||||
|
say; \
|
||||||
|
fi; \
|
||||||
|
say "** ARCH: $$ARCH"; \
|
||||||
|
fi; \
|
||||||
|
if [ -n "$(REPORT)" ]; then \
|
||||||
|
REPORT_PATH=$$(mktemp --tmpdir mkimage-profiles.report.XXXXXXX); \
|
||||||
|
$(MAKE) -f main.mk ARCH=$$ARCH $@ | report-filter > $$REPORT_PATH || exit 1; \
|
||||||
|
$(MAKE) -f reports.mk ARCH=$$ARCH REPORT=$(REPORT) REPORT_PATH=$$REPORT_PATH; \
|
||||||
|
else \
|
||||||
|
$(MAKE) -f main.mk ARCH=$$ARCH $@ || exit 1; \
|
||||||
|
fi; \
|
||||||
|
if [ -n "$(AUTOCLEAN)" ]; then $(MAKE) distclean; fi; \
|
||||||
|
done; \
|
||||||
|
if [ "$$n" -lt "$(NUM_TARGETS)" ]; then say; fi
|
||||||
|
|
||||||
|
docs: |
||||||
|
@$(MAKE) -C doc
|
||||||
|
|
||||||
|
docs-publish: |
||||||
|
@$(MAKE) -C doc publish
|
@ -0,0 +1,54 @@ |
|||||||
|
English quickstart: make syslinux.iso (after setting up |
||||||
|
http://en.altlinux.org/Hasher; large tmpfs helps a lot). |
||||||
|
|
||||||
|
требуется |
||||||
|
~~~~~~~~~ |
||||||
|
- ALT 8.0 или выше (возможна адаптация "вниз", см. ветки) |
||||||
|
- установленный mkimage (свежий, как и hasher) |
||||||
|
- пользователь с правом запуска hasher и подключения /proc к нему |
||||||
|
|
||||||
|
полезно |
||||||
|
~~~~~~~ |
||||||
|
- смонтированный tmpfs на несколько гигабайт (или укажите BUILDDIR) |
||||||
|
* например, в /tmp или /home/USER/hasher |
||||||
|
* каталог из prefix в /etc/hasher-priv/system |
||||||
|
- установленный git-core и настроенный ~/.gitconfig |
||||||
|
|
||||||
|
команды |
||||||
|
~~~~~~~ |
||||||
|
от имени root:: |
||||||
|
---- |
||||||
|
# apt-get install mkimage mkimage-preinstall hasher git-core |
||||||
|
# hasher-useradd USER |
||||||
|
---- |
||||||
|
|
||||||
|
от имени указанного пользователя (после повторного входа):: |
||||||
|
---- |
||||||
|
$ git config --global user.email "my@email" |
||||||
|
$ git config --global user.name "My Name" |
||||||
|
$ mkdir -p ~/out ~/tmp |
||||||
|
---- |
||||||
|
|
||||||
|
тестовая сборка (в каталоге mkimage-profiles):: |
||||||
|
---- |
||||||
|
$ make syslinux.iso |
||||||
|
---- |
||||||
|
|
||||||
|
список доступных целей:: |
||||||
|
---- |
||||||
|
$ make help |
||||||
|
---- |
||||||
|
|
||||||
|
переменные, влияющие на результат (подробнее в doc/params.txt):: |
||||||
|
--- |
||||||
|
$ make ARCH=i586 APTCONF=~/apt/apt.conf.i586 REPORT=1 ve/generic.tar |
||||||
|
--- |
||||||
|
|
||||||
|
ссылки |
||||||
|
~~~~~~ |
||||||
|
- http://www.altlinux.org/tmpfs |
||||||
|
- http://www.altlinux.org/hasher |
||||||
|
- http://www.altlinux.org/mkimage |
||||||
|
- http://www.altlinux.org/m-p |
||||||
|
- http://www.altlinux.org/m-p-howto ("как поправить под себя") |
||||||
|
- http://www.altlinux.org/starterkits/builder (сборочный LiveCD) |
@ -0,0 +1,84 @@ |
|||||||
|
== Welcome to m-p! == |
||||||
|
|
||||||
|
*Brief summary* |
||||||
|
|
||||||
|
Configurables: ~/.mkimage/profiles.mk; |
||||||
|
see doc/params.txt and conf.d/README |
||||||
|
|
||||||
|
License: GPLv2+, see COPYING |
||||||
|
|
||||||
|
Most docs are in Russian, welcome to learn it or ask for English. |
||||||
|
|
||||||
|
Задача: |
||||||
|
|
||||||
|
* конфигурирование и создание образов на базе ALT Linux |
||||||
|
|
||||||
|
Концепция: |
||||||
|
|
||||||
|
* конфигурация, как и образ -- объект постадийной сборки |
||||||
|
* метапрофиль служит репозиторием для построения индивидуального |
||||||
|
профиля, по которому создаётся итоговый образ |
||||||
|
|
||||||
|
Особенности: |
||||||
|
|
||||||
|
* метапрофиль при сборке может быть доступен только на чтение |
||||||
|
* для сборки подыскивается предпочтительно tmpfs |
||||||
|
* в профиль копируются только нужные объекты; |
||||||
|
он автономен относительно метапрофиля |
||||||
|
|
||||||
|
Стадии работы: |
||||||
|
|
||||||
|
* инициализация сборочного профиля |
||||||
|
* сборка конфигурации образа |
||||||
|
* наполнение сборочного профиля |
||||||
|
* сборка образа |
||||||
|
|
||||||
|
Объекты: |
||||||
|
|
||||||
|
* дистрибутивы и виртуальные среды/машины: |
||||||
|
** описываются в conf.d/*.mk |
||||||
|
** могут основываться на предшественниках, расширяя их |
||||||
|
** дистрибутивы также включают один или более субпрофилей по надобности |
||||||
|
** желательно избегать множественного наследования, см. тж. фичи |
||||||
|
|
||||||
|
* субпрофили: |
||||||
|
** список собирается в $(SUBPROFILES) |
||||||
|
** базовые комплекты помещены в подкаталогах под sub.in/; |
||||||
|
их наборы скриптов могут расширяться фичами |
||||||
|
|
||||||
|
* фичи: |
||||||
|
** законченные блоки функциональности (или наборы таковых) |
||||||
|
** описываются в индивидуальных features.in/*/config.mk |
||||||
|
** могут требовать другие фичи, а также субпрофили |
||||||
|
** накопительный список собирается в $(FEATURES) |
||||||
|
** при сборке $(BUILDDIR) содержимое фич добавляется в профиль |
||||||
|
|
||||||
|
* списки пакетов (*_LISTS): |
||||||
|
** _внимание_: не надо создавать фичу, если достаточно списка пакетов! |
||||||
|
** просьба по возможности избегать дублирования (см. bin/pkgdups) |
||||||
|
|
||||||
|
* индивидуальные пакеты (*_PACKAGES): см. тж. conf.d/README |
||||||
|
|
||||||
|
Результат: |
||||||
|
|
||||||
|
* при успешном завершении сборки образ называется по имени цели |
||||||
|
и укладывается в $(IMAGEDIR): |
||||||
|
** указанный явно, |
||||||
|
** либо ~/out/ (если возможно), |
||||||
|
** или $(BUILDDIR)/out/ иначе |
||||||
|
* формируются отчёты, если запрошены (REPORT) |
||||||
|
|
||||||
|
См. тж.: |
||||||
|
|
||||||
|
* https://altlinux.org/mkimage-profiles: обзорная документация, в т.ч. howto |
||||||
|
* doc/: |
||||||
|
** params.txt: переменные, указываемые при запуске сборки |
||||||
|
** pkglists.txt: формирование состава образа |
||||||
|
** features.txt: обзор подключаемых особенностей |
||||||
|
|
||||||
|
Примечание: пути в документации задаются от каталога верхнего уровня, |
||||||
|
если не указаны как относительные в явном виде (./) или по смыслу. |
||||||
|
|
||||||
|
Удачи; что не так -- пишите. |
||||||
|
|
||||||
|
Michael Shigorin <mike@altlinux.org>, Anton Midyukov <antohami@altlinux.org> |
@ -0,0 +1,8 @@ |
|||||||
|
// these must be unset to avoid picking up |
||||||
|
// /etc/apt/{apt.conf.d,sources.list.d,}/ |
||||||
|
Dir::Etc::main "/dev/null"; |
||||||
|
Dir::Etc::parts "/var/empty"; |
||||||
|
Dir::Etc::SourceParts "/var/empty"; |
||||||
|
|
||||||
|
// this is what caused the whole trouble |
||||||
|
Dir::Etc::sourcelist "/home/tema/mkimage-profiles/myp10"; |
@ -0,0 +1,49 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# filter stdin or file for words related to |
||||||
|
# the specified target architecture |
||||||
|
# |
||||||
|
# args: -a arch [-i file] |
||||||
|
|
||||||
|
if [ "$1" = "-a" -a -n "$2" ]; then |
||||||
|
a="$2" |
||||||
|
shift 2 |
||||||
|
else |
||||||
|
cat |
||||||
|
exit |
||||||
|
fi |
||||||
|
|
||||||
|
if [ "$1" = "-i" -a -w "$2" ]; then |
||||||
|
f="$2" |
||||||
|
t="`mktemp`" |
||||||
|
fi |
||||||
|
|
||||||
|
# map meta-arches for prefiltering |
||||||
|
# NB: biarch gets special expansion later |
||||||
|
case "$a" in |
||||||
|
i586) |
||||||
|
A="(IA32|X86)";; |
||||||
|
x86_64) |
||||||
|
A="X86";; |
||||||
|
e2k*) |
||||||
|
A="E2K";; |
||||||
|
aarch64|arm*) |
||||||
|
A="ARM";; |
||||||
|
*) |
||||||
|
A=;; |
||||||
|
esac |
||||||
|
|
||||||
|
# NB: pipe runs in parallel => faster than -e -e |
||||||
|
cat ${f:+"$f"} | |
||||||
|
sed -rn "s/\<([^@ ]*)\>|\<([^@ ]*)@$A\>/\1\2/pg" | |
||||||
|
sed -rn "s/\<([^@ ]*)\>|\<[^@ ]*@\!$A\> */\1/pg" | |
||||||
|
sed -r "s/\<([^@ ]*)@IA32\>/\1@i586 i586-\1@x86_64/g" | |
||||||
|
sed -rn "s/\<([^@ ]*)\>|\<([^@ ]*)@$a\>/\1\2/pg" | |
||||||
|
sed -rn "s/\<([^@ ]*)\>|\<[^@ ]*@\!$a\> */\1/pg" | |
||||||
|
sed -r "s/\<([^@ ]*)@\![^@ ]+\>/\1/g" | |
||||||
|
sed -r "s/\<([^@ ]*)@[^@ ]+\> *//g" | |
||||||
|
sed -r "s/^ +//;s/ +$//" | |
||||||
|
if [ -n "$f" ]; then |
||||||
|
cat > "$t" && mv "$t" "$f" |
||||||
|
else |
||||||
|
cat |
||||||
|
fi |
@ -0,0 +1,100 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# script based on initial implementation |
||||||
|
# by Vitaly Gusach (http://gusach.org.ua) |
||||||
|
# |
||||||
|
# purpose: warn on those entries in given packagelists(s) |
||||||
|
# which are definitely absent; the build might still bail out |
||||||
|
# but at least 80% of failures can be predicted early now |
||||||
|
# |
||||||
|
# usage: check-pkg-list [-n pkgnames] [--aptbox $PATH/to/aptbox] pkglist ... |
||||||
|
# (pkgnames file should contain `apt-cache pkgnames`) |
||||||
|
# NB: -n pkgnames MUST go first, if given |
||||||
|
|
||||||
|
RET_ERROR= |
||||||
|
|
||||||
|
error() { echo `basename $0`: $* >&2; exit 1; } |
||||||
|
|
||||||
|
exit_handler() { |
||||||
|
local rc=$? |
||||||
|
trap - EXIT |
||||||
|
rm -f -- "$ftemp" "$fpkgnames" "$fpkgwildcards" "$favaillist" "$fpkgerrors" |
||||||
|
exit $rc |
||||||
|
} |
||||||
|
|
||||||
|
# figure out apt.conf from recent aptbox or fallback to system one |
||||||
|
dump_pkgnames() { |
||||||
|
${APTBOX:+$APTBOX/}apt-cache pkgnames | sort -u > "$favaillist" |
||||||
|
} |
||||||
|
|
||||||
|
check_pkglist() { |
||||||
|
fprofilelist="$1" |
||||||
|
[ -f "$fprofilelist" ] || error "invalid packagelist filename: $fprofilelist" |
||||||
|
# cleaning pkg list from comments, empty lines, |
||||||
|
# splitting several pkgnames on the same line |
||||||
|
sed -e '/^#/d' -e '/^[ ]*$/d' -e 's/ \+$//' -e 's/[ ]\+/\n/g' \ |
||||||
|
< "$fprofilelist" \ |
||||||
|
| sed 's/-$//' \ |
||||||
|
| sort -u \ |
||||||
|
> "$ftemp" # got list of pkgnames we need |
||||||
|
|
||||||
|
# split pkgnames without wildcards and with wildcards |
||||||
|
fgrep -v '*' "$ftemp" > "$fpkgnames" |
||||||
|
fgrep '*' "$ftemp" > "$fpkgwildcards" |
||||||
|
|
||||||
|
# return unavailable packages |
||||||
|
comm -23 "$fpkgnames" "$favaillist" > "$fpkgerrors" |
||||||
|
|
||||||
|
# return unavailable wildcards |
||||||
|
while read i; do |
||||||
|
# replacing * with regexp's \.+ |
||||||
|
pattern="^`echo ${i#^} | sed -e 's/\*/.\\\\+/'`$" |
||||||
|
grep -q "$pattern" "$favaillist" || echo "$i" >> "$fpkgerrors" |
||||||
|
done < "$fpkgwildcards" |
||||||
|
if [ -s "$fpkgerrors" ]; then |
||||||
|
echo "Error: Packages are not available in $fprofilelist:" >&2 |
||||||
|
RET_ERROR=1 |
||||||
|
cat $fpkgerrors >&2 |
||||||
|
fi |
||||||
|
} |
||||||
|
|
||||||
|
[ "$#" -gt 0 ] || error "need at least one argument, a packagelist to check" |
||||||
|
|
||||||
|
# reusable temporary files with self-cleanup at exit |
||||||
|
TEMP="${TMP:-/tmp}" |
||||||
|
trap exit_handler HUP INT QUIT TERM EXIT |
||||||
|
favaillist="`mktemp $TEMP/pkgchecker.avail.XXXXX`" |
||||||
|
fpkgnames="`mktemp $TEMP/pkgchecker.names.XXXXX`" |
||||||
|
fpkgwildcards="`mktemp $TEMP/pkgchecker.wildcards.XXXXX`" |
||||||
|
fpkgerrors="`mktemp $TEMP/pkgchecker.error.XXXXX`" |
||||||
|
ftemp="`mktemp $TEMP/pkgchecker.XXXXX`" |
||||||
|
|
||||||
|
# check args |
||||||
|
while :; do |
||||||
|
case "$1" in |
||||||
|
# make sure pkgnames dump is handy |
||||||
|
"-n"|"--pkgnames") |
||||||
|
[ -f "$2" ] && { |
||||||
|
sort "$2" > "$favaillist" |
||||||
|
shift; shift |
||||||
|
} || error "-n needs valid pkgnames filename" |
||||||
|
;; |
||||||
|
# PATH to aptbox |
||||||
|
"--aptbox") |
||||||
|
[ -d "$2" ] && { |
||||||
|
APTBOX="$2" |
||||||
|
shift; shift |
||||||
|
} || error "--aptbox needs valid directory" |
||||||
|
;; |
||||||
|
*) |
||||||
|
break |
||||||
|
;; |
||||||
|
esac |
||||||
|
done |
||||||
|
|
||||||
|
[ -s "$favaillist" ] || dump_pkgnames |
||||||
|
|
||||||
|
for list in "$@"; do |
||||||
|
check_pkglist "$list" |
||||||
|
done |
||||||
|
|
||||||
|
[ -z "$RET_ERROR" ] || error "Some lists contain unavailable packages" |
@ -0,0 +1,14 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
# missing "; @:" for recipeless rules makes SHELL payload useless |
||||||
|
# (see also ../lib/report.mk); this results in broken target graphs |
||||||
|
# (so REPORT=1 gets crippled) |
||||||
|
|
||||||
|
sed 's/^[a-z]\+\/.*:.*$/\n&/' "$@" \ |
||||||
|
| grep -vE '^(#|export|if|else|endif|define|endef)' \ |
||||||
|
| sed ':loop /^[^#].*[^\\]\\$/N; s/\\\n//; t loop' \ |
||||||
|
| grep -vE ':=| = | ?= | += |^\$' \ |
||||||
|
| sed ':loop /^[a-z]\+\/.*:.*$/N; s/\n\t\+@*/\; /; t loop' \ |
||||||
|
| grep -vE ';|^$' && exit 1 ||: |
||||||
|
|
||||||
|
# see also http://unix.stackexchange.com/questions/228547 |
@ -0,0 +1,24 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# try making build logs more diffable |
||||||
|
# see also reports.mk |
||||||
|
|
||||||
|
[ -n "$BUILDDIR" ] || exit 1 |
||||||
|
|
||||||
|
sed -r \ |
||||||
|
-e "s,$BUILDDIR,,g" \ |
||||||
|
-e '/\/var\/lib\/apt\/lists/d' \ |
||||||
|
-e 's/... .. ..:..:..//g' \ |
||||||
|
-e 's/\[[0-9]+\]//g' \ |
||||||
|
-e '/^(Reading Package Lists|Building Dependency Tree)/d' \ |
||||||
|
-e '/^(Fetched|Need to get|After unpacking) /d' \ |
||||||
|
-e '/^(Preparing packages for installation|Done\.)/d' \ |
||||||
|
-e '/^hsh(|-(initroot|install|fakedev|(mk|rm)chroot|run)): /d' \ |
||||||
|
-e '/^(hasher-priv|mkaptbox|(mk|rm)dir): /d' \ |
||||||
|
-e '/^mki-((invalidate-|)cache|check-obsolete|prepare): /d' \ |
||||||
|
-e '/^(mode of|changed (group|ownership)|removed) /d' \ |
||||||
|
-e '/^chroot\/.in\//d' \ |
||||||
|
-e '/ has started executing\.$/d' \ |
||||||
|
-e '/\/var\/log\/apt\.log$/d' \ |
||||||
|
-e '/\/usr\/share\/apt\/scripts\/log\.lua/d' \ |
||||||
|
-e '/\.rpm$/d' \ |
||||||
|
-e "/' -> '/d" |
@ -0,0 +1,36 @@ |
|||||||
|
#!/bin/bash |
||||||
|
# columnize.sh |
||||||
|
# Take a list of values and output them in a nicely formatted column view. |
||||||
|
# Author: Loïc Cattani "Arko" <loic cattani at gmail com> |
||||||
|
# https://github.com/Arko/Columnize |
||||||
|
|
||||||
|
values=($*) |
||||||
|
longest_value=0 |
||||||
|
|
||||||
|
# Find the longest value |
||||||
|
for value in ${values[@]}; do |
||||||
|
if [[ ${#value} -gt $longest_value ]]; then |
||||||
|
longest_value=${#value} |
||||||
|
fi |
||||||
|
done |
||||||
|
|
||||||
|
# Compute column span |
||||||
|
term_width=${COLUMNS:-$(tput cols)} |
||||||
|
(( columns = $term_width / ($longest_value + 2) )) |
||||||
|
|
||||||
|
# Print values with pretty column width |
||||||
|
curr_col=0 |
||||||
|
for value in ${values[@]}; do |
||||||
|
value_len=${#value} |
||||||
|
echo -n $value |
||||||
|
(( spaces_missing = $longest_value - $value_len + 2 )) |
||||||
|
printf "%*s" $spaces_missing |
||||||
|
(( curr_col++ )) |
||||||
|
if [[ $curr_col == $columns ]]; then |
||||||
|
echo |
||||||
|
curr_col=0 |
||||||
|
fi |
||||||
|
done |
||||||
|
|
||||||
|
# Make sure there is a newline at the end |
||||||
|
if [[ $curr_col != 0 ]]; then echo; fi |
@ -0,0 +1,30 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# Expand metapackage dependenies |
||||||
|
# |
||||||
|
APT_CACHE=$1 |
||||||
|
f=$2 |
||||||
|
[ -n "$f" ] || exit 0 |
||||||
|
|
||||||
|
metapkgs="$(grep -e @META "$f" | grep -v '^#')" |
||||||
|
[ -n "metapkgs" ] || exit 0 |
||||||
|
|
||||||
|
for metapkg in $metapkgs; do |
||||||
|
metapkg=${metapkg%@META} |
||||||
|
if ! "$APT_CACHE" show "$metapkg" > /dev/null 2>&1; then |
||||||
|
echo "Warning: Metapackage $metapkg not available!!!" >&2 |
||||||
|
continue |
||||||
|
fi |
||||||
|
t="`mktemp`" |
||||||
|
LANG=C "$APT_CACHE" depends "$metapkg"| grep 'Depends:' | |
||||||
|
cut -f4 -d ' ' |grep -v '<' > "$t" |
||||||
|
if [ -s "$t" ]; then |
||||||
|
sed -i -e "/$metapkg@META/r $t" -e "s/$metapkg@META/$metapkg/" "$f" |
||||||
|
fi |
||||||
|
sed -i "s/$metapkg@META/$metapkg/" "$f" |
||||||
|
rm -f "$t" |
||||||
|
done |
||||||
|
|
||||||
|
# Cleanup not available metapackages |
||||||
|
sed -i "/@META/d" "$f" |
||||||
|
|
||||||
|
exit 0 |
@ -0,0 +1,97 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# analyze free space, preferring tmpfs over really many gigaz |
||||||
|
# and taking into account configured hasher workdir prefices |
||||||
|
|
||||||
|
# NB: use BUILDDIR to override autodetection (see ../QUICKSTART) |
||||||
|
|
||||||
|
# hope there aren't spaces in RM's $HOME are they? |
||||||
|
DIRS="$TMP $TMPDIR $HOME/hasher /tmp /var/tmp .." |
||||||
|
MINSIZE=262144 # face control criterion |
||||||
|
|
||||||
|
# mkimage needs /proc among those, be clear about that |
||||||
|
check_allowed_mountpoints() |
||||||
|
{ |
||||||
|
grep -wqs "^allowed_mountpoints=[^#]*/proc" \ |
||||||
|
/etc/hasher-priv/system \ |
||||||
|
`/usr/libexec/hasher-priv/getconf.sh` |
||||||
|
} |
||||||
|
|
||||||
|
# poor man's SourceIfExists() |
||||||
|
try_source() { [ -f "$1" ] && . "$1"; } |
||||||
|
|
||||||
|
# hasher accepted ones |
||||||
|
get_prefices() |
||||||
|
{ |
||||||
|
try_source /etc/hasher-priv/system || exit 1 |
||||||
|
try_source `/usr/libexec/hasher-priv/getconf.sh` |
||||||
|
echo "$prefix" | tr ':' '\n' | while read i; do realpath "$i"; done |
||||||
|
} |
||||||
|
|
||||||
|
# drop candidates that hasher won't handle anyways |
||||||
|
# NB: doesn't take --number into account, |
||||||
|
# prefix lists are defined by the primary configuration |
||||||
|
contemplate_dirs() |
||||||
|
{ |
||||||
|
for d in "$@"; do |
||||||
|
D="`realpath "$d"`"; |
||||||
|
for p in `get_prefices`; do |
||||||
|
[ "${D#$p}" = "$D" ] || echo "$D"; |
||||||
|
done; |
||||||
|
done \ |
||||||
|
| uniq # _not_ sort -u |
||||||
|
} |
||||||
|
|
||||||
|
# hasher emits no meaningful errors regarding those, sigh |
||||||
|
check_options() |
||||||
|
{ |
||||||
|
! egrep -q "^$1 $2 .*no(dev|exec)" /proc/mounts |
||||||
|
} |
||||||
|
|
||||||
|
# pick existing, writeable, >256M free space dirs |
||||||
|
# rank them wrt type: tmpfs > realfs > rootfs |
||||||
|
choose_tmpdir() { |
||||||
|
for i in "$@"; do |
||||||
|
[ -d "$i" -a -w "$i" ] || continue |
||||||
|
echo -n "$i " |
||||||
|
df -PT "$i" | tail -1 |
||||||
|
done \ |
||||||
|
| sort -unk5 \ |
||||||
|
| while read dir dev fstype size used free percent mnt; do |
||||||
|
check_options "$dev" "$mnt" || continue |
||||||
|
[ "$free" -gt "$MINSIZE" ] || continue |
||||||
|
[ "$fstype" = "tmpfs" ] && { echo "2 $dir $free"; continue; } |
||||||
|
[ "$mnt" = "/" ] && { echo "0 $dir $free"; continue; } |
||||||
|
echo "1 $dir $free" |
||||||
|
done \ |
||||||
|
| sort -n \ |
||||||
|
| tail -1 \ |
||||||
|
| cut -f2 -d' ' |
||||||
|
} |
||||||
|
|
||||||
|
# bringing it all together |
||||||
|
if ! check_allowed_mountpoints; then |
||||||
|
echo "error: hasher's allowed_mountpoints do not include /proc;" |
||||||
|
echo "please check hasher docs and /etc/hasher-priv/system" |
||||||
|
exit 1 |
||||||
|
fi >&2 |
||||||
|
|
||||||
|
TMPDIRS="`contemplate_dirs $DIRS`" |
||||||
|
if [ -z "$TMPDIRS" ]; then |
||||||
|
echo "error: no suitable directories found;" |
||||||
|
echo "please check QUICKSTART, filesystem and hasher setup" |
||||||
|
echo "(mount enough tmpfs into /tmp or fix hasher-priv prefix?)" |
||||||
|
exit 1 |
||||||
|
fi >&2 |
||||||
|
|
||||||
|
TEMP="`choose_tmpdir $TMPDIRS`" |
||||||
|
if [ -z "$TEMP" ]; then |
||||||
|
echo "error: no suitable directories found;" |
||||||
|
echo "please check hasher docs and filesystem setup" |
||||||
|
echo "(nodev and/or noexec on an otherwise suitable filesystem?)" |
||||||
|
exit 1 |
||||||
|
fi >&2 |
||||||
|
|
||||||
|
DIR="$TEMP/`dirname "$1"`" |
||||||
|
NAME="`basename "${1:-tmpdir}"`" |
||||||
|
mkdir -p "$DIR" # in case $1 contains slash(es) |
||||||
|
mktemp -d "$NAME.XXXXXXX" --tmpdir="${DIR%/.}" |
@ -0,0 +1,27 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# commit the directory ($1) with a message ($2) to git |
||||||
|
|
||||||
|
. shell-error |
||||||
|
|
||||||
|
INIT= |
||||||
|
if [ "$1" = "-i" ]; then |
||||||
|
INIT=yes |
||||||
|
shift |
||||||
|
fi |
||||||
|
|
||||||
|
[ -d "$1" ] || fatal "$1 is not an existing directory" |
||||||
|
|
||||||
|
if type -t git >&/dev/null && pushd "$1" >/dev/null; then |
||||||
|
if [ -z "$(git config --global user.name)" ]; then |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
if [ -n "$INIT" -a ! -d .git ]; then |
||||||
|
git init -q || fatal "git init failed" |
||||||
|
fi |
||||||
|
if [ -n "$(git status -s)" ]; then |
||||||
|
git add . \ |
||||||
|
&& git commit -anq -m "$2" \ |
||||||
|
|| fatal "git add/commit failed" |
||||||
|
fi |
||||||
|
popd >/dev/null |
||||||
|
fi |
@ -0,0 +1,11 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# report on git repo in the current directory |
||||||
|
|
||||||
|
if type -t git >&/dev/null; then |
||||||
|
if pushd "$1" >/dev/null && [ -d .git ]; then |
||||||
|
git show-ref --head -ds -- HEAD |
||||||
|
git status -s |
||||||
|
echo |
||||||
|
popd >/dev/null |
||||||
|
fi |
||||||
|
fi |
@ -0,0 +1,20 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# a script to help weed out duplicate packages |
||||||
|
# contained in package lists given as arguments |
||||||
|
# |
||||||
|
# Requires: libshell |
||||||
|
|
||||||
|
. /bin/shell-quote |
||||||
|
|
||||||
|
sort "$@" \ |
||||||
|
| grep -v '^ *#' \ |
||||||
|
| sed -s 's,[ ]\+, ,g' \ |
||||||
|
| grep -v '^ *$' \ |
||||||
|
| uniq -cd \ |
||||||
|
| while read num str; do |
||||||
|
echo -n "$str: $num "; |
||||||
|
pattern="`quote_sed_regexp "$str"`" |
||||||
|
grep -l "^$pattern$" "$@" | tr '\n' ' ' |
||||||
|
echo |
||||||
|
done \ |
||||||
|
| sort -rn -t: -k2 |
@ -0,0 +1,4 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# filter worker make stdout for report scripts |
||||||
|
|
||||||
|
grep '^trace:building ' | uniq |
@ -0,0 +1,33 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
echo "digraph {" |
||||||
|
echo " { node [fontname=Helvetica,fontsize=20];" |
||||||
|
|
||||||
|
while read first second third rest; do |
||||||
|
FROM=; TO= |
||||||
|
case "$first" in |
||||||
|
"trace:building") |
||||||
|
case "$third" in |
||||||
|
"->") |
||||||
|
FROM="$second"; TO="$rest";; |
||||||
|
*) |
||||||
|
continue;; |
||||||
|
esac |
||||||
|
;; |
||||||
|
*) |
||||||
|
continue;; |
||||||
|
esac |
||||||
|
[ -n "$FROM" -a -n "$TO" ] || continue |
||||||
|
for to in $TO; do |
||||||
|
out=" \"$FROM\" -> \"$to\"" |
||||||
|
case $to in |
||||||
|
*distro/*|*vm/*|*ve/*) |
||||||
|
echo "$out [weight=10];";; |
||||||
|
*) |
||||||
|
echo "$out;";; |
||||||
|
esac |
||||||
|
done |
||||||
|
done |
||||||
|
|
||||||
|
echo " }" |
||||||
|
echo "}" |
@ -0,0 +1,52 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
DISTCFG=build/distcfg.mk |
||||||
|
[ -s "$DISTCFG" ] || exit 1 |
||||||
|
|
||||||
|
VARIABLES= |
||||||
|
|
||||||
|
echo "graph { rankdir=LR;" |
||||||
|
echo " { node [height=.1,width=.3,fontname=Helvetica,fontsize=10];" |
||||||
|
|
||||||
|
feat_vars() |
||||||
|
{ |
||||||
|
FEATURE= |
||||||
|
while read first second rest; do |
||||||
|
case "$first" in |
||||||
|
\#[A-Z]*) |
||||||
|
continue;; # overridden feature |
||||||
|
\#) # feature mark |
||||||
|
case "$second" in |
||||||
|
profile/*) |
||||||
|
FEATURE=;; |
||||||
|
*) |
||||||
|
FEATURE="$second";; |
||||||
|
esac |
||||||
|
;; |
||||||
|
*) |
||||||
|
case "$second" in |
||||||
|
=|+=|?=) |
||||||
|
case "$first" in |
||||||
|
DISTCFG_MK|SUBPROFILES|FEATURES|IMAGE*|MKIMAGE_*) |
||||||
|
continue;; |
||||||
|
*) |
||||||
|
VAR="$first" |
||||||
|
VARIABLES="$VARIABLES; $VAR" |
||||||
|
;; |
||||||
|
esac |
||||||
|
;; |
||||||
|
*) |
||||||
|
continue;; |
||||||
|
esac |
||||||
|
;; |
||||||
|
esac |
||||||
|
[ -n "$FEATURE" -a -n "$VAR" ] || continue |
||||||
|
echo " \"$FEATURE\" -- \"$VAR\";" |
||||||
|
done < "$DISTCFG" |
||||||
|
echo " { node [shape=box]$VARIABLES; }" |
||||||
|
} |
||||||
|
|
||||||
|
feat_vars | LC_COLLATE=C sort -ru |
||||||
|
|
||||||
|
echo " }" |
||||||
|
echo "}" |
@ -0,0 +1,36 @@ |
|||||||
|
#!/bin/sh -f |
||||||
|
# a script to transform a tag name, a list of tag names (ANDed then), |
||||||
|
# or a complex boolean expression into a list of package list names. |
||||||
|
# examples of expected stdin: |
||||||
|
# |
||||||
|
# kde |
||||||
|
# live gnome |
||||||
|
# (base && (kernel || apt || alterator)) |
||||||
|
# |
||||||
|
# NB: tags are processed using word boundaries, |
||||||
|
# so avoid using "-" in tag names |
||||||
|
|
||||||
|
DIR="${1:?need base directory}" |
||||||
|
|
||||||
|
warn() { |
||||||
|
echo "$0: WARNING: $*" >&2 |
||||||
|
exit |
||||||
|
} |
||||||
|
|
||||||
|
[ -d "$DIR" ] || warn "$DIR nonexistent" |
||||||
|
cd "$DIR" || warn "cannot change to $DIR" |
||||||
|
|
||||||
|
# NB: care with quoting |
||||||
|
transformed="$(sed \ |
||||||
|
-e "s,\([^&|! ()']\+\),-regex ^.*\\\\<\1\\\\>.*$,g" \ |
||||||
|
-e "s, *&& *, -a ,g" \ |
||||||
|
-e "s, *|| *, -o ,g" \ |
||||||
|
-e "s, *! *, ! ,g" \ |
||||||
|
-e "s, *( *, ( ,g" \ |
||||||
|
-e "s, *) *, ) ,g")" |
||||||
|
|
||||||
|
[ "$DEBUG" = 2 ] && echo "`basename $0`: transformed = \"$transformed\"" >&2 |
||||||
|
[ -z "$transformed" ] || |
||||||
|
find $transformed \ |
||||||
|
| sed 's,^\./,,' \ |
||||||
|
| egrep -v '(\.sw.|~)$' |
@ -0,0 +1,458 @@ |
|||||||
|
#!/bin/bash -ex |
||||||
|
# usage: |
||||||
|
# tar2fs chroot.tar image.raw [size_in_bytes [fstype]] |
||||||
|
|
||||||
|
. shell-error |
||||||
|
export LANG=C |
||||||
|
|
||||||
|
if [ $# -lt 2 ]; then |
||||||
|
fatal "error: tar2fs needs at least two arguments" |
||||||
|
fi |
||||||
|
|
||||||
|
# this needs env_keep sudo setup to actually work |
||||||
|
if [ -n "$GLOBAL_BUILDDIR" ]; then |
||||||
|
WORKDIR="$GLOBAL_BUILDDIR/vmroot" |
||||||
|
else |
||||||
|
WORKDIR="$(mktemp --tmpdir -d vmroot-XXXXX)" |
||||||
|
fi |
||||||
|
|
||||||
|
[ -n "$WORKDIR" ] || fatal "couldn't come up with suitable WORKDIR" |
||||||
|
|
||||||
|
[ -n "$GLOBAL_DEBUG" ] || message "WORKDIR: $WORKDIR" |
||||||
|
|
||||||
|
MB=1048576 # a parted's "megabyte" in bytes is *broken* |
||||||
|
|
||||||
|
SIZE_FACTOR=2 # multiply the sizes found by this value |
||||||
|
BOOT_SIZE_FACTOR=2 # multiply /boot size by this value additionally |
||||||
|
BOOTLOADERPARTSIZEM=0 # PReP partition size (ppc*) |
||||||
|
|
||||||
|
CUR_BOUNDARY=0 # align first partition at 1MB for performance (+1) |
||||||
|
|
||||||
|
BOOTFSTYPE= |
||||||
|
BOOTPART= |
||||||
|
EFIPARTFSTYPE= |
||||||
|
EFIPART= |
||||||
|
|
||||||
|
BOOTLOADER="$5" |
||||||
|
|
||||||
|
if [ -n "$6" ]; then |
||||||
|
ARCH="$6" |
||||||
|
else |
||||||
|
ARCH="$(arch)" |
||||||
|
fi |
||||||
|
|
||||||
|
BOOTTYPE="$8" |
||||||
|
|
||||||
|
case "$ARCH" in |
||||||
|
e2k*) |
||||||
|
BOOTFSTYPE="ext2" # firmware knows it |
||||||
|
BLOCKDEV="/dev/sda" # ...hopefully... |
||||||
|
BOOTPART="1" |
||||||
|
ROOTPART="2" |
||||||
|
;; |
||||||
|
ppc*) |
||||||
|
BOOTFSTYPE="ext4" |
||||||
|
BLOCKDEV="/dev/sda" |
||||||
|
BOOTLOADERPART="1" |
||||||
|
BOOTLOADERPARTSIZEM="8" |
||||||
|
ROOTPART="2" |
||||||
|
;; |
||||||
|
arm*|aarch64) |
||||||
|
ROOTPART="1" |
||||||
|
BLOCKDEV="/dev/sda" |
||||||
|
CUR_BOUNDARY=15 # offset 16 MiB for singleboard's |
||||||
|
;; |
||||||
|
*) |
||||||
|
ROOTPART="1" |
||||||
|
BLOCKDEV="/dev/sda" |
||||||
|
;; |
||||||
|
esac |
||||||
|
|
||||||
|
if [ "$BOOTLOADER" == grub-efi -o "$BOOTTYPE" == EFI ]; then |
||||||
|
EFIPART="1" |
||||||
|
EFIPARTSIZEM="256" |
||||||
|
EFIPARTFSTYPE="fat" |
||||||
|
ROOTPART="2" |
||||||
|
fi |
||||||
|
|
||||||
|
PARTTABLE="$7" |
||||||
|
if [ -z "$PARTTABLE" ]; then |
||||||
|
if [ "$BOOTLOADER" == grub-efi ]; then |
||||||
|
PARTTABLE=gpt |
||||||
|
else |
||||||
|
PARTTABLE=msdos |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
# figure out the part taken by /boot in the given tarball |
||||||
|
boot_size() { |
||||||
|
if [ -n "$BOOTPART" ]; then |
||||||
|
tar tvf "$1" \ |
||||||
|
| awk ' \ |
||||||
|
BEGIN { sum=0 } |
||||||
|
/^-.* \.\/boot\// { sum=sum+$3 } |
||||||
|
END { print sum }' |
||||||
|
else |
||||||
|
echo "0" |
||||||
|
fi |
||||||
|
} |
||||||
|
|
||||||
|
# parted wrapper for convenience |
||||||
|
parting() { parted "$LOOPDEV" --align optimal --script -- "$@"; } |
||||||
|
|
||||||
|
# unfortunately parted is insane enough to lump alignment controls |
||||||
|
# into unit controls so creating adjacent partitions sized in MiB |
||||||
|
# is not as straightforward as it might be... thus "+1" padding; |
||||||
|
# see also http://www.gnu.org/software/parted/manual/parted.html#unit |
||||||
|
mkpart() { |
||||||
|
# a bit different start/end semantics to handle end of device too |
||||||
|
local start="$(($CUR_BOUNDARY + 1))" # yes, we lose a megabyte |
||||||
|
if [ -n "$1" ]; then |
||||||
|
CUR_BOUNDARY="$(($start + $1))" |
||||||
|
local end="$CUR_BOUNDARY"MiB |
||||||
|
else |
||||||
|
local end="$OFFSET"MiB |
||||||
|
fi |
||||||
|
if [ -n "$2" ]; then |
||||||
|
CUR_FS="$2" |
||||||
|
else |
||||||
|
CUR_FS=ext2 |
||||||
|
fi |
||||||
|
parting mkpart primary "$CUR_FS" "$start"MiB "$end" |
||||||
|
} |
||||||
|
|
||||||
|
# a tarball containing chroot with a kernel |
||||||
|
TAR="$1" |
||||||
|
[ -s "$TAR" ] || fatal "source tarball doesn't really exist" |
||||||
|
|
||||||
|
# a path to the image to be generated |
||||||
|
IMG="$2" |
||||||
|
[ -d "$(dirname "$IMG")" ] || fatal "target directory doesn't exist" |
||||||
|
|
||||||
|
# 0 means auto; if a value is specified it holds (no /boot subtracted) |
||||||
|
ROOTSIZE="$3" |
||||||
|
[ -n "$ROOTSIZE" -a "$ROOTSIZE" != 0 ] || unset ROOTSIZE |
||||||
|
|
||||||
|
# image size in bytes |
||||||
|
TARSIZE="$(stat -Lc %s "$TAR")" |
||||||
|
# /boot size in that tarball |
||||||
|
BOOTSIZE="$(boot_size "$TAR")" |
||||||
|
DEFSIZE="$(($SIZE_FACTOR * ($TARSIZE - $BOOTSIZE)))" # (exact sizes) |
||||||
|
ROOTSIZE="$((${ROOTSIZE:-$DEFSIZE} + $MB - 1))" # for ceil rounding to MB |
||||||
|
# image and /boot sizes in megabytes |
||||||
|
ROOTSIZEM="$(($ROOTSIZE / $MB))" |
||||||
|
BOOTSIZEM="$((($SIZE_FACTOR * $BOOT_SIZE_FACTOR * $BOOTSIZE + $MB - 1) / $MB))" |
||||||
|
|
||||||
|
# tested to work: ext[234], jfs |
||||||
|
# NB: xfs doesn't have a spare sector for the bootloader |
||||||
|
ROOTFSTYPE="${4:-ext4}" |
||||||
|
|
||||||
|
# single root partition hardwired so far, |
||||||
|
# add another image for home/data/swap if needed |
||||||
|
ROOTDEV="$BLOCKDEV$ROOTPART" |
||||||
|
|
||||||
|
# last preparations... |
||||||
|
MKFS="mkfs.$ROOTFSTYPE ${BOOTFSTYPE:+mkfs.$BOOTFSTYPE} \ |
||||||
|
${EFIPARTFSTYPE:+mkfs.$EFIPARTFSTYPE}" |
||||||
|
for i in losetup sfdisk parted kpartx $MKFS; do |
||||||
|
if ! type -t "$i" >&/dev/null; then |
||||||
|
fatal "$i required but not found in host system" |
||||||
|
fi |
||||||
|
done |
||||||
|
|
||||||
|
LOOPDEV="$(losetup --find)" # would be sad about non-binary megabytes too |
||||||
|
ROOTFS="$WORKDIR/chroot" |
||||||
|
|
||||||
|
BOOTFS= |
||||||
|
EFIPARTFS= |
||||||
|
if [ -n "$BOOTPART" ]; then |
||||||
|
BOOTFS="$ROOTFS/boot" |
||||||
|
fi |
||||||
|
if [ -n "$EFIPART" ]; then |
||||||
|
EFIPARTFS="$ROOTFS/boot/efi" |
||||||
|
fi |
||||||
|
|
||||||
|
exit_handler() { |
||||||
|
rc=$? |
||||||
|
cd / |
||||||
|
if [ -n "$ROOTFS" ]; then |
||||||
|
umount ${EFIPARTFS:+"$EFIPARTFS"} ${BOOTFS:+"$BOOTFS"} \ |
||||||
|
"$ROOTFS"{/dev,/proc,/sys,} |
||||||
|
|
||||||
|
if [ -n "$LOOPDEV" ]; then |
||||||
|
kpartx -d -s "$LOOPDEV" || { |
||||||
|
sleep 10 |
||||||
|
kpartx -d -s -v "$LOOPDEV" |
||||||
|
} |
||||||
|
losetup --detach "$LOOPDEV" |
||||||
|
fi |
||||||
|
rm -r -- "$ROOTFS" |
||||||
|
rmdir -- "$WORKDIR" |
||||||
|
fi |
||||||
|
exit $rc |
||||||
|
} |
||||||
|
|
||||||
|
# handle -e in shebang as well |
||||||
|
trap exit_handler EXIT ERR |
||||||
|
|
||||||
|
# prepare disk image and a filesystem inside it |
||||||
|
rm -f -- "$IMG" |
||||||
|
OFFSET="$(($CUR_BOUNDARY + $EFIPARTSIZEM + $BOOTLOADERPARTSIZEM + $BOOTSIZEM + $ROOTSIZEM - 1))" |
||||||
|
dd if=/dev/zero of="$IMG" conv=notrunc bs=$MB count=1 seek="$OFFSET" |
||||||
|
losetup "$LOOPDEV" "$IMG" |
||||||
|
|
||||||
|
parting mklabel "$PARTTABLE" |
||||||
|
|
||||||
|
if [ -n "$BOOTLOADERPART" ] && [ -n "$BOOTLOADERPARTSIZEM" ]; then |
||||||
|
case "$ARCH" in |
||||||
|
ppc*) |
||||||
|
parting mkpart primary ext2 $((CUR_BOUNDARY+1))MiB $((BOOTLOADERPARTSIZEM + 1))MiB |
||||||
|
CUR_BOUNDARY="$BOOTLOADERPARTSIZEM" |
||||||
|
parting set 1 prep on |
||||||
|
parting set 1 boot on |
||||||
|
;; |
||||||
|
esac |
||||||
|
fi |
||||||
|
|
||||||
|
if [ -n "$EFIPART" ]; then |
||||||
|
EFIDEV="$EFIDEV$EFIPART" |
||||||
|
if [ "$PARTTABLE" == gpt ]; then |
||||||
|
parting mkpart fat32 $((CUR_BOUNDARY+1))MiB $(($EFIPARTSIZEM + 1))MiB |
||||||
|
else |
||||||
|
parting mkpart primary fat32 $((CUR_BOUNDARY+1))MiB $(($EFIPARTSIZEM + 1))MiB |
||||||
|
fi |
||||||
|
CUR_BOUNDARY="$EFIPARTSIZEM" |
||||||
|
parting set 1 boot on |
||||||
|
if [ "$PARTTABLE" == gpt ]; then |
||||||
|
parting set 1 esp on |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
if [ -n "$BOOTPART" ]; then |
||||||
|
BOOTDEV="$BLOCKDEV$BOOTPART" |
||||||
|
mkpart "$BOOTSIZEM" |
||||||
|
fi |
||||||
|
|
||||||
|
# not ROOTSIZEM but "the rest"; somewhat non-trivial arithmetics lurk in parted |
||||||
|
mkpart |
||||||
|
|
||||||
|
kpartx -a -s "$LOOPDEV" |
||||||
|
LOOPROOT="/dev/mapper/$(basename "$LOOPDEV")p$ROOTPART" |
||||||
|
|
||||||
|
mkfs."$ROOTFSTYPE" "$LOOPROOT" |
||||||
|
|
||||||
|
if [ -n "$BOOTPART" ]; then |
||||||
|
LOOPBOOT="/dev/mapper/$(basename "$LOOPDEV")p$BOOTPART" |
||||||
|
mkfs."$BOOTFSTYPE" "$LOOPBOOT" |
||||||
|
fi |
||||||
|
|
||||||
|
if [ -n "$BOOTLOADERPART" ] && [ -n "$BOOTLOADERPARTSIZEM" ]; then |
||||||
|
LOOPBOOTLOADER="/dev/mapper/$(basename "$LOOPDEV")p$BOOTLOADERPART" |
||||||
|
fi |
||||||
|
|
||||||
|
if [ -n "$EFIPART" ]; then |
||||||
|
LOOPEFI="/dev/mapper/$(basename "$LOOPDEV")p$EFIPART" |
||||||
|
mkfs.fat -F32 "$LOOPEFI" |
||||||
|
fi |
||||||
|
|
||||||
|
ROOTUUID="$(blkid -s UUID -o value -c /dev/null "$LOOPROOT")" |
||||||
|
if [ -n "$ROOTUUID" ]; then |
||||||
|
ROOTDEV="UUID=$ROOTUUID" |
||||||
|
else |
||||||
|
ROOTDEV="$LOOPROOT" |
||||||
|
fi |
||||||
|
|
||||||
|
if [ -n "$BOOTPART" ]; then |
||||||
|
BOOTUUID="$(blkid -s UUID -o value -c /dev/null "$LOOPBOOT")" |
||||||
|
if [ -n "$BOOTUUID" ]; then |
||||||
|
BOOTDEV="UUID=$BOOTUUID" |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
if [ -n "$EFIPART" ]; then |
||||||
|
EFIUUID="$(blkid -s UUID -o value -c /dev/null "$LOOPEFI")" |
||||||
|
if [ -n "$EFIUUID" ]; then |
||||||
|
EFIDEV="UUID=$EFIUUID" |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
# mount and populate it |
||||||
|
mkdir -pm755 "$ROOTFS" |
||||||
|
mount "$LOOPROOT" "$ROOTFS" |
||||||
|
|
||||||
|
if [ -n "$BOOTPART" ]; then |
||||||
|
mkdir -pm700 "$BOOTFS" |
||||||
|
mount "$LOOPBOOT" "$BOOTFS" |
||||||
|
fi |
||||||
|
|
||||||
|
if [ -n "$EFIPART" ]; then |
||||||
|
mkdir -pm751 "$EFIPARTFS" |
||||||
|
mount "$LOOPEFI" "$EFIPARTFS" |
||||||
|
fi |
||||||
|
|
||||||
|
tar -C "$ROOTFS" --numeric-owner -xf "$TAR" |
||||||
|
for i in /dev /proc /sys; do mount --bind "$i" "$ROOTFS$i"; done |
||||||
|
|
||||||
|
# loop device so lilo could work... |
||||||
|
if grep -qe "[[:space:]]/[[:space:]]" "$ROOTFS/etc/fstab"; then \ |
||||||
|
sed -i "s/LABEL=ROOT/$ROOTDEV/" "$ROOTFS/etc/fstab" |
||||||
|
else |
||||||
|
echo "$ROOTDEV / $ROOTFSTYPE relatime 1 1" >> "$ROOTFS/etc/fstab" |
||||||
|
fi |
||||||
|
|
||||||
|
# target device at once |
||||||
|
if [ -n "$BOOTPART" ]; then |
||||||
|
echo "$BOOTDEV /boot $BOOTFSTYPE defaults 1 2" >> "$ROOTFS/etc/fstab" |
||||||
|
fi |
||||||
|
if [ -n "$EFIPART" ]; then |
||||||
|
echo "$EFIDEV /boot/efi vfat umask=0,quiet,showexec,iocharset=utf8,codepage=866 1 2" >> "$ROOTFS/etc/fstab" |
||||||
|
fi |
||||||
|
|
||||||
|
# Query ARCH in chroot and redefine arch-dependent variable |
||||||
|
ARCH="$(chroot "$ROOTFS" rpm --eval '%_host_cpu')" |
||||||
|
|
||||||
|
# NB: don't stick BOOTFS here, it has slightly different semantics |
||||||
|
pushd $ROOTFS/boot |
||||||
|
|
||||||
|
# 4.9.76-elbrus-def-alt1.11.1 -> def |
||||||
|
get_label() { echo "${1# *}" | sed -r 's,.*elbrus-([0-9a-z]+)-.*$,\1,'; } |
||||||
|
|
||||||
|
KVERSIONS= |
||||||
|
KVERSIONS="$(chroot "$ROOTFS" rpm -qa 'kernel-image*' \ |
||||||
|
--qf '%{installtime} %{version}-%{name}-%{release}\n' \ |
||||||
|
| sort -n \ |
||||||
|
| cut -f 2 -d ' ' \ |
||||||
|
| sed 's/kernel-image-//')" |
||||||
|
[ -n "$KVERSIONS" ] || fatal "unable to deduce kernel version" |
||||||
|
rm -f .origver |
||||||
|
|
||||||
|
# clean fstab |
||||||
|
sed -i "/LABEL=ROOT/d" "$ROOTFS/etc/fstab" |
||||||
|
# ...target device too |
||||||
|
sed -i "s,$LOOPROOT,$ROOTDEV," "$ROOTFS/etc/fstab" |
||||||
|
|
||||||
|
echo "** KVERSIONS=[$KVERSIONS]" >&2 |
||||||
|
|
||||||
|
if [ "`echo $KVERSIONS | wc -w`" = 1 ]; then # 2+ labels |
||||||
|
echo -e "default=`get_label $KVERSIONS`\n" >> boot.conf |
||||||
|
fi |
||||||
|
|
||||||
|
# FIXME: relies on particular (current) kernel package naming scheme |
||||||
|
for v in $KVERSIONS; do |
||||||
|
l="`get_label "$v"`" |
||||||
|
cat >> boot.conf <<EOF |
||||||
|
label=$l |
||||||
|
partition=0 |
||||||
|
image=/image-$v |
||||||
|
initrd=/initrd-$v.img |
||||||
|
cmdline=console=ttyS0,115200 console=tty0 consoleblank=0 hardreset root=UUID=$ROOTUUID |
||||||
|
|
||||||
|
EOF |
||||||
|
done |
||||||
|
|
||||||
|
echo "** start of boot.conf" |
||||||
|
cat boot.conf |
||||||
|
echo "** end of boot.conf" |
||||||
|
|
||||||
|
popd |
||||||
|
|
||||||
|
# Update cmdline.txt for Raspberry Pi |
||||||
|
[ -f "$ROOTFS/boot/efi/cmdline.txt" ] && |
||||||
|
sed -i "s/LABEL=ROOT/$ROOTDEV/" "$ROOTFS/boot/efi/cmdline.txt" |
||||||
|
|
||||||
|
# Update extlinux.conf |
||||||
|
if [ -f "$ROOTFS/boot/extlinux/extlinux.conf" ]; then |
||||||
|
sed -i "s/LABEL=ROOT/$ROOTDEV/g" "$ROOTFS/boot/extlinux/extlinux.conf" |
||||||
|
if [ "$PARTTABLE" == gpt ]; then |
||||||
|
parting set "$ROOTPART" legacy_boot on |
||||||
|
fi |
||||||
|
if [ "$PARTTABLE" == msdos ]; then |
||||||
|
parting set "$ROOTPART" boot on |
||||||
|
fi |
||||||
|
fi |
||||||
|
|
||||||
|
# Setup bootloader |
||||||
|
case "$BOOTLOADER" in |
||||||
|
lilo) |
||||||
|
# configure and install bootloader |
||||||
|
REGEXP='^.*: ([0-9]+) cylinders, ([0-9]+) heads, ([0-9]+) sectors/track*$' |
||||||
|
set -- $(sfdisk -g "$LOOPDEV" | grep -E "$REGEXP" | sed -r "s@$REGEXP@\1 \2 \3@") |
||||||
|
|
||||||
|
LILO_COMMON="lba32 |
||||||
|
delay=1 |
||||||
|
vga=0 |
||||||
|
image=/boot/vmlinuz |
||||||
|
initrd=/boot/initrd.img |
||||||
|
append=\"root=$ROOTDEV rootdelay=3 console=tty1 console=ttyS0,115200n8\" |
||||||
|
label=linux" |
||||||
|
|
||||||
|
cat > "$ROOTFS"/etc/lilo-loop.conf <<-EOF |
||||||
|
boot=$LOOPDEV |
||||||
|
disk=$LOOPDEV |
||||||
|
bios=0x80 |
||||||
|
cylinders=$1 |
||||||
|
heads=$2 |
||||||
|
sectors=$3 |
||||||
|
partition=$LOOPROOT |
||||||
|
start=63 |
||||||
|
$LILO_COMMON |
||||||
|
EOF |
||||||
|
|
||||||
|
chroot "$ROOTFS" lilo -C /etc/lilo-loop.conf |
||||||
|
|
||||||
|
cat > "$ROOTFS"/etc/lilo.conf <<-EOF |
||||||
|
boot=$BLOCKDEV |
||||||
|
$LILO_COMMON |
||||||
|
EOF |
||||||
|
;; |
||||||
|
grub-efi) |
||||||
|
echo 'GRUB_DISABLE_OS_PROBER=true' >> "$ROOTFS"/etc/sysconfig/grub2 |
||||||
|
chroot "$ROOTFS" grub-mkconfig -o /boot/grub/grub.cfg |
||||||
|
case "$ARCH" in |
||||||
|
x86_64) |
||||||
|
chroot "$ROOTFS" grub-install --target=i386-efi --recheck \ |
||||||
|
--removable --uefi-secure-boot |
||||||
|
chroot "$ROOTFS" grub-install --target=x86_64-efi --recheck \ |
||||||
|
--removable --uefi-secure-boot |
||||||
|
sed -i 's/initrd16/initrdefi/g' "$ROOTFS/boot/grub/grub.cfg" |
||||||
|
sed -i 's/linux16/linuxefi/g' "$ROOTFS/boot/grub/grub.cfg" |
||||||
|
;; |
||||||
|
aarch64) |
||||||
|
chroot "$ROOTFS" grub-install --target=arm64-efi --recheck \ |
||||||
|
--removable --no-uefi-secure-boot |
||||||
|
;; |
||||||
|
armh) |
||||||
|
chroot "$ROOTFS" grub-install --target=arm-efi --recheck \ |
||||||
|
--removable --no-uefi-secure-boot |
||||||
|
;; |
||||||
|
riscv64) |
||||||
|
chroot "$ROOTFS" grub-install --target=riscv64-efi --recheck \ |
||||||
|
--removable --no-uefi-secure-boot |
||||||
|
esac |
||||||
|
sed -i '/GRUB_DISABLE_OS_PROBER=true/d' "$ROOTFS/etc/sysconfig/grub2" |
||||||
|
;; |
||||||
|
grub) |
||||||
|
echo 'GRUB_DISABLE_OS_PROBER=true' >> "$ROOTFS"/etc/sysconfig/grub2 |
||||||
|
chroot "$ROOTFS" grub-mkconfig -o /boot/grub/grub.cfg |
||||||
|
case "$ARCH" in |
||||||
|
*86*) |
||||||
|
chroot "$ROOTFS" grub-install --target=i386-pc "$LOOPDEV" |
||||||
|
sed -i 's/initrdefi/initrd16/g' "$ROOTFS/boot/grub/grub.cfg" |
||||||
|
sed -i 's/linuxefi/linux16/g' "$ROOTFS/boot/grub/grub.cfg" |
||||||
|
;; |
||||||
|
ppc*) |
||||||
|
[ -z "$LOOPBOOTLOADER" ] || |
||||||
|
chroot "$ROOTFS" grub-install --target=powerpc-ieee1275 \ |
||||||
|
--no-nvram "$LOOPBOOTLOADER" |
||||||
|
;; |
||||||
|
esac |
||||||
|
sed -i '/GRUB_DISABLE_OS_PROBER=true/d' "$ROOTFS/etc/sysconfig/grub2" |
||||||
|
;; |
||||||
|
esac |
||||||
|
|
||||||
|
if [ -n "$SUDO_USER" ]; then |
||||||
|
chown "$SUDO_USER:$(id -g "$SUDO_USER")" "$IMG" ||: |
||||||
|
fi |
||||||
|
# maybe qemu interpreter was copied to chroot; |
||||||
|
# this is no longer necessary, remove |
||||||
|
rm -rf "$ROOTFS"/.host ||: |
@ -0,0 +1,125 @@ |
|||||||
|
# step 4: dive into mkimage
|
||||||
|
|
||||||
|
GLOBAL_BUILDDIR ?= $(shell pwd)
|
||||||
|
CURRENT_LINK := mkimage-profiles
|
||||||
|
OUT_LINK := out
|
||||||
|
|
||||||
|
# there were mkimage fixes induced by mkimage-profile development
|
||||||
|
# - minimal version is bumped for critical bugfixes/features
|
||||||
|
# - optimal one relates to the less universally relevant bits
|
||||||
|
MKI_VER_MINIMAL = 0.1.7
|
||||||
|
MKI_VER_OPTIMAL = 0.2.6
|
||||||
|
|
||||||
|
include distcfg.mk |
||||||
|
include functions.mk |
||||||
|
|
||||||
|
# check the build environment
|
||||||
|
ifeq (,$(realpath $(MKIMAGE_PREFIX)/config.mk)) |
||||||
|
$(error please apt-get install mkimage and have a look at QUICKSTART as well) |
||||||
|
endif |
||||||
|
|
||||||
|
include $(MKIMAGE_PREFIX)/config.mk |
||||||
|
|
||||||
|
ifeq (-,$(shell rpmvercmp $(MKI_VERSION) $(MKI_VER_MINIMAL) | tr -d [0-9])) |
||||||
|
$(info error: mkimage-$(MKI_VERSION) is too old, please upgrade) |
||||||
|
$(error mkimage is too old, $(MKI_VER_MINIMAL) is minimal supported version) |
||||||
|
endif |
||||||
|
ifeq (-,$(shell rpmvercmp $(MKI_VERSION) $(MKI_VER_OPTIMAL) | tr -d [0-9])) |
||||||
|
$(info warning: mkimage-$(MKI_VERSION) is suboptimal, consider upgrading) |
||||||
|
$(warning consider upgrading mkimage to $(MKI_VER_OPTIMAL) or better) |
||||||
|
endif |
||||||
|
|
||||||
|
# glob it just in case
|
||||||
|
IMAGEDIR := $(wildcard $(IMAGEDIR))
|
||||||
|
|
||||||
|
# additional means to reduce havoc in IMAGEDIR
|
||||||
|
IMAGE_SORTDIR := $(wildcard $(SORTDIR))
|
||||||
|
|
||||||
|
# use distro version in image name if defined
|
||||||
|
ifdef DISTRO_VERSION |
||||||
|
IMAGE_VERSION := -$(DISTRO_VERSION)
|
||||||
|
IMAGE_VER_LINK := $(IMAGE_NAME)$(IMAGE_VERSION)-latest-$(ARCH).$(IMAGE_TYPE)
|
||||||
|
endif |
||||||
|
|
||||||
|
IMAGE_OUTNAME := $(IMAGE_NAME)$(IMAGE_VERSION)-$(STATUS)$(DATE)-$(ARCH)
|
||||||
|
IMAGE_OUTFILE := $(IMAGE_OUTNAME).$(IMAGE_TYPE)
|
||||||
|
IMAGE_OUTDIR := $(IMAGEDIR)$(IMAGE_SORTDIR:%=/%)
|
||||||
|
IMAGE_OUTPATH := $(IMAGE_OUTDIR)/$(IMAGE_OUTFILE)
|
||||||
|
IMAGE_RELPATH := $(IMAGE_SORTDIR:%=%/)$(IMAGE_OUTFILE)
|
||||||
|
IMAGE_RELDIR := $(IMAGE_OUTDIR:$(GLOBAL_BUILDDIR)/%=%)
|
||||||
|
IMAGE_LINK := $(IMAGE_NAME)-latest-$(ARCH).$(IMAGE_TYPE)
|
||||||
|
IMAGE_LINKPATH := $(IMAGEDIR)/$(IMAGE_LINK)
|
||||||
|
|
||||||
|
### multi-pack can be useful (think netinst iso/tree)
|
||||||
|
MKI_PACK_RESULTS = $(IMAGE_PACKTYPE):$(IMAGE_OUTFILE)
|
||||||
|
|
||||||
|
# these get copied over as is
|
||||||
|
COPY_TREE = ./files
|
||||||
|
|
||||||
|
# outdir shouldn't be wiped clean before use
|
||||||
|
CLEANUP_OUTDIR ?=
|
||||||
|
|
||||||
|
GLOBAL_TARGET := $(ARCH)
|
||||||
|
GLOBAL_HSH_LANGS := $(INSTALL_LANGS)
|
||||||
|
GLOBAL_HSH_APT_CONFIG := $(wildcard $(APTCONF))
|
||||||
|
|
||||||
|
# take the latter part for complex-specified subprofiles like stage2@live;
|
||||||
|
# care to exclude non-directories holding no makefiles like rootfs
|
||||||
|
SUBDIRS = $(dir $(wildcard $(addsuffix /Makefile,$(SUBPROFILE_DIRS))))
|
||||||
|
|
||||||
|
# the lib/build-*.mk comes from features.in/build-*/lib
|
||||||
|
include $(sort $(wildcard lib/*.mk)) |
||||||
|
include $(MKIMAGE_PREFIX)/targets.mk |
||||||
|
|
||||||
|
# specified only for the final image (target-specific)
|
||||||
|
pack-image: OUTDIR = $(IMAGE_OUTDIR) |
||||||
|
pack-image: imagedir |
||||||
|
|
||||||
|
copy-tree: $(SAVE_PROFILE:%=save-profile) |
||||||
|
|
||||||
|
save-profile: |
||||||
|
@mkdir -p files/.disk; \
|
||||||
|
git archive --prefix=mkimage-profile/ HEAD ":!.work" \
|
||||||
|
| gzip -9 > files/.disk/profile.tgz
|
||||||
|
|
||||||
|
.PHONY: imagedir postprocess debug |
||||||
|
|
||||||
|
prep: imagedir |
||||||
|
|
||||||
|
imagedir: |
||||||
|
@mkdir -p "$(IMAGE_OUTDIR)"
|
||||||
|
|
||||||
|
postprocess: | $(addprefix postprocess-,$(sort $(POSTPROCESS_TARGETS))) |
||||||
|
@OUTSIZE="`ls -lh "$(IMAGE_OUTPATH)" | cut -f5 -d' '`"; \
|
||||||
|
if [ ! -n "$$OUTSIZE" ]; then \
|
||||||
|
echo "** error: $(IMAGE_OUTPATH) missing" >&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
if [ -n "$(VM_SAVE_TARBALL)" ]; then \
|
||||||
|
echo "** tarball saved: $(IMAGE_OUTPATH)/$(IMAGE_OUTNAME).$(VM_SAVE_TARBALL)" >&2; \
|
||||||
|
fi; \
|
||||||
|
echo "** image: $(IMAGE_OUTPATH) [$$OUTSIZE]" >&2 && \
|
||||||
|
echo "IMAGE_OUTPATH = $(IMAGE_OUTPATH)" && \
|
||||||
|
echo "IMAGE_OUTFILE = $(IMAGE_OUTFILE)" && \
|
||||||
|
if [ ! -n "$(NO_SYMLINK)" ]; then \
|
||||||
|
ln -sf "$(IMAGE_RELPATH)" "$(IMAGE_LINKPATH)" && \
|
||||||
|
ln -sf "$(IMAGE_RELDIR)" "$(OUT_LINK)" && \
|
||||||
|
ln -sf "$(IMAGE_LINK)" "$(IMAGEDIR)/$(CURRENT_LINK).$(IMAGE_TYPE)"; \
|
||||||
|
if [ -n "$(IMAGE_VER_LINK)" ]; then \
|
||||||
|
ln -sf "$(IMAGE_RELPATH)" "$(IMAGEDIR)/$(IMAGE_VER_LINK)"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
if [ -n "$(GLOBAL_DEBUG)" ]; then \
|
||||||
|
mkdir -p "$(LOGDIR)"; \
|
||||||
|
cp -a build.log "$(LOGDIR)/$(IMAGE_OUTFILE).log"; \
|
||||||
|
cp -a distcfg.mk "$(LOGDIR)/$(IMAGE_OUTFILE).cfg"; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
debug:: |
||||||
|
@echo "TOPDIR=$(TOPDIR)"
|
||||||
|
@echo "IMAGEDIR=$(IMAGEDIR)"
|
||||||
|
@echo "ARCH=$(ARCH)"
|
||||||
|
@echo "GLOBAL_TARGET=$(GLOBAL_TARGET)"
|
||||||
|
@echo "GLOBAL_HSH_LANGS=$(GLOBAL_HSH_LANGS)"
|
||||||
|
@echo "GLOBAL_HSH_APT_CONFIG=$(GLOBAL_HSH_APT_CONFIG)"
|
||||||
|
@echo "GLOBAL_HSH_USE_QEMU=$(GLOBAL_HSH_USE_QEMU)"
|
@ -0,0 +1,21 @@ |
|||||||
|
== image.in == |
||||||
|
|
||||||
|
Этот каталог копируется из метапрофиля в профиль "как есть" |
||||||
|
и формирует "заготовку" финальной стадии, собирающей собственно |
||||||
|
образ из результатов работы индивидуальных субпрофилей |
||||||
|
(для distro) либо непосредственно "на месте" (для ve, vm). |
||||||
|
|
||||||
|
Содержимое image.in/files/ копируется в корень образа. |
||||||
|
|
||||||
|
Соответственно для сборки также потребуется одна из фич |
||||||
|
features.in/build-*. |
||||||
|
|
||||||
|
Пакетная база рабочего чрута минимальна (может чуть расширяться |
||||||
|
фичами -- см. features.in/repo/lib/50-genbasedir.mk |
||||||
|
в качестве примера). |
||||||
|
|
||||||
|
Если требуется какая-либо иная обработка чрута, следует |
||||||
|
предпочитать scripts.d -- для универсальной обработки |
||||||
|
скрипт можно добавить здесь, для специфичной -- в фичу. |
||||||
|
|
||||||
|
Результат -- готовый образ в $(IMAGEDIR)/. |
@ -0,0 +1,182 @@ |
|||||||
|
mkimage: Processing 'clean-current' ... |
||||||
|
mkimage: Processing 'distclean-current' ... |
||||||
|
/usr/share/mkimage/tools/mki-run-make "stage1/" make distclean all |
||||||
|
make[1]: Entering directory '/home/tema/mkimage-profiles/bld/stage1' |
||||||
|
mkimage: Processing 'clean-current' ... |
||||||
|
mkimage: Processing 'distclean-current' ... |
||||||
|
mkimage: Processing 'prepare' ... |
||||||
|
mkimage: Processing 'prepare-workdir' ... |
||||||
|
Updating fonts cache: [ DONE ] |
||||||
|
WARNING: GRUB_AUTOUPDATE_DEVICE not set in /etc/sysconfig/grub2 |
||||||
|
WARNING: so next boot may fail unless you have another bootloader; |
||||||
|
WARNING: you might want to define it there and run grub-autoupdate |
||||||
|
mkimage: Processing 'copy-tree' ... |
||||||
|
mkimage: Processing 'run-scripts' ... |
||||||
|
mkimage: Processing 'copy-subdirs' ... |
||||||
|
mkimage: Processing 'pack-image' ... |
||||||
|
make[1]: Leaving directory '/home/tema/mkimage-profiles/bld/stage1' |
||||||
|
/usr/share/mkimage/tools/mki-run-make "live/" make distclean all |
||||||
|
make[1]: Entering directory '/home/tema/mkimage-profiles/bld/live' |
||||||
|
mkimage: Processing 'clean-current' ... |
||||||
|
mkimage: Processing 'distclean-current' ... |
||||||
|
mkimage: Processing 'prepare' ... |
||||||
|
mkimage: Processing 'prepare-workdir' ... |
||||||
|
mkimage: Processing 'prepare-image-workdir' ... |
||||||
|
mkimage: Processing 'build-image' ... |
||||||
|
Updating fonts cache: [ DONE ] |
||||||
|
WARNING: GRUB_AUTOUPDATE_DEVICE not set in /etc/sysconfig/grub2 |
||||||
|
WARNING: run grub-install /dev/sdX if needed |
||||||
|
Not booted in EFI mode, unable to update EFI GRUB |
||||||
|
|
||||||
|
Updating mime database: OK |
||||||
|
Adding loading ~/.kometa_env into PAM configs... |
||||||
|
WARNING: GRUB_AUTOUPDATE_DEVICE not set in /etc/sysconfig/grub2 |
||||||
|
WARNING: so next boot may fail unless you have another bootloader; |
||||||
|
WARNING: you might want to define it there and run grub-autoupdate |
||||||
|
mkimage: Processing 'run-image-scripts' ... |
||||||
|
'/etc/group' -> '/etc/group.save' |
||||||
|
/etc/fonts/conf.d/10-antialias.conf |
||||||
|
/etc/fonts/conf.d/11-lcdfilter-default.conf |
||||||
|
/etc/fonts/conf.d/10-hinting.conf |
||||||
|
/etc/fonts/conf.d/10-sub-pixel-rgb.conf |
||||||
|
systemd-sysvinit-249.7-alt4.noarch |
||||||
|
systemd-sysvinit-249.7-alt4.noarch |
||||||
|
mkimage: Processing 'copy-tree' ... |
||||||
|
mkimage: Processing 'run-scripts' ... |
||||||
|
mkimage: Processing 'copy-subdirs' ... |
||||||
|
mkimage: Processing 'pack-image' ... |
||||||
|
Parallel mksquashfs: Using 16 processors |
||||||
|
Creating 4.0 filesystem on /.our/live, block size 262144. |
||||||
|
[/ ] 0/38315 0%
[=- ] 8600/365401 2%
[===/ ] 22200/365401 6%
[====\ ] 30000/365401 8%
[========/ ] 56900/365401 15%
[====================- ] 129700/365401 35%
[=======================/ ] 149700/365401 40%
[=================================\ ] 211600/365401 57%
[==================================/ ] 222100/365401 60%
[==================================/ ] 222700/365401 60%
[====================================| ] 235000/365401 64%
[====================================\ ] 235800/365401 64%
[================================================- ] 308200/365401 84%
[==================================================\ ] 322500/365401 88%
[===================================================/ ] 329800/365401 90%
[=========================================================\] 365401/365401 100% |
||||||
|
|
||||||
|
Exportable Squashfs 4.0 filesystem, xz compressed, data block size 262144 |
||||||
|
compressed data, compressed metadata, compressed fragments, |
||||||
|
compressed xattrs, compressed ids |
||||||
|
duplicates are removed |
||||||
|
Filesystem size 3926693.69 Kbytes (3834.66 Mbytes) |
||||||
|
28.57% of uncompressed filesystem size (13741828.30 Kbytes) |
||||||
|
Inode table size 3015200 bytes (2944.53 Kbytes) |
||||||
|
22.61% of uncompressed inode table size (13335604 bytes) |
||||||
|
Directory table size 3670108 bytes (3584.09 Kbytes) |
||||||
|
33.10% of uncompressed directory table size (11088421 bytes) |
||||||
|
Number of duplicate files found 20585 |
||||||
|
Number of inodes 389871 |
||||||
|
Number of files 333467 |
||||||
|
Number of fragments 20490 |
||||||
|
Number of symbolic links 30021 |
||||||
|
Number of device nodes 11 |
||||||
|
Number of fifo nodes 0 |
||||||
|
Number of socket nodes 0 |
||||||
|
Number of directories 26372 |
||||||
|
Number of ids (unique uids + gids) 70 |
||||||
|
Number of uids 52 |
||||||
|
root (0) |
||||||
|
uucp (10) |
||||||
|
unknown (488) |
||||||
|
unknown (483) |
||||||
|
unknown (491) |
||||||
|
unknown (494) |
||||||
|
unknown (480) |
||||||
|
unknown (499) |
||||||
|
unknown (493) |
||||||
|
unknown (492) |
||||||
|
unknown (497) |
||||||
|
unknown (482) |
||||||
|
unknown (496) |
||||||
|
unknown (498) |
||||||
|
adm (3) |
||||||
|
apache (96) |
||||||
|
bin (1) |
||||||
|
unknown (489) |
||||||
|
daemon (2) |
||||||
|
exim (79) |
||||||
|
unknown (484) |
||||||
|
ftp (14) |
||||||
|
games (12) |
||||||
|
gdm (47) |
||||||
|
unknown (485) |
||||||
|
unknown (500) |
||||||
|
ldap (55) |
||||||
|
lp (4) |
||||||
|
mail (8) |
||||||
|
mailman (41) |
||||||
|
unknown (495) |
||||||
|
mysql (45) |
||||||
|
named (25) |
||||||
|
news (9) |
||||||
|
unknown (479) |
||||||
|
unknown (478) |
||||||
|
nobody (99) |
||||||
|
nscd (28) |
||||||
|
unknown (477) |
||||||
|
unknown (486) |
||||||
|
unknown (476) |
||||||
|
unknown (487) |
||||||
|
popa3d (43) |
||||||
|
postfix (42) |
||||||
|
postgres (46) |
||||||
|
rpc (32) |
||||||
|
rpcuser (29) |
||||||
|
squid (23) |
||||||
|
unknown (481) |
||||||
|
unknown (490) |
||||||
|
xfs (44) |
||||||
|
unknown (1001) |
||||||
|
Number of gids 37 |
||||||
|
root (0) |
||||||
|
wheel (10) |
||||||
|
unknown (488) |
||||||
|
unknown (483) |
||||||
|
lp (7) |
||||||
|
unknown (491) |
||||||
|
shadow (26) |
||||||
|
unknown (463) |
||||||
|
unknown (494) |
||||||
|
unknown (480) |
||||||
|
auth (27) |
||||||
|
unknown (497) |
||||||
|
unknown (484) |
||||||
|
mail (12) |
||||||
|
unknown (485) |
||||||
|
unknown (500) |
||||||
|
mysql (45) |
||||||
|
nobody (99) |
||||||
|
unknown (487) |
||||||
|
rpc (32) |
||||||
|
rpcuser (29) |
||||||
|
unknown (490) |
||||||
|
proc (19) |
||||||
|
cdwriter (80) |
||||||
|
unknown (470) |
||||||
|
unknown (471) |
||||||
|
tty (5) |
||||||
|
chkpwd (24) |
||||||
|
rpm (16) |
||||||
|
utmp (72) |
||||||
|
unknown (460) |
||||||
|
unknown (459) |
||||||
|
unknown (456) |
||||||
|
unknown (468) |
||||||
|
unknown (462) |
||||||
|
unknown (1001) |
||||||
|
unknown (474) |
||||||
|
make[1]: Leaving directory '/home/tema/mkimage-profiles/bld/live' |
||||||
|
mkimage: Processing 'prepare' ... |
||||||
|
mkimage: Processing 'prepare-workdir' ... |
||||||
|
Updating fonts cache: [ DONE ] |
||||||
|
mkimage: Processing 'copy-subdirs' ... |
||||||
|
mkimage: Processing 'copy-tree' ... |
||||||
|
mkimage: Processing 'run-scripts' ... |
||||||
|
removed '/.image/squashcfg.mk' |
||||||
|
removed '/.image/initfs' |
||||||
|
'./license.ru.html' -> '/.image/license.ru.html' |
||||||
|
'./license.all.html' -> '/.image/license.all.html' |
||||||
|
mkimage: Processing 'pack-image' ... |
||||||
|
base=/syslinux |
||||||
|
Not booted in EFI mode, unable to update EFI GRUB |
||||||
|
WARNING: GRUB_AUTOUPDATE_DEVICE not set in /etc/sysconfig/grub2 |
||||||
|
WARNING: so next boot may fail unless you have another bootloader; |
||||||
|
WARNING: you might want to define it there and run grub-autoupdate |
||||||
|
mkfs.fat 4.2 (2021-01-31) |
||||||
|
IMAGE_OUTPATH = /home/tema/out/kometa-school-p10-20211224-x86_64.iso |
||||||
|
IMAGE_OUTFILE = kometa-school-p10-20211224-x86_64.iso |
@ -0,0 +1,525 @@ |
|||||||
|
# profile/init
|
||||||
|
ifndef DISTCFG_MK |
||||||
|
DISTCFG_MK = 1
|
||||||
|
# use/pkgpriorities
|
||||||
|
FEATURES += pkgpriorities
|
||||||
|
PIN_PRIORITY = Important
|
||||||
|
# profile/bare
|
||||||
|
MKIMAGE_PREFIX ?= /usr/share/mkimage
|
||||||
|
IMAGEDIR ?= /home/tema/out
|
||||||
|
LOGDIR ?= /home/tema/out
|
||||||
|
BRANDING = kometa-school
|
||||||
|
PINNED_PACKAGES += branding-$(BRANDING)-alterator:Essential
|
||||||
|
PINNED_PACKAGES += branding-$(BRANDING)-bootsplash:Essential
|
||||||
|
PINNED_PACKAGES += branding-$(BRANDING)-bootloader:Essential
|
||||||
|
PINNED_PACKAGES += branding-$(BRANDING)-graphics:Essential
|
||||||
|
PINNED_PACKAGES += branding-$(BRANDING)-indexhtml:Essential
|
||||||
|
PINNED_PACKAGES += branding-$(BRANDING)-notes:Essential
|
||||||
|
PINNED_PACKAGES += branding-$(BRANDING)-release:Essential
|
||||||
|
PINNED_PACKAGES += branding-$(BRANDING)-slideshow:Essential
|
||||||
|
WORK_INIT_LIST = +branding-$(BRANDING)-release
|
||||||
|
IMAGE_INIT_LIST = +branding-$(BRANDING)-release
|
||||||
|
export GLOBAL_ARCH = $(ARCH)
|
||||||
|
# distro/.init
|
||||||
|
META_PREPARER ?= mkimage-profiles
|
||||||
|
META_APP_ID = kometa-school-p10
|
||||||
|
META_PUBLISHER = Proskurnev Artem
|
||||||
|
# boot/iso
|
||||||
|
BOOTLOADER ?= isolinux
|
||||||
|
IMAGE_PACKTYPE ?= boot
|
||||||
|
# distro/.boot
|
||||||
|
META_VOL_ID = KOMETA kometa-school-p10/x86_64
|
||||||
|
META_VOL_SET = ALT
|
||||||
|
GLOBAL_BOOT_LANG = ru_RU
|
||||||
|
# use/kernel
|
||||||
|
FEATURES += kernel
|
||||||
|
KFLAVOURS ?= std-def
|
||||||
|
export GLOBAL_KFLAVOURS = $(KFLAVOURS)
|
||||||
|
# distro/.base
|
||||||
|
META_SYSTEM_ID = LINUX
|
||||||
|
# use/kernel/net
|
||||||
|
THE_KMODULES += e1000e
|
||||||
|
THE_KMODULES += r8125
|
||||||
|
MAIN_KMODULES += r8168 rtl8168
|
||||||
|
# use/docs
|
||||||
|
FEATURES += docs
|
||||||
|
# use/branding
|
||||||
|
FEATURES += branding
|
||||||
|
# use/branding/notes
|
||||||
|
THE_BRANDING += notes
|
||||||
|
# use/docs/license
|
||||||
|
META_LICENSE_FILE = license.all.html
|
||||||
|
# sub/stage1
|
||||||
|
SUBPROFILES += stage1
|
||||||
|
# use/stage2
|
||||||
|
FEATURES += stage2
|
||||||
|
STAGE1_PACKAGES += make-initrd file iproute2
|
||||||
|
STAGE1_MODLISTS += $(FEATURES)
|
||||||
|
export GLOBAL_STAGE1_PACKAGES = $(STAGE1_PACKAGES)
|
||||||
|
export GLOBAL_STAGE1_KCONFIG = $(STAGE1_KCONFIG)
|
||||||
|
HSH_PROC = 1
|
||||||
|
GLOBAL_HSH_PROC = 1
|
||||||
|
# use/uuid-iso
|
||||||
|
FEATURES += uuid-iso
|
||||||
|
#MKI_VER_OPTIMAL = 0.2.41 # overridden by use/efi
|
||||||
|
UUID_ISO_SHRT = 2021120815104900
|
||||||
|
UUID_ISO = 2021-12-08-15-10-49-00
|
||||||
|
export GLOBAL_UUID_ISO = $(UUID_ISO)
|
||||||
|
# use/initrd-propagator
|
||||||
|
FEATURES += initrd-propagator
|
||||||
|
STAGE1_PACKAGES += make-initrd-propagator propagator
|
||||||
|
STAGE1_INITRD = initrd-propagator
|
||||||
|
STAGE1_INITRD_TYPEARGS = changedisk automatic
|
||||||
|
STAGE1_INITRD_BOOTMETHOD = method:cdrom,fuid:2021-12-08-15-10-49-00
|
||||||
|
STAGE1_INITRD_STAGE2_OPTION = stagename
|
||||||
|
# use/stage2/fs
|
||||||
|
STAGE1_MODLISTS += stage2-fs
|
||||||
|
# use/stage2/hid
|
||||||
|
STAGE1_MODLISTS += stage2-hid
|
||||||
|
# use/stage2/md
|
||||||
|
STAGE1_MODLISTS += stage2-md
|
||||||
|
# use/stage2/mmc
|
||||||
|
STAGE1_MODLISTS += stage2-mmc
|
||||||
|
# use/stage2/net
|
||||||
|
STAGE1_MODLISTS += stage2-net
|
||||||
|
# use/stage2/net-nfs
|
||||||
|
STAGE1_MODLISTS += stage2-net-nfs
|
||||||
|
# use/stage2/net-cifs
|
||||||
|
STAGE1_MODLISTS += stage2-net-cifs
|
||||||
|
# use/stage2/cifs
|
||||||
|
STAGE1_PACKAGES += cifs-utils
|
||||||
|
# use/stage2/rtc
|
||||||
|
STAGE1_MODLISTS += stage2-rtc
|
||||||
|
# use/stage2/scsi
|
||||||
|
STAGE1_MODLISTS += stage2-scsi
|
||||||
|
# use/stage2/usb
|
||||||
|
STAGE1_MODLISTS += stage2-usb
|
||||||
|
# distro/.regular-bare
|
||||||
|
SAVE_PROFILE ?= yes
|
||||||
|
# use/vmguest
|
||||||
|
FEATURES += vmguest
|
||||||
|
# use/syslinux
|
||||||
|
FEATURES += syslinux
|
||||||
|
STAGE1_PACKAGES += syslinux
|
||||||
|
BOOTVGA ?= normal
|
||||||
|
SYSLINUX_FILES += /usr/lib/syslinux/pxelinux.0
|
||||||
|
META_SYSTEM_ID ?= SYSLINUX
|
||||||
|
#RELNAME = ALT (alt-p10-kde5) # overridden by use/grub
|
||||||
|
export GLOBAL_SYSLINUX_DEFAULT = $(SYSLINUX_DEFAULT)
|
||||||
|
# use/grub
|
||||||
|
FEATURES += grub
|
||||||
|
BOOTVGA ?= normal
|
||||||
|
RELNAME = KOMETA (kometa-school-p10)
|
||||||
|
export GLOBAL_GRUB_DEFAULT = $(GRUB_DEFAULT)
|
||||||
|
# use/memtest
|
||||||
|
FEATURES += memtest
|
||||||
|
SYSTEM_PACKAGES += memtest86+
|
||||||
|
SYSLINUX_CFG += memtest
|
||||||
|
GRUB_CFG += memtest_bios
|
||||||
|
# use/efi
|
||||||
|
FEATURES += efi
|
||||||
|
MKI_VER_MINIMAL = 0.2.12
|
||||||
|
MKI_VER_OPTIMAL = 0.2.17
|
||||||
|
EFI_BOOTLOADER ?= grub-efi
|
||||||
|
export GLOBAL_EFI_BOOTLOADER = $(EFI_BOOTLOADER)
|
||||||
|
COMMON_LISTS += tagged/base+efi
|
||||||
|
INSTALL2_PACKAGES += dosfstools fatresize
|
||||||
|
STAGE1_KCONFIG += EFI EFI_PARTITION FB_EFI EFIVAR_FS
|
||||||
|
EFI_BOOTARGS += $(STAGE2_BOOTARGS)
|
||||||
|
RESCUE_PACKAGES += refind $(EFI_SHELL) $(EFI_BOOTLOADER)
|
||||||
|
THE_PACKAGES += $(EFI_SHELL)
|
||||||
|
# use/efi/signed
|
||||||
|
EFI_CERT = altlinux
|
||||||
|
COMMON_PACKAGES += shim-signed
|
||||||
|
COMMON_PACKAGES += mokutil pesign
|
||||||
|
RESCUE_PACKAGES += openssl
|
||||||
|
# use/luks
|
||||||
|
FEATURES += luks
|
||||||
|
BASE_PACKAGES += make-initrd-luks
|
||||||
|
THE_PACKAGES += alterator-luks
|
||||||
|
THE_LISTS += tagged/security+luks
|
||||||
|
RESCUE_LISTS += tagged/security+luks
|
||||||
|
# use/volumes
|
||||||
|
FEATURES += volumes
|
||||||
|
INSTALL2_PACKAGES += $(STAGE2_VOLUMES_PROFILE)
|
||||||
|
LIVE_PACKAGES += $(STAGE2_VOLUMES_PROFILE)
|
||||||
|
# use/volumes/regular
|
||||||
|
STAGE2_VOLUMES_PROFILE = volumes-profile-regular
|
||||||
|
# use/browser
|
||||||
|
FEATURES += browser
|
||||||
|
THE_PACKAGES += $(THE_BROWSER)
|
||||||
|
#THE_BROWSER ?= elinks # overridden by use/browser/firefox
|
||||||
|
# use/browser/firefox
|
||||||
|
#THE_BROWSER = firefox$(FX_FLAVOUR) # overridden by use/browser/falkon
|
||||||
|
# use/kernel/disable-usb-autosuspend
|
||||||
|
BASE_BOOTARGS += usbcore.autosuspend=-1
|
||||||
|
STAGE2_BOOTARGS += usbcore.autosuspend=-1
|
||||||
|
SYSTEM_PACKAGES += disable-usb-autosuspend
|
||||||
|
# sub/rootfs
|
||||||
|
SUBPROFILES += rootfs
|
||||||
|
# use/services
|
||||||
|
FEATURES += services
|
||||||
|
export GLOBAL_DEFAULT_SERVICES_ENABLE = $(DEFAULT_SERVICES_ENABLE)
|
||||||
|
export GLOBAL_DEFAULT_SERVICES_DISABLE = $(DEFAULT_SERVICES_DISABLE)
|
||||||
|
export GLOBAL_SERVICES_ENABLE = $(SERVICES_ENABLE)
|
||||||
|
export GLOBAL_SERVICES_DISABLE = $(SERVICES_DISABLE)
|
||||||
|
export GLOBAL_SYSTEMD_SERVICES_ENABLE = $(SYSTEMD_SERVICES_ENABLE)
|
||||||
|
export GLOBAL_SYSTEMD_SERVICES_DISABLE = $(SYSTEMD_SERVICES_DISABLE)
|
||||||
|
# use/ntp
|
||||||
|
FEATURES += ntp
|
||||||
|
#THE_NTPD ?= openntpd # overridden by use/ntp/chrony
|
||||||
|
THE_PACKAGES += $(THE_NTPD)
|
||||||
|
PINNED_PACKAGES += $(THE_NTPD)
|
||||||
|
#THE_NTPD_SERVICE ?= openntpd # overridden by use/ntp/chrony
|
||||||
|
DEFAULT_SERVICES_ENABLE += $(THE_NTPD_SERVICE)
|
||||||
|
# use/ntp/chrony
|
||||||
|
THE_NTPD = chrony
|
||||||
|
THE_NTPD_SERVICE = chronyd
|
||||||
|
# use/services/lvm2-disable
|
||||||
|
DEFAULT_SERVICES_DISABLE += lvm2-lvmetad
|
||||||
|
DEFAULT_SERVICES_DISABLE += lvm2-lvmpolld
|
||||||
|
DEFAULT_SERVICES_DISABLE += lvm2-monitor
|
||||||
|
# mixin/regular-x11
|
||||||
|
THE_LISTS += tagged/desktop+regular tagged/base+regular
|
||||||
|
THE_PACKAGES += disable-usb-autosuspend
|
||||||
|
THE_PACKAGES += btrfs-progs
|
||||||
|
THE_PACKAGES += gpm
|
||||||
|
DEFAULT_SERVICES_DISABLE += gpm powertop
|
||||||
|
FX_FLAVOUR = -esr
|
||||||
|
# use/x11
|
||||||
|
FEATURES += x11
|
||||||
|
THE_LISTS += tagged/base+xorg
|
||||||
|
# use/x11/wacom
|
||||||
|
THE_PACKAGES += xorg-drv-wacom
|
||||||
|
# use/firmware
|
||||||
|
FEATURES += firmware
|
||||||
|
SYSTEM_PACKAGES += firmware-linux
|
||||||
|
# use/x11/amdgpu
|
||||||
|
THE_PACKAGES += xorg-drv-amdgpu
|
||||||
|
# use/firmware/wireless
|
||||||
|
THE_PACKAGES_REGEXP += firmware-prism.*
|
||||||
|
THE_PACKAGES_REGEXP += firmware-ipw.*
|
||||||
|
THE_PACKAGES_REGEXP += firmware-zd.*
|
||||||
|
THE_PACKAGES_REGEXP += firmware-rt.*
|
||||||
|
# use/kernel/wireless
|
||||||
|
THE_KMODULES += bcmwl staging
|
||||||
|
THE_KMODULES += rtl8188fu rtl8192eu rtl8723de rtl8812au
|
||||||
|
THE_KMODULES += rtl8821ce rtl8821cu rtl88x2bu rtl8723bu
|
||||||
|
THE_KMODULES += rtw89
|
||||||
|
# use/wireless
|
||||||
|
FEATURES += wireless
|
||||||
|
THE_LISTS += tools/wireless
|
||||||
|
# use/wireless/full
|
||||||
|
RESCUE_LISTS += tools/wireless
|
||||||
|
# sub/rootfs@live
|
||||||
|
SUBPROFILES += rootfs@live
|
||||||
|
# sub/stage2@live
|
||||||
|
SUBPROFILES += stage2@live
|
||||||
|
# use/grub/live.cfg
|
||||||
|
GRUB_CFG += live
|
||||||
|
# use/live
|
||||||
|
FEATURES += live
|
||||||
|
CLEANUP_BASE_PACKAGES += installer*
|
||||||
|
DEFAULT_SERVICES_ENABLE += alteratord cpufreq-simple livecd-evms livecd-fstab livecd-hostname livecd-setauth livecd-setlocale livecd-timezone livecd-net-eth livecd-install-wmaker random rpcbind plymouth avahi-daemon
|
||||||
|
DEFAULT_SERVICES_DISABLE += anacron blk-availability bridge clamd dhcpd dmeventd dnsmasq mdadm netfs o2cb ocfs2 openvpn postfix rawdevices slapd smartd sshd sysstat update_wms xinetd
|
||||||
|
CONTROL += rpcbind:local
|
||||||
|
export GLOBAL_LIVE_CLEANUP_KDRIVERS = $(LIVE_CLEANUP_KDRIVERS)
|
||||||
|
# use/syslinux/ui/menu
|
||||||
|
#SYSLINUX_UI = menu # overridden by use/syslinux/ui/gfxboot
|
||||||
|
# use/live/.base
|
||||||
|
LIVE_LISTS += tagged/base+desktop+live
|
||||||
|
# use/net
|
||||||
|
FEATURES += net
|
||||||
|
THE_PACKAGES += $(THE_NET_SUBSYS)
|
||||||
|
PINNED_PACKAGES += $(THE_NET_SUBSYS)
|
||||||
|
#THE_NET_SUBSYS = network-config-subsystem # overridden by use/net/nm
|
||||||
|
# use/deflogin
|
||||||
|
FEATURES += deflogin
|
||||||
|
THE_PACKAGES += shadow-utils passwd
|
||||||
|
export GLOBAL_ROOTPW_EMPTY = $(ROOTPW_EMPTY)
|
||||||
|
export GLOBAL_ROOTPW = $(ROOTPW)
|
||||||
|
export GLOBAL_USERS = $(USERS)
|
||||||
|
export GLOBAL_GROUPS = $(GROUPS)
|
||||||
|
export GLOBAL_SPEC_USER = $(SPEC_USER)
|
||||||
|
# use/deflogin/live
|
||||||
|
ROOTPW_EMPTY = 1
|
||||||
|
USERS += kometa::1:1
|
||||||
|
# use/live/base
|
||||||
|
LIVE_LISTS += tagged/base+network
|
||||||
|
# use/deflogin/hardware
|
||||||
|
GROUPS += cdwriter radio scanner lp uucp
|
||||||
|
# use/deflogin/xgrp
|
||||||
|
GROUPS += xgrp audio
|
||||||
|
# use/deflogin/privileges
|
||||||
|
GROUPS += fuse netadmin proc users
|
||||||
|
# use/x11-autostart
|
||||||
|
FEATURES += x11-autostart
|
||||||
|
BASE_PACKAGES += installer-feature-runlevel5-stage3
|
||||||
|
# use/x11-autologin
|
||||||
|
FEATURES += x11-autologin
|
||||||
|
THE_PACKAGES += shadow-groups
|
||||||
|
# use/sound
|
||||||
|
FEATURES += sound
|
||||||
|
THE_LISTS += sound/base
|
||||||
|
THE_LISTS += $(THE_SOUND)
|
||||||
|
# use/fonts
|
||||||
|
FEATURES += fonts
|
||||||
|
FONTS ?= fonts-ttf-google-croscore-arimo
|
||||||
|
THE_PACKAGES += $(FONTS)
|
||||||
|
export GLOBAL_FONT_FEATURES_ENABLE = $(FONT_FEATURES_ENABLE)
|
||||||
|
export GLOBAL_FONT_FEATURES_DISABLE = $(FONT_FEATURES_DISABLE)
|
||||||
|
# use/fonts/otf/adobe
|
||||||
|
FONTS += fonts-otf-adobe-source-code-pro
|
||||||
|
FONTS += fonts-otf-adobe-source-sans-pro
|
||||||
|
# use/fonts/otf/mozilla
|
||||||
|
FONTS += fonts-otf-mozilla-fira
|
||||||
|
# use/live/x11
|
||||||
|
LIVE_LISTS += tagged/desktop+live tagged/base+desktop+live
|
||||||
|
LIVE_LISTS += tagged/base+l10n
|
||||||
|
LIVE_PACKAGES += pciutils
|
||||||
|
# use/live/repo
|
||||||
|
LIVE_REPO ?= http/yandex
|
||||||
|
export GLOBAL_LIVE_REPO = $(LIVE_REPO)
|
||||||
|
# use/live/suspend
|
||||||
|
LIVE_PACKAGES += installer-feature-desktop-suspend-stage2
|
||||||
|
# use/browser/firefox/live
|
||||||
|
#THE_BROWSER += livecd-firefox # overridden by use/browser/falkon
|
||||||
|
# use/syslinux/ui/gfxboot
|
||||||
|
SYSLINUX_UI = gfxboot
|
||||||
|
STAGE1_PACKAGES += gfxboot
|
||||||
|
STAGE1_BRANDING += bootloader
|
||||||
|
# use/grub/ui/gfxboot
|
||||||
|
GRUB_UI = gfxboot
|
||||||
|
STAGE1_BRANDING += bootloader
|
||||||
|
STAGE1_PACKAGES += grub-common
|
||||||
|
# distro/.regular-x11
|
||||||
|
THE_BRANDING += bootloader
|
||||||
|
THE_LISTS += tagged/base+regular+extra tagged/desktop+regular tagged/base+regular
|
||||||
|
LIVE_LISTS += tagged/base+rescue
|
||||||
|
LIVE_PACKAGES += gpm
|
||||||
|
DEFAULT_SERVICES_DISABLE += gpm powertop
|
||||||
|
# use/sound/alsa
|
||||||
|
#THE_SOUND = sound/alsa # overridden by use/sound/pulse
|
||||||
|
# use/power
|
||||||
|
FEATURES += power
|
||||||
|
# use/power/acpi
|
||||||
|
COMMON_PACKAGES += acpid acpi
|
||||||
|
DEFAULT_SERVICES_ENABLE += acpid
|
||||||
|
# use/power/acpi/button
|
||||||
|
COMMON_PACKAGES += acpid-events-power
|
||||||
|
# use/net/nm/native
|
||||||
|
NM_Native = yes
|
||||||
|
# use/drm
|
||||||
|
FEATURES += drm
|
||||||
|
DRM_KMODULES += drm
|
||||||
|
THE_KMODULES += $(DRM_KMODULES)
|
||||||
|
# use/x11/intel
|
||||||
|
THE_PACKAGES += xorg-drv-intel
|
||||||
|
THE_PACKAGES += xorg-dri-intel
|
||||||
|
# use/drm/nouveau
|
||||||
|
NVIDIA_KMODULES ?= drm-nouveau
|
||||||
|
DRM_KMODULES += $(NVIDIA_KMODULES)
|
||||||
|
# use/x11/nouveau
|
||||||
|
NVIDIA_PACKAGES ?= xorg-drv-nouveau
|
||||||
|
THE_PACKAGES += $(NVIDIA_PACKAGES)
|
||||||
|
# use/drm/radeon
|
||||||
|
DRM_KMODULES += drm-radeon
|
||||||
|
# use/x11/radeon
|
||||||
|
RADEON_PACKAGES ?= xorg-drv-ati xorg-drv-radeon
|
||||||
|
THE_PACKAGES += $(RADEON_PACKAGES)
|
||||||
|
# use/drm/ancient
|
||||||
|
DRM_KMODULES += drm-ancient
|
||||||
|
# use/x11/xorg
|
||||||
|
THE_LISTS += tagged/desktop+xorg
|
||||||
|
# use/control
|
||||||
|
FEATURES += control
|
||||||
|
THE_PACKAGES += control
|
||||||
|
export GLOBAL_CONTROL = $(CONTROL)
|
||||||
|
# use/xdg-user-dirs
|
||||||
|
FEATURES += xdg-user-dirs
|
||||||
|
CONTROL += xdg-user-dirs:enabled
|
||||||
|
THE_PACKAGES += xdg-user-dirs
|
||||||
|
export GLOBAL_XDG_USER_DIRS = $(XDG_USER_DIRS)
|
||||||
|
# use/l10n
|
||||||
|
FEATURES += l10n
|
||||||
|
THE_LISTS += tagged/base+l10n
|
||||||
|
LOCALES += en_US
|
||||||
|
XKB_KEYMAPS += us
|
||||||
|
LOCALE ?= en_US
|
||||||
|
# use/l10n/ru_RU
|
||||||
|
LOCALES += ru_RU
|
||||||
|
LOCALE = ru_RU
|
||||||
|
XKB_KEYMAPS += ru
|
||||||
|
KEYTABLE = ruwin_ct_sh-UTF-8
|
||||||
|
|
||||||
|
export GLOBAL_LOCALE = $(LOCALE)
|
||||||
|
export GLOBAL_LOCALES = $(LOCALES)
|
||||||
|
export GLOBAL_XKB_KEYMAPS = $(XKB_KEYMAPS)
|
||||||
|
export GLOBAL_XKB_VARIANTS = $(XKB_VARIANTS)
|
||||||
|
export GLOBAL_XKB_SWITCH = $(XKB_SWITCH)
|
||||||
|
export GLOBAL_XKB_LED = $(XKB_LED)
|
||||||
|
# mixin/regular-desktop
|
||||||
|
THE_PACKAGES += pam-limits-desktop beesu polkit dvd+rw-tools
|
||||||
|
THE_BRANDING += alterator graphics indexhtml
|
||||||
|
THE_BRANDING += notes
|
||||||
|
THE_PACKAGES += $(THE_IMAGEWRITER)
|
||||||
|
THE_IMAGEWRITER = altmediawriter
|
||||||
|
THE_PACKAGES += upower udev-rules-rfkill-uaccess
|
||||||
|
DEFAULT_SERVICES_DISABLE += gssd idmapd krb5kdc rpcbind
|
||||||
|
DEFAULT_SERVICES_ENABLE += cups sshd
|
||||||
|
DEFAULT_SERVICES_ENABLE += alteratord
|
||||||
|
# use/vmguest/kvm
|
||||||
|
THE_PACKAGES += qemu-guest-agent
|
||||||
|
# use/vmguest/vmware
|
||||||
|
THE_KMODULES += vmware
|
||||||
|
THE_KMODULES += scsi
|
||||||
|
THE_PACKAGES += open-vm-tools
|
||||||
|
# use/vmguest/vbox/x11
|
||||||
|
THE_KMODULES += drm
|
||||||
|
THE_PACKAGES += virtualbox-guest-additions
|
||||||
|
# use/vmguest/vmware/x11
|
||||||
|
THE_PACKAGES += xorg-drv-vmware xorg-drv-vmmouse
|
||||||
|
THE_PACKAGES += open-vm-tools-desktop
|
||||||
|
# use/vmguest/kvm/x11
|
||||||
|
THE_PACKAGES += spice-vdagent xorg-drv-qxl xorg-drv-spiceqxl
|
||||||
|
#THE_PACKAGES += xorg-dri-virtio
|
||||||
|
# use/syslinux/live_rw.cfg
|
||||||
|
SYSLINUX_CFG += live_rw
|
||||||
|
# use/grub/live_rw.cfg
|
||||||
|
GRUB_CFG += live_rw
|
||||||
|
# use/metadata
|
||||||
|
FEATURES += metadata
|
||||||
|
# use/syslinux/localboot.cfg
|
||||||
|
SYSLINUX_CFG += localboot
|
||||||
|
# use/grub/localboot_bios.cfg
|
||||||
|
GRUB_CFG += localboot_bios
|
||||||
|
# use/bootloader
|
||||||
|
FEATURES += bootloader
|
||||||
|
#BASE_BOOTLOADER ?= grub # overridden by use/bootloader/grub
|
||||||
|
export GLOBAL_BASE_BOOTLOADER = $(BASE_BOOTLOADER)
|
||||||
|
BASE_LISTS += $(BASE_BOOTLOADER)
|
||||||
|
export GLOBAL_BASE_BOOTARGS = $(BASE_BOOTARGS)
|
||||||
|
BASE_PACKAGES += installer-feature-bootloader-$(BASE_BOOTLOADER)
|
||||||
|
PINNED_PACKAGES += alterator-$(BASE_BOOTLOADER)
|
||||||
|
PINNED_PACKAGES += installer-bootloader-$(BASE_BOOTLOADER)-stage2
|
||||||
|
# use/bootloader/live
|
||||||
|
LIVE_PACKAGES += alterator-$(BASE_BOOTLOADER)
|
||||||
|
# use/bootloader/grub
|
||||||
|
BASE_BOOTLOADER = grub
|
||||||
|
# use/live/install
|
||||||
|
LIVE_PACKAGES += livecd-install
|
||||||
|
LIVE_PACKAGES += livecd-kometa-hack
|
||||||
|
LIVE_PACKAGES += livecd-installer-features
|
||||||
|
# distro/.regular-wm
|
||||||
|
LIVE_PACKAGES += livecd-install-apt-cache
|
||||||
|
# use/branding/full
|
||||||
|
THE_BRANDING += alterator graphics
|
||||||
|
THE_BRANDING += indexhtml slideshow
|
||||||
|
THE_BRANDING += bootloader
|
||||||
|
THE_BRANDING += bootsplash
|
||||||
|
# use/firmware/cpu
|
||||||
|
THE_PACKAGES += firmware-intel-ucode iucode_tool
|
||||||
|
# use/firmware/laptop
|
||||||
|
THE_KMODULES += acpi_call
|
||||||
|
THE_PACKAGES += firmware-alsa-sof
|
||||||
|
# use/init
|
||||||
|
FEATURES += init
|
||||||
|
THE_LISTS += $(INIT_TYPE)
|
||||||
|
PINNED_PACKAGES += $(INIT_TYPE)
|
||||||
|
# use/init/systemd
|
||||||
|
INIT_TYPE = systemd
|
||||||
|
# use/init/systemd/full
|
||||||
|
THE_PACKAGES += chkconfig
|
||||||
|
THE_PACKAGES += vconsole-setup-kludge
|
||||||
|
# use/init/systemd/settings/enable-log-to-tty12
|
||||||
|
THE_PACKAGES += systemd-settings-enable-log-to-tty12
|
||||||
|
# use/init/systemd/settings/enable-showstatus
|
||||||
|
THE_PACKAGES += systemd-settings-enable-showstatus
|
||||||
|
# distro/.regular-desktop
|
||||||
|
THE_PACKAGES += bluez
|
||||||
|
DEFAULT_SERVICES_ENABLE += bluetoothd
|
||||||
|
# use/net/nm
|
||||||
|
THE_NET_SUBSYS = NetworkManager
|
||||||
|
THE_LISTS += tagged/base+nm
|
||||||
|
THE_LISTS += tagged/base+kde5
|
||||||
|
THE_LISTS += tagged/base+kometa
|
||||||
|
LIVE_PACKAGES += livecd-save-nfs
|
||||||
|
DEFAULT_SERVICES_ENABLE += network
|
||||||
|
DEFAULT_SERVICES_ENABLE += NetworkManager ModemManager
|
||||||
|
DEFAULT_SERVICES_ENABLE += livecd-save-nfs
|
||||||
|
export GLOBAL_NM_native = $(NM_native)
|
||||||
|
# use/x11/kde/synaptic
|
||||||
|
THE_PACKAGES += synaptic-kde synaptic-usermode-
|
||||||
|
# use/x11/kde5
|
||||||
|
#THE_PACKAGES += kde5-big
|
||||||
|
# use/browser/falkon
|
||||||
|
THE_BROWSER = chromium
|
||||||
|
# use/x11/dm
|
||||||
|
#THE_DISPLAY_MANAGER ?= xdm # overridden by use/x11/kde5-display-manager-lightdm
|
||||||
|
THE_PACKAGES += $(THE_DISPLAY_MANAGER)
|
||||||
|
PINNED_PACKAGES += $(THE_DISPLAY_MANAGER)
|
||||||
|
DEFAULT_SERVICES_ENABLE += $(THE_DM_SERVICE)
|
||||||
|
# use/x11/sddm
|
||||||
|
THE_DISPLAY_MANAGER = sddm
|
||||||
|
# use/x11/kde5-display-manager-lightdm
|
||||||
|
#THE_DISPLAY_MANAGER = kde5-display-manager-lightdm
|
||||||
|
#THE_DM_SERVICE = lightdm
|
||||||
|
#PINNED_PACKAGES += kde5-display-manager-sddm:Extra
|
||||||
|
# use/fonts/ttf/google
|
||||||
|
FONTS += fonts-ttf-google-droid-sans
|
||||||
|
FONTS += fonts-ttf-google-droid-sans-mono
|
||||||
|
FONTS += fonts-ttf-google-droid-serif
|
||||||
|
FONTS += fonts-ttf-google-croscore-arimo
|
||||||
|
FONTS += fonts-ttf-google-croscore-cousine
|
||||||
|
FONTS += fonts-ttf-google-croscore-tinos
|
||||||
|
# use/fonts/ttf/redhat
|
||||||
|
FONTS += fonts-ttf-liberation
|
||||||
|
# use/fonts/zerg
|
||||||
|
FONT_FEATURES_ENABLE = antialias lcdfilter-default hinting style-full sub-pixel-rgb
|
||||||
|
FONT_FEATURES_DISABLE = no-antialias lcdfilter-none unhinted no-sub-pixel
|
||||||
|
# use/sound/pulse
|
||||||
|
THE_SOUND = sound/pulseaudio
|
||||||
|
# mixin/regular-kde5
|
||||||
|
#THE_PACKAGES += kde5-telepathy falkon-kde5
|
||||||
|
# use/net/dhcp
|
||||||
|
THE_PACKAGES += dhcpcd
|
||||||
|
# use/domain-client
|
||||||
|
FEATURES += domain-client
|
||||||
|
THE_LISTS += domain-client
|
||||||
|
# use/plymouth
|
||||||
|
FEATURES += plymouth
|
||||||
|
# use/stage2/drm
|
||||||
|
STAGE1_MODLISTS += stage2-drm
|
||||||
|
# use/drm/stage2
|
||||||
|
STAGE1_DRM_KMODULES += drm
|
||||||
|
STAGE1_KMODULES += $(STAGE1_DRM_KMODULES)
|
||||||
|
# use/drm/stage2/ancient
|
||||||
|
STAGE1_DRM_KMODULES += drm-ancient
|
||||||
|
# use/drm/stage2/radeon
|
||||||
|
STAGE1_DRM_KMODULES += drm-radeon
|
||||||
|
# use/drm/stage2/nouveau
|
||||||
|
STAGE1_DRM_KMODULES += drm-nouveau
|
||||||
|
# use/plymouth/stage2
|
||||||
|
STAGE1_PACKAGES_REGEXP += make-initrd-plymouth
|
||||||
|
STAGE1_BRANDING += bootsplash
|
||||||
|
STAGE2_BRANDING += bootsplash
|
||||||
|
STAGE2_BOOTARGS += quiet splash
|
||||||
|
# use/plymouth/base
|
||||||
|
INSTALL2_PACKAGES += installer-feature-setup-plymouth
|
||||||
|
BASE_PACKAGES_REGEXP += make-initrd-plymouth cpio
|
||||||
|
THE_BRANDING += bootsplash
|
||||||
|
THE_PACKAGES += make-initrd-plymouth
|
||||||
|
BASE_BOOTARGS += splash
|
||||||
|
# use/build-distro
|
||||||
|
FEATURES += build-distro
|
||||||
|
# config/name/alt-p10-kde5
|
||||||
|
IMAGE_NAME = kometa-school-p10
|
||||||
|
# use/pack
|
||||||
|
FEATURES += pack
|
||||||
|
# use/pack/iso
|
||||||
|
IMAGE_PACKTYPE ?= isodata
|
||||||
|
# config/pack/iso
|
||||||
|
IMAGE_TYPE = iso
|
||||||
|
# profile/finalize
|
||||||
|
SUBPROFILE_DIRS = $(notdir $(subst @,/,$(SUBPROFILES)))
|
||||||
|
endif |
@ -0,0 +1 @@ |
|||||||
|
x86_64 |
@ -0,0 +1 @@ |
|||||||
|
e8f8a56263ae690a4325e4fbdef5cabb111406e0 |
@ -0,0 +1 @@ |
|||||||
|
20211227 |
@ -0,0 +1 @@ |
|||||||
|
KOMETA kometa-school-p10/x86_64 build 2021-12-27 |
Binary file not shown.
Binary file not shown.
@ -0,0 +1,55 @@ |
|||||||
|
ifneq (clean,$(MAKECMDGOALS)) |
||||||
|
ifneq (distclean,$(MAKECMDGOALS)) |
||||||
|
|
||||||
|
ifndef INCLUDED_FUNCTIONS_MK |
||||||
|
INCLUDED_FUNCTIONS_MK = 1
|
||||||
|
|
||||||
|
# globals
|
||||||
|
PKGDIR ?= $(GLOBAL_BUILDDIR)/pkg
|
||||||
|
|
||||||
|
# duplicated from metaprofile makefiles for the sake of "local" builds
|
||||||
|
ARCH ?= $(shell arch | sed 's/i686/i586/; s/armv.*/arm/')
|
||||||
|
DATE ?= $(shell date +%Y%m%d)
|
||||||
|
|
||||||
|
# prefix pkglist name with its directory to form a path (relative/absolute)
|
||||||
|
rlist = $(1:%=lists/%)
|
||||||
|
list = $(addprefix $(PKGDIR)/,$(call rlist,$(1)))
|
||||||
|
|
||||||
|
# prefix/suffix group name to form a path (relative/absolute)
|
||||||
|
rgroup = $(1:%=groups/%.directory)
|
||||||
|
group = $(addprefix $(PKGDIR)/,$(call rgroup,$(1)))
|
||||||
|
|
||||||
|
# prefix/suffix pkg profile name to form a path (relative/absolute)
|
||||||
|
rprofile = $(1:%=profiles/%.directory)
|
||||||
|
profile = $(addprefix $(PKGDIR)/,$(call rprofile,$(1)))
|
||||||
|
|
||||||
|
# map first argument (a function) onto second one (an argument list)
|
||||||
|
map = $(foreach a,$(2),$(call $(1),$(a)))
|
||||||
|
|
||||||
|
# happens at least twice, and variables are the same by design
|
||||||
|
groups2lists = $(shell $(groups2lists_body))
|
||||||
|
define groups2lists_body |
||||||
|
{ if [ -n "$(THE_GROUPS)$(MAIN_GROUPS)" ]; then \ |
||||||
|
sed -rn 's,^X-Alterator-PackageList=(.*)$$,\1,p' \
|
||||||
|
$(call map,group,$(THE_GROUPS) $(MAIN_GROUPS)); \
|
||||||
|
fi; } |
||||||
|
endef |
||||||
|
|
||||||
|
# kernel package list generation; see also #24669
|
||||||
|
NULL :=
|
||||||
|
SPACE := $(NULL) # the officially documented way of getting a space
|
||||||
|
COMMA := ,
|
||||||
|
|
||||||
|
list2re = $(subst $(SPACE),|,$(strip $(1)))
|
||||||
|
|
||||||
|
# args: KFLAVOURS, KMODULES
|
||||||
|
# NB: $(2) could be empty
|
||||||
|
kpackages = $(and $(1), \
|
||||||
|
^kernel-(image|modules-($(call list2re,$(2))))-($(call list2re,$(1)))$$)
|
||||||
|
|
||||||
|
# arg: branding subpackages
|
||||||
|
branding = $(and $(1),^branding-$(BRANDING)-($(call list2re,$(1)))$$)
|
||||||
|
|
||||||
|
endif |
||||||
|
endif |
||||||
|
endif |
@ -0,0 +1,6 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# fixup chroot's toplevel directory permissions (use to become 1775) |
||||||
|
|
||||||
|
chmod 755 / |
||||||
|
|
||||||
|
rm -f /.gitignore |
@ -0,0 +1,5 @@ |
|||||||
|
#!/bin/sh -e |
||||||
|
# drop intermediate files not needed in the image |
||||||
|
# which receive broken permissions in fakeroot environment |
||||||
|
|
||||||
|
rm -f /etc/tcb/*/shadow{-,.lock} |
@ -0,0 +1,6 @@ |
|||||||
|
# step 4: build the distribution image
|
||||||
|
# take care for kernel bits
|
||||||
|
|
||||||
|
DOT_BASE += $(call kpackages, \
|
||||||
|
$(KFLAVOURS), \
|
||||||
|
$(sort $(THE_KMODULES) $(BASE_KMODULES) $(BASE_KMODULES_REGEXP)))
|
@ -0,0 +1,9 @@ |
|||||||
|
# step 4: build the distribution image
|
||||||
|
|
||||||
|
DOT_BASE += $(call branding,$(THE_BRANDING))
|
||||||
|
|
||||||
|
# needed for refind only
|
||||||
|
ifeq (,$(filter-out x86_64,$(ARCH))) |
||||||
|
CHROOT_PACKAGES_REGEXP += $(call branding,bootloader)
|
||||||
|
CHROOT_PACKAGES += ImageMagick-tools
|
||||||
|
endif |
@ -0,0 +1,14 @@ |
|||||||
|
# step 4: build the distribution image
|
||||||
|
|
||||||
|
ifneq (,$(DOCS)) |
||||||
|
DOT_BASE += docs-$(DOCS)
|
||||||
|
CHROOT_PACKAGES += docs-$(DOCS)
|
||||||
|
endif |
||||||
|
|
||||||
|
ifneq (,$(findstring notes,$(THE_BRANDING) $(INSTALL2_BRANDING))) |
||||||
|
CHROOT_PACKAGES_REGEXP += $(call branding,notes)
|
||||||
|
endif |
||||||
|
|
||||||
|
ifneq (,$(findstring indexhtml,$(THE_BRANDING))) |
||||||
|
CHROOT_PACKAGES_REGEXP += $(call branding,indexhtml)
|
||||||
|
endif |
@ -0,0 +1,46 @@ |
|||||||
|
# step 4: build the distribution image
|
||||||
|
|
||||||
|
# package lists are needed for installer and live-install images
|
||||||
|
METADIR := files/Metadata
|
||||||
|
|
||||||
|
# preparation targets of features.in/build-distro/lib/build-distro.mk
|
||||||
|
WHATEVER += metadata
|
||||||
|
|
||||||
|
# handle these too
|
||||||
|
DOT_BASE += $(BASE_PACKAGES_REGEXP) $(THE_PACKAGES_REGEXP)
|
||||||
|
|
||||||
|
# args: type, name
|
||||||
|
define dump |
||||||
|
if [ -n "$($(2)_$(1))" ]; then \ |
||||||
|
echo -e "\n## $(2)_$(1)"; \
|
||||||
|
case "$(1)" in \
|
||||||
|
PACKAGES) echo "$($(2)_$(1))";; \
|
||||||
|
LISTS) echo -e "\n# $($(2)_$(1))"; cat $($(2)_$(1));; \
|
||||||
|
esac; \
|
||||||
|
fi; |
||||||
|
endef |
||||||
|
|
||||||
|
# BASE_PACKAGES, BASE_LISTS and whatever else goes into base install;
|
||||||
|
# thus construct requisite .base packagelist for alterator-pkg
|
||||||
|
metadata-.base: |
||||||
|
@cd $(call list,/); \
|
||||||
|
{ \
|
||||||
|
echo "## generated by features.in/metadata/lib/50-metadata.mk";\
|
||||||
|
$(foreach p,SYSTEM COMMON THE BASE,$(call dump,PACKAGES,$(p))) \
|
||||||
|
$(foreach l,COMMON THE BASE,$(call dump,LISTS,$(l))) \
|
||||||
|
if [ -n "$(DOT_BASE)" ]; then \
|
||||||
|
echo -e "\n## DOT_BASE\n$(DOT_BASE)"; \
|
||||||
|
fi; \
|
||||||
|
} | sed -re 's/^[[:space:]]+//' | sed -re '/^[^[:space:]#]/ s/[[:space:]]+/\n/g' > .base
|
||||||
|
|
||||||
|
# see also alterator-pkg (backend3/pkg-install);
|
||||||
|
# we only tar up what's up to it (note that e.g.
|
||||||
|
# LIVE_LISTS are needed in the generated profile
|
||||||
|
# but not for alterator-pkg)
|
||||||
|
metadata: metadata-.base |
||||||
|
@mkdir -p $(METADIR); \
|
||||||
|
tar -C $(PKGDIR) -cvf - \
|
||||||
|
$(call rlist,.base $(call groups2lists)) \
|
||||||
|
$(call rgroup,$(THE_GROUPS) $(MAIN_GROUPS)) \
|
||||||
|
$(call rprofile,$(THE_PROFILES)) \
|
||||||
|
> $(METADIR)/pkg-groups.tar
|
@ -0,0 +1,47 @@ |
|||||||
|
# step 4: build the distribution image
|
||||||
|
|
||||||
|
# proxy over the ISO metadata collected; see also genisoimagerc(5)
|
||||||
|
BOOT_SYSI := $(META_SYSTEM_ID)
|
||||||
|
BOOT_PUBL := $(META_PUBLISHER)
|
||||||
|
BOOT_PREP := $(META_PREPARER)
|
||||||
|
BOOT_APPI := $(META_APP_ID)
|
||||||
|
BOOT_VOLI := $(shell echo $(META_VOL_ID) | cut -c1-32)
|
||||||
|
BOOT_VOLS := $(META_VOL_SET)
|
||||||
|
BOOT_BIBL := $(META_BIBLIO)
|
||||||
|
BOOT_ABST := $(META_ABSTRACT)
|
||||||
|
BOOT_COPY := $(META_LICENSE_FILE)
|
||||||
|
|
||||||
|
ISODATA_SYSI = $(BOOT_SYSI)
|
||||||
|
ISODATA_PUBL = $(BOOT_PUBL)
|
||||||
|
ISODATA_PREP = $(BOOT_PREP)
|
||||||
|
ISODATA_APPI = $(BOOT_APPI)
|
||||||
|
ISODATA_VOLI = $(BOOT_VOLI)
|
||||||
|
ISODATA_VOLS = $(BOOT_VOLS)
|
||||||
|
ISODATA_BIBL = $(BOOT_BIBL)
|
||||||
|
ISODATA_ABST = $(BOOT_ABST)
|
||||||
|
ISODATA_COPY = $(BOOT_COPY)
|
||||||
|
|
||||||
|
DATE_F := $(shell date +%F)
|
||||||
|
|
||||||
|
BOOT_TYPE := $(BOOTLOADER)
|
||||||
|
|
||||||
|
all: | $(GLOBAL_DEBUG) prep copy-subdirs copy-tree run-scripts pack-image \
|
||||||
|
postprocess $(GLOBAL_CLEAN_WORKDIR)
|
||||||
|
|
||||||
|
prep: | $(GLOBAL_DEBUG) dot-disk $(WHATEVER) |
||||||
|
|
||||||
|
# can't use mp-showref which belongs to the metaprofile
|
||||||
|
dot-disk: |
||||||
|
@mkdir -p files/.disk
|
||||||
|
@if [ -n "$(META_DISK_INFO)" ]; then \
|
||||||
|
echo "$(META_DISK_INFO)" >files/.disk/info; \
|
||||||
|
else \
|
||||||
|
echo "$(META_VOL_ID) build $(DATE_F)" >files/.disk/info; \
|
||||||
|
fi
|
||||||
|
@echo "$(ARCH)" >files/.disk/arch
|
||||||
|
@echo "$(DATE)" >files/.disk/date
|
||||||
|
@if type -t git >&/dev/null; then \
|
||||||
|
( cd $(TOPDIR) && test -d .git && \
|
||||||
|
git show-ref --head -ds -- HEAD ||:) \
|
||||||
|
>files/.disk/commit 2>/dev/null; \
|
||||||
|
fi
|
@ -0,0 +1,77 @@ |
|||||||
|
# step 4: build a stage2 subprofile (custom livecd)
|
||||||
|
|
||||||
|
# NB: stage2 is not standalone but rather a common base
|
||||||
|
# for all livecd images (installer, live, rescue)
|
||||||
|
|
||||||
|
ifndef GLOBAL_BUILDDIR |
||||||
|
$(error GLOBAL_BUILDDIR not defined) |
||||||
|
endif |
||||||
|
|
||||||
|
default: all |
||||||
|
|
||||||
|
include $(GLOBAL_BUILDDIR)/distcfg.mk |
||||||
|
include $(GLOBAL_BUILDDIR)/functions.mk |
||||||
|
include $(MKIMAGE_PREFIX)/config.mk |
||||||
|
|
||||||
|
COPY_TREE = ./files
|
||||||
|
|
||||||
|
# this might have been prepared
|
||||||
|
# by features.in/stage2/stage1/scripts.d/03-test-kernel
|
||||||
|
-include $(GLOBAL_BUILDDIR)/squashcfg.mk |
||||||
|
|
||||||
|
# this should be brought in by corresponding specific stage2 feature
|
||||||
|
include stage2cfg.mk |
||||||
|
|
||||||
|
# requisite stuff
|
||||||
|
IMAGE_PACKAGES += $(SYSTEM_PACKAGES) $(STAGE2_PACKAGES)
|
||||||
|
|
||||||
|
# here we try and come up with the installer kernel/modules, if any;
|
||||||
|
# only for grub allowed multiple kernels, for other a single kernel
|
||||||
|
# might be needed (STAGE1_KFLAVOURS sets explicitly);
|
||||||
|
# kernel image copied from instrumental chroot into .work/boot/
|
||||||
|
ifeq (grubpcboot,$(BOOTLOADER)) |
||||||
|
STAGE1_KFLAVOURS ?= $(KFLAVOURS)
|
||||||
|
endif |
||||||
|
ifeq (grub-efi,$(EFI_BOOTLOADER)) |
||||||
|
STAGE1_KFLAVOURS ?= $(KFLAVOURS)
|
||||||
|
endif |
||||||
|
ifeq (ieee1275boot,$(BOOTLOADER)) |
||||||
|
STAGE1_KFLAVOURS ?= $(KFLAVOURS)
|
||||||
|
endif |
||||||
|
STAGE1_KFLAVOURS ?= $(lastword $(KFLAVOURS))
|
||||||
|
|
||||||
|
ifeq (,$(STAGE1_KFLAVOURS)) |
||||||
|
$(error STAGE1_KFLAVOURS is utterly empty; cannot guess either) |
||||||
|
endif |
||||||
|
|
||||||
|
# need kernel modules only (which require corresponding kernel-image);
|
||||||
|
# these go into work chroot; NB: no vmlinuz there (unless live-install)
|
||||||
|
IMAGE_PACKAGES_REGEXP += $(call kpackages, \
|
||||||
|
$(STAGE1_KFLAVOURS), \
|
||||||
|
$(STAGE1_KMODULES) $(STAGE1_KMODULES_REGEXP) \
|
||||||
|
$(STAGE2_KMODULES) $(STAGE2_KMODULES_REGEXP))
|
||||||
|
|
||||||
|
-include $(sort $(wildcard lib/*.mk)) |
||||||
|
|
||||||
|
# see also ./scripts.d/99-elf-stats
|
||||||
|
ifdef GLOBAL_SQUASHFS_SORT |
||||||
|
ifeq (tight,$(SQUASHFS)) |
||||||
|
CHROOT_PACKAGES += file
|
||||||
|
pack-image: PACK_SQUASHFS_OPTS += -sort /.our/elf.lst |
||||||
|
pack-image: CLEANUP_OUTDIR= |
||||||
|
endif |
||||||
|
endif |
||||||
|
|
||||||
|
GLOBAL_SQUASHFS := $(SQUASHFS)
|
||||||
|
|
||||||
|
include $(MKIMAGE_PREFIX)/targets.mk |
||||||
|
|
||||||
|
# NB: it's a collector variable, add()ing to a GLOBAL_ results in lost hair
|
||||||
|
GLOBAL_CLEANUP_PACKAGES := $(CLEANUP_PACKAGES)
|
||||||
|
|
||||||
|
all: | $(GLOBAL_DEBUG) \
|
||||||
|
build-image run-image-scripts copy-tree run-scripts pack-image \
|
||||||
|
$(GLOBAL_CLEAN_WORKDIR)
|
||||||
|
|
||||||
|
# dummy
|
||||||
|
debug:: ; |
@ -0,0 +1,16 @@ |
|||||||
|
=== sub.in/stage2 === |
||||||
|
|
||||||
|
Этот каталог содержит общий базовый субпрофиль "живой" второй стадии, |
||||||
|
используемый для сборки образов install2, live, rescue (возможно, |
||||||
|
нескольких одновременно в составе одного дистрибутива). |
||||||
|
|
||||||
|
Зависимость на него стоит прописывать в таких фичах; |
||||||
|
сама по себе (без нужного stage2cfg.mk) смысла не имеет. |
||||||
|
|
||||||
|
Обратите внимание, что набор потенциально доступных в stage1 |
||||||
|
модулей ядра для stage2 может быть расширен (STAGE2_KMODULES). |
||||||
|
|
||||||
|
Результат -- соответственно названный файл со squashfs, |
||||||
|
подлежащий копированию в итоговый образ. |
||||||
|
|
||||||
|
NB: смонтированный образ доступен в такой системе как /image/. |
@ -0,0 +1,5 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
# propagator needs this, |
||||||
|
# "FATAL ERROR IN INIT: overmounting /image" otherwise |
||||||
|
mkdir -p /image |
@ -0,0 +1,6 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# fixup chroot's toplevel directory permissions (use to become 1775) |
||||||
|
|
||||||
|
chmod 755 / |
||||||
|
|
||||||
|
rm -f /.gitignore |
@ -0,0 +1,5 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# if we're configured for running live hooks, |
||||||
|
# there should be a place for them either |
||||||
|
|
||||||
|
chkconfig livecd-run-hooks on >&/dev/null && mkdir /live.hooks ||: |
@ -0,0 +1,10 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
CONFIG=/etc/plymouth/plymouthd.conf |
||||||
|
|
||||||
|
if [ -f "$CONFIG" ]; then |
||||||
|
grep -q '^Theme=' "$CONFIG" || sed -i 's/#\([T\[]\)/\1/' "$CONFIG" |
||||||
|
fi |
||||||
|
|
||||||
|
cp -a /usr/share/plymouth/default-install-duration \ |
||||||
|
/var/lib/plymouth/boot-duration ||: |
@ -0,0 +1,40 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# this script implements the services regulation |
||||||
|
# according to what has been decided in the profile |
||||||
|
|
||||||
|
CHKCONFIG= |
||||||
|
SYSTEMCTL= |
||||||
|
|
||||||
|
[ ! -x /sbin/chkconfig ] || CHKCONFIG=1 |
||||||
|
[ ! -x /bin/systemctl ] || SYSTEMCTL=1 |
||||||
|
|
||||||
|
[ -n "$CHKCONFIG$SYSTEMCTL" ] || exit 0 |
||||||
|
|
||||||
|
switch() { |
||||||
|
case "$2" in |
||||||
|
on) |
||||||
|
cc=on; sc=enable;; |
||||||
|
off) |
||||||
|
cc=off; sc=disable;; |
||||||
|
esac |
||||||
|
|
||||||
|
{ |
||||||
|
[ -z "$SYSTEMCTL" ] || /bin/systemctl --no-reload $sc $1 |
||||||
|
[ -z "$CHKCONFIG" ] || /sbin/chkconfig $1 $cc |
||||||
|
} # 2>/dev/null |
||||||
|
} |
||||||
|
|
||||||
|
# defaults (most likely features.in ones) |
||||||
|
for i in $GLOBAL_DEFAULT_SERVICES_ENABLE; do switch $i on; done |
||||||
|
for i in $GLOBAL_DEFAULT_SERVICES_DISABLE; do switch $i off; done |
||||||
|
|
||||||
|
# explicitly specified behaviour (e.g. via conf.d) |
||||||
|
for i in $GLOBAL_SERVICES_ENABLE; do switch $i on; done |
||||||
|
for i in $GLOBAL_SERVICES_DISABLE; do switch $i off; done |
||||||
|
|
||||||
|
# systemd services |
||||||
|
CHKCONFIG= |
||||||
|
for i in $GLOBAL_SYSTEMD_SERVICES_ENABLE; do switch $i on; done |
||||||
|
for i in $GLOBAL_SYSTEMD_SERVICES_DISABLE; do switch $i off; done |
||||||
|
|
||||||
|
: |
@ -0,0 +1,14 @@ |
|||||||
|
#!/bin/sh -efu |
||||||
|
# if no means for locale setup are employed, |
||||||
|
# it should still be at least marginally reasonable |
||||||
|
# NB: keyboard layout not included! |
||||||
|
|
||||||
|
if [ -s /etc/sysconfig/i18n ]; then exit 0; fi |
||||||
|
|
||||||
|
mkdir -p /etc/sysconfig |
||||||
|
cat >> /etc/sysconfig/i18n << _EOF_ |
||||||
|
# mkimage-profiles live 20-locale hook |
||||||
|
SYSFONT=UniCyr_8x16 |
||||||
|
LANG=en_US.utf8 |
||||||
|
_EOF_ |
||||||
|
: |
@ -0,0 +1,13 @@ |
|||||||
|
#!/bin/sh -eu |
||||||
|
|
||||||
|
# ensure that all the necesary system groups exist |
||||||
|
|
||||||
|
echo '/usr/share/install3/default-groups |
||||||
|
/etc/alterator/auth/user-groups |
||||||
|
/etc/alterator/auth/admin-groups' \ |
||||||
|
| while read LIST; do |
||||||
|
[ -s "$LIST" ] || continue |
||||||
|
for GROUP in $(cat "$LIST"); do |
||||||
|
groupadd -r "$GROUP" &>/dev/null ||: |
||||||
|
done |
||||||
|
done |
@ -0,0 +1,15 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# tweak xdg-user-dirs defaults if told so |
||||||
|
# using tuples like "PHOTOS:Documents/Pictures" |
||||||
|
|
||||||
|
. shell-config |
||||||
|
|
||||||
|
CONFIG="/etc/xdg/user-dirs.defaults" |
||||||
|
|
||||||
|
[ -z "$GLOBAL_XDG_USER_DIRS" ] || |
||||||
|
echo "$GLOBAL_XDG_USER_DIRS" \ |
||||||
|
| tr ' ' '\n' \ |
||||||
|
| while IFS=':' read k v; do |
||||||
|
[ -n "$k" -a -n "$v" ] || continue |
||||||
|
shell_config_set "$CONFIG" "$k" "$v" |
||||||
|
done |
@ -0,0 +1,212 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# see also http://www.enricozini.org/2008/tips/lightweight-autologin/ |
||||||
|
|
||||||
|
if [ ! -x /usr/bin/X ]; then |
||||||
|
echo "SKIP autologin: X not installed" >&2 |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
|
||||||
|
USER=kometa |
||||||
|
|
||||||
|
add_nopasswdlogin_group() |
||||||
|
{ |
||||||
|
[ -f "/etc/pam.d/$1" ] && |
||||||
|
egrep -qs '^auth.+user[[:blank:]]+ingroup[[:blank:]]+nopasswdlogin' "/etc/pam.d/$1" && |
||||||
|
groupadd -r nopasswdlogin && |
||||||
|
gpasswd -a "$USER" nopasswdlogin |
||||||
|
} |
||||||
|
|
||||||
|
BAK=".save" |
||||||
|
backup() { |
||||||
|
[ -f "$1" -a ! -f "$1$BAK" ] || return 1 |
||||||
|
cp -av "$1" "$1$BAK" |
||||||
|
} |
||||||
|
|
||||||
|
## this is only relevant for installable livecd |
||||||
|
### FIXME: this shouldn't proceed in other cases! |
||||||
|
restore_later() { |
||||||
|
[ -n "$1" ] || return 0 |
||||||
|
|
||||||
|
local prefix="/usr/lib/alterator/hooks/livecd-preinstall.d" |
||||||
|
[ -d "$prefix" ] || mkdir -p "$prefix" |
||||||
|
|
||||||
|
local hook="$prefix/51-disable-autologin-again.sh" |
||||||
|
[ -s "$hook" ] || cat >> "$hook" <<- EOF |
||||||
|
#!/bin/sh |
||||||
|
. livecd-functions |
||||||
|
EOF |
||||||
|
|
||||||
|
echo mv -v "\$destdir$1$BAK" "\$destdir$1" >> "$hook" |
||||||
|
chmod +x "$hook" |
||||||
|
} |
||||||
|
|
||||||
|
## autologin^2 |
||||||
|
AUTOLOGIN_CFG=/etc/sysconfig/autologin |
||||||
|
if [ -x /usr/sbin/autologin ]; then |
||||||
|
backup "$AUTOLOGIN_CFG" |
||||||
|
cat >> "$AUTOLOGIN_CFG" <<- EOF |
||||||
|
USER=$USER |
||||||
|
AUTOLOGIN=yes |
||||||
|
EOF |
||||||
|
restore_later "$AUTOLOGIN_CFG" |
||||||
|
fi |
||||||
|
|
||||||
|
## lightdm autologin |
||||||
|
LIGHTDM_CONF=/etc/lightdm/lightdm.conf |
||||||
|
if [ -f "$LIGHTDM_CONF" ]; then |
||||||
|
mkdir -p /etc/lightdm/lightdm.conf.d |
||||||
|
cat > /etc/lightdm/lightdm.conf.d/autologin.conf <<AUTOLOGIN_LIGHTDM |
||||||
|
[Seat:*] |
||||||
|
autologin-user=kometa |
||||||
|
autologin-user-timeout=0 |
||||||
|
AUTOLOGIN_LIGHTDM |
||||||
|
default_session="$(ls -1 /usr/share/xsessions/*.desktop | sed -n 's/^.*\/\([^/]\+\)\.desktop$/\1/;1p')" |
||||||
|
if [ -n "$default_session" ]; then |
||||||
|
echo "autologin-session=$default_session" >> /etc/lightdm/lightdm.conf.d/autologin.conf |
||||||
|
else |
||||||
|
echo "** WARNING: no sessions found in /usr/share/xsessions/" >&2 |
||||||
|
fi |
||||||
|
backup "/etc/group" |
||||||
|
add_nopasswdlogin_group lightdm ||: |
||||||
|
|
||||||
|
restore_later "/etc/group" |
||||||
|
fi |
||||||
|
|
||||||
|
## gdm2 autologin |
||||||
|
GDM_CONF=/etc/X11/gdm/custom.conf |
||||||
|
if [ -f "$GDM_CONF" ]; then |
||||||
|
backup "$GDM_CONF" |
||||||
|
sed -i -e '/\[daemon\]/aAutomaticLoginEnable=true\nAutomaticLogin='$USER \ |
||||||
|
"$GDM_CONF" |
||||||
|
backup "/etc/group" |
||||||
|
add_nopasswdlogin_group gdm ||: |
||||||
|
|
||||||
|
restore_later "$GDM_CONF" |
||||||
|
restore_later "/etc/group" |
||||||
|
fi |
||||||
|
|
||||||
|
|
||||||
|
## lxdm autologin |
||||||
|
LXDM_CONF=/etc/lxdm/lxdm.conf |
||||||
|
if [ -f "$LXDM_CONF" ]; then |
||||||
|
backup "$LXDM_CONF" |
||||||
|
sed -i -e "s/\# autologin=dgod/autologin=$USER/" \ |
||||||
|
"$LXDM_CONF" |
||||||
|
backup "/etc/group" |
||||||
|
add_nopasswdlogin_group lxdm ||: |
||||||
|
|
||||||
|
restore_later "$LXDM_CONF" |
||||||
|
restore_later "/etc/group" |
||||||
|
fi |
||||||
|
|
||||||
|
autologin_kdm() { |
||||||
|
backup "$1" |
||||||
|
sed -i \ |
||||||
|
-e '/AutoLoginEnable/ s,^.*$,AutoLoginEnable=true,' \ |
||||||
|
-e '/AutoLoginUser/ s,^.*$,AutoLoginUser='$USER',' \ |
||||||
|
"$1" |
||||||
|
restore_later "$1" |
||||||
|
} |
||||||
|
|
||||||
|
## kdm3 autologin |
||||||
|
# FIXME: tde packages have kdmrc in /usr via an absolute symlink :-( |
||||||
|
KDM_ETC=/etc/X11/kdm |
||||||
|
KDM_USR=/usr/share/kde/config/kdm |
||||||
|
if [ "$(readlink "$KDM_ETC")" = "$KDM_USR" ]; then |
||||||
|
rm -f "$KDM_ETC" |
||||||
|
ln -s ../.."$KDM_USR" "$KDM_ETC" |
||||||
|
fi |
||||||
|
|
||||||
|
KDMRC=/etc/X11/kdm/kdmrc |
||||||
|
if [ -f "$KDMRC" ]; then autologin_kdm "$KDMRC"; fi |
||||||
|
|
||||||
|
## kdm4 autologin |
||||||
|
KDMRC=/etc/X11/kdm4/kdmrc |
||||||
|
if [ -f "$KDMRC" ]; then autologin_kdm "$KDMRC"; fi |
||||||
|
|
||||||
|
## sddm autologin |
||||||
|
SDDM_RC=/etc/X11/sddm/sddm.conf |
||||||
|
SDDM_SESSION= |
||||||
|
if [ -f "$SDDM_RC" ]; then |
||||||
|
backup "$SDDM_RC" |
||||||
|
backup "/etc/group" |
||||||
|
add_nopasswdlogin_group sddm ||: |
||||||
|
sed -i "s,^User=$,&$USER," "$SDDM_RC" |
||||||
|
if [ -f /usr/share/xsessions/lxqt.desktop ]; then |
||||||
|
SDDM_SESSION=lxqt |
||||||
|
elif [ -f /usr/share/xsessions/plasma.desktop ]; then |
||||||
|
SDDM_SESSION=plasma |
||||||
|
fi |
||||||
|
if [ -n "$SDDM_SESSION" ]; then |
||||||
|
sed -i "s,^Session=$,&$SDDM_SESSION," "$SDDM_RC" |
||||||
|
fi |
||||||
|
restore_later "$SDDM_RC" |
||||||
|
restore_later "/etc/group" |
||||||
|
fi |
||||||
|
|
||||||
|
## nodm autologin (the last since the most intrusive) |
||||||
|
# FIXME nodm and xinitrc should be modified (also in p6) |
||||||
|
# WARNING: check user PATH if things go weird! |
||||||
|
NODM_RC=/etc/sysconfig/nodm |
||||||
|
NODM_EXE=/usr/sbin/nodm |
||||||
|
if [ -x "$NODM_EXE" ]; then |
||||||
|
backup "$NODM_RC" |
||||||
|
cat >> "$NODM_RC" <<- EOF |
||||||
|
export NODM_USER=$USER |
||||||
|
EOF |
||||||
|
restore_later "$NODM_RC" |
||||||
|
else |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
|
||||||
|
# FIXME: drop since #27449 is fixed |
||||||
|
PREFDM=/etc/X11/prefdm |
||||||
|
if [ -f "$PREFDM" ] && ! grep -q nodm "$PREFDM"; then |
||||||
|
backup "$PREFDM" |
||||||
|
sed -i \ |
||||||
|
-e '/AUTOLOGIN_EXE=/ s,^.*$,AUTOLOGIN_EXE='$NODM_EXE',' \ |
||||||
|
-e '/AUTOLOGIN_CFG=/ s,^.*$,AUTOLOGIN_CFG='$NODM_RC',' \ |
||||||
|
"$PREFDM" |
||||||
|
restore_later "$PREFDM" |
||||||
|
fi |
||||||
|
|
||||||
|
# FIXME: drop when #27451 is fixed |
||||||
|
NODM_PAM=/etc/pam.d/nodm |
||||||
|
for module in pam_console.so pam_ck_connector.so; do |
||||||
|
if [ -f /lib*/security/$module ]; then |
||||||
|
str="-session optional $module" |
||||||
|
grep -q "^$str$" "$NODM_PAM" || echo -e "$str" >> "$NODM_PAM" |
||||||
|
fi |
||||||
|
done |
||||||
|
|
||||||
|
NODM_POLKIT_CONFDIR=/etc/polkit-1/localauthority/50-local.d |
||||||
|
NODM_POLKIT_CONF=org.freedesktop.NetworkManager.pkla |
||||||
|
if [ -d "$NODM_POLKIT_CONFDIR" ]; then |
||||||
|
cat > "$NODM_POLKIT_CONFDIR/$NODM_POLKIT_CONF" << _EOF_ |
||||||
|
[nm-applet] |
||||||
|
Identity=unix-group:users |
||||||
|
Action=org.freedesktop.NetworkManager.* |
||||||
|
ResultAny=yes |
||||||
|
ResultInactive=no |
||||||
|
ResultActive=yes |
||||||
|
_EOF_ |
||||||
|
fi |
||||||
|
|
||||||
|
NODM_DBUS_NM_CONF=/etc/dbus-1/system.d/nm-applet.conf |
||||||
|
if [ -f "$NODM_DBUS_NM_CONF" ]; then |
||||||
|
sed -i "s/at_console=\"true\"/user=\"$USER\"/" "$NODM_DBUS_NM_CONF" |
||||||
|
fi |
||||||
|
|
||||||
|
NODM_G2KR_DIR=/etc/skel/.gnome2/keyrings |
||||||
|
mkdir -p "$NODM_G2KR_DIR" |
||||||
|
echo -n login > "$NODM_G2KR_DIR"/default |
||||||
|
cat > "$NODM_G2KR_DIR"/login.keyring << _EOF_ |
||||||
|
[keyring] |
||||||
|
display-name=login |
||||||
|
ctime=0 |
||||||
|
mtime=0 |
||||||
|
lock-on-idle=false |
||||||
|
lock-after=false |
||||||
|
_EOF_ |
||||||
|
|
||||||
|
: |
@ -0,0 +1,19 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
if [ ! -x /usr/bin/X ]; then |
||||||
|
echo "SKIP autostart: X not installed" >&2 |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
|
||||||
|
## setup automated graphical session startup |
||||||
|
INITTAB=/etc/inittab |
||||||
|
if [ -f "$INITTAB" ]; then |
||||||
|
[ -z "$runlevel" ] && runlevel=5 |
||||||
|
sed -i "s,^\(id:\)\(.*\)\(:initdefault.*\),\\1$runlevel\\3," "$INITTAB" |
||||||
|
fi |
||||||
|
|
||||||
|
## ...and systemd, if any |
||||||
|
## NB: alterator-setup's backup file can present a nice catch if left around |
||||||
|
rm -f /etc/systemd/system/default.target{,.bak} |
||||||
|
|
||||||
|
: |
@ -0,0 +1,11 @@ |
|||||||
|
#!/bin/sh -eu |
||||||
|
|
||||||
|
if [ -s /etc/sysconfig/grub2 ]; then |
||||||
|
# Cleanup |
||||||
|
sed -i "s/ splash//g" /etc/sysconfig/grub2 |
||||||
|
if [ -n "${GLOBAL_BASE_BOOTARGS-}" ]; then |
||||||
|
sed -Ei \ |
||||||
|
"s/(GRUB_CMDLINE_LINUX_DEFAULT=)(.*)(['\"])/\1\2 $GLOBAL_BASE_BOOTARGS\3/" \ |
||||||
|
/etc/sysconfig/grub2 |
||||||
|
fi |
||||||
|
fi |
@ -0,0 +1,11 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# setup control(8) states |
||||||
|
|
||||||
|
[ -z "$GLOBAL_CONTROL" ] || |
||||||
|
echo "$GLOBAL_CONTROL" \ |
||||||
|
| tr ' ' '\n' \ |
||||||
|
| while IFS=':' read facility state; do |
||||||
|
[ -z "$facility" -o -z "$state" ] || |
||||||
|
control "$facility" "$state" |
||||||
|
done |
||||||
|
: |
@ -0,0 +1,33 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# fontconfig-config-config |
||||||
|
|
||||||
|
verbose="${GLOBAL_VERBOSE:+-v}" |
||||||
|
verbose() { [ -z "$GLOBAL_VERBOSE" ] || echo "HOOK: 50-fontconfig: $@"; } |
||||||
|
verbose "has started" |
||||||
|
|
||||||
|
CONF_DIR="/etc/fonts/conf.d" |
||||||
|
AVAIL_DIR="/etc/fonts/conf.avail" |
||||||
|
|
||||||
|
list() { ls "$1"/??-"$2".conf 2>/dev/null; } |
||||||
|
|
||||||
|
enable() { |
||||||
|
for i in "$@"; do |
||||||
|
if ! list "$CONF_DIR" "$i"; then |
||||||
|
AVAIL="$(list "$AVAIL_DIR" "$i" | head -1)" |
||||||
|
if [ -n "$AVAIL" ]; then |
||||||
|
ln -s $verbose "$AVAIL" "$CONF_DIR/$CONF_ADD" |
||||||
|
fi |
||||||
|
fi |
||||||
|
done |
||||||
|
} |
||||||
|
|
||||||
|
disable() { |
||||||
|
for i in "$@"; do |
||||||
|
$(list "$CONF_DIR" "$i") | xargs -r rm -f $verbose -- |
||||||
|
done |
||||||
|
} |
||||||
|
|
||||||
|
disable $GLOBAL_FONT_FEATURES_DISABLE |
||||||
|
enable $GLOBAL_FONT_FEATURES_ENABLE |
||||||
|
|
||||||
|
: |
@ -0,0 +1,23 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# issue welcome message if there's a guest user |
||||||
|
# (the first one configured with empty password) |
||||||
|
|
||||||
|
[ -n "$GLOBAL_USERS" ] || { |
||||||
|
echo "** 50-issue: warning, no users created" >&1 |
||||||
|
exit 0 |
||||||
|
} |
||||||
|
|
||||||
|
guest= |
||||||
|
for u in $GLOBAL_USERS; do |
||||||
|
login="${u%%:*}" |
||||||
|
[ -n "$login" ] || continue |
||||||
|
rest="${u#*:}" |
||||||
|
pass="${rest%%:*}" |
||||||
|
[ -z "$pass" ] || continue |
||||||
|
guest="$login" |
||||||
|
break |
||||||
|
done |
||||||
|
|
||||||
|
[ -n "$guest" ] || exit 0 |
||||||
|
|
||||||
|
echo "Hello friend, say \`$guest' to log in at \\l" >> /etc/issue |
@ -0,0 +1,17 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# partial port of livecd-setlocale (kbd bits) |
||||||
|
|
||||||
|
CONFIG=/etc/sysconfig/keyboard |
||||||
|
|
||||||
|
# Requires: console-scripts |
||||||
|
if [ -s "$CONFIG" ]; then |
||||||
|
echo "** l10n-kbd: expected $CONFIG to be an empty file" >&2 |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
|
||||||
|
if [ -z "$GLOBAL_KEYTABLE" ]; then |
||||||
|
echo "** l10n-kbd: empty GLOBAL_KEYTABLE" >&2 |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
|
||||||
|
echo "KEYTABLE=$GLOBAL_KEYTABLE" > "$CONFIG" |
@ -0,0 +1,19 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# partial port of livecd-setlocale (xkb bits) |
||||||
|
|
||||||
|
PREFIX=/etc/X11/xinit |
||||||
|
|
||||||
|
# Requires: xinitrc |
||||||
|
if [ ! -d "$PREFIX" ]; then |
||||||
|
echo "** l10n-xkb: expected $PREFIX to exist (xinitrc)" >&2 |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
|
||||||
|
if [ -z "$GLOBAL_XKB_VARIANTS" -o -z "$GLOBAL_XKB_KEYMAPS" ]; then |
||||||
|
echo "** l10n-xkb: empty GLOBAL_XKB_VARIANTS/GLOBAL_XKB_KEYMAPS" >&2 |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
|
||||||
|
echo "-option $GLOBAL_XKB_SWITCH${GLOBAL_XKB_LED:+,$GLOBAL_XKB_LED} \ |
||||||
|
${GLOBAL_XKB_VARIANTS:+-variant $GLOBAL_XKB_VARIANTS} \ |
||||||
|
-layout $GLOBAL_XKB_KEYMAPS" > "$PREFIX"/Xkbmap |
@ -0,0 +1,17 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
. shell-config |
||||||
|
|
||||||
|
defcfg=/etc/net/ifaces/default/options-eth |
||||||
|
|
||||||
|
[ -f defcfg ] || exit 0 |
||||||
|
|
||||||
|
if [ -x /usr/sbin/NetworkManager -o -x /usr/sbin/connmand ]; then |
||||||
|
shell_config_set "$defcfg" NM_CONTROLLED yes |
||||||
|
shell_config_set "$defcfg" DISABLED yes |
||||||
|
if [ NM_Native = 'yes' ]; then |
||||||
|
shell_config_set "$defcfg" BOOTPROTO static |
||||||
|
else |
||||||
|
shell_config_set "$defcfg" BOOTPROTO dhcp |
||||||
|
fi |
||||||
|
fi |
@ -0,0 +1,10 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# see also net-dns feature for actual nameserver control |
||||||
|
|
||||||
|
# purge hasher-provided files potentially disclosing |
||||||
|
# build host's network configuration bits |
||||||
|
find /var -name resolv.conf -or -name nsswitch.conf -delete |
||||||
|
|
||||||
|
# hasher might have carried host /etc/hosts over, need to overwrite |
||||||
|
echo "127.0.0.1 localhost.localdomain localhost" > /etc/hosts |
||||||
|
sed -ri "/^(search|nameserver|domain)/d" /etc/resolv.conf |
@ -0,0 +1,10 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# basic NTP client configuration |
||||||
|
|
||||||
|
. shell-config |
||||||
|
|
||||||
|
CONFIG="/etc/ntpd.conf" |
||||||
|
[ -f "$CONFIG" ] || exit 0 |
||||||
|
[ -n "$GLOBAL_NTP_SERVERS" ] || exit 0 |
||||||
|
|
||||||
|
shell_config_set "$CONFIG" 'servers' "$GLOBAL_NTP_SERVERS" '[[:space:]]\+' ' ' |
@ -0,0 +1,6 @@ |
|||||||
|
#!/bin/sh -efu |
||||||
|
|
||||||
|
# provide kernel interface for ACPI power button |
||||||
|
if [ `arch` != e2k -a -x /etc/init.d/acpid ]; then |
||||||
|
grep -qsx button /etc/modules || echo button >> /etc/modules |
||||||
|
fi |
@ -0,0 +1,16 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
# explicitly requested empty root password |
||||||
|
case "$GLOBAL_ROOTPW_EMPTY" in |
||||||
|
1|y|Y|yes) |
||||||
|
usermod -p "" root |
||||||
|
exit 0 |
||||||
|
;; |
||||||
|
esac |
||||||
|
|
||||||
|
# set root password if any; no-op if it is empty |
||||||
|
if [ -z "$GLOBAL_ROOTPW" ]; then |
||||||
|
echo "** warning: no root password provided, skipping" >&2 |
||||||
|
else |
||||||
|
echo "$GLOBAL_ROOTPW" | passwd --stdin root |
||||||
|
fi |
@ -0,0 +1,9 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
# for udev |
||||||
|
ln -sf /proc/mounts /etc/mtab |
||||||
|
|
||||||
|
# pam_console_apply is harmful during install |
||||||
|
find /etc/udev/rules.d/ -type f -print0 | |
||||||
|
xargs -r0 fgrep -Zl pam_console_apply -- | |
||||||
|
xargs -r0 rm -fv -- |
@ -0,0 +1,46 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# add regular user(s) assigning passwords and attributes of power |
||||||
|
|
||||||
|
# NB: care that the utilities exist; shadow-utils is warranted |
||||||
|
|
||||||
|
add_user() { |
||||||
|
useradd -m "$1" && |
||||||
|
usermod -p "" "$1" && |
||||||
|
if [ -n "$GLOBAL_GROUPS" ]; then # some of them might be missing |
||||||
|
for group in $GLOBAL_GROUPS; do |
||||||
|
usermod -a --groups "$group" "$1" ||: |
||||||
|
done |
||||||
|
fi || |
||||||
|
echo "*** failed to add user '$1'" |
||||||
|
} |
||||||
|
|
||||||
|
set_password() { echo "$1:$2" | chpasswd; } |
||||||
|
|
||||||
|
set_admin() { usermod -a --groups "wheel" "$1"; } |
||||||
|
|
||||||
|
# NB: one must care to purge this from LiveCD if it's installed permanently |
||||||
|
set_sudo() { |
||||||
|
[ ! -w "/etc/sudoers" ] || |
||||||
|
echo "$1 ALL=(ALL) ALL" >> "/etc/sudoers" |
||||||
|
} |
||||||
|
|
||||||
|
# chpasswd is intended for batch use but that would be less comprehensible |
||||||
|
[ -z "$GLOBAL_USERS" ] || |
||||||
|
echo "$GLOBAL_USERS" \ |
||||||
|
| tr ' ' '\n' \ |
||||||
|
| while IFS=':' read login passwd admin sudo; do |
||||||
|
add_user "$login" |
||||||
|
[ -z "$passwd" ] || set_password "$login" "$passwd" |
||||||
|
[ -z "$admin" ] || set_admin "$login" |
||||||
|
[ -z "$sudo" ] || set_sudo "$login" |
||||||
|
done |
||||||
|
|
||||||
|
# create special user |
||||||
|
[ -z "$GLOBAL_SPEC_USER" ] || |
||||||
|
echo "$GLOBAL_SPEC_USER" \ |
||||||
|
| tr ' ' '\n' \ |
||||||
|
| while IFS=':' read login group uid gid homedir shell; do |
||||||
|
groupadd -g $gid $group >/dev/null 2>&1 || : |
||||||
|
useradd -g $gid -u $uid -d $homedir -s $shell $login >/dev/null 2>&1 || : |
||||||
|
usermod -G $group $login || : |
||||||
|
done |
@ -0,0 +1,9 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
# this was a bunch of dirty complaints |
||||||
|
sed -i 's,/var/run,/run,' /{etc,lib}/tmpfiles.d/*.conf ||: |
||||||
|
|
||||||
|
[ ! -L /var/run ] && rm -r /var/run && ln -s ../run /var/run |
||||||
|
[ ! -L /var/lock ] && rm -r /var/lock && ln -s ../run/lock /var/lock |
||||||
|
|
||||||
|
: |
@ -0,0 +1,10 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# unconditionally enable online repository |
||||||
|
|
||||||
|
[ -n "$GLOBAL_LIVE_REPO" ] || exit 0 |
||||||
|
|
||||||
|
PROTO="${GLOBAL_LIVE_REPO%/*}" # http, ftp, rsync |
||||||
|
MIRROR="${GLOBAL_LIVE_REPO#*/}" # alt, heanet, kiev, yandex, ... |
||||||
|
|
||||||
|
sed -i "s,^#\(rpm \[.*\] ${PROTO:-http}.*\),\1," \ |
||||||
|
"/etc/apt/sources.list.d/${MIRROR:-yandex}.list" ||: |
@ -0,0 +1,15 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# Install /etc/*-release files if needed |
||||||
|
rel_file= |
||||||
|
for rel_file in altlinux-release os-release; do |
||||||
|
if ! [ -e /etc/"$rel_file" ]; then |
||||||
|
# in case it is dangling symlink |
||||||
|
rm -f /etc/"$rel_file" |
||||||
|
if [ -r /usr/share/branding-data-current/release/"$rel_file" ]; then |
||||||
|
cp -at /etc -- \ |
||||||
|
/usr/share/branding-data-current/release/"$rel_file" |
||||||
|
elif [ -r /usr/lib/"$rel_file" ]; then |
||||||
|
cp -a /usr/lib/"$rel_file" /etc/"$rel_file" |
||||||
|
fi |
||||||
|
fi |
||||||
|
done |
@ -0,0 +1,10 @@ |
|||||||
|
#!/bin/sh -efu |
||||||
|
|
||||||
|
dhcpcd_conf="/etc/dhcpcd.conf" |
||||||
|
|
||||||
|
[ -f "$dhcpcd_conf" ] || exit 0 |
||||||
|
|
||||||
|
grep -q '^option[[:blank:]]\+vendor_encapsulated_options' "$dhcpcd_conf" || { |
||||||
|
echo "# added by 70-network-shares-dhcpcd.sh" |
||||||
|
echo "option vendor_encapsulated_options" |
||||||
|
} >> "$dhcpcd_conf" |
@ -0,0 +1,6 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# bump name services caching time up |
||||||
|
|
||||||
|
[ -s /etc/nscd.conf ] || exit 0 |
||||||
|
|
||||||
|
sed -i 's/\(positive-time-to-live[^0-9]*\)[0-9]*$/\1 31536000/g' /etc/nscd.conf |
@ -0,0 +1,117 @@ |
|||||||
|
#!/bin/sh -efu |
||||||
|
|
||||||
|
## |
||||||
|
# This script: |
||||||
|
# 1) updates pam_mount configuration |
||||||
|
# 2) updates pam configuration |
||||||
|
# |
||||||
|
# NB: network shares automounted only for a particular uid range |
||||||
|
|
||||||
|
. shell-error |
||||||
|
|
||||||
|
msg() { |
||||||
|
printf "$* \n" |
||||||
|
} |
||||||
|
|
||||||
|
pmconf="/etc/security/pam_mount.conf.xml" |
||||||
|
pamconf="/etc/pam.d/system-auth-krb5" |
||||||
|
|
||||||
|
## |
||||||
|
# Update pam_mount configuration file |
||||||
|
# |
||||||
|
update_pmconf() { |
||||||
|
|
||||||
|
local insert_at tmp_conf |
||||||
|
|
||||||
|
tmp_conf="${pmconf}.new" |
||||||
|
|
||||||
|
# no pam_mount: impossible(tm) |
||||||
|
[ -w "$pmconf" ] || return 1 |
||||||
|
|
||||||
|
# already configured |
||||||
|
grep -qs dnssd_lookup "$pmconf" 2>/dev/null && return 0 |
||||||
|
|
||||||
|
# configure pam_mount to use avahi |
||||||
|
insert_at="$(sed -n '/<!-- Volume definitions -->/=' "$pmconf" \ |
||||||
|
| head -n 1)" |
||||||
|
|
||||||
|
if [ -z "$insert_at" ]; then |
||||||
|
msg "Can't find position for injection in $pmconf" |
||||||
|
return 1 |
||||||
|
fi |
||||||
|
|
||||||
|
# part 1 (head) |
||||||
|
head -n $((insert_at-1)) "$pmconf" > "$tmp_conf" |
||||||
|
|
||||||
|
# part 2 (inserted text) |
||||||
|
cat >> "$tmp_conf" <<'__EOF__' |
||||||
|
|
||||||
|
<!-- # inserted by 70-network-shares-samba.sh ##################### --> |
||||||
|
|
||||||
|
<volume uid="5000-10000" fstype="cifs" dnssd_lookup="1" mountpoint="/home/%(USER)/share" options="sec=krb5,cruid=%(USERUID)" /> |
||||||
|
<cifsmount>/sbin/mount.cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o %(OPTIONS)</cifsmount> |
||||||
|
<cifsumount>/sbin/umount.cifs %(MNTPT)</cifsumount> |
||||||
|
|
||||||
|
<!-- ############################################################## --> |
||||||
|
|
||||||
|
__EOF__ |
||||||
|
|
||||||
|
# part 3 (tail) |
||||||
|
sed -n "$insert_at,\$p" "$pmconf" >> "$tmp_conf" |
||||||
|
|
||||||
|
# update config |
||||||
|
chown root:root "$tmp_conf" |
||||||
|
chmod 644 "$tmp_conf" |
||||||
|
mv -f "$tmp_conf" "$pmconf" |
||||||
|
|
||||||
|
# XXX: REMOVE FOR RELEASE |
||||||
|
# sed -i -e '/debug enable/ s/0/1/' "$pmconf" |
||||||
|
} |
||||||
|
|
||||||
|
## |
||||||
|
# Update pam configuration |
||||||
|
# |
||||||
|
update_pam() { |
||||||
|
local append_after |
||||||
|
|
||||||
|
# no pam-config: impossible(tm) |
||||||
|
[ -w "$pamconf" ] || return 1 |
||||||
|
|
||||||
|
if [ -L "$pamconf" ]; then |
||||||
|
pamconf="$(realpath "$pamconf")" |
||||||
|
fi |
||||||
|
|
||||||
|
# already configured |
||||||
|
grep -qs pam_mount "$pamconf" && return 0 |
||||||
|
|
||||||
|
append_after="$(sed -n '/^auth[[:space:]]\+required/=' "$pamconf" \ |
||||||
|
| tail -n 1)" |
||||||
|
[ -n "$append_after" ] && |
||||||
|
sed -i \ |
||||||
|
-e "$append_after a auth optional pam_mount.so" \ |
||||||
|
"$pamconf" |
||||||
|
|
||||||
|
append_after="$(sed -n '/^session[[:space:]]\+required/=' "$pamconf" \ |
||||||
|
| tail -n 1)" |
||||||
|
[ -n "$append_after" ] && |
||||||
|
sed -i \ |
||||||
|
-e "$append_after a session optional pam_mount.so" \ |
||||||
|
"$pamconf" |
||||||
|
append_after="$(sed -n '/^auth[[:space:]]\+required/=' \ |
||||||
|
"$pamconf"_ccreds | tail -n 1)" |
||||||
|
|
||||||
|
[ -n "$append_after" ] && |
||||||
|
sed -i \ |
||||||
|
-e "$append_after a auth optional pam_mount.so" \ |
||||||
|
"$pamconf"_ccreds |
||||||
|
|
||||||
|
### set ccache to predicadable value (ouch!) |
||||||
|
sed -i 's|pam_krb5.so use_first_pass$|pam_krb5.so use_first_pass ccache=/tmp/krb5cc_%u|' "$pamconf" |
||||||
|
} |
||||||
|
|
||||||
|
## |
||||||
|
# Start |
||||||
|
# |
||||||
|
update_pmconf && |
||||||
|
update_pam |
||||||
|
|
@ -0,0 +1,25 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
# don't cripple the image to be copied over |
||||||
|
[ -x /usr/sbin/live-install -o -x /usr/sbin/livecd-install ] && exit 0 |
||||||
|
|
||||||
|
# remove unused fonts |
||||||
|
cd /usr/share/fonts/bitmap/misc/ && |
||||||
|
rm -f *ja.* *ko.* han* gb* jis* k14* rk* *rk.* *kana* cl* *JIS* |
||||||
|
|
||||||
|
# drop unneeded translations |
||||||
|
cd /usr/share/qt?/translations/ && rm -f *_zh* *_ja* |
||||||
|
|
||||||
|
# l10n |
||||||
|
cd /usr/share/X11/locale && rm -rf ja* ko* th* vi* zh* |
||||||
|
|
||||||
|
# xkb |
||||||
|
cd /usr/share/X11/xkb/symbols && rm -rf jp kr th vn cn |
||||||
|
|
||||||
|
# locales |
||||||
|
cd /usr/lib/locale && rm -rf ja_* ko_* th_* zh_* |
||||||
|
|
||||||
|
# gconv |
||||||
|
cd /usr/lib*/gconv && rm -f JIS* T* |
||||||
|
|
||||||
|
: |
@ -0,0 +1,20 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
# don't cripple the image to be copied over |
||||||
|
[ -x /usr/sbin/live-install -o -x /usr/sbin/livecd-install ] && exit 0 |
||||||
|
|
||||||
|
# remove unused legacy/tiny fonts |
||||||
|
#cd /usr/share/fonts/bitmap/misc/ && rm -f *ISO* *KOI* [1456]* |
||||||
|
cd /usr/share/fonts/bitmap/misc/ && rm -f [1456]* |
||||||
|
|
||||||
|
# l10n |
||||||
|
cd /usr/share/X11/locale/ && rm -rf *[^C8]/ iso* |
||||||
|
|
||||||
|
# xkb |
||||||
|
cd /usr/share/X11/xkb/symbols && rm -rf *_vndr |
||||||
|
|
||||||
|
# gconv |
||||||
|
#cd /usr/lib*/gconv && rm -f CP* ISO* *JIS* KOI* HP* MAC* |
||||||
|
cd /usr/lib*/gconv && rm -f CP* *JIS* HP* MAC* |
||||||
|
|
||||||
|
: |
@ -0,0 +1,10 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
# don't cripple the image to be copied over |
||||||
|
[ -x /usr/sbin/live-install -o -x /usr/sbin/livecd-install ] && exit 0 |
||||||
|
|
||||||
|
# no sense in xorg-dri-* without kernel-modules-drm* |
||||||
|
stat /lib/modules/*/kernel/drivers/gpu/drm >&/dev/null \ |
||||||
|
|| rm -rf /usr/lib*/X11/modules/dri/ |
||||||
|
|
||||||
|
: |
@ -0,0 +1,3 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# Run scripts from /etc/firsttime.d at first start |
||||||
|
[ -f "/etc/firsttime.flag" ] || touch "/etc/firsttime.flag" |
@ -0,0 +1,7 @@ |
|||||||
|
#!/bin/sh -e |
||||||
|
|
||||||
|
if [ -n "$GLOBAL_LIVE_CLEANUP_KDRIVERS" ]; then |
||||||
|
for i in $GLOBAL_LIVE_CLEANUP_KDRIVERS; do |
||||||
|
rm -rf /lib/modules/*/"$i" |
||||||
|
done |
||||||
|
fi |
@ -0,0 +1,21 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
# the part below relates to systemd as init specifically |
||||||
|
rpm -q systemd-sysvinit || exit 0 |
||||||
|
|
||||||
|
# file str [str...] |
||||||
|
# NB: str is also treated as a regex, |
||||||
|
# be careful if you copy the function |
||||||
|
sub() { |
||||||
|
local file="$1" |
||||||
|
shift |
||||||
|
for i in "$@"; do |
||||||
|
grep -q "^$i" "$file" || echo "$i" >> "$file" |
||||||
|
done |
||||||
|
} |
||||||
|
|
||||||
|
# tune make-initrd |
||||||
|
sub /etc/initrd.mk 'MODULES_TRY_ADD += autofs4' |
||||||
|
|
||||||
|
# don't allow systemd to set LANG (see also #27408) |
||||||
|
sub /etc/locale.conf 'LANG=' |
@ -0,0 +1,16 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
# the part below relates to systemd as init specifically |
||||||
|
rpm -q systemd-sysvinit || exit 0 |
||||||
|
|
||||||
|
sub() { |
||||||
|
local file="$1" |
||||||
|
shift |
||||||
|
for i in "$@"; do |
||||||
|
grep -q "^$i" "$file" || echo "$i" >> "$file" |
||||||
|
done |
||||||
|
} |
||||||
|
|
||||||
|
# aufs2 root is rw in reality; but don't bother if there's a record already |
||||||
|
grep -q '[[:space:]]/[[:space:]]' /etc/fstab || |
||||||
|
sub /etc/fstab '/dev/root / auto defaults 0 0' |
@ -0,0 +1,12 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
# don't cripple the image to be copied over |
||||||
|
[ -x /usr/sbin/live-install -o -x /usr/sbin/livecd-install ] && exit 0 |
||||||
|
|
||||||
|
# blacklisted kernel modules |
||||||
|
sed -n 's/^blacklist[[:space:]]\+\([^[:space:]]\+\).*/\1/p' /etc/modprobe.d/* | |
||||||
|
while read i; do |
||||||
|
find /lib/modules/ -type f -name "$i.ko" -delete |
||||||
|
done |
||||||
|
|
||||||
|
: |
@ -0,0 +1,12 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# regenerate module dependencies after pruning kernel modules |
||||||
|
# (this script must run after anything touching /lib/modules) |
||||||
|
|
||||||
|
cd /lib/modules |
||||||
|
for i in *.*; do |
||||||
|
if [ "$i" = "*.*" ]; then |
||||||
|
echo "** error: no valid KFLAVOURS installed, bailing out" >&2 |
||||||
|
exit 1 |
||||||
|
fi |
||||||
|
depmod -a -F /boot/System.map-$i $i |
||||||
|
done |
@ -0,0 +1,15 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
# don't cripple the image to be copied over |
||||||
|
# NB: livecd-install has 50-restore-kernel.sh |
||||||
|
[ -x /usr/sbin/live-install -o \ |
||||||
|
-x /usr/sbin/homeros-install -o \ |
||||||
|
-x /usr/sbin/luwrain-install ] && exit 0 |
||||||
|
|
||||||
|
# no need for the kernel in live root otherwise: it's been booted already |
||||||
|
# NB: installkernel run by that livecd-install hook needs System.map |
||||||
|
rm -f -- /boot/{initrd,vmlinuz}* |
||||||
|
|
||||||
|
[ -x /usr/sbin/livecd-install ] || rm -f -- /boot/* |
||||||
|
|
||||||
|
: |
@ -0,0 +1,10 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
[ -h /sbin/init ] || exit 0 |
||||||
|
[ -n "$GLOBAL_SYSTEMD_RESOLVED" ] || exit 0 |
||||||
|
|
||||||
|
if [ "$GLOBAL_SYSTEMD_RESOLVED" = stub ]; then |
||||||
|
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf |
||||||
|
else |
||||||
|
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf |
||||||
|
fi |
@ -0,0 +1,5 @@ |
|||||||
|
#!/bin/sh -e |
||||||
|
# drop intermediate files not needed in the image |
||||||
|
# which receive broken permissions in fakeroot environment |
||||||
|
|
||||||
|
rm -f /etc/tcb/*/shadow{-,.lock} |
@ -0,0 +1,4 @@ |
|||||||
|
#!/bin/sh |
||||||
|
# URW fonts are responsible for sub-par website text rendering usually... |
||||||
|
|
||||||
|
rm -f /etc/X11/fontpath.d/type1-urw:pri=40 |
@ -0,0 +1,7 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
[ -f /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ] || exit 0 |
||||||
|
|
||||||
|
# fixup the default which broke after p8 |
||||||
|
sed -i 's,name="IconThemeName" type="empty",name="IconThemeName" type="string" value="gnome",' /etc/xdg/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml ||: |
||||||
|
|
@ -0,0 +1,15 @@ |
|||||||
|
# supplement live with keyboard layout setup
|
||||||
|
|
||||||
|
XKB_KEYMAPS := $(subst $(SPACE),$(COMMA),$(XKB_KEYMAPS))
|
||||||
|
|
||||||
|
# handle the layouts with a specific variant in the wild
|
||||||
|
XKB_VARIANTS := $(subst ru,winkeys, \
|
||||||
|
$(subst ua,winkeys, \
|
||||||
|
$(subst be,winkeys, \
|
||||||
|
$(subst us,,$(XKB_KEYMAPS)))))
|
||||||
|
|
||||||
|
debug:: |
||||||
|
@echo "** live: LOCALES: $(LOCALES)"
|
||||||
|
@echo "** live: LOCALE: $(LOCALE)"
|
||||||
|
@echo "** live: XKB_KEYMAPS: $(XKB_KEYMAPS)"
|
||||||
|
@echo "** live: XKB_VARIANTS: $(XKB_VARIANTS)"
|
@ -0,0 +1,26 @@ |
|||||||
|
_IMAGE_APTBOX_ = $(WORKDIR)/chroot/$(WORKDIRNAME)/aptbox
|
||||||
|
|
||||||
|
# Add prerequisite to the build-image target of
|
||||||
|
# $(MKIMAGE_PREFIX)/targets.mk.
|
||||||
|
build-image: $(_IMAGE_APTBOX_)/etc/apt/pkgpriorities |
||||||
|
|
||||||
|
_PINNED_PACKAGES_ = $(foreach pp,$(PINNED_PACKAGES),$(if $(findstring :,$(pp)),$(pp),$(pp):$(PIN_PRIORITY)))
|
||||||
|
_PIN_PRIORITIES_ = $(sort $(foreach pp,$(_PINNED_PACKAGES_),$(lastword $(subst :, ,$(pp)))))
|
||||||
|
_PKGPRIORITIES_ = $(subst \n ,\n,$(foreach pri,$(_PIN_PRIORITIES_),$(pri):$(patsubst %:$(pri),\n %,$(filter %:$(pri),$(_PINNED_PACKAGES_)))\n))
|
||||||
|
|
||||||
|
$(_IMAGE_APTBOX_)/etc/apt/pkgpriorities: prepare-image-workdir |
||||||
|
@echo -e '$(_PKGPRIORITIES_)' | sed -e 's,[[:space:]]\+$$,,' >$@
|
||||||
|
@if [ -s $@ ]; then \
|
||||||
|
if grep -q '^\(APT::\)\?Dir::Etc::pkgpriorities[[:space:]]' \
|
||||||
|
$(_IMAGE_APTBOX_)/etc/apt/apt.conf; \
|
||||||
|
then \
|
||||||
|
sed -i -e 's,\(Dir::Etc::pkgpriorities\)[[:space:]].*$$,\1 "$@";,g' \
|
||||||
|
$(_IMAGE_APTBOX_)/etc/apt/apt.conf; \
|
||||||
|
else \
|
||||||
|
echo 'Dir::Etc::pkgpriorities "$@";' \
|
||||||
|
>>$(_IMAGE_APTBOX_)/etc/apt/apt.conf; \
|
||||||
|
fi; \
|
||||||
|
echo "--- Package priorities ---" >&2; \
|
||||||
|
cat $@ >&2; \
|
||||||
|
echo "---" >&2; \
|
||||||
|
fi
|
@ -0,0 +1,2 @@ |
|||||||
|
IMAGE_PACKAGES_REGEXP += $(call branding, \
|
||||||
|
$(THE_BRANDING) $(STAGE2_BRANDING))
|
@ -0,0 +1,48 @@ |
|||||||
|
#!/bin/sh -e |
||||||
|
# tally up sizes of chroot's ELF binaries for squashfs tuning |
||||||
|
|
||||||
|
# NB: it's unclear so far whether mksquashfs -sort is beneficial |
||||||
|
if [ -z "$GLOBAL_SQUASHFS_SORT" -o "$GLOBAL_SQUASHFS" != "tight" ]; then |
||||||
|
echo "SKIP elf-stats: looks like it's not needed" >&2 |
||||||
|
exit 0 |
||||||
|
fi |
||||||
|
|
||||||
|
exit_handler() |
||||||
|
{ |
||||||
|
local rc=$1 |
||||||
|
rm -f -- "$TMPFILE" |
||||||
|
exit $rc |
||||||
|
} |
||||||
|
|
||||||
|
# it's controlled environment |
||||||
|
TMPFILE="$(mktemp)" |
||||||
|
|
||||||
|
trap 'exit_handler $?' EXIT HUP PIPE INT QUIT TERM |
||||||
|
|
||||||
|
# a list of ELF binaries (both executables and shared libraries) |
||||||
|
ELFLIST=/.our/elf.lst |
||||||
|
|
||||||
|
cd "$WORKDIR" |
||||||
|
|
||||||
|
# let's parallelize a bit, chroot should be on tmpfs or just-cached |
||||||
|
du -bsx | cut -f1 > "$TMPFILE" & |
||||||
|
|
||||||
|
elf="$(find {,usr/}{lib*,{,s}bin} \ |
||||||
|
-path lib/modules -prune -o \ |
||||||
|
-path usr/lib/locale -prune -o \ |
||||||
|
-type f \ |
||||||
|
| file -nN -e ascii -e compress -e tar -e elf -f - \ |
||||||
|
| sed -n "/: ELF /s/: .*$//p" \ |
||||||
|
| tee "$ELFLIST.in" \ |
||||||
|
| tr '\n' '\0' \ |
||||||
|
| du -cb --files0-from=- \ |
||||||
|
| tail -1 \ |
||||||
|
| cut -f1)" |
||||||
|
|
||||||
|
wait |
||||||
|
read root < "$TMPFILE" |
||||||
|
|
||||||
|
echo "** live chroot ELF ratio: $((100*$elf/$root))% ($elf/$root)" >&2 |
||||||
|
|
||||||
|
# add priorities |
||||||
|
sed 's,^.*$,& 1,' < "$ELFLIST.in" > "$ELFLIST" |
@ -0,0 +1,18 @@ |
|||||||
|
# stage2 mod: livecd
|
||||||
|
|
||||||
|
STAGE2_KMODULES = $(LIVE_KMODULES) $(THE_KMODULES)
|
||||||
|
|
||||||
|
IMAGE_PACKAGES_REGEXP = $(LIVE_PACKAGES_REGEXP) $(THE_PACKAGES_REGEXP)
|
||||||
|
|
||||||
|
IMAGE_PACKAGES = $(COMMON_PACKAGES) $(LIVE_PACKAGES) $(THE_PACKAGES) \
|
||||||
|
$(call map,list, \
|
||||||
|
$(LIVE_LISTS) $(LIVE_GROUPS) \
|
||||||
|
$(THE_LISTS) $(THE_GROUPS) \
|
||||||
|
$(COMMON_LISTS)) \
|
||||||
|
interactivesystem
|
||||||
|
|
||||||
|
MKI_PACK_RESULTS = squash:live
|
||||||
|
|
||||||
|
debug:: |
||||||
|
@echo "** live: IMAGE_PACKAGES: $(IMAGE_PACKAGES)"
|
||||||
|
@echo "** live: IMAGE_PACKAGES_REGEXP: $(IMAGE_PACKAGES_REGEXP)"
|
@ -0,0 +1,3 @@ |
|||||||
|
#!/bin/sh |
||||||
|
#make distclean all |
||||||
|
make HSH_PROC=1 APTCONF=/home/tema/mkimage-profiles/apt.conf DEBUG=1 distclean all |
@ -0,0 +1,556 @@ |
|||||||
|
## generated by features.in/metadata/lib/50-metadata.mk |
||||||
|
|
||||||
|
## SYSTEM_PACKAGES |
||||||
|
memtest86+ |
||||||
|
disable-usb-autosuspend |
||||||
|
firmware-linux |
||||||
|
|
||||||
|
## COMMON_PACKAGES |
||||||
|
shim-signed |
||||||
|
mokutil |
||||||
|
pesign |
||||||
|
acpid |
||||||
|
acpi |
||||||
|
acpid-events-power |
||||||
|
|
||||||
|
## THE_PACKAGES |
||||||
|
alterator-luks |
||||||
|
chromium |
||||||
|
chrony |
||||||
|
disable-usb-autosuspend |
||||||
|
btrfs-progs |
||||||
|
gpm |
||||||
|
xorg-drv-wacom |
||||||
|
xorg-drv-amdgpu |
||||||
|
NetworkManager |
||||||
|
shadow-utils |
||||||
|
passwd |
||||||
|
shadow-groups |
||||||
|
fonts-ttf-google-croscore-arimo |
||||||
|
fonts-otf-adobe-source-code-pro |
||||||
|
fonts-otf-adobe-source-sans-pro |
||||||
|
fonts-otf-mozilla-fira |
||||||
|
fonts-ttf-google-droid-sans |
||||||
|
fonts-ttf-google-droid-sans-mono |
||||||
|
fonts-ttf-google-droid-serif |
||||||
|
fonts-ttf-google-croscore-arimo |
||||||
|
fonts-ttf-google-croscore-cousine |
||||||
|
fonts-ttf-google-croscore-tinos |
||||||
|
fonts-ttf-liberation |
||||||
|
xorg-drv-intel |
||||||
|
xorg-dri-intel |
||||||
|
xorg-drv-nouveau |
||||||
|
xorg-drv-ati |
||||||
|
xorg-drv-radeon |
||||||
|
control |
||||||
|
xdg-user-dirs |
||||||
|
pam-limits-desktop |
||||||
|
beesu |
||||||
|
polkit |
||||||
|
dvd+rw-tools |
||||||
|
altmediawriter |
||||||
|
upower |
||||||
|
udev-rules-rfkill-uaccess |
||||||
|
qemu-guest-agent |
||||||
|
open-vm-tools |
||||||
|
virtualbox-guest-additions |
||||||
|
xorg-drv-vmware |
||||||
|
xorg-drv-vmmouse |
||||||
|
open-vm-tools-desktop |
||||||
|
spice-vdagent |
||||||
|
xorg-drv-qxl |
||||||
|
xorg-drv-spiceqxl |
||||||
|
firmware-intel-ucode |
||||||
|
iucode_tool |
||||||
|
firmware-alsa-sof |
||||||
|
chkconfig |
||||||
|
vconsole-setup-kludge |
||||||
|
systemd-settings-enable-log-to-tty12 |
||||||
|
systemd-settings-enable-showstatus |
||||||
|
bluez |
||||||
|
synaptic-kde |
||||||
|
synaptic-usermode- |
||||||
|
kde5-display-manager-lightdm |
||||||
|
dhcpcd |
||||||
|
make-initrd-plymouth |
||||||
|
|
||||||
|
## BASE_PACKAGES |
||||||
|
make-initrd-luks |
||||||
|
installer-feature-runlevel5-stage3 |
||||||
|
installer-feature-bootloader-grub |
||||||
|
|
||||||
|
## COMMON_LISTS |
||||||
|
|
||||||
|
# tagged/base+efi |
||||||
|
gdisk |
||||||
|
parted |
||||||
|
fatresize |
||||||
|
dosfstools |
||||||
|
grub2-efi |
||||||
|
efibootmgr |
||||||
|
|
||||||
|
## THE_LISTS |
||||||
|
|
||||||
|
# tagged/security+luks tagged/desktop+regular tagged/base+regular tagged/base+xorg tools/wireless sound/base sound/pulseaudio tagged/base+regular+extra tagged/desktop+regular tagged/base+regular tagged/desktop+xorg tagged/base+l10n systemd tagged/base+nm tagged/base+kde5 tagged/base+kometa domain-client |
||||||
|
make-initrd-luks |
||||||
|
cryptsetup |
||||||
|
synaptic |
||||||
|
synaptic-usermode |
||||||
|
userpasswd |
||||||
|
xdg-user-dirs |
||||||
|
alterator-browser-qt |
||||||
|
alterator-standalone |
||||||
|
alterator-root |
||||||
|
alterator-users |
||||||
|
alterator-groups |
||||||
|
alterator-net-general |
||||||
|
alterator-net-pppoe |
||||||
|
rp-pppoe-client |
||||||
|
alterator-net-pptp |
||||||
|
alterator-net-openvpn |
||||||
|
alterator-net-eth |
||||||
|
alterator-net-wifi |
||||||
|
alterator-datetime |
||||||
|
alterator-proxy |
||||||
|
alterator-services |
||||||
|
alterator-x11 |
||||||
|
alterator-xkb |
||||||
|
alterator-update-kernel |
||||||
|
glxinfo |
||||||
|
glxgears |
||||||
|
xorg-conf-synaptics |
||||||
|
cpu-x |
||||||
|
exfatprogs |
||||||
|
hdparm |
||||||
|
inxi |
||||||
|
lcdtest |
||||||
|
lm_sensors3 |
||||||
|
lsblk |
||||||
|
sdparm |
||||||
|
ntpdate |
||||||
|
fonts-bitmap-terminus |
||||||
|
ldd-requires |
||||||
|
alt-rootfs-installer |
||||||
|
gparted |
||||||
|
gpart |
||||||
|
x11-ssh-askpass |
||||||
|
sysfsutils |
||||||
|
mc |
||||||
|
apf |
||||||
|
udev-extras |
||||||
|
librsvg |
||||||
|
# icons |
||||||
|
gnome-icon-theme |
||||||
|
gnome-icon-theme-symbolic |
||||||
|
# unicode fonts |
||||||
|
fonts-ttf-gnu-freefont-mono |
||||||
|
fonts-ttf-gnu-freefont-sans |
||||||
|
fonts-ttf-gnu-freefont-serif |
||||||
|
htop |
||||||
|
# firmware update utils |
||||||
|
#fwupd |
||||||
|
blacklist-pcspkr |
||||||
|
glibc-locales |
||||||
|
xfsprogs |
||||||
|
jfsprogs |
||||||
|
ntfs-3g |
||||||
|
dosfstools |
||||||
|
fatresize |
||||||
|
make-initrd-ucode |
||||||
|
shadow-change |
||||||
|
openssh |
||||||
|
openssh-blacklist |
||||||
|
net-tools |
||||||
|
nfs-utils |
||||||
|
smartmontools |
||||||
|
system-report |
||||||
|
ps_mem |
||||||
|
strace |
||||||
|
powertop |
||||||
|
pciutils |
||||||
|
usbutils |
||||||
|
acpi |
||||||
|
dmidecode |
||||||
|
|
||||||
|
apt-repo |
||||||
|
apt-rsync |
||||||
|
apt-scripts |
||||||
|
aptitude |
||||||
|
update-kernel |
||||||
|
eepm |
||||||
|
bash-completion |
||||||
|
cpufreq-simple |
||||||
|
eject |
||||||
|
bc |
||||||
|
ncdu |
||||||
|
tree |
||||||
|
zsh |
||||||
|
xorg-server |
||||||
|
xorg-drv-evdev |
||||||
|
xorg-drv-synaptics |
||||||
|
xorg-drv-libinput |
||||||
|
xorg-drv-vesa |
||||||
|
xorg-drv-fbdev |
||||||
|
xauth |
||||||
|
xorg-utils |
||||||
|
x-cursor-theme-jimmac |
||||||
|
menu-icons-default |
||||||
|
wireless-tools |
||||||
|
ath_info |
||||||
|
rfkill |
||||||
|
crda |
||||||
|
iw |
||||||
|
amixer |
||||||
|
alsa-utils |
||||||
|
aplay |
||||||
|
test-audio |
||||||
|
alsa-set-initial-options |
||||||
|
pulseaudio-daemon |
||||||
|
pulseaudio-utils |
||||||
|
alsa-plugins-pulse |
||||||
|
lvm2 |
||||||
|
make-initrd-lvm |
||||||
|
mdadm |
||||||
|
make-initrd-mdadm |
||||||
|
synaptic |
||||||
|
synaptic-usermode |
||||||
|
userpasswd |
||||||
|
xdg-user-dirs |
||||||
|
alterator-browser-qt |
||||||
|
alterator-standalone |
||||||
|
alterator-root |
||||||
|
alterator-users |
||||||
|
alterator-groups |
||||||
|
alterator-net-general |
||||||
|
alterator-net-pppoe |
||||||
|
rp-pppoe-client |
||||||
|
alterator-net-pptp |
||||||
|
alterator-net-openvpn |
||||||
|
alterator-net-eth |
||||||
|
alterator-net-wifi |
||||||
|
alterator-datetime |
||||||
|
alterator-proxy |
||||||
|
alterator-services |
||||||
|
alterator-x11 |
||||||
|
alterator-xkb |
||||||
|
alterator-update-kernel |
||||||
|
glxinfo |
||||||
|
glxgears |
||||||
|
xorg-conf-synaptics |
||||||
|
cpu-x |
||||||
|
exfatprogs |
||||||
|
hdparm |
||||||
|
inxi |
||||||
|
lcdtest |
||||||
|
lm_sensors3 |
||||||
|
lsblk |
||||||
|
sdparm |
||||||
|
ntpdate |
||||||
|
fonts-bitmap-terminus |
||||||
|
ldd-requires |
||||||
|
alt-rootfs-installer |
||||||
|
gparted |
||||||
|
gpart |
||||||
|
x11-ssh-askpass |
||||||
|
sysfsutils |
||||||
|
mc |
||||||
|
apf |
||||||
|
udev-extras |
||||||
|
librsvg |
||||||
|
# icons |
||||||
|
gnome-icon-theme |
||||||
|
gnome-icon-theme-symbolic |
||||||
|
# unicode fonts |
||||||
|
fonts-ttf-gnu-freefont-mono |
||||||
|
fonts-ttf-gnu-freefont-sans |
||||||
|
fonts-ttf-gnu-freefont-serif |
||||||
|
htop |
||||||
|
# firmware update utils |
||||||
|
#fwupd |
||||||
|
blacklist-pcspkr |
||||||
|
glibc-locales |
||||||
|
xfsprogs |
||||||
|
jfsprogs |
||||||
|
ntfs-3g |
||||||
|
dosfstools |
||||||
|
fatresize |
||||||
|
make-initrd-ucode |
||||||
|
shadow-change |
||||||
|
openssh |
||||||
|
openssh-blacklist |
||||||
|
net-tools |
||||||
|
nfs-utils |
||||||
|
smartmontools |
||||||
|
system-report |
||||||
|
ps_mem |
||||||
|
strace |
||||||
|
powertop |
||||||
|
pciutils |
||||||
|
usbutils |
||||||
|
acpi |
||||||
|
dmidecode |
||||||
|
|
||||||
|
apt-repo |
||||||
|
apt-rsync |
||||||
|
apt-scripts |
||||||
|
aptitude |
||||||
|
update-kernel |
||||||
|
eepm |
||||||
|
bash-completion |
||||||
|
cpufreq-simple |
||||||
|
eject |
||||||
|
bc |
||||||
|
ncdu |
||||||
|
tree |
||||||
|
zsh |
||||||
|
xorg-drv-ati |
||||||
|
xorg-drv-cirrus |
||||||
|
#xorg-drv-mga |
||||||
|
xorg-drv-modesetting |
||||||
|
#xorg-drv-nv |
||||||
|
xorg-drv-qxl |
||||||
|
#xorg-drv-s3 |
||||||
|
#xorg-drv-s3virge |
||||||
|
#xorg-drv-savage |
||||||
|
#xorg-drv-sis |
||||||
|
glibc-locales |
||||||
|
glibc-gconv-modules |
||||||
|
systemd |
||||||
|
systemd-units |
||||||
|
systemd-services |
||||||
|
systemd-sysvinit |
||||||
|
systemd-analyze |
||||||
|
chkconfig |
||||||
|
NetworkManager |
||||||
|
NetworkManager-vpnc |
||||||
|
NetworkManager-openvpn |
||||||
|
NetworkManager-pptp |
||||||
|
NetworkManager-l2tp |
||||||
|
NetworkManager-openconnect |
||||||
|
usb-modeswitch |
||||||
|
systemd-sysvinit |
||||||
|
###systemd-presets-kdesktop |
||||||
|
|
||||||
|
kde5-mini |
||||||
|
kde5-small |
||||||
|
|
||||||
|
#####kde5 |
||||||
|
gtk2-theme-breeze |
||||||
|
gtk3-theme-breeze |
||||||
|
kde5-filelight |
||||||
|
kde5-kamera |
||||||
|
kde5-kcharselect |
||||||
|
kde5-kfind |
||||||
|
kde5-kgpg |
||||||
|
kde5-khelpcenter |
||||||
|
kde5-kio-audiocd |
||||||
|
kde5-kio-zeroconf |
||||||
|
kde5-kolourpaint |
||||||
|
kde5-krdc |
||||||
|
kde5-kteatime |
||||||
|
kde5-ktimer |
||||||
|
kde5-network-filesharing |
||||||
|
kde5-network-manager |
||||||
|
kde5-plasma-applet-places-widget |
||||||
|
kde5-spectacle |
||||||
|
kde5-sweeper |
||||||
|
kf5-baloo |
||||||
|
kf5-kdbusaddons |
||||||
|
kf5-qqc2-desktop-style |
||||||
|
kf5-solid |
||||||
|
plasma5-addons |
||||||
|
plasma5-bluedevil |
||||||
|
plasma5-kde-gtk-config |
||||||
|
plasma5-kgamma |
||||||
|
plasma5-khotkeys |
||||||
|
plasma5-kinfocenter |
||||||
|
plasma5-kmenuedit |
||||||
|
plasma5-kscreen |
||||||
|
plasma5-ksshaskpass |
||||||
|
plasma5-browser-integration |
||||||
|
plasma5-disks |
||||||
|
|
||||||
|
##big |
||||||
|
kde5-connect |
||||||
|
kde5-graphics-thumbnailers |
||||||
|
kde5-pim |
||||||
|
kde5-ffmpegthumbs |
||||||
|
kde5-kate |
||||||
|
kde5-kcron |
||||||
|
kde5-kdf |
||||||
|
kde5-kipi-plugins-core |
||||||
|
###kde5-konversation |
||||||
|
###kde5-messenger-client |
||||||
|
kde5-krfb |
||||||
|
kde5-kruler |
||||||
|
kde5-ksystemlog |
||||||
|
###kde5-pim-addons |
||||||
|
kid3-ui-kde5 |
||||||
|
plasma5-kwrited |
||||||
|
plasma5-user-manager |
||||||
|
plasma5-workspace-wallpapers |
||||||
|
plasma5-xdg-desktop-portal-kde |
||||||
|
|
||||||
|
###kde5-maxi |
||||||
|
kde5-digikam |
||||||
|
kde5-k3b |
||||||
|
kde5-keditbookmarks |
||||||
|
kde5-kipi-plugins |
||||||
|
kde5-kmag |
||||||
|
kde5-kmousetool |
||||||
|
kde5-kmouth |
||||||
|
kde5-kwave |
||||||
|
kde5-kfloppy |
||||||
|
kde5-edu |
||||||
|
kde5-printing |
||||||
|
kde5-scanning |
||||||
|
kde5-dolphin-plugins |
||||||
|
#plasma5-discover-maxi |
||||||
|
|
||||||
|
|
||||||
|
xorg-conf-synaptics |
||||||
|
###xdg-user-dirs |
||||||
|
###installer-feature-xdg-user-dirs |
||||||
|
altlinux-freedesktop-menu-nested-menu |
||||||
|
sane |
||||||
|
sane-frontends |
||||||
|
system-config-printer |
||||||
|
rpminstall |
||||||
|
kernel-modules-virtualbox-std-def |
||||||
|
icon-theme-oxygen |
||||||
|
vconsole-setup-kludge |
||||||
|
pam-limits-desktop |
||||||
|
installer-feature-kometa-kde5 |
||||||
|
installer-feature-kometa-school-kde5 |
||||||
|
kometa-os-release |
||||||
|
kometa-std-desktop |
||||||
|
kometa-xdg-core |
||||||
|
kometa-xdg-plasma5-classic |
||||||
|
kometa-xdg-pam-env |
||||||
|
kometa-icons-core-classic |
||||||
|
kometa-icons-theme-classic |
||||||
|
|
||||||
|
####Fonts |
||||||
|
fonts-ttf-ms |
||||||
|
fonts-ttf-PT |
||||||
|
fonts-console-terminus |
||||||
|
fonts-ttf-paratype-pt-sans-caption |
||||||
|
fonts-ttf-paratype-pt-serif-caption |
||||||
|
fonts-ttf-unifont |
||||||
|
fonts-ttf-google-crosextra-carlito |
||||||
|
fonts-ttf-PTAstra |
||||||
|
|
||||||
|
####soft |
||||||
|
gimp |
||||||
|
gimp-help-ru |
||||||
|
xsane |
||||||
|
xsane-doc-ru |
||||||
|
xsane-gimp2 |
||||||
|
simple-scan |
||||||
|
vlc-maxi |
||||||
|
simplescreenrecorder |
||||||
|
git |
||||||
|
xsensors |
||||||
|
chromium |
||||||
|
firefox |
||||||
|
LibreOffice |
||||||
|
LibreOffice-langpack-ru |
||||||
|
LibreOffice-kde5 |
||||||
|
kde5-menu-new-odf-files |
||||||
|
cheese |
||||||
|
kamoso |
||||||
|
guvcview |
||||||
|
kdenlive |
||||||
|
shotcut |
||||||
|
openshot |
||||||
|
avidemux-qt |
||||||
|
lmms |
||||||
|
synfigstudio |
||||||
|
#pdfmod |
||||||
|
tesseract-langpack-ru |
||||||
|
gimagereader-qt5 |
||||||
|
eepm |
||||||
|
darktable |
||||||
|
ksnip |
||||||
|
v4l-utils |
||||||
|
|
||||||
|
codeblocks |
||||||
|
codeblocks-contrib |
||||||
|
converseen |
||||||
|
inkscape |
||||||
|
kumir2 |
||||||
|
audacity |
||||||
|
audacity-manual |
||||||
|
blender |
||||||
|
scratch-full |
||||||
|
scratch-help-en |
||||||
|
wxMaxima |
||||||
|
bluefish |
||||||
|
lazarus |
||||||
|
qt-creator |
||||||
|
klatexformula |
||||||
|
krita |
||||||
|
gcompris-qt |
||||||
|
gcompris-qt-data |
||||||
|
gcompris-qt-voices-ru |
||||||
|
###xorg-96dpi |
||||||
|
OpenBoard |
||||||
|
python3-module-pylint |
||||||
|
python3-module-pytest-pylint |
||||||
|
python3-module-pocketlint |
||||||
|
python3-module-pyflakes |
||||||
|
###libxcb-devel |
||||||
|
nmap |
||||||
|
python3-tools |
||||||
|
python3-tools-pep8 |
||||||
|
sympy |
||||||
|
python3-module-sympy |
||||||
|
python3-module-sympy-examples |
||||||
|
ipython3 |
||||||
|
alterator-update-kernel |
||||||
|
###touchegg |
||||||
|
hplip-hpcups-PPDs |
||||||
|
hplip-hpijs-PPDs |
||||||
|
hplip-PPDs |
||||||
|
hplip-ps-PPDs |
||||||
|
hplip-recommends |
||||||
|
|
||||||
|
#Для ноутбуков HP у которых не работает микрофон |
||||||
|
#firmware-alsa-sof |
||||||
|
appinstall |
||||||
|
pam-config |
||||||
|
pam_mount |
||||||
|
pam_ccreds |
||||||
|
samba-client |
||||||
|
cifs-utils |
||||||
|
keyutils |
||||||
|
nfs-clients |
||||||
|
autofs |
||||||
|
libnss-fallback |
||||||
|
libnss-mdns |
||||||
|
settime-rfc867 |
||||||
|
#krb5-ticket-watcher |
||||||
|
alterator-browser-qt |
||||||
|
alterator-standalone |
||||||
|
alterator-auth |
||||||
|
alterator-net-shares |
||||||
|
|
||||||
|
## BASE_LISTS |
||||||
|
|
||||||
|
# grub |
||||||
|
grub-pc |
||||||
|
grub-efi |
||||||
|
|
||||||
|
|
||||||
|
# should be R: in grub-ieee1275 |
||||||
|
|
||||||
|
|
||||||
|
## DOT_BASE |
||||||
|
^kernel-(image|modules-(acpi_call|bcmwl|drm|drm-ancient|drm-nouveau|drm-radeon|e1000e|r8125|rtl8188fu|rtl8192eu|rtl8723bu|rtl8723de|rtl8812au|rtl8821ce|rtl8821cu|rtl88x2bu|rtw89|scsi|staging|vmware))-(std-def)$ |
||||||
|
^branding-kometa-school-(notes|bootloader|alterator|graphics|indexhtml|notes|alterator|graphics|indexhtml|slideshow|bootloader|bootsplash|bootsplash)$ |
||||||
|
make-initrd-plymouth |
||||||
|
cpio |
||||||
|
firmware-prism.* |
||||||
|
firmware-ipw.* |
||||||
|
firmware-zd.* |
||||||
|
firmware-rt.* |
@ -0,0 +1,16 @@ |
|||||||
|
pam-config |
||||||
|
pam_mount |
||||||
|
pam_ccreds |
||||||
|
samba-client |
||||||
|
cifs-utils |
||||||
|
keyutils |
||||||
|
nfs-clients |
||||||
|
autofs |
||||||
|
libnss-fallback |
||||||
|
libnss-mdns |
||||||
|
settime-rfc867 |
||||||
|
#krb5-ticket-watcher |
||||||
|
alterator-browser-qt |
||||||
|
alterator-standalone |
||||||
|
alterator-auth |
||||||
|
alterator-net-shares |
@ -0,0 +1,6 @@ |
|||||||
|
grub-pc |
||||||
|
grub-efi |
||||||
|
|
||||||
|
|
||||||
|
# should be R: in grub-ieee1275 |
||||||
|
|
@ -0,0 +1,5 @@ |
|||||||
|
amixer |
||||||
|
alsa-utils |
||||||
|
aplay |
||||||
|
test-audio |
||||||
|
alsa-set-initial-options |
@ -0,0 +1,3 @@ |
|||||||
|
pulseaudio-daemon |
||||||
|
pulseaudio-utils |
||||||
|
alsa-plugins-pulse |
@ -0,0 +1,6 @@ |
|||||||
|
systemd |
||||||
|
systemd-units |
||||||
|
systemd-services |
||||||
|
systemd-sysvinit |
||||||
|
systemd-analyze |
||||||
|
chkconfig |
@ -0,0 +1,10 @@ |
|||||||
|
wget |
||||||
|
curl |
||||||
|
rsync |
||||||
|
apt |
||||||
|
fdisk |
||||||
|
vim-console |
||||||
|
nano |
||||||
|
mc |
||||||
|
nfs-utils |
||||||
|
system-backup |
@ -0,0 +1,6 @@ |
|||||||
|
gdisk |
||||||
|
parted |
||||||
|
fatresize |
||||||
|
dosfstools |
||||||
|
grub2-efi |
||||||
|
efibootmgr |
@ -0,0 +1,92 @@ |
|||||||
|
systemd-sysvinit |
||||||
|
###systemd-presets-kdesktop |
||||||
|
|
||||||
|
kde5-mini |
||||||
|
kde5-small |
||||||
|
|
||||||
|
#####kde5 |
||||||
|
gtk2-theme-breeze |
||||||
|
gtk3-theme-breeze |
||||||
|
kde5-filelight |
||||||
|
kde5-kamera |
||||||
|
kde5-kcharselect |
||||||
|
kde5-kfind |
||||||
|
kde5-kgpg |
||||||
|
kde5-khelpcenter |
||||||
|
kde5-kio-audiocd |
||||||
|
kde5-kio-zeroconf |
||||||
|
kde5-kolourpaint |
||||||
|
kde5-krdc |
||||||
|
kde5-kteatime |
||||||
|
kde5-ktimer |
||||||
|
kde5-network-filesharing |
||||||
|
kde5-network-manager |
||||||
|
kde5-plasma-applet-places-widget |
||||||
|
kde5-spectacle |
||||||
|
kde5-sweeper |
||||||
|
kf5-baloo |
||||||
|
kf5-kdbusaddons |
||||||
|
kf5-qqc2-desktop-style |
||||||
|
kf5-solid |
||||||
|
plasma5-addons |
||||||
|
plasma5-bluedevil |
||||||
|
plasma5-kde-gtk-config |
||||||
|
plasma5-kgamma |
||||||
|
plasma5-khotkeys |
||||||
|
plasma5-kinfocenter |
||||||
|
plasma5-kmenuedit |
||||||
|
plasma5-kscreen |
||||||
|
plasma5-ksshaskpass |
||||||
|
plasma5-browser-integration |
||||||
|
plasma5-disks |
||||||
|
|
||||||
|
##big |
||||||
|
kde5-connect |
||||||
|
kde5-graphics-thumbnailers |
||||||
|
kde5-pim |
||||||
|
kde5-ffmpegthumbs |
||||||
|
kde5-kate |
||||||
|
kde5-kcron |
||||||
|
kde5-kdf |
||||||
|
kde5-kipi-plugins-core |
||||||
|
###kde5-konversation |
||||||
|
###kde5-messenger-client |
||||||
|
kde5-krfb |
||||||
|
kde5-kruler |
||||||
|
kde5-ksystemlog |
||||||
|
###kde5-pim-addons |
||||||
|
kid3-ui-kde5 |
||||||
|
plasma5-kwrited |
||||||
|
plasma5-user-manager |
||||||
|
plasma5-workspace-wallpapers |
||||||
|
plasma5-xdg-desktop-portal-kde |
||||||
|
|
||||||
|
###kde5-maxi |
||||||
|
kde5-digikam |
||||||
|
kde5-k3b |
||||||
|
kde5-keditbookmarks |
||||||
|
kde5-kipi-plugins |
||||||
|
kde5-kmag |
||||||
|
kde5-kmousetool |
||||||
|
kde5-kmouth |
||||||
|
kde5-kwave |
||||||
|
kde5-kfloppy |
||||||
|
kde5-edu |
||||||
|
kde5-printing |
||||||
|
kde5-scanning |
||||||
|
kde5-dolphin-plugins |
||||||
|
#plasma5-discover-maxi |
||||||
|
|
||||||
|
|
||||||
|
xorg-conf-synaptics |
||||||
|
###xdg-user-dirs |
||||||
|
###installer-feature-xdg-user-dirs |
||||||
|
altlinux-freedesktop-menu-nested-menu |
||||||
|
sane |
||||||
|
sane-frontends |
||||||
|
system-config-printer |
||||||
|
rpminstall |
||||||
|
kernel-modules-virtualbox-std-def |
||||||
|
icon-theme-oxygen |
||||||
|
vconsole-setup-kludge |
||||||
|
pam-limits-desktop |
@ -0,0 +1,118 @@ |
|||||||
|
installer-feature-kometa-kde5 |
||||||
|
installer-feature-kometa-school-kde5 |
||||||
|
installer-feature-desktop-other-fs-stage2 |
||||||
|
kometa-os-release |
||||||
|
kometa-std-desktop |
||||||
|
kometa-xdg-core |
||||||
|
kometa-xdg-plasma5-classic |
||||||
|
kometa-xdg-pam-env |
||||||
|
kometa-icons-core-classic |
||||||
|
kometa-icons-theme-classic |
||||||
|
polkit-rule-gparted-as-root |
||||||
|
eepm-add-r7-office |
||||||
|
|
||||||
|
####R7 |
||||||
|
fonts-ttf-dejavu |
||||||
|
fonts-ttf-google-crosextra-carlito |
||||||
|
fonts-ttf-liberation |
||||||
|
glibc gst-libav |
||||||
|
gst-plugins-ugly1.0 |
||||||
|
libX11 |
||||||
|
libXScrnSaver |
||||||
|
libcairo |
||||||
|
libgcc1 |
||||||
|
libgtk+2 |
||||||
|
libgtkglext |
||||||
|
r7-office |
||||||
|
|
||||||
|
####Myoffice |
||||||
|
myoffice-standard-documents |
||||||
|
|
||||||
|
####Fonts |
||||||
|
fonts-ttf-ms |
||||||
|
fonts-ttf-PT |
||||||
|
fonts-console-terminus |
||||||
|
fonts-ttf-paratype-pt-sans-caption |
||||||
|
fonts-ttf-paratype-pt-serif-caption |
||||||
|
fonts-ttf-unifont |
||||||
|
fonts-ttf-google-crosextra-carlito |
||||||
|
fonts-ttf-PTAstra |
||||||
|
|
||||||
|
####soft |
||||||
|
gimp |
||||||
|
gimp-help-ru |
||||||
|
xsane |
||||||
|
xsane-doc-ru |
||||||
|
xsane-gimp2 |
||||||
|
simple-scan |
||||||
|
vlc-maxi |
||||||
|
simplescreenrecorder |
||||||
|
git |
||||||
|
xsensors |
||||||
|
chromium |
||||||
|
firefox |
||||||
|
LibreOffice |
||||||
|
LibreOffice-langpack-ru |
||||||
|
LibreOffice-kde5 |
||||||
|
kde5-menu-new-odf-files |
||||||
|
cheese |
||||||
|
kamoso |
||||||
|
guvcview |
||||||
|
kdenlive |
||||||
|
shotcut |
||||||
|
openshot |
||||||
|
avidemux-qt |
||||||
|
lmms |
||||||
|
synfigstudio |
||||||
|
#pdfmod |
||||||
|
tesseract-langpack-ru |
||||||
|
gimagereader-qt5 |
||||||
|
eepm |
||||||
|
darktable |
||||||
|
ksnip |
||||||
|
v4l-utils |
||||||
|
|
||||||
|
codeblocks |
||||||
|
codeblocks-contrib |
||||||
|
converseen |
||||||
|
inkscape |
||||||
|
kumir2 |
||||||
|
audacity |
||||||
|
audacity-manual |
||||||
|
blender |
||||||
|
scratch-full |
||||||
|
scratch-help-en |
||||||
|
wxMaxima |
||||||
|
bluefish |
||||||
|
lazarus |
||||||
|
qt-creator |
||||||
|
klatexformula |
||||||
|
krita |
||||||
|
gcompris-qt |
||||||
|
gcompris-qt-data |
||||||
|
gcompris-qt-voices-ru |
||||||
|
###xorg-96dpi |
||||||
|
OpenBoard |
||||||
|
python3-module-pylint |
||||||
|
python3-module-pytest-pylint |
||||||
|
python3-module-pocketlint |
||||||
|
python3-module-pyflakes |
||||||
|
###libxcb-devel |
||||||
|
nmap |
||||||
|
python3-tools |
||||||
|
python3-tools-pep8 |
||||||
|
sympy |
||||||
|
python3-module-sympy |
||||||
|
python3-module-sympy-examples |
||||||
|
ipython3 |
||||||
|
alterator-update-kernel |
||||||
|
###touchegg |
||||||
|
hplip-hpcups-PPDs |
||||||
|
hplip-hpijs-PPDs |
||||||
|
hplip-PPDs |
||||||
|
hplip-ps-PPDs |
||||||
|
hplip-recommends |
||||||
|
|
||||||
|
#Для ноутбуков HP у которых не работает микрофон |
||||||
|
firmware-alsa-sof |
||||||
|
appinstall |
@ -0,0 +1,2 @@ |
|||||||
|
glibc-locales |
||||||
|
glibc-gconv-modules |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue