@ -0,0 +1 @@ |
|||
/build/focal |
@ -0,0 +1,73 @@ |
|||
#!/bin/bash |
|||
|
|||
set -e # exit on error |
|||
set -o pipefail # exit on pipeline error |
|||
set -u # treat unset variable as error |
|||
|
|||
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" |
|||
PARENT_DIR="$(dirname "$SCRIPT_DIR")" |
|||
ISO_DIR="$(dirname "$SCRIPT_DIR")"/iso |
|||
|
|||
set +u |
|||
if [ -z $OUTPUT ]; then |
|||
. $SCRIPT_DIR/linux-live/buildconfig || exit 1 |
|||
fi |
|||
set -u |
|||
. $SCRIPT_DIR/linux-live/minioslib || exit 1 |
|||
. $SCRIPT_DIR/linux-live/config || exit 1 |
|||
|
|||
# don't change! use ./install instead |
|||
UNATTENDED="1" |
|||
|
|||
CMD=(setup_host build_bootstrap build_chroot build_live build_modules_chroot build_modules_live build_iso) |
|||
|
|||
# ============= main ================ |
|||
|
|||
BUILD_DIR="" |
|||
|
|||
common_variables |
|||
|
|||
if [ -f /.dockerenv ] || [ "$container" = "podman" ]; then |
|||
new_run |
|||
fi |
|||
|
|||
console_colours |
|||
|
|||
allow_root_only |
|||
|
|||
create_livekitname_install_symlink |
|||
|
|||
create_completion |
|||
|
|||
create_backup |
|||
|
|||
# check number of args |
|||
if [[ $# == 0 || $# > 3 ]]; then help; fi |
|||
|
|||
# loop through args |
|||
dash_flag=false |
|||
start_index=0 |
|||
end_index=${#CMD[*]} |
|||
for ii in "$@"; do |
|||
if [[ $ii == "-" ]]; then |
|||
dash_flag=true |
|||
continue |
|||
fi |
|||
find_index $ii |
|||
if [[ $dash_flag == false ]]; then |
|||
start_index=$index |
|||
else |
|||
end_index=$(($index + 1)) |
|||
fi |
|||
done |
|||
if [[ $dash_flag == false ]]; then |
|||
end_index=$(($start_index + 1)) |
|||
fi |
|||
|
|||
#loop through the commands |
|||
for ((ii = $start_index; ii < $end_index; ii++)); do |
|||
setup_build_dir |
|||
${CMD[ii]} |
|||
done |
|||
|
|||
echo -e "${BOLD}${LIGHTYELLOW}$0${ENDCOLOUR} - ${LIGHTGREEN}Command completed successfully!${ENDCOLOUR}" |
@ -0,0 +1,6 @@ |
|||
#!/bin/bash |
|||
# Several packages need to be installed to use Dockerfile.py |
|||
# It creates a local container that you can use to build minios-live |
|||
apt install python3-pip |
|||
pip3 install pydocker |
|||
python3 ./Dockerfile.py |
@ -0,0 +1,5 @@ |
|||
#!/bin/bash |
|||
#docker run -d --name mlc --privileged -v /build:/build local/mlc /build/slax/autoinstall - |
|||
docker run --rm -it --privileged -v /build:/build local/mlc /build/slax/autoinstall build_modules_chroot - |
|||
#docker run -it --name mlc --privileged -v /build:/build local/mlc |
|||
#docker run -d --name mlc --privileged -v /build:/build local/mlc |
@ -0,0 +1,68 @@ |
|||
#!/usr/bin/python3 |
|||
# Dockerfile.py |
|||
|
|||
import sys |
|||
import logging |
|||
import pydocker # github.com/jen-soft/pydocker |
|||
|
|||
logging.getLogger('').setLevel(logging.INFO) |
|||
logging.root.addHandler(logging.StreamHandler(sys.stdout)) |
|||
|
|||
|
|||
class DockerFile(pydocker.DockerFile): |
|||
""" add here your custom features """ |
|||
|
|||
#d = DockerFile(base_img='ubuntu:focal', name='crims0n/minios-live-container:latest') |
|||
d = DockerFile(base_img='ubuntu:focal', name='local/mlc:latest') |
|||
|
|||
d.RUN_bash_script('/opt/install.sh', r''' |
|||
touch /.minios-live-container |
|||
apt-get update -y |
|||
apt-get install -y wget sudo debootstrap xorriso genisoimage binutils squashfs-tools grub-pc-bin grub-efi-amd64-bin dosfstools mtools xz-utils liblz4-tool zstd |
|||
: 'apt-get install -y patch |
|||
cd /opt/ |
|||
wget -c http://ru.archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.123ubuntu2_all.deb |
|||
dpkg -i /opt/debootstrap_1.0.123ubuntu2_all.deb |
|||
rm -f /opt/debootstrap_1.0.123ubuntu2_all.deb |
|||
cat <<'EOF' >/usr/share/debootstrap/functions.diff |
|||
--- functions 2020-10-23 20:42:16.000000000 +0300 |
|||
+++ functions.new 2021-01-16 23:22:25.612064306 +0300 |
|||
@@ -1176,7 +1176,9 @@ |
|||
umount_on_exit /dev/shm |
|||
umount_on_exit /proc |
|||
umount_on_exit /proc/bus/usb |
|||
- umount "$TARGET/proc" 2>/dev/null || true |
|||
+ if [ ! -h "$TARGET/proc" ]; then |
|||
+ umount "$TARGET/proc" 2>/dev/null || true |
|||
+ fi |
|||
|
|||
# some container environment are used at second-stage, it already treats /proc and so on |
|||
if [ -z "$(ls -A "$TARGET/proc")" ]; then |
|||
|
|||
EOF |
|||
cd /usr/share/debootstrap/ |
|||
patch </usr/share/debootstrap/functions.diff ' |
|||
apt-get clean |
|||
find /var/log/ -type f | xargs rm -f |
|||
rm -f /var/backups/* |
|||
rm -f /var/cache/ldconfig/* |
|||
rm -f /var/cache/debconf/* |
|||
rm -f /var/cache/fontconfig/* |
|||
rm -f /var/cache/apt/archives/*.deb |
|||
rm -f /var/cache/apt/*.bin |
|||
rm -f /var/cache/debconf/*-old |
|||
rm -f /var/lib/apt/extended_states |
|||
rm -f /var/lib/apt/lists/*Packages* |
|||
rm -f /var/lib/apt/lists/*Translation* |
|||
rm -f /var/lib/apt/lists/*InRelease |
|||
rm -f /var/lib/apt/lists/deb.* |
|||
rm -f /var/lib/dpkg/*-old |
|||
''') |
|||
|
|||
d.VOLUME = '/build' |
|||
d.WORKDIR = '/build/minios-live' |
|||
|
|||
# d.ENTRYPOINT = ["/opt/www-data/entrypoint.sh"] |
|||
d.CMD = ["/build/minios-live/autoinstall", "-"] |
|||
|
|||
d.build_img() |
@ -0,0 +1,73 @@ |
|||
#!/bin/bash |
|||
|
|||
set -e # exit on error |
|||
set -o pipefail # exit on pipeline error |
|||
set -u # treat unset variable as error |
|||
|
|||
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" |
|||
PARENT_DIR="$(dirname "$SCRIPT_DIR")" |
|||
ISO_DIR="$(dirname "$SCRIPT_DIR")"/iso |
|||
|
|||
set +u |
|||
if [ -z $OUTPUT ]; then |
|||
. $SCRIPT_DIR/linux-live/buildconfig || exit 1 |
|||
fi |
|||
set -u |
|||
. $SCRIPT_DIR/linux-live/minioslib || exit 1 |
|||
. $SCRIPT_DIR/linux-live/config || exit 1 |
|||
|
|||
# don't change! use ./autoinstall instead |
|||
UNATTENDED="0" |
|||
|
|||
CMD=(setup_host build_bootstrap build_chroot build_live build_modules_chroot build_modules_live build_iso) |
|||
|
|||
# ============= main ================ |
|||
|
|||
BUILD_DIR="" |
|||
|
|||
common_variables |
|||
|
|||
if [ -f /.dockerenv ] || [ "$container" = "podman" ]; then |
|||
new_run |
|||
fi |
|||
|
|||
console_colours |
|||
|
|||
allow_root_only |
|||
|
|||
create_livekitname_install_symlink |
|||
|
|||
create_completion |
|||
|
|||
create_backup |
|||
|
|||
# check number of args |
|||
if [[ $# == 0 || $# > 3 ]]; then help; fi |
|||
|
|||
# loop through args |
|||
dash_flag=false |
|||
start_index=0 |
|||
end_index=${#CMD[*]} |
|||
for ii in "$@"; do |
|||
if [[ $ii == "-" ]]; then |
|||
dash_flag=true |
|||
continue |
|||
fi |
|||
find_index $ii |
|||
if [[ $dash_flag == false ]]; then |
|||
start_index=$index |
|||
else |
|||
end_index=$(($index + 1)) |
|||
fi |
|||
done |
|||
if [[ $dash_flag == false ]]; then |
|||
end_index=$(($start_index + 1)) |
|||
fi |
|||
|
|||
#loop through the commands |
|||
for ((ii = $start_index; ii < $end_index; ii++)); do |
|||
setup_build_dir |
|||
${CMD[ii]} |
|||
done |
|||
|
|||
echo -e "${BOLD}${LIGHTYELLOW}$0${ENDCOLOUR} - ${LIGHTGREEN}Command completed successfully!${ENDCOLOUR}" |
@ -0,0 +1,341 @@ |
|||
GNU GENERAL PUBLIC LICENSE |
|||
Version 2, June 1991 |
|||
|
|||
Copyright (C) 1989, 1991 Free Software Foundation, Inc. |
|||
675 Mass Ave, Cambridge, MA 02139, USA |
|||
Everyone is permitted to copy and distribute verbatim copies |
|||
of this license document, but changing it is not allowed. |
|||
|
|||
Preamble |
|||
|
|||
The licenses for most software are designed to take away your |
|||
freedom to share and change it. By contrast, the GNU General Public |
|||
License is intended to guarantee your freedom to share and change free |
|||
software--to make sure the software is free for all its users. This |
|||
General Public License applies to most of the Free Software |
|||
Foundation's software and to any other program whose authors commit to |
|||
using it. (Some other Free Software Foundation software is covered by |
|||
the GNU Library General Public License instead.) You can apply it to |
|||
your programs, too. |
|||
|
|||
When we speak of free software, we are referring to freedom, not |
|||
price. Our General Public Licenses are designed to make sure that you |
|||
have the freedom to distribute copies of free software (and charge for |
|||
this service if you wish), that you receive source code or can get it |
|||
if you want it, that you can change the software or use pieces of it |
|||
in new free programs; and that you know you can do these things. |
|||
|
|||
To protect your rights, we need to make restrictions that forbid |
|||
anyone to deny you these rights or to ask you to surrender the rights. |
|||
These restrictions translate to certain responsibilities for you if you |
|||
distribute copies of the software, or if you modify it. |
|||
|
|||
For example, if you distribute copies of such a program, whether |
|||
gratis or for a fee, you must give the recipients all the rights that |
|||
you have. You must make sure that they, too, receive or can get the |
|||
source code. And you must show them these terms so they know their |
|||
rights. |
|||
|
|||
We protect your rights with two steps: (1) copyright the software, and |
|||
(2) offer you this license which gives you legal permission to copy, |
|||
distribute and/or modify the software. |
|||
|
|||
Also, for each author's protection and ours, we want to make certain |
|||
that everyone understands that there is no warranty for this free |
|||
software. If the software is modified by someone else and passed on, we |
|||
want its recipients to know that what they have is not the original, so |
|||
that any problems introduced by others will not reflect on the original |
|||
authors' reputations. |
|||
|
|||
Finally, any free program is threatened constantly by software |
|||
patents. We wish to avoid the danger that redistributors of a free |
|||
program will individually obtain patent licenses, in effect making the |
|||
program proprietary. To prevent this, we have made it clear that any |
|||
patent must be licensed for everyone's free use or not licensed at all. |
|||
|
|||
The precise terms and conditions for copying, distribution and |
|||
modification follow. |
|||
|
|||
GNU GENERAL PUBLIC LICENSE |
|||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
|||
|
|||
0. This License applies to any program or other work which contains |
|||
a notice placed by the copyright holder saying it may be distributed |
|||
under the terms of this General Public License. The "Program", below, |
|||
refers to any such program or work, and a "work based on the Program" |
|||
means either the Program or any derivative work under copyright law: |
|||
that is to say, a work containing the Program or a portion of it, |
|||
either verbatim or with modifications and/or translated into another |
|||
language. (Hereinafter, translation is included without limitation in |
|||
the term "modification".) Each licensee is addressed as "you". |
|||
|
|||
Activities other than copying, distribution and modification are not |
|||
covered by this License; they are outside its scope. The act of |
|||
running the Program is not restricted, and the output from the Program |
|||
is covered only if its contents constitute a work based on the |
|||
Program (independent of having been made by running the Program). |
|||
Whether that is true depends on what the Program does. |
|||
|
|||
1. You may copy and distribute verbatim copies of the Program's |
|||
source code as you receive it, in any medium, provided that you |
|||
conspicuously and appropriately publish on each copy an appropriate |
|||
copyright notice and disclaimer of warranty; keep intact all the |
|||
notices that refer to this License and to the absence of any warranty; |
|||
and give any other recipients of the Program a copy of this License |
|||
along with the Program. |
|||
|
|||
You may charge a fee for the physical act of transferring a copy, and |
|||
you may at your option offer warranty protection in exchange for a fee. |
|||
|
|||
2. You may modify your copy or copies of the Program or any portion |
|||
of it, thus forming a work based on the Program, and copy and |
|||
distribute such modifications or work under the terms of Section 1 |
|||
above, provided that you also meet all of these conditions: |
|||
|
|||
a) You must cause the modified files to carry prominent notices |
|||
stating that you changed the files and the date of any change. |
|||
|
|||
b) You must cause any work that you distribute or publish, that in |
|||
whole or in part contains or is derived from the Program or any |
|||
part thereof, to be licensed as a whole at no charge to all third |
|||
parties under the terms of this License. |
|||
|
|||
c) If the modified program normally reads commands interactively |
|||
when run, you must cause it, when started running for such |
|||
interactive use in the most ordinary way, to print or display an |
|||
announcement including an appropriate copyright notice and a |
|||
notice that there is no warranty (or else, saying that you provide |
|||
a warranty) and that users may redistribute the program under |
|||
these conditions, and telling the user how to view a copy of this |
|||
License. (Exception: if the Program itself is interactive but |
|||
does not normally print such an announcement, your work based on |
|||
the Program is not required to print an announcement.) |
|||
|
|||
These requirements apply to the modified work as a whole. If |
|||
identifiable sections of that work are not derived from the Program, |
|||
and can be reasonably considered independent and separate works in |
|||
themselves, then this License, and its terms, do not apply to those |
|||
sections when you distribute them as separate works. But when you |
|||
distribute the same sections as part of a whole which is a work based |
|||
on the Program, the distribution of the whole must be on the terms of |
|||
this License, whose permissions for other licensees extend to the |
|||
entire whole, and thus to each and every part regardless of who wrote it. |
|||
|
|||
Thus, it is not the intent of this section to claim rights or contest |
|||
your rights to work written entirely by you; rather, the intent is to |
|||
exercise the right to control the distribution of derivative or |
|||
collective works based on the Program. |
|||
|
|||
In addition, mere aggregation of another work not based on the Program |
|||
with the Program (or with a work based on the Program) on a volume of |
|||
a storage or distribution medium does not bring the other work under |
|||
the scope of this License. |
|||
|
|||
3. You may copy and distribute the Program (or a work based on it, |
|||
under Section 2) in object code or executable form under the terms of |
|||
Sections 1 and 2 above provided that you also do one of the following: |
|||
|
|||
a) Accompany it with the complete corresponding machine-readable |
|||
source code, which must be distributed under the terms of Sections |
|||
1 and 2 above on a medium customarily used for software interchange; or, |
|||
|
|||
b) Accompany it with a written offer, valid for at least three |
|||
years, to give any third party, for a charge no more than your |
|||
cost of physically performing source distribution, a complete |
|||
machine-readable copy of the corresponding source code, to be |
|||
distributed under the terms of Sections 1 and 2 above on a medium |
|||
customarily used for software interchange; or, |
|||
|
|||
c) Accompany it with the information you received as to the offer |
|||
to distribute corresponding source code. (This alternative is |
|||
allowed only for noncommercial distribution and only if you |
|||
received the program in object code or executable form with such |
|||
an offer, in accord with Subsection b above.) |
|||
|
|||
The source code for a work means the preferred form of the work for |
|||
making modifications to it. For an executable work, complete source |
|||
code means all the source code for all modules it contains, plus any |
|||
associated interface definition files, plus the scripts used to |
|||
control compilation and installation of the executable. However, as a |
|||
special exception, the source code distributed need not include |
|||
anything that is normally distributed (in either source or binary |
|||
form) with the major components (compiler, kernel, and so on) of the |
|||
operating system on which the executable runs, unless that component |
|||
itself accompanies the executable. |
|||
|
|||
If distribution of executable or object code is made by offering |
|||
access to copy from a designated place, then offering equivalent |
|||
access to copy the source code from the same place counts as |
|||
distribution of the source code, even though third parties are not |
|||
compelled to copy the source along with the object code. |
|||
|
|||
4. You may not copy, modify, sublicense, or distribute the Program |
|||
except as expressly provided under this License. Any attempt |
|||
otherwise to copy, modify, sublicense or distribute the Program is |
|||
void, and will automatically terminate your rights under this License. |
|||
However, parties who have received copies, or rights, from you under |
|||
this License will not have their licenses terminated so long as such |
|||
parties remain in full compliance. |
|||
|
|||
5. You are not required to accept this License, since you have not |
|||
signed it. However, nothing else grants you permission to modify or |
|||
distribute the Program or its derivative works. These actions are |
|||
prohibited by law if you do not accept this License. Therefore, by |
|||
modifying or distributing the Program (or any work based on the |
|||
Program), you indicate your acceptance of this License to do so, and |
|||
all its terms and conditions for copying, distributing or modifying |
|||
the Program or works based on it. |
|||
|
|||
6. Each time you redistribute the Program (or any work based on the |
|||
Program), the recipient automatically receives a license from the |
|||
original licensor to copy, distribute or modify the Program subject to |
|||
these terms and conditions. You may not impose any further |
|||
restrictions on the recipients' exercise of the rights granted herein. |
|||
You are not responsible for enforcing compliance by third parties to |
|||
this License. |
|||
|
|||
7. If, as a consequence of a court judgment or allegation of patent |
|||
infringement or for any other reason (not limited to patent issues), |
|||
conditions are imposed on you (whether by court order, agreement or |
|||
otherwise) that contradict the conditions of this License, they do not |
|||
excuse you from the conditions of this License. If you cannot |
|||
distribute so as to satisfy simultaneously your obligations under this |
|||
License and any other pertinent obligations, then as a consequence you |
|||
may not distribute the Program at all. For example, if a patent |
|||
license would not permit royalty-free redistribution of the Program by |
|||
all those who receive copies directly or indirectly through you, then |
|||
the only way you could satisfy both it and this License would be to |
|||
refrain entirely from distribution of the Program. |
|||
|
|||
If any portion of this section is held invalid or unenforceable under |
|||
any particular circumstance, the balance of the section is intended to |
|||
apply and the section as a whole is intended to apply in other |
|||
circumstances. |
|||
|
|||
It is not the purpose of this section to induce you to infringe any |
|||
patents or other property right claims or to contest validity of any |
|||
such claims; this section has the sole purpose of protecting the |
|||
integrity of the free software distribution system, which is |
|||
implemented by public license practices. Many people have made |
|||
generous contributions to the wide range of software distributed |
|||
through that system in reliance on consistent application of that |
|||
system; it is up to the author/donor to decide if he or she is willing |
|||
to distribute software through any other system and a licensee cannot |
|||
impose that choice. |
|||
|
|||
This section is intended to make thoroughly clear what is believed to |
|||
be a consequence of the rest of this License. |
|||
|
|||
8. If the distribution and/or use of the Program is restricted in |
|||
certain countries either by patents or by copyrighted interfaces, the |
|||
original copyright holder who places the Program under this License |
|||
may add an explicit geographical distribution limitation excluding |
|||
those countries, so that distribution is permitted only in or among |
|||
countries not thus excluded. In such case, this License incorporates |
|||
the limitation as if written in the body of this License. |
|||
|
|||
9. The Free Software Foundation may publish revised and/or new versions |
|||
of the General Public License from time to time. Such new versions will |
|||
be similar in spirit to the present version, but may differ in detail to |
|||
address new problems or concerns. |
|||
|
|||
Each version is given a distinguishing version number. If the Program |
|||
specifies a version number of this License which applies to it and "any |
|||
later version", you have the option of following the terms and conditions |
|||
either of that version or of any later version published by the Free |
|||
Software Foundation. If the Program does not specify a version number of |
|||
this License, you may choose any version ever published by the Free Software |
|||
Foundation. |
|||
|
|||
10. If you wish to incorporate parts of the Program into other free |
|||
programs whose distribution conditions are different, write to the author |
|||
to ask for permission. For software which is copyrighted by the Free |
|||
Software Foundation, write to the Free Software Foundation; we sometimes |
|||
make exceptions for this. Our decision will be guided by the two goals |
|||
of preserving the free status of all derivatives of our free software and |
|||
of promoting the sharing and reuse of software generally. |
|||
|
|||
NO WARRANTY |
|||
|
|||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY |
|||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN |
|||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES |
|||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED |
|||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
|||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS |
|||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE |
|||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, |
|||
REPAIR OR CORRECTION. |
|||
|
|||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
|||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
|||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
|||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING |
|||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED |
|||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY |
|||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER |
|||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
|||
POSSIBILITY OF SUCH DAMAGES. |
|||
|
|||
END OF TERMS AND CONDITIONS |
|||
|
|||
|
|||
How to Apply These Terms to Your New Programs |
|||
|
|||
If you develop a new program, and you want it to be of the greatest |
|||
possible use to the public, the best way to achieve this is to make it |
|||
free software which everyone can redistribute and change under these terms. |
|||
|
|||
To do so, attach the following notices to the program. It is safest |
|||
to attach them to the start of each source file to most effectively |
|||
convey the exclusion of warranty; and each file should have at least |
|||
the "copyright" line and a pointer to where the full notice is found. |
|||
|
|||
<one line to give the program's name and a brief idea of what it does.> |
|||
Copyright (C) 19yy <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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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) 19yy 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 Library General |
|||
Public License instead of this License. |
@ -0,0 +1,13 @@ |
|||
|
|||
License: |
|||
|
|||
This software is released under GNU GENERAL PUBLIC LICENSE. |
|||
|
|||
Warranty: |
|||
|
|||
This software is distributed with NO WARRANTY, use it at your own risk. |
|||
|
|||
Author: |
|||
|
|||
This software is written by |
|||
Tomas M. <http://www.linux-live.org> |
@ -0,0 +1,5 @@ |
|||
You can pass the following boot parameters: |
|||
|
|||
debug ... start shell prompt several times during live kit startup |
|||
|
|||
from=... load data from given directory (search all drives for it) |
@ -0,0 +1,31 @@ |
|||
Bundle |
|||
------ |
|||
|
|||
A bundle is compressed squashfs filesystem, consisting of up-to-the-root |
|||
directory structure. Old name for bundle is 'module'. Bundle format |
|||
brings some new enhancements over the old modules. |
|||
|
|||
File extension for bundles may vary. Currently Slax uses .sb extension, |
|||
where 'sb' means 'slax bundle'. |
|||
|
|||
|
|||
How to create bundle: |
|||
|
|||
# mksquashfs bundle_rootfs wholefs.sb -comp xz -bs 512k |
|||
|
|||
or |
|||
# mksquashfs /usr /usr.sb --keep-as-directory -comp xz -bs 512k |
|||
|
|||
or use function in livekitlib: |
|||
# . livekitlib; make_bundle bundle_rootfs wholefs.sb |
|||
|
|||
|
|||
Special files in bundle filesystem structure: |
|||
|
|||
|
|||
/run/requires |
|||
/run/activate.sh |
|||
/run/deactivate.sh |
|||
/run/startcmd.sh ? |
|||
|
|||
|
@ -0,0 +1,2 @@ |
|||
Source code for precompiled binaries (initramfs/static/*) can be found at |
|||
http://ftp.slax.org/Slax-7.x-development/sources/Slax-7.0-sources/busybox-and-ntfs3g/ |
@ -0,0 +1,14 @@ |
|||
Supported filesystems |
|||
--------------------- |
|||
|
|||
The Live distro created by Linux Live Kit can be installed |
|||
on the following filesystems: |
|||
|
|||
* iso9660 (CD) ..... using isolinux |
|||
* FAT32 (vfat) ..... using syslinux or extlinux |
|||
* ntfs ............. using syslinux or extlinux |
|||
* ext2/3/4,btrfs ... using extlinux |
|||
* any other fs ..... using lilo |
|||
|
|||
Most users will install on FAT32 for compatibility |
|||
with the other operating systems (I mean Windows). |
@ -0,0 +1,18 @@ |
|||
Live Kit |
|||
-------- |
|||
|
|||
* also known as Linux Live Kit. Formely known as Linux Live CD. Nowadays, |
|||
people mostly use USB flash drives, cameras, and other devices to run |
|||
such 'Live' linuxes, thus Live CD is no longer ideal name for it. |
|||
|
|||
Meaning of Kit is like a tool, toolkit, or such. Which (I believe) corresponds |
|||
with the usage of such Live Linux distribution much better. |
|||
|
|||
|
|||
Bundles |
|||
------- |
|||
|
|||
* compressed squashfs images with some specialities |
|||
Read ./bundle.txt for more. |
|||
|
|||
|
@ -0,0 +1,59 @@ |
|||
Linux Live Kit |
|||
============== |
|||
|
|||
Use this set of scripts to turn your existing preinstalled Linux |
|||
distribution into a Live Kit (formely known as Live CD). |
|||
Make sure to extract and use it on a posix-compatible filesystem, |
|||
since it creates some (sym)links and such. |
|||
|
|||
Note: |
|||
|
|||
* Store Linux Live kit in a directory which is not going to be included |
|||
in your live distro, else it would be copied to it. Best practice is to |
|||
make a directory such as /a and put these scripts there. |
|||
Be warned, if you put it to /tmp, some distros may erase it on reboot. |
|||
|
|||
* Before you start building your Kit, edit the file ./config |
|||
Most importantly change the LIVEKITNAME variable. |
|||
|
|||
* Make sure your kernel is in /boot/vmlinuz or change the path in ./config |
|||
Your kernel must support squashfs. Your kernel must also support either |
|||
aufs or overlayfs or both. AUFS is recommended for more flexibility, |
|||
but if your distro does not support it, overlayfs will work too. |
|||
|
|||
* You may also wish to replace boot graphics in ./bootfiles/bootlogo.png |
|||
(one options is to modify and run the ./tools/bootlogo.update script) |
|||
and reorganize isolinux.cfg to fit your needs (when editing the file, |
|||
keep all paths in /boot/, it will be rellocated during LiveKit creation) |
|||
|
|||
* Linux Live Kit comes with precompiled static binaries in ./initramfs |
|||
directory. Those may be outdated but will work. You may replace them |
|||
by your own statically linked binaries, if you know how to compile them. |
|||
|
|||
* If you plan to boot your Live Kit from CD, you need to recompile |
|||
syslinux.bin else it won't be able to boot your Live Kit from directory |
|||
LIVEKITNAME. There is a script prepared for you which will handle all |
|||
of that. Simply go to directory ./tools/ and run isolinux.bin.update ... |
|||
it will update ./bootfiles/isolinux.bin automatically by downloading |
|||
isolinux sources, patching them using your actual LIVEKITNAME and |
|||
recompiling. This step is not needed if you plan to boot from USB only. |
|||
|
|||
* If you have tmpfs mounted on /tmp, make sure you have enough RAM |
|||
since LiveKit will store lots of data there. If you are low on RAM, |
|||
make sure /tmp is a regular on-disk directory. |
|||
|
|||
* When done, run the ./build script to create your Live Kit |
|||
- it will create ISO and TAR files for you in /tmp |
|||
- make sure you have enough free space in /tmp to handle it |
|||
|
|||
* If you want to use the Live Kit on a USB you have to either |
|||
- use Windows to execute the bootinst.bat file in the $NAME/boot folder |
|||
- or use Linux to execute the shellscript bootinst.sh in the $NAME/boot folder. |
|||
|
|||
* You will need the following packages to be installed: |
|||
- squashfs-tools |
|||
- genisoimage or mkisofs |
|||
- zip |
|||
|
|||
|
|||
Author: Tomas M. <http://www.linux-live.org> |
@ -0,0 +1,54 @@ |
|||
# deb http://ru.archive.ubuntu.com/ubuntu/ bionic main restricted |
|||
|
|||
# deb http://ru.archive.ubuntu.com/ubuntu/ bionic-updates main restricted |
|||
# deb http://security.ubuntu.com/ubuntu bionic-security main restricted |
|||
|
|||
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to |
|||
# newer versions of the distribution. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ bionic main restricted |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ bionic main restricted |
|||
|
|||
## Major bug fix updates produced after the final release of the |
|||
## distribution. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ bionic-updates main restricted |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ bionic-updates main restricted |
|||
|
|||
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu |
|||
## team. Also, please note that software in universe WILL NOT receive any |
|||
## review or updates from the Ubuntu security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ bionic universe |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ bionic universe |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ bionic-updates universe |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ bionic-updates universe |
|||
|
|||
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu |
|||
## team, and may not be under a free licence. Please satisfy yourself as to |
|||
## your rights to use the software. Also, please note that software in |
|||
## multiverse WILL NOT receive any review or updates from the Ubuntu |
|||
## security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ bionic multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ bionic multiverse |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ bionic-updates multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ bionic-updates multiverse |
|||
|
|||
## N.B. software from this repository may not have been tested as |
|||
## extensively as that contained in the main release, although it includes |
|||
## newer versions of some applications which may provide useful features. |
|||
## Also, please note that software in backports WILL NOT receive any review |
|||
## or updates from the Ubuntu security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse |
|||
|
|||
## Uncomment the following two lines to add software from Canonical's |
|||
## 'partner' repository. |
|||
## This software is not part of Ubuntu, but is offered by Canonical and the |
|||
## respective vendors as a service to Ubuntu users. |
|||
# deb http://archive.canonical.com/ubuntu bionic partner |
|||
# deb-src http://archive.canonical.com/ubuntu bionic partner |
|||
|
|||
deb http://security.ubuntu.com/ubuntu bionic-security main restricted |
|||
# deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted |
|||
deb http://security.ubuntu.com/ubuntu bionic-security universe |
|||
# deb-src http://security.ubuntu.com/ubuntu bionic-security universe |
|||
deb http://security.ubuntu.com/ubuntu bionic-security multiverse |
|||
# deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse |
@ -0,0 +1,5 @@ |
|||
deb http://deb.debian.org/debian/ buster main contrib non-free |
|||
deb http://deb.debian.org/debian/ buster-updates main contrib non-free |
|||
deb http://security.debian.org/debian-security buster/updates main contrib non-free |
|||
|
|||
deb-src http://deb.debian.org/debian/ buster main contrib non-free |
@ -0,0 +1,54 @@ |
|||
# deb http://ru.archive.ubuntu.com/ubuntu/ focal main restricted |
|||
|
|||
# deb http://ru.archive.ubuntu.com/ubuntu/ focal-updates main restricted |
|||
# deb http://security.ubuntu.com/ubuntu focal-security main restricted |
|||
|
|||
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to |
|||
# newer versions of the distribution. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ focal main restricted |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ focal main restricted |
|||
|
|||
## Major bug fix updates produced after the final release of the |
|||
## distribution. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ focal-updates main restricted |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ focal-updates main restricted |
|||
|
|||
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu |
|||
## team. Also, please note that software in universe WILL NOT receive any |
|||
## review or updates from the Ubuntu security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ focal universe |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ focal universe |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ focal-updates universe |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ focal-updates universe |
|||
|
|||
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu |
|||
## team, and may not be under a free licence. Please satisfy yourself as to |
|||
## your rights to use the software. Also, please note that software in |
|||
## multiverse WILL NOT receive any review or updates from the Ubuntu |
|||
## security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ focal multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ focal multiverse |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ focal-updates multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ focal-updates multiverse |
|||
|
|||
## N.B. software from this repository may not have been tested as |
|||
## extensively as that contained in the main release, although it includes |
|||
## newer versions of some applications which may provide useful features. |
|||
## Also, please note that software in backports WILL NOT receive any review |
|||
## or updates from the Ubuntu security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse |
|||
|
|||
## Uncomment the following two lines to add software from Canonical's |
|||
## 'partner' repository. |
|||
## This software is not part of Ubuntu, but is offered by Canonical and the |
|||
## respective vendors as a service to Ubuntu users. |
|||
# deb http://archive.canonical.com/ubuntu focal partner |
|||
# deb-src http://archive.canonical.com/ubuntu focal partner |
|||
|
|||
deb http://security.ubuntu.com/ubuntu focal-security main restricted |
|||
# deb-src http://security.ubuntu.com/ubuntu focal-security main restricted |
|||
deb http://security.ubuntu.com/ubuntu focal-security universe |
|||
# deb-src http://security.ubuntu.com/ubuntu focal-security universe |
|||
deb http://security.ubuntu.com/ubuntu focal-security multiverse |
|||
# deb-src http://security.ubuntu.com/ubuntu focal-security multiverse |
@ -0,0 +1,54 @@ |
|||
# deb http://ru.archive.ubuntu.com/ubuntu/ groovy main restricted |
|||
|
|||
# deb http://ru.archive.ubuntu.com/ubuntu/ groovy-updates main restricted |
|||
# deb http://security.ubuntu.com/ubuntu groovy-security main restricted |
|||
|
|||
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to |
|||
# newer versions of the distribution. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ groovy main restricted |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ groovy main restricted |
|||
|
|||
## Major bug fix updates produced after the final release of the |
|||
## distribution. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ groovy-updates main restricted |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ groovy-updates main restricted |
|||
|
|||
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu |
|||
## team. Also, please note that software in universe WILL NOT receive any |
|||
## review or updates from the Ubuntu security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ groovy universe |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ groovy universe |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ groovy-updates universe |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ groovy-updates universe |
|||
|
|||
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu |
|||
## team, and may not be under a free licence. Please satisfy yourself as to |
|||
## your rights to use the software. Also, please note that software in |
|||
## multiverse WILL NOT receive any review or updates from the Ubuntu |
|||
## security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ groovy multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ groovy multiverse |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ groovy-updates multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ groovy-updates multiverse |
|||
|
|||
## N.B. software from this repository may not have been tested as |
|||
## extensively as that contained in the main release, although it includes |
|||
## newer versions of some applications which may provide useful features. |
|||
## Also, please note that software in backports WILL NOT receive any review |
|||
## or updates from the Ubuntu security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ groovy-backports main restricted universe multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ groovy-backports main restricted universe multiverse |
|||
|
|||
## Uncomment the following two lines to add software from Canonical's |
|||
## 'partner' repository. |
|||
## This software is not part of Ubuntu, but is offered by Canonical and the |
|||
## respective vendors as a service to Ubuntu users. |
|||
# deb http://archive.canonical.com/ubuntu groovy partner |
|||
# deb-src http://archive.canonical.com/ubuntu groovy partner |
|||
|
|||
deb http://security.ubuntu.com/ubuntu groovy-security main restricted |
|||
# deb-src http://security.ubuntu.com/ubuntu groovy-security main restricted |
|||
deb http://security.ubuntu.com/ubuntu groovy-security universe |
|||
# deb-src http://security.ubuntu.com/ubuntu groovy-security universe |
|||
deb http://security.ubuntu.com/ubuntu groovy-security multiverse |
|||
# deb-src http://security.ubuntu.com/ubuntu groovy-security multiverse |
@ -0,0 +1,54 @@ |
|||
# deb http://ru.archive.ubuntu.com/ubuntu/ distro main restricted |
|||
|
|||
# deb http://ru.archive.ubuntu.com/ubuntu/ distro-updates main restricted |
|||
# deb http://security.ubuntu.com/ubuntu distro-security main restricted |
|||
|
|||
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to |
|||
# newer versions of the distribution. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ distro main restricted |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ distro main restricted |
|||
|
|||
## Major bug fix updates produced after the final release of the |
|||
## distribution. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ distro-updates main restricted |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ distro-updates main restricted |
|||
|
|||
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu |
|||
## team. Also, please note that software in universe WILL NOT receive any |
|||
## review or updates from the Ubuntu security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ distro universe |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ distro universe |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ distro-updates universe |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ distro-updates universe |
|||
|
|||
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu |
|||
## team, and may not be under a free licence. Please satisfy yourself as to |
|||
## your rights to use the software. Also, please note that software in |
|||
## multiverse WILL NOT receive any review or updates from the Ubuntu |
|||
## security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ distro multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ distro multiverse |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ distro-updates multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ distro-updates multiverse |
|||
|
|||
## N.B. software from this repository may not have been tested as |
|||
## extensively as that contained in the main release, although it includes |
|||
## newer versions of some applications which may provide useful features. |
|||
## Also, please note that software in backports WILL NOT receive any review |
|||
## or updates from the Ubuntu security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ distro-backports main restricted universe multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ distro-backports main restricted universe multiverse |
|||
|
|||
## Uncomment the following two lines to add software from Canonical's |
|||
## 'partner' repository. |
|||
## This software is not part of Ubuntu, but is offered by Canonical and the |
|||
## respective vendors as a service to Ubuntu users. |
|||
# deb http://archive.canonical.com/ubuntu distro partner |
|||
# deb-src http://archive.canonical.com/ubuntu distro partner |
|||
|
|||
deb http://security.ubuntu.com/ubuntu distro-security main restricted |
|||
# deb-src http://security.ubuntu.com/ubuntu distro-security main restricted |
|||
deb http://security.ubuntu.com/ubuntu distro-security universe |
|||
# deb-src http://security.ubuntu.com/ubuntu distro-security universe |
|||
deb http://security.ubuntu.com/ubuntu distro-security multiverse |
|||
# deb-src http://security.ubuntu.com/ubuntu distro-security multiverse |
@ -0,0 +1,54 @@ |
|||
# deb http://ru.archive.ubuntu.com/ubuntu/ trusty main restricted |
|||
|
|||
# deb http://ru.archive.ubuntu.com/ubuntu/ trusty-updates main restricted |
|||
# deb http://security.ubuntu.com/ubuntu trusty-security main restricted |
|||
|
|||
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to |
|||
# newer versions of the distribution. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ trusty main restricted |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ trusty main restricted |
|||
|
|||
## Major bug fix updates produced after the final release of the |
|||
## distribution. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ trusty-updates main restricted |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ trusty-updates main restricted |
|||
|
|||
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu |
|||
## team. Also, please note that software in universe WILL NOT receive any |
|||
## review or updates from the Ubuntu security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ trusty universe |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ trusty universe |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ trusty-updates universe |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ trusty-updates universe |
|||
|
|||
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu |
|||
## team, and may not be under a free licence. Please satisfy yourself as to |
|||
## your rights to use the software. Also, please note that software in |
|||
## multiverse WILL NOT receive any review or updates from the Ubuntu |
|||
## security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ trusty multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ trusty multiverse |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ trusty-updates multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ trusty-updates multiverse |
|||
|
|||
## N.B. software from this repository may not have been tested as |
|||
## extensively as that contained in the main release, although it includes |
|||
## newer versions of some applications which may provide useful features. |
|||
## Also, please note that software in backports WILL NOT receive any review |
|||
## or updates from the Ubuntu security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse |
|||
|
|||
## Uncomment the following two lines to add software from Canonical's |
|||
## 'partner' repository. |
|||
## This software is not part of Ubuntu, but is offered by Canonical and the |
|||
## respective vendors as a service to Ubuntu users. |
|||
# deb http://archive.canonical.com/ubuntu trusty partner |
|||
# deb-src http://archive.canonical.com/ubuntu trusty partner |
|||
|
|||
deb http://security.ubuntu.com/ubuntu trusty-security main restricted |
|||
# deb-src http://security.ubuntu.com/ubuntu trusty-security main restricted |
|||
deb http://security.ubuntu.com/ubuntu trusty-security universe |
|||
# deb-src http://security.ubuntu.com/ubuntu trusty-security universe |
|||
deb http://security.ubuntu.com/ubuntu trusty-security multiverse |
|||
# deb-src http://security.ubuntu.com/ubuntu trusty-security multiverse |
@ -0,0 +1,54 @@ |
|||
# deb http://ru.archive.ubuntu.com/ubuntu/ xenial main restricted |
|||
|
|||
# deb http://ru.archive.ubuntu.com/ubuntu/ xenial-updates main restricted |
|||
# deb http://security.ubuntu.com/ubuntu xenial-security main restricted |
|||
|
|||
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to |
|||
# newer versions of the distribution. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ xenial main restricted |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ xenial main restricted |
|||
|
|||
## Major bug fix updates produced after the final release of the |
|||
## distribution. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ xenial-updates main restricted |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ xenial-updates main restricted |
|||
|
|||
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu |
|||
## team. Also, please note that software in universe WILL NOT receive any |
|||
## review or updates from the Ubuntu security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ xenial universe |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ xenial universe |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ xenial-updates universe |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ xenial-updates universe |
|||
|
|||
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu |
|||
## team, and may not be under a free licence. Please satisfy yourself as to |
|||
## your rights to use the software. Also, please note that software in |
|||
## multiverse WILL NOT receive any review or updates from the Ubuntu |
|||
## security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ xenial multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ xenial multiverse |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ xenial-updates multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ xenial-updates multiverse |
|||
|
|||
## N.B. software from this repository may not have been tested as |
|||
## extensively as that contained in the main release, although it includes |
|||
## newer versions of some applications which may provide useful features. |
|||
## Also, please note that software in backports WILL NOT receive any review |
|||
## or updates from the Ubuntu security team. |
|||
deb http://ru.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse |
|||
# deb-src http://ru.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse |
|||
|
|||
## Uncomment the following two lines to add software from Canonical's |
|||
## 'partner' repository. |
|||
## This software is not part of Ubuntu, but is offered by Canonical and the |
|||
## respective vendors as a service to Ubuntu users. |
|||
# deb http://archive.canonical.com/ubuntu xenial partner |
|||
# deb-src http://archive.canonical.com/ubuntu xenial partner |
|||
|
|||
deb http://security.ubuntu.com/ubuntu xenial-security main restricted |
|||
# deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted |
|||
deb http://security.ubuntu.com/ubuntu xenial-security universe |
|||
# deb-src http://security.ubuntu.com/ubuntu xenial-security universe |
|||
deb http://security.ubuntu.com/ubuntu xenial-security multiverse |
|||
# deb-src http://security.ubuntu.com/ubuntu xenial-security multiverse |
@ -0,0 +1,16 @@ |
|||
#!/bin/bash |
|||
|
|||
set -e # exit on error |
|||
set -o pipefail # exit on pipeline error |
|||
set -u # treat unset variable as error |
|||
|
|||
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" |
|||
|
|||
# install packages |
|||
if [ -f $SCRIPT_DIR/package.list ]; then |
|||
#sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ |
|||
$APT_CMD update >>$OUTPUT 2>&1 && |
|||
#sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ |
|||
$APT_CMD install $APT_OPTIONS \ |
|||
$(grep -vE "^\s*#" $SCRIPT_DIR/package.list | tr "\n" " ") >>$OUTPUT 2>&1 |
|||
fi |
@ -0,0 +1,17 @@ |
|||
# since we work without modules, we install everything in one file |
|||
# main |
|||
casper |
|||
lupin-casper |
|||
discover |
|||
laptop-detect |
|||
os-prober |
|||
network-manager |
|||
net-tools |
|||
wireless-tools |
|||
# gui |
|||
xubuntu-core^ |
|||
ubiquity |
|||
ubiquity-casper |
|||
ubiquity-frontend-gtk |
|||
ubiquity-slideshow-xubuntu |
|||
ubiquity-ubuntu-artwork |
@ -0,0 +1,14 @@ |
|||
# This file should go in /etc/casper.conf |
|||
# Supported variables are: |
|||
# USERNAME, USERFULLNAME, HOST, BUILD_SYSTEM, FLAVOUR |
|||
|
|||
export USERNAME="live" |
|||
export USERFULLNAME="Live session user" |
|||
export HOST="minios" |
|||
export BUILD_SYSTEM="Ubuntu" |
|||
|
|||
# USERNAME and HOSTNAME as specified above won't be honoured and will be set to |
|||
# flavour string acquired at boot time, unless you set FLAVOUR to any |
|||
# non-empty string. |
|||
|
|||
# export FLAVOUR="Ubuntu" |
@ -0,0 +1,2 @@ |
|||
Welcome to MiniOS! \n \l |
|||
|
@ -0,0 +1 @@ |
|||
WebBrowser=google-chrome |
@ -0,0 +1,15 @@ |
|||
[Desktop Entry] |
|||
Version=1.0 |
|||
Type=Application |
|||
Exec=exo-open --launch FileManager %u |
|||
Icon=system-file-manager |
|||
StartupNotify=true |
|||
Terminal=false |
|||
Categories=Utility;X-XFCE;X-Xfce-Toplevel; |
|||
OnlyShowIn=XFCE; |
|||
X-XFCE-MimeType=inode/directory;x-scheme-handler/trash; |
|||
Name=File Manager |
|||
Name[ru]=Файловый менеджер |
|||
Comment=Browse the file system |
|||
Comment[ru]=Просмотреть файловую систему |
|||
X-XFCE-Source=file:///usr/share/applications/exo-file-manager.desktop |
@ -0,0 +1,16 @@ |
|||
[Desktop Entry] |
|||
Version=1.0 |
|||
Type=Application |
|||
Exec=exo-open --launch WebBrowser %u |
|||
Icon=web-browser |
|||
StartupNotify=true |
|||
Terminal=false |
|||
Categories=Network;X-XFCE;X-Xfce-Toplevel; |
|||
OnlyShowIn=XFCE; |
|||
X-XFCE-MimeType=x-scheme-handler/http;x-scheme-handler/https; |
|||
Name=Web Browser |
|||
Name[ru]=Веб-браузер |
|||
Comment=Browse the web |
|||
Comment[ru]=Смотреть в Интернете |
|||
X-XFCE-Source=file:///usr/share/applications/exo-web-browser.desktop |
|||
Path= |
@ -0,0 +1,14 @@ |
|||
[Desktop Entry] |
|||
Version=1.0 |
|||
Type=Application |
|||
Exec=exo-open --launch TerminalEmulator |
|||
Icon=utilities-terminal |
|||
StartupNotify=true |
|||
Terminal=false |
|||
Categories=Utility;X-XFCE;X-Xfce-Toplevel; |
|||
OnlyShowIn=XFCE; |
|||
Name=Terminal Emulator |
|||
Name[ru]=Эмулятор терминала |
|||
Comment=Use the command line |
|||
Comment[ru]=Использовать командную строку |
|||
X-XFCE-Source=file:///usr/share/applications/exo-terminal-emulator.desktop |
@ -0,0 +1,68 @@ |
|||
favorites=ubiquity.desktop |
|||
recent= |
|||
button-title=Applications Menu |
|||
button-icon=MiniOS-white |
|||
button-single-row=false |
|||
show-button-title=false |
|||
show-button-icon=true |
|||
launcher-show-name=true |
|||
launcher-show-description=false |
|||
launcher-show-tooltip=true |
|||
item-icon-size=2 |
|||
hover-switch-category=false |
|||
category-show-name=true |
|||
category-icon-size=1 |
|||
load-hierarchy=true |
|||
recent-items-max=10 |
|||
favorites-in-recent=true |
|||
display-recent-default=false |
|||
position-search-alternate=true |
|||
position-commands-alternate=false |
|||
position-categories-alternate=false |
|||
menu-width=400 |
|||
menu-height=500 |
|||
menu-opacity=100 |
|||
command-settings=xfce4-settings-manager |
|||
show-command-settings=true |
|||
command-lockscreen=xflock4 |
|||
show-command-lockscreen=true |
|||
command-switchuser=dm-tool switch-to-greeter |
|||
show-command-switchuser=false |
|||
command-logout=xfce4-session-logout |
|||
show-command-logout=true |
|||
command-menueditor=menulibre |
|||
show-command-menueditor=true |
|||
command-profile=mugshot |
|||
show-command-profile=true |
|||
search-actions=5 |
|||
|
|||
[action0] |
|||
name=Man-страницы |
|||
pattern=# |
|||
command=exo-open --launch TerminalEmulator man %s |
|||
regex=false |
|||
|
|||
[action1] |
|||
name=Web-поиск |
|||
pattern=? |
|||
command=exo-open --launch WebBrowser https://duckduckgo.com/?q=%u |
|||
regex=false |
|||
|
|||
[action2] |
|||
name=Википедия |
|||
pattern=!w |
|||
command=exo-open --launch WebBrowser https://en.wikipedia.org/wiki/%u |
|||
regex=false |
|||
|
|||
[action3] |
|||
name=Выполнить в терминале |
|||
pattern=! |
|||
command=exo-open --launch TerminalEmulator %s |
|||
regex=false |
|||
|
|||
[action4] |
|||
name=Открыть URI |
|||
pattern=^(file|http|https):\\/\\/(.*)$ |
|||
command=exo-open \\0 |
|||
regex=true |
|||
|
@ -0,0 +1,123 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
|
|||
<channel name="xfce4-panel" version="1.0"> |
|||
<property name="panels" type="uint" value="1"> |
|||
<property name="panel-0" type="empty"> |
|||
<property name="position" type="string" value="p=8;x=1109;y=1275"/> |
|||
<property name="length" type="uint" value="100"/> |
|||
<property name="position-locked" type="bool" value="true"/> |
|||
<property name="plugin-ids" type="array"> |
|||
<value type="int" value="1"/> |
|||
<value type="int" value="21"/> |
|||
<value type="int" value="23"/> |
|||
<value type="int" value="19"/> |
|||
<value type="int" value="24"/> |
|||
<value type="int" value="22"/> |
|||
<value type="int" value="2"/> |
|||
<value type="int" value="3"/> |
|||
<value type="int" value="5"/> |
|||
<value type="int" value="4"/> |
|||
<value type="int" value="7"/> |
|||
<value type="int" value="6"/> |
|||
<value type="int" value="9"/> |
|||
<value type="int" value="10"/> |
|||
<value type="int" value="11"/> |
|||
<value type="int" value="12"/> |
|||
</property> |
|||
<property name="background-style" type="uint" value="0"/> |
|||
<property name="background-alpha" type="uint" value="60"/> |
|||
<property name="size" type="uint" value="32"/> |
|||
<property name="length-adjust" type="bool" value="true"/> |
|||
<property name="span-monitors" type="bool" value="false"/> |
|||
<property name="enter-opacity" type="uint" value="100"/> |
|||
<property name="leave-opacity" type="uint" value="100"/> |
|||
<property name="mode" type="uint" value="0"/> |
|||
<property name="autohide-behavior" type="uint" value="0"/> |
|||
<property name="nrows" type="uint" value="1"/> |
|||
</property> |
|||
</property> |
|||
<property name="plugins" type="empty"> |
|||
<property name="plugin-1" type="string" value="whiskermenu"/> |
|||
<property name="plugin-2" type="string" value="tasklist"> |
|||
<property name="flat-buttons" type="bool" value="true"/> |
|||
<property name="show-handle" type="bool" value="false"/> |
|||
<property name="show-labels" type="bool" value="false"/> |
|||
</property> |
|||
<property name="plugin-3" type="string" value="separator"> |
|||
<property name="style" type="uint" value="0"/> |
|||
<property name="expand" type="bool" value="true"/> |
|||
</property> |
|||
<property name="plugin-4" type="string" value="systray"> |
|||
<property name="show-frame" type="bool" value="false"/> |
|||
<property name="size-max" type="uint" value="22"/> |
|||
<property name="names-visible" type="array"> |
|||
<value type="string" value="thunar"/> |
|||
<value type="string" value="ctsg"/> |
|||
</property> |
|||
<property name="names-hidden" type="array"> |
|||
<value type="string" value="network"/> |
|||
<value type="string" value="xfce4-power-manager"/> |
|||
<value type="string" value="сеть"/> |
|||
<value type="string" value="апплет networkmanager"/> |
|||
<value type="string" value="networkmanager applet"/> |
|||
<value type="string" value="remmina"/> |
|||
</property> |
|||
</property> |
|||
<property name="plugin-9" type="string" value="pulseaudio"> |
|||
<property name="enable-keyboard-shortcuts" type="bool" value="true"/> |
|||
<property name="enable-mpris" type="bool" value="true"/> |
|||
<property name="mixer-command" type="string" value="pavucontrol"/> |
|||
<property name="mpris-players" type="string" value="parole"/> |
|||
<property name="show-notifications" type="bool" value="true"/> |
|||
</property> |
|||
<property name="plugin-10" type="string" value="separator"> |
|||
<property name="style" type="uint" value="0"/> |
|||
<property name="expand" type="bool" value="false"/> |
|||
</property> |
|||
<property name="plugin-11" type="string" value="clock"> |
|||
<property name="digital-format" type="string" value="%d %b, %H:%M"/> |
|||
</property> |
|||
<property name="plugin-12" type="string" value="showdesktop"/> |
|||
<property name="plugin-19" type="string" value="launcher"> |
|||
<property name="items" type="array"> |
|||
<value type="string" value="16093657651.desktop"/> |
|||
</property> |
|||
</property> |
|||
<property name="plugin-21" type="string" value="separator"> |
|||
<property name="style" type="uint" value="0"/> |
|||
</property> |
|||
<property name="plugin-22" type="string" value="separator"> |
|||
<property name="style" type="uint" value="0"/> |
|||
</property> |
|||
<property name="plugin-23" type="string" value="launcher"> |
|||
<property name="items" type="array"> |
|||
<value type="string" value="16093659533.desktop"/> |
|||
</property> |
|||
<property name="show-label" type="bool" value="false"/> |
|||
<property name="disable-tooltips" type="bool" value="false"/> |
|||
</property> |
|||
<property name="plugin-24" type="string" value="launcher"> |
|||
<property name="items" type="array"> |
|||
<value type="string" value="16093659584.desktop"/> |
|||
</property> |
|||
</property> |
|||
<property name="plugin-5" type="string" value="xkb"> |
|||
<property name="display-scale" type="uint" value="50"/> |
|||
<property name="display-tooltip-icon" type="bool" value="true"/> |
|||
<property name="group-policy" type="uint" value="0"/> |
|||
<property name="display-type" type="uint" value="2"/> |
|||
<property name="display-name" type="uint" value="1"/> |
|||
</property> |
|||
<property name="plugin-7" type="string" value="statusnotifier"> |
|||
<property name="known-items" type="array"> |
|||
<value type="string" value="ctsg"/> |
|||
<value type="string" value="remmina-icon"/> |
|||
<value type="string" value="nm-applet"/> |
|||
</property> |
|||
<property name="hidden-items" type="array"> |
|||
</property> |
|||
</property> |
|||
<property name="plugin-6" type="string" value="power-manager-plugin"/> |
|||
</property> |
|||
<property name="configver" type="int" value="2"/> |
|||
</channel> |
@ -0,0 +1 @@ |
|||
Europe/Moscow |
@ -0,0 +1,140 @@ |
|||
# ~/.bashrc: executed by bash(1) for non-login shells. |
|||
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) |
|||
# for examples |
|||
|
|||
# If not running interactively, don't do anything |
|||
case $- in |
|||
*i*) ;; |
|||
*) return;; |
|||
esac |
|||
|
|||
# don't put duplicate lines or lines starting with space in the history. |
|||
# See bash(1) for more options |
|||
HISTCONTROL=ignoreboth |
|||
|
|||
# append to the history file, don't overwrite it |
|||
shopt -s histappend |
|||
|
|||
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) |
|||
HISTSIZE=1000 |
|||
HISTFILESIZE=2000 |
|||
|
|||
# check the window size after each command and, if necessary, |
|||
# update the values of LINES and COLUMNS. |
|||
shopt -s checkwinsize |
|||
|
|||
# If set, the pattern "**" used in a pathname expansion context will |
|||
# match all files and zero or more directories and subdirectories. |
|||
#shopt -s globstar |
|||
|
|||
# make less more friendly for non-text input files, see lesspipe(1) |
|||
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" |
|||
|
|||
# set variable identifying the chroot you work in (used in the prompt below) |
|||
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then |
|||
debian_chroot=$(cat /etc/debian_chroot) |
|||
fi |
|||
|
|||
# set a fancy prompt (non-color, unless we know we "want" color) |
|||
case "$TERM" in |
|||
xterm-color|*-256color) color_prompt=yes;; |
|||
esac |
|||
|
|||
# uncomment for a colored prompt, if the terminal has the capability; turned |
|||
# off by default to not distract the user: the focus in a terminal window |
|||
# should be on the output of commands, not on the prompt |
|||
#force_color_prompt=yes |
|||
|
|||
if [ -n "$force_color_prompt" ]; then |
|||
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then |
|||
# We have color support; assume it's compliant with Ecma-48 |
|||
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such |
|||
# a case would tend to support setf rather than setaf.) |
|||
color_prompt=yes |
|||
else |
|||
color_prompt= |
|||
fi |
|||
fi |
|||
|
|||
if [ "$color_prompt" = yes ]; then |
|||
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' |
|||
else |
|||
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' |
|||
fi |
|||
unset color_prompt force_color_prompt |
|||
|
|||
# If this is an xterm set the title to user@host:dir |
|||
case "$TERM" in |
|||
xterm*|rxvt*) |
|||
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" |
|||
;; |
|||
*) |
|||
;; |
|||
esac |
|||
|
|||
# enable color support of ls and also add handy aliases |
|||
if [ -x /usr/bin/dircolors ]; then |
|||
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" |
|||
alias ls='ls --color=auto' |
|||
#alias dir='dir --color=auto' |
|||
#alias vdir='vdir --color=auto' |
|||
|
|||
alias grep='grep --color=auto' |
|||
alias fgrep='fgrep --color=auto' |
|||
alias egrep='egrep --color=auto' |
|||
fi |
|||
|
|||
# colored GCC warnings and errors |
|||
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' |
|||
|
|||
# some more ls aliases |
|||
alias ll='ls -alF' |
|||
alias la='ls -A' |
|||
alias l='ls -CF' |
|||
|
|||
# Add an "alert" alias for long running commands. Use like so: |
|||
# sleep 10; alert |
|||
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' |
|||
|
|||
# Alias definitions. |
|||
# You may want to put all your additions into a separate file like |
|||
# ~/.bash_aliases, instead of adding them here directly. |
|||
# See /usr/share/doc/bash-doc/examples in the bash-doc package. |
|||
|
|||
if [ -f ~/.bash_aliases ]; then |
|||
. ~/.bash_aliases |
|||
fi |
|||
|
|||
# enable programmable completion features (you don't need to enable |
|||
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile |
|||
# sources /etc/bash.bashrc). |
|||
if ! shopt -oq posix; then |
|||
if [ -f /usr/share/bash-completion/bash_completion ]; then |
|||
. /usr/share/bash-completion/bash_completion |
|||
elif [ -f /etc/bash_completion ]; then |
|||
. /etc/bash_completion |
|||
fi |
|||
fi |
|||
|
|||
apt-get() |
|||
{ |
|||
if [ -e /var/cache/apt/pkgcache.bin ]; then |
|||
/usr/bin/apt-get "$@" |
|||
else |
|||
/usr/bin/apt-get update |
|||
/usr/bin/apt-get "$@" |
|||
fi |
|||
} |
|||
|
|||
apt() |
|||
{ |
|||
if [ -e /var/cache/apt/pkgcache.bin ]; then |
|||
/usr/bin/apt "$@" |
|||
else |
|||
/usr/bin/apt update |
|||
/usr/bin/apt "$@" |
|||
fi |
|||
} |
|||
|
|||
export -f apt-get |
|||
export -f apt |
After Width: | Height: | Size: 681 KiB |
After Width: | Height: | Size: 17 KiB |
@ -0,0 +1 @@ |
|||
/usr/share/plymouth/themes/minios-logo/minios-logo.plymouth |
@ -0,0 +1,4 @@ |
|||
[Plymouth Theme] |
|||
Name=Details |
|||
Description=Verbose fallback theme |
|||
ModuleName=details |
After Width: | Height: | Size: 326 B |
After Width: | Height: | Size: 98 B |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 3.4 KiB |
@ -0,0 +1,8 @@ |
|||
[Plymouth Theme] |
|||
Name=MiniOS Logo |
|||
Description=A theme that features a background with a logo. |
|||
ModuleName=script |
|||
|
|||
[script] |
|||
ImageDir=/usr/share/plymouth/themes/minios-logo |
|||
ScriptFile=/usr/share/plymouth/themes/minios-logo/minios-logo.script |
@ -0,0 +1,512 @@ |
|||
/************************************************************************** |
|||
* |
|||
* Copyright (C) 2011 The Xubuntu Community |
|||
* Copyright (C) 2009 Canonical Ltd. |
|||
* |
|||
* This program is free software: you can redistribute it and/or modify |
|||
* it under the terms of the GNU General Public License as published by |
|||
* the Free Software Foundation, either version 3 of the License, or |
|||
* (at your option) any later version. |
|||
* |
|||
* This program is distributed in the hope that it will be useful, |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
* GNU General Public License for more details. |
|||
* |
|||
* You should have received a copy of the GNU General Public License |
|||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
* |
|||
* Written by: Mad Nick <dr.madnick@gmail.com> |
|||
* |
|||
**************************************************************************/ |
|||
|
|||
/* |
|||
* Related to the screen */ |
|||
|
|||
screen_width = Window.GetWidth(); |
|||
screen_height = Window.GetHeight(); |
|||
screen_x = Window.GetX(); |
|||
screen_y = Window.GetY(); |
|||
|
|||
/**/ |
|||
|
|||
/* |
|||
* Images, check bits per pixel |
|||
* and load images accordingly */ |
|||
|
|||
background_image = Image("wallpaper.png"); |
|||
passw_dialog_input_image = Image("passw-dialog.png"); |
|||
bullet_image = Image("test.png"); |
|||
|
|||
bpp = Window.GetBitsPerPixel(); |
|||
|
|||
if (bpp == 4) { |
|||
|
|||
logotype_image = Image("logo_16bit.png"); |
|||
progress_meter_image = Image("progress-meter_16bit.png"); |
|||
progress_fade_image = Image("progress-fade_16bit.png"); |
|||
fsck_progress_meter_image = Image("progress-meter_16bit.png"); |
|||
fsck_progress_fade_image = Image("fsck-fade_16bit.png"); |
|||
|
|||
} |
|||
else { |
|||
|
|||
logotype_image = Image("logo.png"); |
|||
progress_meter_image = Image("progress-meter.png"); |
|||
progress_fade_image = Image("progress-fade.png"); |
|||
fsck_progress_meter_image = Image("progress-meter.png"); |
|||
fsck_progress_fade_image = Image("fsck-fade.png"); |
|||
|
|||
} |
|||
|
|||
/**/ |
|||
|
|||
/* |
|||
* Sprites */ |
|||
|
|||
ratio = screen_height / screen_width; |
|||
background_ratio = background_image.GetHeight() / background_image.GetWidth(); |
|||
factor = 0; |
|||
|
|||
if (ratio > background_ratio) { |
|||
|
|||
factor = screen_height / background_image.GetHeight(); |
|||
|
|||
} |
|||
else { |
|||
|
|||
factor = screen_width / background_image.GetWidth(); |
|||
|
|||
} |
|||
|
|||
scaled = background_image.Scale(background_image.GetWidth() * factor, background_image.GetHeight() * factor); |
|||
background_sprite = Sprite(scaled); |
|||
background_sprite.SetX(screen_x + screen_width / 2 - scaled.GetWidth() / 2); |
|||
background_sprite.SetY(screen_y + screen_height / 2 - scaled.GetHeight() / 2); |
|||
|
|||
logotype_sprite = Sprite(logotype_image); |
|||
|
|||
fsck_progress_meter_sprite = Sprite(fsck_progress_meter_image); |
|||
fsck_progress_fade_sprite = Sprite(fsck_progress_fade_image.Scale(1, fsck_progress_fade_image.GetHeight())); |
|||
|
|||
passw_dialog_input_sprite = Sprite(passw_dialog_input_image); |
|||
passw_lbl_sprite = Sprite(); |
|||
|
|||
msg_label_sprite = Sprite(); |
|||
|
|||
/**/ |
|||
|
|||
/* |
|||
* Misc */ |
|||
|
|||
counter = 0; |
|||
|
|||
fade_pos_x = (screen_width / 2) - (progress_meter_image.GetWidth() / 2); |
|||
fade_dir = 0; /* 0 = right, 1 = left */ |
|||
|
|||
fsck_running = 0; |
|||
fsck_dev_array; |
|||
fsck_dev_counter = 0; |
|||
fsck_fade_in_counter = 0; |
|||
fsck_done_fading = 0; |
|||
|
|||
stars_array; |
|||
stars_n = 0; |
|||
|
|||
//full_msg = ""; |
|||
msgs_line = [NULL,NULL,NULL,NULL,NULL]; |
|||
|
|||
/**/ |
|||
|
|||
/* |
|||
* Debug related */ |
|||
|
|||
debug = 0; |
|||
debug_sprite = Sprite(); |
|||
|
|||
fun debugOutput(str) { |
|||
|
|||
/* |
|||
* This will print to the top left corner */ |
|||
debug_sprite.SetImage(Image.Text(str)); |
|||
|
|||
} |
|||
|
|||
/**/ |
|||
|
|||
/* |
|||
* Setup the graphics properties */ |
|||
logotype_sprite.SetPosition(screen_x + (screen_width / 2) - (logotype_image.GetWidth() / 2), screen_y + (screen_height / 2) - (logotype_image.GetHeight() / 2)); |
|||
fsck_progress_meter_sprite.SetPosition(screen_x + (screen_width / 2) - (progress_meter_image.GetWidth() / 2), screen_y + (screen_height / 2) + (logotype_image.GetHeight() / 2) + 25); |
|||
fsck_progress_fade_sprite.SetPosition(screen_x + (screen_width / 2) - (progress_meter_image.GetWidth() / 2), screen_y + (screen_height / 2) + (logotype_image.GetHeight() / 2) + 25); |
|||
fsck_progress_meter_sprite.SetOpacity(0); |
|||
fsck_progress_fade_sprite.SetOpacity(0); |
|||
passw_dialog_input_sprite.SetPosition(screen_x + (screen_width / 2) - (passw_dialog_input_image.GetWidth() / 2), screen_y + (screen_height / 2) + (logotype_image.GetHeight() / 2) + 70); |
|||
passw_dialog_input_sprite.SetOpacity(0); |
|||
passw_lbl_sprite.SetOpacity(0); |
|||
|
|||
spin = 0; |
|||
|
|||
/* |
|||
* this function only goes up to 100 |
|||
* because thats all thats needed for |
|||
* the progress meter bar */ |
|||
fun atoi(str) { |
|||
|
|||
int = -1; |
|||
|
|||
for (i = 0; i <= 100; i++) { |
|||
|
|||
if (i + "" == str) { |
|||
|
|||
int = i; |
|||
|
|||
break; |
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
return int; |
|||
|
|||
} |
|||
|
|||
/* |
|||
* This handler will/can be invoked |
|||
* 50 times per second. |
|||
* |
|||
* According to the previous author of the |
|||
* splash script, without this callback |
|||
* the screen is not updated correctly */ |
|||
spinner_sprite; |
|||
spinner; |
|||
|
|||
fun refreshHandler() { |
|||
|
|||
if (spin < 3.14 * 2) { |
|||
|
|||
spin = spin + 0.1; |
|||
|
|||
} |
|||
else { |
|||
|
|||
spin = 0; |
|||
|
|||
} |
|||
|
|||
/* if fsck is running or the password is prompted, hide the spinner */ |
|||
if (fsck_running == 1 || passw_dialog_input_sprite.GetOpacity() == 1) { |
|||
|
|||
spinner_sprite.SetOpacity(0); |
|||
|
|||
} else { |
|||
|
|||
spinner = Image("spinner.png"); |
|||
spinner = spinner.Rotate(spin); |
|||
spinner_sprite = Sprite(spinner); |
|||
spinner_sprite.SetPosition(screen_x + (screen_width / 2) - (spinner.GetWidth() / 2), screen_y + (screen_height / 2) - (spinner.GetHeight() / 2) + 80); |
|||
|
|||
} |
|||
|
|||
if (fade_dir == 0) { |
|||
|
|||
counter++; |
|||
|
|||
if (counter >= 200) { |
|||
|
|||
fade_dir = 1; |
|||
|
|||
} |
|||
|
|||
} |
|||
else { |
|||
|
|||
counter--; |
|||
|
|||
if (counter <= 0) { |
|||
|
|||
fade_dir = 0; |
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
if ((fsck_running == 1) && (fsck_done_fading == 0)) { |
|||
|
|||
|
|||
fsck_progress_meter_sprite.SetOpacity(fsck_fade_in_counter); |
|||
fsck_progress_fade_sprite.SetOpacity(fsck_fade_in_counter); |
|||
|
|||
if (fsck_fade_in_counter < 1) { |
|||
|
|||
fsck_fade_in_counter+= 0.025; |
|||
|
|||
} |
|||
else { |
|||
|
|||
fsck_done_fading = 1; |
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
Plymouth.SetRefreshFunction (refreshHandler); |
|||
|
|||
/**/ |
|||
|
|||
/* |
|||
* This function will display the password related information |
|||
* when being prompt with entering a password */ |
|||
fun showPasswordHandler(prompt, stars) { |
|||
|
|||
if (passw_dialog_input_sprite.GetOpacity() == 0 && passw_lbl_sprite.GetOpacity() == 0) { |
|||
|
|||
passw_dialog_input_sprite.SetOpacity(1); |
|||
passw_lbl_sprite.SetOpacity(1); |
|||
|
|||
} |
|||
|
|||
tmp_prompt_image = Image.Text(prompt, 1, 1, 1); |
|||
|
|||
passw_lbl_sprite.SetImage(tmp_prompt_image); |
|||
passw_lbl_sprite.SetPosition(screen_x + (screen_width / 2) - (tmp_prompt_image.GetWidth() / 2), screen_y + (screen_height / 2) + (logotype_image.GetHeight() / 2) + 50); |
|||
|
|||
for(i = 0; i < stars_n; i++) { |
|||
|
|||
stars_array[i] = NULL; |
|||
|
|||
} |
|||
|
|||
stars_n = 0; |
|||
|
|||
for(i = 0; (i < stars) && (i < 15); i++) { |
|||
|
|||
stars_array[i] = Sprite(bullet_image); |
|||
stars_array[i].SetPosition(screen_x + (((screen_width / 2) - (passw_dialog_input_image.GetWidth() / 2)) + (18 * i)) + 2, screen_y + (screen_height / 2) + (logotype_image.GetHeight() / 2) + 75); |
|||
stars_n++; |
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
Plymouth.SetDisplayPasswordFunction(showPasswordHandler); |
|||
|
|||
/**/ |
|||
|
|||
fun displayNormalHandler() { |
|||
|
|||
/* |
|||
* Hide the password dialog and the bullets */ |
|||
|
|||
if (passw_dialog_input_sprite.GetOpacity() == 1) { |
|||
|
|||
passw_dialog_input_sprite.SetOpacity(0); |
|||
|
|||
} |
|||
|
|||
if (passw_lbl_sprite.GetOpacity() == 1) { |
|||
|
|||
passw_lbl_sprite.SetOpacity(0); |
|||
|
|||
} |
|||
|
|||
for(i = 0; i < stars_n; i++) { |
|||
|
|||
stars_array[i] = NULL; |
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
Plymouth.SetDisplayNormalFunction(displayNormalHandler); |
|||
|
|||
fun strlen(string) { |
|||
|
|||
i = 0; |
|||
|
|||
while (String(string).CharAt(i)) { |
|||
|
|||
i++; |
|||
|
|||
} |
|||
|
|||
return i; |
|||
|
|||
} |
|||
|
|||
/* |
|||
* This function will display the most current message */ |
|||
fun messageHandler(msg) { |
|||
|
|||
if ((msg == "") || !msg) { |
|||
|
|||
return 0; |
|||
|
|||
} |
|||
|
|||
if (msg.SubString(0, 5) == "keys:") { |
|||
|
|||
msg = msg.SubString(5, strlen(msg)); |
|||
|
|||
} |
|||
|
|||
# Get the message without the "fsckd-cancel-msg" prefix as we don't support i18n |
|||
if (msg.SubString(0, 17) == "fsckd-cancel-msg:") |
|||
msg = msg.SubString(17, strlen(msg)); |
|||
|
|||
//full_msg += msg + " "; |
|||
for(i = 4; i > 0; i--) { |
|||
|
|||
msgs_line[i] = msgs_line[i - 1]; |
|||
|
|||
} |
|||
|
|||
msgs_line[0] = Sprite(Image.Text(msg, 1, 1, 1)); |
|||
|
|||
dist = 1; |
|||
|
|||
for(i = 0; i < 5; i++) { |
|||
|
|||
if (msgs_line[i] != NULL) { |
|||
|
|||
msgs_line[i].SetPosition(screen_x + (screen_width / 2) - (msgs_line[i].GetImage().GetWidth() / 2), screen_y + (screen_height - msgs_line[i].GetImage().GetHeight()) - 20*dist); |
|||
dist++; |
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
Plymouth.SetMessageFunction(messageHandler); |
|||
|
|||
/**/ |
|||
|
|||
/* |
|||
* Handles the updates passed to the plymouth daemon |
|||
* for example the FSCK data */ |
|||
fun statusHandler(status) { |
|||
|
|||
tmp_char; |
|||
status_array[0] = ""; |
|||
elem_count = 0; |
|||
|
|||
for (i = 0; String(status).CharAt(i) != ""; i++) { |
|||
|
|||
tmp_char = String(status).CharAt(i); |
|||
|
|||
if (tmp_char != ":") { |
|||
|
|||
status_array[elem_count] += tmp_char; |
|||
|
|||
} |
|||
else { |
|||
|
|||
elem_count++; |
|||
status_array[elem_count] = ""; |
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
if (status_array[0] == "fsck") { |
|||
|
|||
already_added = 0; |
|||
|
|||
if (fsck_running == 0) { |
|||
|
|||
/* |
|||
* use the dedicated message handler for this |
|||
* since there is no messages about fsck checks |
|||
* currently... */ |
|||
messageHandler("Routine disk drive check."); |
|||
|
|||
fsck_running = 1; |
|||
|
|||
} |
|||
|
|||
for(i = 0; i < fsck_dev_counter; i++) { |
|||
|
|||
/* |
|||
* check if the device already exist and update |
|||
* the progress only in that case */ |
|||
if (fsck_dev_array[i][0] == status_array[1]) { |
|||
|
|||
fsck_dev_array[i][1] = status_array[2]; /* progress */ |
|||
already_added = 1; |
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
/* |
|||
* if the device is not added, then add it */ |
|||
if (already_added == 0) { |
|||
|
|||
fsck_dev_array[fsck_dev_counter][0] = status_array[1]; /* device */ |
|||
fsck_dev_array[fsck_dev_counter][1] = status_array[2]; /* progress */ |
|||
fsck_dev_counter++; |
|||
|
|||
} |
|||
|
|||
/* |
|||
* update the progress */ |
|||
|
|||
total = 0; |
|||
|
|||
for(i = 0; i < fsck_dev_counter; i++) { |
|||
|
|||
total += atoi(fsck_dev_array[i][1]); |
|||
|
|||
} |
|||
|
|||
if (fsck_dev_counter > 0) { |
|||
|
|||
/* |
|||
* display the total percentage */ |
|||
fsck_progress_fade_sprite.SetImage(fsck_progress_fade_image.Scale((fsck_progress_meter_image.GetWidth() / 100) * (total / fsck_dev_counter), fsck_progress_fade_image.GetHeight())); |
|||
|
|||
} |
|||
|
|||
/**/ |
|||
|
|||
/* |
|||
* if the total progress is at maximum, |
|||
* make the progress meter go away, |
|||
* we might want to fade this out... */ |
|||
if (total == (100 * fsck_dev_counter)) { |
|||
|
|||
fsck_progress_meter_sprite.SetOpacity(0); |
|||
fsck_progress_fade_sprite.SetOpacity(0); |
|||
|
|||
} |
|||
|
|||
} |
|||
|
|||
# systemd-fsckd pass fsckd:<number_devices>:<progress>:<l10n_string> |
|||
if (status_array[0] == "fsckd") { |
|||
fsck_running = 1; |
|||
|
|||
# remove ",x" as we only care about integers |
|||
progress_str = status_array[2]; |
|||
progress = atoi(progress_str.SubString(0, strlen(progress_str) - 2)); |
|||
|
|||
fsck_progress_fade_sprite.SetImage(fsck_progress_fade_image.Scale((fsck_progress_meter_image.GetWidth() / 100) * progress, fsck_progress_fade_image.GetHeight())); |
|||
|
|||
/* |
|||
* if the total progress is at maximum, |
|||
* make the progress meter go away, |
|||
* we might want to fade this out... */ |
|||
if (progress == 100) { |
|||
fsck_progress_meter_sprite.SetOpacity(0); |
|||
fsck_progress_fade_sprite.SetOpacity(0); |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
Plymouth.SetUpdateStatusFunction(statusHandler); |
|||
|
|||
/**/ |
After Width: | Height: | Size: 101 B |
After Width: | Height: | Size: 267 B |
After Width: | Height: | Size: 88 B |
After Width: | Height: | Size: 236 B |
After Width: | Height: | Size: 88 B |
After Width: | Height: | Size: 981 B |
After Width: | Height: | Size: 136 B |
After Width: | Height: | Size: 2.0 KiB |
@ -0,0 +1,11 @@ |
|||
[Plymouth Theme] |
|||
Name=MiniOS Text |
|||
Description=Text mode theme based on minios-logo theme |
|||
ModuleName=ubuntu-text |
|||
|
|||
[ubuntu-text] |
|||
title=MiniOS 2021 |
|||
black=0x000000 |
|||
white=0xffffff |
|||
brown=0x000000 |
|||
blue=0xffffff |
@ -0,0 +1 @@ |
|||
/usr/share/plymouth/themes/minios-text/minios-text.plymouth |
@ -0,0 +1,16 @@ |
|||
#!/bin/bash |
|||
|
|||
set -e # exit on error |
|||
set -o pipefail # exit on pipeline error |
|||
set -u # treat unset variable as error |
|||
|
|||
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" |
|||
|
|||
# install packages |
|||
if [ -f $SCRIPT_DIR/package.list ]; then |
|||
#sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ |
|||
$APT_CMD update >>$OUTPUT 2>&1 && |
|||
#sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ |
|||
$APT_CMD install $APT_OPTIONS $APT_OPTIONS2 \ |
|||
$(grep -vE "^\s*#" $SCRIPT_DIR/package.list | tr "\n" " ") >>$OUTPUT 2>&1 |
|||
fi |
@ -0,0 +1,41 @@ |
|||
mc |
|||
squashfs-tools |
|||
genisoimage |
|||
zip |
|||
unzip |
|||
psmisc |
|||
net-tools |
|||
alsa-utils |
|||
man |
|||
less |
|||
xz-utils |
|||
ca-certificates |
|||
openssl |
|||
acpid |
|||
acpi-support-base |
|||
powermgmt-base |
|||
bzip2 |
|||
gpart |
|||
hdparm |
|||
sdparm |
|||
mdadm |
|||
smartmontools |
|||
dosfstools |
|||
lsof |
|||
htop |
|||
gddrescue |
|||
rsync |
|||
netcat |
|||
ssh |
|||
gpm |
|||
wireless-tools |
|||
ntfs-3g |
|||
rfkill |
|||
file |
|||
dnsmasq |
|||
ntpdate |
|||
dvd+rw-tools |
|||
usb-modeswitch |
|||
pm-utils |
|||
wget |
|||
linux-image-amd64 |
@ -0,0 +1,103 @@ |
|||
#!/bin/bash |
|||
|
|||
apt-get remove --yes vim* grub* debconf-i18n installation-report |
|||
|
|||
CWD="$(pwd)" |
|||
cd /tmp |
|||
apt -y update |
|||
apt-get download acpi-support |
|||
dpkg -x acpi-support*.deb /tmp/acpisupport |
|||
cd /tmp/acpisupport |
|||
cp -aR * / |
|||
cd "$CWD" |
|||
|
|||
rm -f /etc/fstab |
|||
rm -f /etc/mtab |
|||
rm -f /etc/apt/sources.list~ |
|||
rm -Rf /etc/systemd/system/timers.target.wants |
|||
rm -f /etc/systemd/system/multi-user.target.wants/ssh.service |
|||
rm -f /etc/systemd/system/multi-user.target.wants/dnsmasq.service |
|||
|
|||
rm -f /etc/ssh/ssh_host* |
|||
|
|||
rm -f /var/backups/* |
|||
rm -f /var/cache/ldconfig/* |
|||
rm -f /var/cache/debconf/* |
|||
rm -f /var/cache/fontconfig/* |
|||
rm -f /var/lib/apt/extended_states |
|||
rm -f /var/lib/systemd/random-seed |
|||
rm -f /var/lib/apt/lists/deb.* |
|||
rm -Rf /root/.local/share/mc |
|||
rm -Rf /root/.cache |
|||
rm -f /root/.wget-hsts |
|||
|
|||
rm -f /var/lib/dpkg/*-old |
|||
rm -f /var/log/* |
|||
rm -f /var/log/*/* |
|||
rm -f /var/log/*/*/* |
|||
rm -f /var/cache/apt/archives/*.deb |
|||
rm -f /var/cache/apt/*.bin |
|||
rm -f /var/cache/debconf/*-old |
|||
rm -f /var/lib/dhcp/dhclient.leases |
|||
rm -f /root/.bash_history |
|||
rm -f /root/.wget-hsts |
|||
rm -Rf /usr/share/doc/* |
|||
rm -Rf /usr/share/info/* |
|||
rm -f /usr/share/images/fluxbox/debian-squared.jpg |
|||
rm -Rf /usr/share/fluxbox/nls/??* |
|||
rm -Rf /usr/share/gnome/help |
|||
|
|||
rm -Rf /usr/share/locale/?? |
|||
rm -Rf /usr/share/locale/??_* |
|||
rm -Rf /usr/share/locale/??@* |
|||
rm -Rf /usr/share/locale/??? |
|||
rm -Rf /usr/share/i18n/locales/*_* |
|||
rm -Rf /usr/share/man/?? |
|||
rm -Rf /usr/share/man/*_* |
|||
|
|||
rm -Rf /usr/share/icons/elementaryXubuntu-dark |
|||
rm -Rf /usr/share/icons/gnome/256x256 |
|||
|
|||
rm /usr/share/applications/compton.desktop |
|||
rm /usr/share/applications/debian-uxterm.desktop |
|||
rm /usr/share/applications/debian-xterm.desktop |
|||
rm /usr/share/applications/htop.desktop |
|||
rm /usr/share/applications/mc.desktop |
|||
rm /usr/share/applications/mcedit.desktop |
|||
rm /usr/share/applications/pcmanfm-desktop-pref.desktop |
|||
rm /usr/share/applications/python2.7.desktop |
|||
rm /usr/share/applications/python3.7.desktop |
|||
rm /usr/share/applications/vim.desktop |
|||
|
|||
|
|||
|
|||
# Unzip gzipped files (man pages), so LZMA can compress 2times better. |
|||
# First we fix symlinks, then uncompress files |
|||
# $1 = search directory |
|||
uncompress_files() |
|||
{ |
|||
local LINK LINE |
|||
|
|||
find "$1" -type l -name "*.gz" | while read LINE; do |
|||
LINK="$(readlink "$LINE" | sed -r 's/.gz$//')" |
|||
FILE="$(echo "$LINE" | sed -r 's/.gz$//')" |
|||
ln -sfn "$LINK" "$FILE" |
|||
rm -f "$LINE" |
|||
done |
|||
find "$1" -type f -name "*.gz" | xargs -r gunzip |
|||
} |
|||
|
|||
uncompress_files /etc/alternatives |
|||
uncompress_files /usr/share/man |
|||
|
|||
# remove broken links |
|||
# $1 = search directory |
|||
remove_broken_links() |
|||
{ |
|||
find "$1" -type l -exec test ! -e {} \; -print | xargs rm -vf |
|||
} |
|||
|
|||
remove_broken_links /etc/alternatives |
|||
remove_broken_links /usr/share/man |
|||
|
|||
|
@ -0,0 +1,3 @@ |
|||
0.0 0 0.0 |
|||
0 |
|||
LOCAL |
@ -0,0 +1,3 @@ |
|||
APT::Install-Recommends "0"; |
|||
APT::Install-Suggests "0"; |
|||
Acquire::Languages { "none"; } |
@ -0,0 +1,5 @@ |
|||
deb http://deb.debian.org/debian/ buster main contrib non-free |
|||
deb http://deb.debian.org/debian/ buster-updates main contrib non-free |
|||
deb http://security.debian.org/debian-security buster/updates main contrib non-free |
|||
|
|||
deb-src http://deb.debian.org/debian/ buster main contrib non-free |
@ -0,0 +1 @@ |
|||
minios |
@ -0,0 +1,7 @@ |
|||
127.0.0.1 localhost |
|||
127.0.1.1 minios |
|||
|
|||
# The following lines are desirable for IPv6 capable hosts |
|||
::1 localhost ip6-localhost ip6-loopback |
|||
ff02::1 ip6-allnodes |
|||
ff02::2 ip6-allrouters |
@ -0,0 +1,31 @@ |
|||
|
|||
|
|||
\l |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Thank you for using MiniOS. |
|||
Based on Debian GNU/Linux 10. |
|||
|
|||
:::: :::: ::::::::::: :::: ::: ::::::::::: :::::::: :::::::: |
|||
+:+:+: :+:+:+ :+: :+:+: :+: :+: :+: :+: :+: :+: |
|||
+:+ +:+:+ +:+ +:+ :+:+:+ +:+ +:+ +:+ +:+ +:+ |
|||
+#+ +:+ +#+ +#+ +#+ +:+ +#+ +#+ +#+ +:+ +#++:++#++ |
|||
+#+ +#+ +#+ +#+ +#+#+# +#+ +#+ +#+ +#+ |
|||
#+# #+# #+# #+# #+#+# #+# #+# #+# #+# #+# |
|||
### ### ########### ### #### ########### ######## ######## |
|||
|
|||
: : |
|||
: Root login name: [1;33mroot[0;29m : |
|||
: Password: [1;33mtoor[0;29m : |
|||
: User login name: [1;33mlive[0;29m : |
|||
: Password: [1;33mevil[0;29m : |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
@ -0,0 +1 @@ |
|||
/usr/share/zoneinfo/Etc/UTC |
@ -0,0 +1 @@ |
|||
|
@ -0,0 +1,34 @@ |
|||
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) |
|||
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). |
|||
|
|||
if [ "`id -u`" -eq 0 ]; then |
|||
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games" |
|||
else |
|||
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" |
|||
fi |
|||
export PATH |
|||
|
|||
if [ "${PS1-}" ]; then |
|||
if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then |
|||
# The file bash.bashrc already sets the default PS1. |
|||
# PS1='\h:\w\$ ' |
|||
if [ -f /etc/bash.bashrc ]; then |
|||
. /etc/bash.bashrc |
|||
fi |
|||
else |
|||
if [ "`id -u`" -eq 0 ]; then |
|||
PS1='# ' |
|||
else |
|||
PS1='$ ' |
|||
fi |
|||
fi |
|||
fi |
|||
|
|||
if [ -d /etc/profile.d ]; then |
|||
for i in /etc/profile.d/*.sh; do |
|||
if [ -r $i ]; then |
|||
. $i |
|||
fi |
|||
done |
|||
unset i |
|||
fi |
@ -0,0 +1,2 @@ |
|||
PermitRootLogin yes |
|||
PasswordAuthentication yes |
@ -0,0 +1 @@ |
|||
/lib/systemd/system/dhclient.service |
@ -0,0 +1 @@ |
|||
Etc/UTC |
@ -0,0 +1,140 @@ |
|||
# ~/.bashrc: executed by bash(1) for non-login shells. |
|||
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) |
|||
# for examples |
|||
|
|||
# If not running interactively, don't do anything |
|||
case $- in |
|||
*i*) ;; |
|||
*) return;; |
|||
esac |
|||
|
|||
# don't put duplicate lines or lines starting with space in the history. |
|||
# See bash(1) for more options |
|||
HISTCONTROL=ignoreboth |
|||
|
|||
# append to the history file, don't overwrite it |
|||
shopt -s histappend |
|||
|
|||
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) |
|||
HISTSIZE=1000 |
|||
HISTFILESIZE=2000 |
|||
|
|||
# check the window size after each command and, if necessary, |
|||
# update the values of LINES and COLUMNS. |
|||
shopt -s checkwinsize |
|||
|
|||
# If set, the pattern "**" used in a pathname expansion context will |
|||
# match all files and zero or more directories and subdirectories. |
|||
#shopt -s globstar |
|||
|
|||
# make less more friendly for non-text input files, see lesspipe(1) |
|||
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" |
|||
|
|||
# set variable identifying the chroot you work in (used in the prompt below) |
|||
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then |
|||
debian_chroot=$(cat /etc/debian_chroot) |
|||
fi |
|||
|
|||
# set a fancy prompt (non-color, unless we know we "want" color) |
|||
case "$TERM" in |
|||
xterm-color|*-256color) color_prompt=yes;; |
|||
esac |
|||
|
|||
# uncomment for a colored prompt, if the terminal has the capability; turned |
|||
# off by default to not distract the user: the focus in a terminal window |
|||
# should be on the output of commands, not on the prompt |
|||
#force_color_prompt=yes |
|||
|
|||
if [ -n "$force_color_prompt" ]; then |
|||
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then |
|||
# We have color support; assume it's compliant with Ecma-48 |
|||
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such |
|||
# a case would tend to support setf rather than setaf.) |
|||
color_prompt=yes |
|||
else |
|||
color_prompt= |
|||
fi |
|||
fi |
|||
|
|||
if [ "$color_prompt" = yes ]; then |
|||
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' |
|||
else |
|||
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' |
|||
fi |
|||
unset color_prompt force_color_prompt |
|||
|
|||
# If this is an xterm set the title to user@host:dir |
|||
case "$TERM" in |
|||
xterm*|rxvt*) |
|||
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" |
|||
;; |
|||
*) |
|||
;; |
|||
esac |
|||
|
|||
# enable color support of ls and also add handy aliases |
|||
if [ -x /usr/bin/dircolors ]; then |
|||
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" |
|||
alias ls='ls --color=auto' |
|||
#alias dir='dir --color=auto' |
|||
#alias vdir='vdir --color=auto' |
|||
|
|||
alias grep='grep --color=auto' |
|||
alias fgrep='fgrep --color=auto' |
|||
alias egrep='egrep --color=auto' |
|||
fi |
|||
|
|||
# colored GCC warnings and errors |
|||
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' |
|||
|
|||
# some more ls aliases |
|||
alias ll='ls -alF' |
|||
alias la='ls -A' |
|||
alias l='ls -CF' |
|||
|
|||
# Add an "alert" alias for long running commands. Use like so: |
|||
# sleep 10; alert |
|||
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' |
|||
|
|||
# Alias definitions. |
|||
# You may want to put all your additions into a separate file like |
|||
# ~/.bash_aliases, instead of adding them here directly. |
|||
# See /usr/share/doc/bash-doc/examples in the bash-doc package. |
|||
|
|||
if [ -f ~/.bash_aliases ]; then |
|||
. ~/.bash_aliases |
|||
fi |
|||
|
|||
# enable programmable completion features (you don't need to enable |
|||
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile |
|||
# sources /etc/bash.bashrc). |
|||
if ! shopt -oq posix; then |
|||
if [ -f /usr/share/bash-completion/bash_completion ]; then |
|||
. /usr/share/bash-completion/bash_completion |
|||
elif [ -f /etc/bash_completion ]; then |
|||
. /etc/bash_completion |
|||
fi |
|||
fi |
|||
|
|||
apt-get() |
|||
{ |
|||
if [ -e /var/cache/apt/pkgcache.bin ]; then |
|||
/usr/bin/apt-get "$@" |
|||
else |
|||
/usr/bin/apt-get update |
|||
/usr/bin/apt-get "$@" |
|||
fi |
|||
} |
|||
|
|||
apt() |
|||
{ |
|||
if [ -e /var/cache/apt/pkgcache.bin ]; then |
|||
/usr/bin/apt "$@" |
|||
else |
|||
/usr/bin/apt update |
|||
/usr/bin/apt "$@" |
|||
fi |
|||
} |
|||
|
|||
export -f apt-get |
|||
export -f apt |
@ -0,0 +1,58 @@ |
|||
#!/bin/bash |
|||
# Author: Tomas M. <http://www.slax.org/> |
|||
|
|||
usage() |
|||
{ |
|||
echo "" |
|||
echo "Convert directory to .sb compressed module" |
|||
echo "Usage: $0 [source_directory.sb] [[target_file.sb]]" |
|||
echo " If source_directory does not have .sb suffix and it is not 'squashfs-root'," |
|||
echo " then the source_directory itself is included in the module and" |
|||
echo " then the target_file.sb parameter is required." |
|||
echo " If target_file.sb is not specified, the source_directory is erased" |
|||
echo " and replaced by the newly generated module file." |
|||
} |
|||
|
|||
P1="$(readlink -f "$1")" |
|||
P2="$(readlink -f "$2")" |
|||
|
|||
if [ "$P1" = "$P2" ]; then |
|||
P2="" |
|||
fi |
|||
|
|||
SB=$(echo "$P1" | grep -o "[.]sb/*\$") |
|||
if [ "$(echo "$P1" | grep -o "/squashfs-root/*\$")" != "" ]; then |
|||
SB="true" |
|||
fi |
|||
|
|||
if [ "$SB" = "" ]; then |
|||
KEEP="-keep-as-directory" |
|||
if [ "$P2" = "" ]; then |
|||
usage |
|||
exit 1 |
|||
fi |
|||
else |
|||
KEEP="" |
|||
fi |
|||
|
|||
if [ ! -d "$P1" ]; then |
|||
echo "Not a directory: $P1" >&2 |
|||
exit 2 |
|||
fi |
|||
|
|||
|
|||
if [ "$P2" = "" ]; then |
|||
TARGET="$P1".sb |
|||
while [ -e "$TARGET" ]; do TARGET="$TARGET"x; done |
|||
mksquashfs "$P1" "$TARGET" -comp xz -b 1024K -always-use-fragments $KEEP >/dev/null || exit 3 |
|||
umount "$P1" 2>/dev/null |
|||
rm -Rf "$P1" |
|||
mv "$TARGET" "$P1" |
|||
else |
|||
if [ -e "$P2" ]; then |
|||
echo "Target exists: $P2" >&2 |
|||
exit 4 |
|||
fi |
|||
|
|||
mksquashfs "$P1" "$P2" -comp xz -b 1024K -always-use-fragments $KEEP >/dev/null |
|||
fi |
@ -0,0 +1,80 @@ |
|||
#!/bin/bash |
|||
|
|||
# Author: Tomas M. <http://www.linux-live.org> |
|||
# Author: crims0n. <http://minios.ru> |
|||
|
|||
CWD=$(pwd) |
|||
SOURCE=/run/initramfs/memory |
|||
TEMP=/tmp/miniosiso.$$ |
|||
REGEX='^$' |
|||
|
|||
if [ "$1" = "-e" ]; then |
|||
REGEX="$2" |
|||
shift |
|||
shift |
|||
fi |
|||
|
|||
TARGET="$(readlink -f "$1")" |
|||
|
|||
if [ "$TARGET" = "" ]; then |
|||
echo "" |
|||
echo "Generate MiniOS ISO image, adding specified modules" |
|||
echo "Regular expression is used to exclude any existing path or file with -e regex" |
|||
echo "" |
|||
echo "Usage:" |
|||
echo " $0 [[ -e regex ]] target.iso [[module.sb]] [[module.sb]] ..." |
|||
echo "" |
|||
echo "Examples:" |
|||
echo " # to create MiniOS iso without chromium.sb module:" |
|||
echo " $0 -e 'chromium' minios_without_chromium.iso" |
|||
echo "" |
|||
echo " # to create MiniOS text-mode core only:" |
|||
echo " $0 -e 'firmware|xorg|desktop|apps|chromium' minios_textmode.iso" |
|||
exit 1 |
|||
fi |
|||
|
|||
if [ -e "$SOURCE/data/minios/boot/isolinux.bin" ]; then |
|||
MINIOS=$SOURCE/data/minios |
|||
fi |
|||
|
|||
if [ -e "$SOURCE/toram/boot/isolinux.bin" ]; then |
|||
MINIOS=$SOURCE/toram |
|||
fi |
|||
|
|||
if [ "$MINIOS" = "" ]; then |
|||
echo "Cannot find boot/isolinux.bin in MiniOS data" >&2 |
|||
exit 2 |
|||
fi |
|||
|
|||
GRAFT=\ |
|||
$( |
|||
cd "$MINIOS" |
|||
find . -type f | sed -r "s:^[.]/::" | egrep -v "^boot/isolinux.(bin|boot)$" | egrep -v "^changes/" | egrep -v "$REGEX" | while read LINE; do |
|||
echo "minios/$LINE=$MINIOS/$LINE" |
|||
done |
|||
) |
|||
|
|||
# add all modules |
|||
while [ "$2" != "" ]; do |
|||
if [ ! -e "$2" ]; then |
|||
echo "File does not exist: $2" |
|||
exit 3 |
|||
fi |
|||
BAS="$(basename "$2")" |
|||
MOD="$(readlink -f "$2")" |
|||
GRAFT="$GRAFT minios/modules/$BAS=$MOD" |
|||
shift |
|||
done |
|||
|
|||
( |
|||
mkdir -p $TEMP/minios/{boot,modules,changes} |
|||
cp "$MINIOS/boot/isolinux.bin" "$TEMP/minios/boot" |
|||
cd "$TEMP" |
|||
genisoimage -o - -quiet -v -J -R -D -A minios -V minios \ |
|||
-no-emul-boot -boot-info-table -boot-load-size 4 -input-charset utf-8 \ |
|||
-b minios/boot/isolinux.bin -c minios/boot/isolinux.boot \ |
|||
-graft-points $GRAFT \ |
|||
. \ |
|||
) > "$TARGET" |
|||
|
|||
rm -Rf $TEMP |
@ -0,0 +1,86 @@ |
|||
#!/bin/bash |
|||
# Rebuild initial ramdisk with full network drivers, |
|||
# start DHCP and TFTP server in order to provide PXE service |
|||
# |
|||
# Author: Tomas M <www.slax.org> |
|||
|
|||
LIVE=/run/initramfs |
|||
FTPROOT=/var/state/dnsmasq/root |
|||
|
|||
# find out our own IP address. If more interfaces are available, use the first one |
|||
IP="$(hostname -I | cut -d " " -f 1)" |
|||
GW=$(ip route show | grep default | grep -o "via.*" | head -n 1 | cut -d " " -f 2) |
|||
|
|||
# if no IP is assigned to this computer, setup private address randomly |
|||
if [ "$IP" = "" ]; then |
|||
killall dhclient 2>/dev/null |
|||
IP="10."$(($RANDOM/130+1))"."$(($RANDOM/130+1))".1" |
|||
ifconfig $(ls -1 /sys/class/net | egrep -v '^lo$' | sort | head -n 1) $IP netmask 255.255.255.0 |
|||
fi |
|||
|
|||
# if gateway is not recognized, lets make our IP a gateway and enable forwarding |
|||
if [ "$GW" = "" ]; then |
|||
GW="$IP" |
|||
echo 1 > /proc/sys/net/ipv4/conf/all/forwarding |
|||
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding |
|||
fi |
|||
|
|||
echo Starting PXE server on $IP ... |
|||
|
|||
# calculate C class range |
|||
RANGE=$(echo $IP | cut -d "." -f 1-3) |
|||
|
|||
# make sure dnsmasq can be started |
|||
killall dnsmasq 2>/dev/null |
|||
killall busybox 2>/dev/null |
|||
rm -Rf $FTPROOT 2>/dev/null |
|||
mkdir -p $FTPROOT/{pxelinux.cfg,tmp}/ |
|||
|
|||
# create root filesystem for ftfp |
|||
cd $LIVE |
|||
( find . -print | grep -v "memory" |
|||
cd / |
|||
find /lib/modules/$(uname -r)/kernel/drivers/net | grep -v wireless |
|||
) | cpio -pvd $FTPROOT/tmp 2>/dev/null |
|||
|
|||
cp /lib/modules/$(uname -r)/modules.* $FTPROOT/tmp/lib/modules/$(uname -r) |
|||
depmod -b $FTPROOT/tmp |
|||
rm $FTPROOT/tmp/lib/initramfs_escaped |
|||
|
|||
# pack root in initramfs |
|||
cd $FTPROOT/tmp |
|||
find . -print | cpio -o -H newc 2>/dev/null | gzip -f --fast >../initrfs.img |
|||
cd .. |
|||
rm -Rf tmp |
|||
|
|||
# link files here since copying is not necessary |
|||
ln -s $(find $LIVE/memory/{data,iso,toram} 2>/dev/null | grep vmlinuz | head -n 1) $FTPROOT/vmlinuz |
|||
ln -s $(find $LIVE/memory/{data,iso,toram} 2>/dev/null | grep pxelinux.0 | head -n 1) $FTPROOT/pxelinux.0 |
|||
ln -s $(find $LIVE/memory/{data,iso,toram} 2>/dev/null | grep ldlinux.c32 | head -n 1) $FTPROOT/ldlinux.c32 |
|||
|
|||
find $LIVE/memory/{data,iso,toram} 2>/dev/null | egrep "[.]sb\$" | sort -n | while read LINE; do |
|||
BAS="$(basename "$LINE")" |
|||
ln -s $LINE "$FTPROOT/$BAS" |
|||
echo $BAS >> "$FTPROOT/PXEFILELIST" |
|||
done |
|||
|
|||
echo "This is <a href=http://www.slax.org/>Slax</a> PXE data server. PXE clients will download <a href=PXEFILELIST>file list</a>" > "$FTPROOT/index.html" |
|||
|
|||
# default pxelinux configuration. Keep xmode selection for clients the same like for the server |
|||
echo " |
|||
PROMPT 0 |
|||
DEFAULT slax |
|||
LABEL slax |
|||
KERNEL /vmlinuz |
|||
IPAPPEND 1 |
|||
APPEND initrd=/initrfs.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 $(cat /proc/cmdline | egrep -o 'slax.flags=[^ ]+' | sed -r 's:[,=]pxe::' | sed -r 's:[,=]toram::') |
|||
" > $FTPROOT/pxelinux.cfg/default |
|||
|
|||
# start the DHCP server and TFTP server |
|||
dnsmasq --enable-tftp --tftp-root=/var/state/dnsmasq/root \ |
|||
--dhcp-boot=pxelinux.0,"$IP",$IP \ |
|||
--dhcp-option=3,$GW \ |
|||
--dhcp-range=$RANGE.2,$RANGE.250,infinite --log-dhcp |
|||
|
|||
# start HTTP server at port 7529 (that are the numbers you type on your phone to write 'slax') |
|||
busybox httpd -p 7529 -h /var/state/dnsmasq/root |
@ -0,0 +1,17 @@ |
|||
#!/bin/bash |
|||
# Author: Tomas M. <http://www.slax.org/> |
|||
|
|||
if [ ! -e "$1" ]; then |
|||
echo |
|||
echo "Erase module directory created by sb2dir" |
|||
echo "Usage: $0 [source_directory.sb]" |
|||
exit 1 |
|||
fi |
|||
|
|||
if [ ! -d "$1" ]; then |
|||
echo "Directory does not exist: $1" >&2 |
|||
exit |
|||
fi |
|||
|
|||
umount "$1" 2>/dev/null |
|||
rm -Rf "$1" |
@ -0,0 +1,46 @@ |
|||
#!/bin/bash |
|||
|
|||
TMP=/tmp/changes$$ |
|||
EXCLUDE="^\$|/\$|[.]wh[.][.]wh[.]orph/|^[.]wh[.][.]wh[.]plnk/|^[.]wh[.][.]wh[.]aufs|^var/cache/|^var/backups/|^var/tmp/|^var/log/|^var/lib/apt/|^var/lib/dhcp/|^var/lib/systemd/|^sbin/fsck[.]aufs|^etc/resolv[.]conf|^root/[.]Xauthority|^root/[.]xsession-errors|^root/[.]fehbg|^root/[.]fluxbox/lastwallpaper|^root/[.]fluxbox/menu_resolution|^etc/mtab|^etc/fstab|^boot/|^dev/|^mnt/|^proc/|^run/|^sys/|^tmp/" |
|||
CHANGES=/run/initramfs/memory/changes |
|||
|
|||
if [ "$1" = "" ]; then |
|||
echo "" |
|||
echo "savechanges - save all changed files in a compressed filesystem bundle" |
|||
echo " - excluding some predefined files such as /etc/mtab," |
|||
echo " temp & log files, empty directories, apt cache, and such" |
|||
echo "" |
|||
echo "Usage:" |
|||
echo " $0 [ target_file.sb ] [ changes_directory ]" |
|||
echo "" |
|||
echo "If changes_directory is not specified, /run/initramfs/memory/changes is used." |
|||
echo "" |
|||
exit 1 |
|||
fi |
|||
|
|||
if [ ! "$2" = "" ]; then |
|||
CHANGES="$2" |
|||
fi |
|||
|
|||
# exclude the save_file itself of course |
|||
EXCLUDE="$EXCLUDE|^""$(readlink -f "$1" | cut -b 2- | sed -r "s/[.]/[.]/")""\$" |
|||
|
|||
CWD=$(pwd) |
|||
|
|||
cd $CHANGES || exit |
|||
|
|||
mkdir -p $TMP |
|||
mount -t tmpfs tmpfs $TMP |
|||
|
|||
find \( -type d -printf "%p/\n" , -not -type d -print \) \ |
|||
| sed -r "s/^[.]\\///" | egrep -v "$EXCLUDE" \ |
|||
| while read FILE; do |
|||
cp --parents -afr "$FILE" "$TMP" |
|||
done |
|||
|
|||
cd $CWD |
|||
|
|||
mksquashfs $TMP "$1" -comp xz -b 1024K -always-use-fragments -noappend |
|||
|
|||
umount $TMP |
|||
rmdir $TMP |
@ -0,0 +1,29 @@ |
|||
#!/bin/bash |
|||
|
|||
if [ "$1" = "rm" ]; then |
|||
shift |
|||
rmsbdir "$@" |
|||
exit $? |
|||
fi |
|||
|
|||
if [ "$1" = "rmdir" ]; then |
|||
shift |
|||
rmsbdir "$@" |
|||
exit $? |
|||
fi |
|||
|
|||
if [ "$1" = "conv" ]; then |
|||
shift |
|||
fi |
|||
|
|||
if [ ! -r "$1" ]; then |
|||
echo File not found "$1" |
|||
exit 1 |
|||
fi |
|||
|
|||
if [ -d "$1" ]; then |
|||
dir2sb "$@" |
|||
exit $? |
|||
fi |
|||
|
|||
sb2dir "$@" |
@ -0,0 +1,33 @@ |
|||
#!/bin/bash |
|||
# Author: Tomas M. <http://www.slax.org/> |
|||
|
|||
if [ ! -e "$1" ]; then |
|||
echo |
|||
echo "Convert .sb compressed module into directory with the same name" |
|||
echo "Usage: $0 [source_file.sb] [[optional output_directory]]" |
|||
echo " If the output_directory is specified, it must exist" |
|||
echo " If the output_directory is not specified, the name source_file.sb" |
|||
echo " is used and the directory is overmounted with tmpfs" |
|||
exit 1 |
|||
fi |
|||
|
|||
if [ ! -r "$1" ]; then |
|||
echo "File does not exist: $1" >&2 |
|||
exit |
|||
fi |
|||
|
|||
if [ "$2" = "" ]; then |
|||
SOURCE="$1".x |
|||
while [ -e "$SOURCE" ]; do SOURCE="$SOURCE"x; done |
|||
mv "$1" "$SOURCE" || exit |
|||
mkdir "$1" |
|||
mount -t tmpfs tmpfs "$1" |
|||
unsquashfs -f -dest "$1" "$SOURCE" >/dev/null || exit |
|||
rm "$SOURCE" |
|||
else |
|||
if [ ! -d "$2" ]; then |
|||
echo "Directory does not exist: $2" >&2 |
|||
exit |
|||
fi |
|||
unsquashfs -f -dest "$2" "$1" >/dev/null |
|||
fi |
@ -0,0 +1,178 @@ |
|||
#!/bin/bash |
|||
# Slax management and control script |
|||
# Author: Tomas M <http://www.slax.org/> |
|||
|
|||
# activate |
|||
# deactivate |
|||
# list |
|||
|
|||
|
|||
LIVE=/run/initramfs/memory |
|||
RAMSTORE=$LIVE/modules |
|||
|
|||
# Print error message and exit |
|||
# $1 = error message |
|||
# |
|||
die() |
|||
{ |
|||
echo "$1" >&2 |
|||
exit 1 |
|||
} |
|||
|
|||
|
|||
print_branches() |
|||
{ |
|||
local SI BUNDLE LOOP CWD |
|||
|
|||
SI="/sys/fs/aufs/$(cat /proc/mounts | grep 'aufs / aufs' | egrep -o 'si=([^,) ]+)' | tr = _)" |
|||
CWD="$(pwd)" |
|||
cd "$SI" |
|||
ls -v1 | grep -v xi_path | egrep 'br[0-9]+' | xargs cat | grep memory/bundles | rev | cut -b 4- | rev | while read BUNDLE; do |
|||
if mountpoint -q "$BUNDLE"; then |
|||
LOOP=$(cat /proc/mounts | fgrep " $BUNDLE squashfs" | cut -d " " -f 1) |
|||
echo -n "$BUNDLE" |
|||
echo -ne "\t" |
|||
losetup $LOOP | sed -r "s:.*[(]|[)].*::g" |
|||
fi |
|||
done | tac |
|||
cd "$CWD" |
|||
} |
|||
|
|||
|
|||
# Activate Slax Bundle |
|||
# $1 = file to activate |
|||
# |
|||
activate() |
|||
{ |
|||
local SB TGT BAS |
|||
|
|||
SB="$(readlink -f "$1")" |
|||
BAS="$(basename "$SB")" |
|||
|
|||
# check if file exists |
|||
if [ ! -r "$SB" ]; then |
|||
usage |
|||
die "file not found $SB" |
|||
fi |
|||
|
|||
# check if the file is part of aufs union, if yes we need to copy it outside |
|||
if df "$SB" | cut -d " " -f 1 | grep -q aufs; then |
|||
TGT="$RAMSTORE" |
|||
mkdir -p "$TGT" |
|||
if [ -r $TGT/$BAS ]; then die "File exists: $TGT/$BAS"; fi |
|||
cp -n "$SB" "$TGT/$BAS" |
|||
if [ $? -ne 0 ]; then die "Error copying file to $TGT/$BAS. Not enough free RAM or disk space?"; fi |
|||
SB="$TGT/$BAS" |
|||
fi |
|||
|
|||
# check if this particular file is already activated |
|||
if print_branches | cut -f 2 | fgrep -q "$SB"; then |
|||
exit |
|||
fi |
|||
|
|||
# mount remount,add |
|||
TGT="$LIVE/bundles/$BAS" |
|||
mkdir -p "$TGT" |
|||
|
|||
mount -n -o loop,ro "$SB" "$TGT" |
|||
if [ $? -ne 0 ]; then |
|||
die "Error mounting $SB to $TGT, perhaps corrupted download" |
|||
fi |
|||
|
|||
# add current branch to aufs union |
|||
mount -t aufs -o remount,add:1:"$TGT" aufs / |
|||
if [ $? -ne 0 ]; then |
|||
umount "$TGT" |
|||
rmdir "$TGT" |
|||
die "Error attaching bundle filesystem to Slax" |
|||
fi |
|||
|
|||
echo "Slax Bundle activated: $BAS" |
|||
} |
|||
|
|||
|
|||
# Deactivate Slax bundle of the given name |
|||
# $1 = path to bundle file, or its name |
|||
# |
|||
deactivate() |
|||
{ |
|||
local BUNDLES SB MATCH LOOP LOOPFILE |
|||
|
|||
BUNDLES=$LIVE/bundles |
|||
MODULES=$LIVE/modules |
|||
SB="$(basename "$1")" |
|||
|
|||
rmdir "$BUNDLES/$SB" 2>/dev/null # this fails unless the dir is |
|||
rmdir "$BUNDLES/$SB.sb" 2>/dev/null # forgotten there empty. It's safe this way |
|||
|
|||
if [ ! -d "$BUNDLES/$SB" ]; then |
|||
# we don't have real filename match, lets try to add .sb extension |
|||
if [ ! -d "$BUNDLES/$SB.sb" ]; then |
|||
# no, still no match. Lets use some guesswork |
|||
SB=$(print_branches | cut -f 2 | egrep -o "/[0-9]+-$SB.sb\$" | tail -n 1 | xargs -r basename) |
|||
else |
|||
SB="$SB.sb" |
|||
fi |
|||
fi |
|||
|
|||
if [ "$SB" = "" -o ! -d "$BUNDLES/$SB" ]; then |
|||
die "can't find active slax bundle $1" |
|||
fi |
|||
|
|||
echo "Attempting to deactivate Slax bundle $SB..." |
|||
mount -t aufs -o remount,verbose,del:"$BUNDLES/$SB" aufs / 2>/dev/null |
|||
if [ $? -ne 0 ]; then |
|||
die "Unable to deactivate Slax Bundle - still in use. See dmesg for more." |
|||
fi |
|||
|
|||
# remember what loop device was the bundle mounted to, it may be needed later |
|||
LOOP="$(cat /proc/mounts | fgrep " $BUNDLES/$SB " | cut -d " " -f 1)" |
|||
LOOPFILE="$(losetup "$LOOP" | cut -d " " -f 3 | sed -r 's:^.|.$::g')" |
|||
|
|||
umount "$BUNDLES/$SB" 2>/dev/null |
|||
if [ $? -ne 0 ]; then |
|||
die "Unable to umount Slax bundle loop-mount $BUNDLES/$SB" |
|||
fi |
|||
rmdir "$BUNDLES/$SB" |
|||
|
|||
# free the loop device manually since umount fails to do that if the bundle was activated on boot |
|||
losetup -d "$LOOP" 2>/dev/null |
|||
|
|||
if echo "$LOOPFILE" | grep -q $RAMSTORE; then |
|||
rm -f $LOOPFILE |
|||
fi |
|||
|
|||
echo "Slax Bundle deactivated: $SB" |
|||
} |
|||
|
|||
|
|||
usage() |
|||
{ |
|||
echo "Usage: $0 [ activate | deactivate | list ] [ file.sb ]" >&2 |
|||
if [ "$1" != "" ]; then |
|||
echo "$1" >&2 |
|||
fi |
|||
} |
|||
|
|||
|
|||
if [ "$1" = "" ]; then |
|||
usage |
|||
die |
|||
fi |
|||
|
|||
if [ "$1" = "activate" ]; then |
|||
activate "$2" |
|||
fi |
|||
|
|||
if [ "$1" = "deactivate" ]; then |
|||
deactivate "$2" |
|||
fi |
|||
|
|||
if [ "$1" = "list" ]; then |
|||
print_branches |
|||
fi |
|||
|
|||
if [ "$1" = "savechanges" ]; then |
|||
shift |
|||
savechanges "$@" |
|||
fi |
@ -0,0 +1,11 @@ |
|||
#!/bin/bash |
|||
if [ "$#" -lt 1 ]; then |
|||
echo "Usage: sudo [command] [arguments]" |
|||
exit 1 |
|||
fi |
|||
|
|||
if [ "$UID" = 0 ]; then |
|||
exec "$@" |
|||
fi |
|||
|
|||
echo "Sudo is not installed. Run the command as root or install sudo." |
@ -0,0 +1,38 @@ |
|||
[Unit] |
|||
Description=Load AppArmor profiles |
|||
DefaultDependencies=no |
|||
Before=sysinit.target |
|||
After=local-fs.target |
|||
After=systemd-journald-audit.socket |
|||
RequiresMountsFor=/var/cache/apparmor |
|||
AssertPathIsReadWrite=/sys/kernel/security/apparmor/.load |
|||
ConditionSecurity=apparmor |
|||
Documentation=man:apparmor(7) |
|||
Documentation=https://gitlab.com/apparmor/apparmor/wikis/home/ |
|||
|
|||
# Don't start this unit on the Ubuntu Live CD |
|||
ConditionPathExists=!/rofs/etc/apparmor.d |
|||
|
|||
# Don't start this unit on the Debian Live CD when using overlayfs |
|||
ConditionPathExists=!/run/live/overlay/work |
|||
|
|||
# Don't start this unit on Slax Live CD |
|||
ConditionPathExists=!/run/initramfs/lib/livekitlib |
|||
|
|||
[Service] |
|||
Type=oneshot |
|||
ExecStart=/lib/apparmor/apparmor.systemd reload |
|||
ExecReload=/lib/apparmor/apparmor.systemd reload |
|||
|
|||
# systemd maps 'restart' to 'stop; start' which means removing AppArmor confinement |
|||
# from running processes (and not being able to re-apply it later). |
|||
# Upstream systemd developers refused to implement an option that allows overriding |
|||
# this behaviour, therefore we have to make ExecStop a no-op to error out on the |
|||
# safe side. |
|||
# |
|||
# If you really want to unload all AppArmor profiles, run aa-teardown |
|||
ExecStop=/bin/true |
|||
RemainAfterExit=yes |
|||
|
|||
[Install] |
|||
WantedBy=sysinit.target |
@ -0,0 +1,16 @@ |
|||
[Unit] |
|||
Description=DHCP Client |
|||
Documentation=man:dhclient(8) |
|||
Wants=network.target |
|||
After=network-pre.target systemd-sysctl.service systemd-modules-load.service |
|||
Before=network.target shutdown.target network-online.target |
|||
ConditionPathExists=!/run/initramfs/net.up.flag |
|||
|
|||
[Service] |
|||
Type=forking |
|||
ExecStart=-/bin/sh -c 'udevadm settle && dhclient -nw' |
|||
PIDFile=/run/dhclient.pid |
|||
|
|||
[Install] |
|||
WantedBy=multi-user.target |
|||
WantedBy=network-online.target |
@ -0,0 +1,54 @@ |
|||
# This file is part of systemd. |
|||
# |
|||
# systemd is free software; you can redistribute it and/or modify it |
|||
# under the terms of the GNU Lesser General Public License as published by |
|||
# the Free Software Foundation; either version 2.1 of the License, or |
|||
# (at your option) any later version. |
|||
|
|||
[Unit] |
|||
Description=Getty on %I |
|||
Documentation=man:agetty(8) man:systemd-getty-generator(8) |
|||
Documentation=http://0pointer.de/blog/projects/serial-console.html |
|||
After=systemd-user-sessions.service plymouth-quit-wait.service |
|||
After=rc-local.service |
|||
|
|||
# If additional gettys are spawned during boot then we should make |
|||
# sure that this is synchronized before getty.target, even though |
|||
# getty.target didn't actually pull it in. |
|||
Before=getty.target |
|||
IgnoreOnIsolate=yes |
|||
|
|||
# IgnoreOnIsolate causes issues with sulogin, if someone isolates |
|||
# rescue.target or starts rescue.service from multi-user.target or |
|||
# graphical.target. |
|||
Conflicts=rescue.service |
|||
Before=rescue.service |
|||
|
|||
# On systems without virtual consoles, don't start any getty. Note |
|||
# that serial gettys are covered by serial-getty@.service, not this |
|||
# unit. |
|||
ConditionPathExists=/dev/tty0 |
|||
|
|||
[Service] |
|||
# the VT is cleared by TTYVTDisallocate |
|||
ExecStart=-/sbin/agetty --noclear %I $TERM |
|||
Type=idle |
|||
Restart=always |
|||
RestartSec=0 |
|||
UtmpIdentifier=%I |
|||
TTYPath=/dev/%I |
|||
TTYReset=yes |
|||
TTYVHangup=yes |
|||
#TM do not clear VT: |
|||
TTYVTDisallocate=no |
|||
KillMode=process |
|||
IgnoreSIGPIPE=no |
|||
SendSIGHUP=yes |
|||
|
|||
# Unset locale for the console getty since the console has problems |
|||
# displaying some internationalized messages. |
|||
Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION= |
|||
|
|||
[Install] |
|||
WantedBy=getty.target |
|||
DefaultInstance=tty1 |
@ -0,0 +1,18 @@ |
|||
[Unit] |
|||
Description=OpenBSD Secure Shell server |
|||
After=network.target auditd.service |
|||
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run |
|||
|
|||
[Service] |
|||
EnvironmentFile=-/etc/default/ssh |
|||
ExecStartPre=-/bin/sh -c 'if ! ls /etc/ssh/ssh_host_* >/dev/null 2>&1; then /usr/sbin/dpkg-reconfigure openssh-server; fi' |
|||
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS |
|||
ExecReload=/bin/kill -HUP $MAINPID |
|||
KillMode=process |
|||
Restart=on-failure |
|||
RestartPreventExitStatus=255 |
|||
Type=notify |
|||
|
|||
[Install] |
|||
WantedBy=multi-user.target |
|||
Alias=sshd.service |
@ -0,0 +1,2 @@ |
|||
# we don't care about loop* and ram* devices |
|||
KERNEL=="[!lr]*", SUBSYSTEM=="block", RUN+="/usr/sbin/slax-automount %r/%k" |
@ -0,0 +1,23 @@ |
|||
#!/bin/bash |
|||
|
|||
LOCK=/run/lock/gtk-bookmark-update-lock |
|||
BOOKMARKS=/root/.gtk-bookmarks |
|||
|
|||
# make sure to avoid parallel execution by using mkdir as lock |
|||
while true; do |
|||
mkdir $LOCK 2>/dev/null |
|||
if [ $? = 0 ]; then |
|||
break |
|||
fi |
|||
done |
|||
|
|||
cat $BOOKMARKS | fgrep -v ///media/ | fgrep -v "file:/// /" | egrep -v '^$' > $BOOKMARKS.tmp 2>/dev/null |
|||
ls -1 /media | sort | while read LINE; do |
|||
echo "file:///media/$LINE $LINE" >> $BOOKMARKS.tmp |
|||
done |
|||
|
|||
echo "file:/// /" >> $BOOKMARKS.tmp # add root at the beginning |
|||
|
|||
mv -f $BOOKMARKS.tmp $BOOKMARKS |
|||
|
|||
rmdir $LOCK |
@ -0,0 +1,67 @@ |
|||
#!/bin/bash |
|||
# Recreate fstab entries in /etc/fstab and make /media directories |
|||
# This script is called by udev rules, see /lib/udev/rules.d/ |
|||
# |
|||
# Author: Tomas M <http://slax.linux-live.org/> |
|||
|
|||
# Variables available in udev environment: |
|||
# $ACTION (eg: add, remove) |
|||
# $DEVNAME (full device node name including path) |
|||
# $DEVTYPE (eg: disk) |
|||
# $ID_FS_TYPE (eg: ext3) |
|||
# $MAJOR and $MINOR numbers |
|||
# $SUBSYSTEM (eg: block) |
|||
|
|||
PATH=$PATH:/usr/bin:/usr/sbin:/bin:/sbin |
|||
|
|||
BAS="$(basename "$DEVNAME")" |
|||
UNIT="media-$BAS.mount" |
|||
MNT="/media/$BAS" |
|||
TARGET="/etc/systemd/system/$UNIT" |
|||
|
|||
|
|||
# exit if noautomount boot parameter is present |
|||
if cat /proc/cmdline | grep -q noautomount; then |
|||
exit |
|||
fi |
|||
|
|||
# exit if 'automount' boot parameter is missing |
|||
if ! cat /proc/cmdline | grep -q automount; then |
|||
exit |
|||
fi |
|||
|
|||
|
|||
if [ "$ACTION" = "add" -o "$ACTION" = "change" ]; then |
|||
if [ ! -r "$TARGET" ]; then # skip if exists |
|||
|
|||
if [ "$ID_FS_TYPE" != "" -a "$(cat /proc/filesystems | grep "$ID_FS_TYPE")" != "" ]; then |
|||
|
|||
mkdir -p "$MNT" |
|||
|
|||
echo "[Unit]" >$TARGET |
|||
echo "Description=Disk $BAS" >>$TARGET |
|||
echo "" >>$TARGET |
|||
echo "[Mount]" >>$TARGET |
|||
echo "What=$DEVNAME" >>$TARGET |
|||
echo "Where=$MNT" >>$TARGET |
|||
echo "Type=$ID_FS_TYPE" >>$TARGET |
|||
echo "Options=defaults" >>$TARGET |
|||
echo "" >>$TARGET |
|||
echo "[Install]" >>$TARGET |
|||
echo "WantedBy=multi-user.target" >>$TARGET |
|||
|
|||
systemctl enable $UNIT |
|||
systemctl start $UNIT |
|||
|
|||
gtk-bookmarks-update |
|||
DISPLAY=:0.0 pcmanfm -n file://$MNT >/dev/null 2>&1 |
|||
fi |
|||
fi |
|||
fi |
|||
|
|||
if [ "$ACTION" = "remove" ]; then |
|||
systemctl disable $UNIT |
|||
rm "$TARGET" |
|||
rmdir "$MNT" |
|||
gtk-bookmarks-update |
|||
fi |
@ -0,0 +1,42 @@ |
|||
UI vesamenu.c32 |
|||
|
|||
PROMPT 0 |
|||
TIMEOUT 40 |
|||
|
|||
MENU CLEAR |
|||
MENU HIDDEN |
|||
MENU HIDDENKEY Enter default |
|||
MENU BACKGROUND /minios/boot/bootlogo.png |
|||
|
|||
MENU WIDTH 80 |
|||
MENU MARGIN 20 |
|||
MENU ROWS 5 |
|||
MENU TABMSGROW 9 |
|||
MENU CMDLINEROW 9 |
|||
MENU HSHIFT 0 |
|||
MENU VSHIFT 19 |
|||
|
|||
MENU COLOR BORDER 30;40 #00000000 #00000000 none |
|||
MENU COLOR SEL 47;30 #FF000000 #FFFFFFFF none |
|||
MENU COLOR UNSEL 37;40 #FFFFFFFF #FF000000 none |
|||
MENU COLOR TABMSG 32;40 #FF60CA00 #FF000000 none |
|||
|
|||
F1 help.txt /minios/boot/zblack.png |
|||
|
|||
MENU AUTOBOOT Press Esc for options, automatic boot in # second{,s} ... |
|||
MENU TABMSG [F1] help [Tab] cmdline > |
|||
|
|||
LABEL default |
|||
MENU LABEL Run MiniOS Slax (Persistent changes) |
|||
KERNEL /minios/boot/vmlinuz |
|||
APPEND vga=normal initrd=/minios/boot/initrfs.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 consoleblank=0 slax.flags=perch,automount net.ifnames=0 biosdevname=0 |
|||
|
|||
LABEL live |
|||
MENU LABEL Run MiniOS Slax (Fresh start) |
|||
KERNEL /minios/boot/vmlinuz |
|||
APPEND vga=normal initrd=/minios/boot/initrfs.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 consoleblank=0 slax.flags=automount net.ifnames=0 biosdevname=0 |
|||
|
|||
LABEL toram |
|||
MENU LABEL Run MiniOS Slax (Copy to RAM) |
|||
KERNEL /minios/boot/vmlinuz |
|||
APPEND vga=normal initrd=/minios/boot/initrfs.img load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 consoleblank=0 slax.flags=toram net.ifnames=0 biosdevname=0 |
@ -0,0 +1,106 @@ |
|||
#!/bin/sh |
|||
exec /bin/bash "$(dirname "$0")"/bootinst.sh |
|||
exec /bin/sh "$(dirname "$0")"/bootinst.sh |
|||
|
|||
@echo off |
|||
COLOR 2F |
|||
cls |
|||
echo =============================================================================== |
|||
echo. |
|||
echo ________.__ |
|||
echo / ____/^| ^| _____ ___ ___ |
|||
echo \____ \ ^| ^| \__ \ \ \/ / |
|||
echo / \^| ^|__/ __ \_^> ^< |
|||
echo /______ /^|____(____ /__/\_ \ |
|||
echo \/ \/ \/ |
|||
echo. |
|||
echo =============================================================================== |
|||
echo. |
|||
|
|||
set DISK=none |
|||
set BOOTFLAG=boot666s.tmp |
|||
|
|||
:checkPrivileges |
|||
mkdir "%windir%\AdminCheck" 2>nul |
|||
if '%errorlevel%' == '0' rmdir "%windir%\AdminCheck" & goto gotPrivileges else goto getPrivileges |
|||
|
|||
:getPrivileges |
|||
ECHO. |
|||
ECHO Administrator Rights are required |
|||
ECHO Invoking UAC for Privilege Escalation |
|||
ECHO. |
|||
runadmin.vbs %0 |
|||
goto end |
|||
|
|||
:gotPrivileges |
|||
CD /D "%~dp0" |
|||
|
|||
echo This file is used to determine current drive letter. It should be deleted. >\%BOOTFLAG% |
|||
if not exist \%BOOTFLAG% goto readOnly |
|||
|
|||
echo.|set /p=wait please |
|||
for %%d in ( C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do echo.|set /p=. & if exist %%d:\%BOOTFLAG% set DISK=%%d |
|||
echo . . . . . . . . . . |
|||
del \%BOOTFLAG% |
|||
if %DISK% == none goto DiskNotFound |
|||
|
|||
wscript.exe samedisk.vbs %windir% %DISK% |
|||
if %ERRORLEVEL% == 99 goto refuseDisk |
|||
|
|||
echo Setting up boot record for %DISK%: ... |
|||
|
|||
if %OS% == Windows_NT goto setupNT |
|||
goto setup95 |
|||
|
|||
:setupNT |
|||
\slax\boot\syslinux.exe -maf -d /slax/boot/ %DISK%: |
|||
if %ERRORLEVEL% == 0 goto setupEFI |
|||
goto errorFound |
|||
|
|||
:setup95 |
|||
\slax\boot\syslinux.com -maf -d /slax/boot/ %DISK%: |
|||
if %ERRORLEVEL% == 0 goto setupEFI |
|||
goto errorFound |
|||
|
|||
:setupEFI |
|||
mkdir %DISK%:\EFI\Boot |
|||
copy \slax\boot\EFI\Boot\* %DISK%:\EFI\Boot |
|||
goto setupDone |
|||
|
|||
:setupDone |
|||
echo Installation finished. |
|||
goto pauseit |
|||
|
|||
:errorFound |
|||
color 4F |
|||
echo. |
|||
echo Error installing boot loader |
|||
goto pauseit |
|||
|
|||
:refuseDisk |
|||
color 4F |
|||
echo. |
|||
echo Directory %DISK%:\slax\boot\ seems to be on the same physical disk as your Windows. |
|||
echo Installing bootloader would harm your Windows and thus is disabled. |
|||
echo Please use different drive and try again. |
|||
goto pauseit |
|||
|
|||
:readOnly |
|||
color 4F |
|||
echo. |
|||
echo You're starting this installer from a read-only media, this will not work. |
|||
goto pauseit |
|||
|
|||
:DiskNotFound |
|||
color 4F |
|||
echo. |
|||
echo Error: can't discover current drive letter |
|||
|
|||
:pauseit |
|||
if "%1" == "auto" goto end |
|||
|
|||
echo. |
|||
echo Press any key... |
|||
pause > nul |
|||
|
|||
:end |
@ -0,0 +1,158 @@ |
|||
#!/bin/sh |
|||
# |
|||
# This script will setup booting from disk (USB or harddrive) |
|||
# |
|||
# If you see this file in a text editor instead of getting it executed, |
|||
# then it is missing executable permissions (chmod). You can try to set |
|||
# exec permissions for this file by using: chmod a+x bootinst.sh |
|||
# Alternatively, you may try to run bootinst.bat file instead |
|||
# |
|||
# Scrolling down will reveal the actual code of this script. |
|||
# |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
# if we're running this from X, re-run the script in konsole or xterm |
|||
if [ "$DISPLAY" != "" ]; then |
|||
if [ "$1" != "--rex" -a "$2" != "--rex" ]; then |
|||
konsole --nofork -e /bin/sh $0 --rex 2>/dev/null || xterm -e /bin/sh $0 --rex 2>/dev/null || /bin/sh $0 --rex 2>/dev/null |
|||
exit |
|||
fi |
|||
fi |
|||
|
|||
# make sure I am root |
|||
if [ "$UID" != "0" -a "$UID" != "" ]; then |
|||
echo "" |
|||
echo "You are not root. You must run bootinst script as root." |
|||
echo "The bootinst script needs direct access to your boot device." |
|||
echo "Use sudo or kdesudo or similar wrapper to execute this." |
|||
read junk |
|||
exit 1 |
|||
fi |
|||
|
|||
# change working directory to dir from which we are started |
|||
CWD="$(pwd)" |
|||
BOOT="$(dirname "$0")" |
|||
BOOT="$(realpath "$BOOT" 2>/dev/null || echo $BOOT)" |
|||
cd "$BOOT" |
|||
|
|||
# find out device and mountpoint |
|||
PART="$(df . | tail -n 1 | tr -s " " | cut -d " " -f 1)" |
|||
DEV="$(echo "$PART" | sed -r "s:[0-9]+\$::" | sed -r "s:([0-9])[a-z]+\$:\\1:i")" #" |
|||
|
|||
# check if disk is already bootable. Mostly for Windows discovery |
|||
if [ "$(fdisk -l "$DEV" | fgrep "$DEV" | fgrep "*")" != "" ]; then |
|||
echo "" |
|||
echo "Partition $PART seems to be located on a physical disk," |
|||
echo "which is already bootable. If you continue, your drive $DEV" |
|||
echo "will boot only Slax by default." |
|||
echo "Press [Enter] to continue, or [Ctrl+C] to abort..." |
|||
read junk |
|||
fi |
|||
|
|||
ARCH=$(uname -m) |
|||
if [ "$ARCH" = "x86_64" ]; then ARCH=64; else ARCH=32; fi |
|||
EXTLINUX=extlinux.x$ARCH |
|||
|
|||
if [ ! -x ./$EXTLINUX ]; then |
|||
# extlinux is not executable. There are two possible reasons: |
|||
# either the fs is mounted with noexec, or file perms are wrong. |
|||
# Try to fix both, no fail on error yet |
|||
mount -o remount,exec $DEV |
|||
chmod a+x ./$EXTLINUX |
|||
fi |
|||
|
|||
if [ ! -x ./$EXTLINUX ]; then |
|||
# extlinux is still not executable. As a last try, copy it to .exe |
|||
# because the partition may be mounted with showexec option, from which |
|||
# we probably can't escape by remount |
|||
cp -f ./$EXTLINUX ./extlinux.exe |
|||
EXTLINUX=extlinux.exe |
|||
fi |
|||
|
|||
# install syslinux bootloader |
|||
echo "* attempting to install bootloader to $BOOT..." |
|||
|
|||
./"$EXTLINUX" --install "$BOOT" |
|||
|
|||
if [ $? -ne 0 ]; then |
|||
echo "Error installing boot loader." |
|||
echo "Read the errors above and press enter to exit..." |
|||
read junk |
|||
exit 1 |
|||
fi |
|||
|
|||
if [ "$DEV" != "$PART" ]; then |
|||
# Setup MBR on the first block |
|||
echo "* setup MBR on $DEV" |
|||
dd bs=440 count=1 conv=notrunc if="$BOOT/mbr.bin" of="$DEV" 2>/dev/null |
|||
|
|||
# Toggle bootable flags |
|||
echo "* set bootable flag for $PART" |
|||
PART="$(echo "$PART" | sed -r "s:.*[^0-9]::")" |
|||
( |
|||
fdisk -l "$DEV" | fgrep "*" | fgrep "$DEV" | cut -d " " -f 1 \ |
|||
| sed -r "s:.*[^0-9]::" | xargs -I '{}' echo -ne "a\n{}\n" |
|||
echo a |
|||
echo $PART |
|||
echo w |
|||
) | fdisk $DEV >/dev/null 2>&1 |
|||
fi |
|||
|
|||
# UEFI boot loader |
|||
mkdir -p "$BOOT/../../EFI" |
|||
mv "EFI/Boot" "$BOOT/../../EFI/" |
|||
|
|||
echo "Boot installation finished." |
|||
echo "Press Enter..." |
|||
read junk |
|||
cd "$CWD" |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 10 KiB |
@ -0,0 +1,19 @@ |
|||
|
|||
Welcome |
|||
|
|||
If you need to edit boot command line (for advanced users), hit [Tab]. |
|||
When finished, press [Enter]. |
|||
|
|||
|
|||
Keep changes persistent |
|||
|
|||
Save all filesystem modifications to 'changes' directory and restore |
|||
those changes next time you boot. Only usable while running from a |
|||
writable media such as USB device or hard disk. |
|||
|
|||
|
|||
Copy to RAM |
|||
|
|||
Copies all data to memory during startup so you can eject the boot device. |
|||
Requires enough RAM to store all modules and to run the system. |
|||
|