7 changed files with 83 additions and 105 deletions
@ -1,19 +1,22 @@ |
|||
# MiniOS Live |
|||
|
|||
Этот скрипт собирает загружаемый ISO образ MiniOS. |
|||
|
|||
Поддерживаемые команды : setup_host build_bootstrap build_chroot build_live build_iso |
|||
**Поддерживаемые команды:** `setup_host build_bootstrap build_chroot build_live build_iso` |
|||
|
|||
**Синтаксис:** `./install [start_cmd] [-] [end_cmd]` |
|||
|
|||
Синтаксис: |
|||
$./install [start_cmd] [-] [end_cmd] |
|||
$ minios-install [start_cmd] [-] [end_cmd] |
|||
>запуск от start_cmd до end_cmd |
|||
>если start_cmd опущен, выполняются все команды, начиная с первой |
|||
>если end_cmd опущен, выполняются все команды до последней |
|||
>введите одну команду, чтобы запустить определенную команду |
|||
>введите '-' как единственный аргумент для запуска всех команд |
|||
- запуск от start_cmd до end_cmd |
|||
- если start_cmd опущен, выполняются все команды, начиная с первой |
|||
- если end_cmd опущен, выполняются все команды до последней |
|||
- введите одну команду, чтобы запустить определенную команду |
|||
- введите '-' как единственный аргумент для запуска всех команд |
|||
|
|||
Примеры:./install build_bootstrap - build_chroot |
|||
./install - build_chroot |
|||
./install build_bootstrap - |
|||
./install cleanup |
|||
./install build_iso |
|||
./install - |
|||
|
@ -0,0 +1,9 @@ |
|||
#!/bin/bash |
|||
|
|||
apt-get update |
|||
apt-get install -y \ |
|||
xorg |
|||
xterm \ |
|||
blackbox |
|||
|
|||
savechanges /02-xorg.sb |
@ -1,79 +1,48 @@ |
|||
#!/bin/bash |
|||
|
|||
CWD=$(pwd) |
|||
SOURCE=/run/initramfs/memory |
|||
TEMP=/tmp |
|||
REGEX='^$' |
|||
|
|||
if [ "$1" = "-e" ]; then |
|||
REGEX="$2" |
|||
shift |
|||
shift |
|||
fi |
|||
. /run/initramfs/lib/config || exit 1 |
|||
|
|||
TARGET="$(readlink -f "$1")" |
|||
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 [ "$TARGET" = "" ]; then |
|||
if [ "$1" = "" ]; 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 "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 [[ -e regex ]] target.iso [[module.sb]] [[module.sb]] ..." |
|||
echo " $0 [ target_file.sb ] [ changes_directory ]" |
|||
echo "" |
|||
echo "Examples:" |
|||
echo " # to create MiniOS iso without chromium.sb module:" |
|||
echo " $0 -e 'chromium' minios_without_chromium.iso" |
|||
echo "If changes_directory is not specified, /run/initramfs/memory/changes is used." |
|||
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/boot/syslinux/isolinux.bin" ]; then |
|||
MINIOS=$SOURCE/data |
|||
fi |
|||
|
|||
if [ "$MINIOS" = "" ]; then |
|||
echo "Cannot find boot/isolinux.bin in MiniOS data" >&2 |
|||
exit 2 |
|||
if [ ! "$2" = "" ]; then |
|||
CHANGES="$2" |
|||
fi |
|||
|
|||
VER=2021 |
|||
DATE=$(date +%Y-%m-%d-%H-%M) |
|||
DIR=$MINIOS ; ISO=$TEMP/minios_$DATE.iso |
|||
[ -n "$1" ] && ISO="$1" |
|||
# exclude the save_file itself of course |
|||
EXCLUDE="$EXCLUDE|^""$(readlink -f "$1" | cut -b 2- | sed -r "s/[.]/[.]/")""\$" |
|||
|
|||
B="-b boot/syslinux/isolinux.bin -c boot/syslinux/boot.cat" |
|||
C="-no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot" |
|||
CWD=$(pwd) |
|||
|
|||
if [ -x "$(which xorriso 2> /dev/null)" ]; then |
|||
M="xorriso -as mkisofs -isohybrid-mbr $DIR/boot/syslinux/isohdpfx.bin" |
|||
D=" -isohybrid-gpt-basdat -e" |
|||
elif [ -x "$(which genisoimage 2> /dev/null)" ]; then |
|||
M=genisoimage ; D="-efi-boot" |
|||
else |
|||
M=mkisofs ; D="-eltorito-platform 0xEF -eltorito-boot" |
|||
fi |
|||
cd $CHANGES || exit |
|||
|
|||
E="EFI/boot/efiboot.img -no-emul-boot" |
|||
mkdir -p $TMP |
|||
mount -t tmpfs tmpfs $TMP |
|||
|
|||
VER="MiniOS $VER" |
|||
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 |
|||
|
|||
if ! $M -hide-rr-moved -f -r -J -l -V "$VER" -A "$VER" \ |
|||
$B $C $D $E -o $ISO $DIR ; then |
|||
exit 1 |
|||
fi |
|||
cd $CWD |
|||
|
|||
echo ">>> $ISO created" |
|||
|
|||
# xorriso has hybridization built-in |
|||
if [ "$(echo $M | cut -d" " -f1)" != "xorriso" ]; then |
|||
if [ -x "$(which isohybrid 2> /dev/null)" ]; then |
|||
isohybrid -uefi $ISO |
|||
else |
|||
echo ">>> No isohybrid to hybridize this ISO" |
|||
fi |
|||
fi |
|||
mksquashfs $TMP "$1" -comp $COMP_TYPE -b 1024K -always-use-fragments -noappend |
|||
|
|||
exit 0 |
|||
umount $TMP |
|||
rmdir $TMP |
Loading…
Reference in new issue