Initial commit: Adastra VTL Linux Distribution- Complete build system for VTL-focused Linux distro- mhvtl integration with 4 LTO drives and media changer- iSCSI target configuration for network connectivity- Automated installation and configuration scripts- Comprehensive documentation (architecture, installation, configuration)- Systemd service files and kernel tuning- Quick start wizard for easy setup
This commit is contained in:
176
build/build-iso.sh
Executable file
176
build/build-iso.sh
Executable file
@@ -0,0 +1,176 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
||||
ISO_DIR="$PROJECT_ROOT/iso"
|
||||
BUILD_DIR="$PROJECT_ROOT/build"
|
||||
WORK_DIR="/tmp/vtl-build"
|
||||
|
||||
DISTRO_NAME="VTL-Linux"
|
||||
DISTRO_VERSION="1.0"
|
||||
ISO_NAME="${DISTRO_NAME}-${DISTRO_VERSION}-x86_64.iso"
|
||||
|
||||
echo "=========================================="
|
||||
echo " VTL Linux Distro Builder"
|
||||
echo " Version: $DISTRO_VERSION"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "Error: This script must be run as root"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[1/8] Checking dependencies..."
|
||||
REQUIRED_PACKAGES="debootstrap squashfs-tools xorriso isolinux syslinux-common"
|
||||
for pkg in $REQUIRED_PACKAGES; do
|
||||
if ! dpkg -l | grep -q "^ii $pkg"; then
|
||||
echo "Installing $pkg..."
|
||||
apt-get update -qq
|
||||
apt-get install -y $pkg
|
||||
fi
|
||||
done
|
||||
|
||||
echo "[2/8] Cleaning previous build..."
|
||||
rm -rf "$WORK_DIR"
|
||||
mkdir -p "$WORK_DIR"/{chroot,iso/{live,isolinux}}
|
||||
|
||||
echo "[3/8] Creating base system with debootstrap..."
|
||||
debootstrap --arch=amd64 --variant=minbase bookworm "$WORK_DIR/chroot" http://deb.debian.org/debian/
|
||||
|
||||
echo "[4/8] Configuring chroot environment..."
|
||||
mount --bind /dev "$WORK_DIR/chroot/dev"
|
||||
mount --bind /dev/pts "$WORK_DIR/chroot/dev/pts"
|
||||
mount --bind /proc "$WORK_DIR/chroot/proc"
|
||||
mount --bind /sys "$WORK_DIR/chroot/sys"
|
||||
|
||||
cat > "$WORK_DIR/chroot/etc/apt/sources.list" << EOF
|
||||
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
|
||||
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
|
||||
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
|
||||
EOF
|
||||
|
||||
echo "[5/8] Installing VTL packages in chroot..."
|
||||
chroot "$WORK_DIR/chroot" /bin/bash << 'CHROOT_EOF'
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update
|
||||
apt-get install -y \
|
||||
linux-image-amd64 \
|
||||
live-boot \
|
||||
systemd-sysv \
|
||||
network-manager \
|
||||
openssh-server \
|
||||
sudo \
|
||||
vim \
|
||||
curl \
|
||||
wget \
|
||||
net-tools \
|
||||
iproute2 \
|
||||
iptables \
|
||||
sg3-utils \
|
||||
lsscsi \
|
||||
tgt \
|
||||
open-iscsi \
|
||||
build-essential \
|
||||
git \
|
||||
zlib1g-dev \
|
||||
libibverbs-dev \
|
||||
libconfig-dev \
|
||||
libssl-dev \
|
||||
uuid-dev \
|
||||
mtx \
|
||||
mt-st \
|
||||
lsscsi
|
||||
|
||||
apt-get clean
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
echo "vtl-linux" > /etc/hostname
|
||||
|
||||
cat > /etc/hosts << EOF
|
||||
127.0.0.1 localhost
|
||||
127.0.1.1 vtl-linux
|
||||
EOF
|
||||
|
||||
useradd -m -s /bin/bash -G sudo vtladmin
|
||||
echo "vtladmin:vtladmin" | chpasswd
|
||||
echo "root:vtlroot" | chpasswd
|
||||
|
||||
systemctl enable NetworkManager
|
||||
systemctl enable ssh
|
||||
systemctl enable tgt
|
||||
|
||||
mkdir -p /opt/mhvtl
|
||||
mkdir -p /etc/mhvtl
|
||||
|
||||
CHROOT_EOF
|
||||
|
||||
echo "[6/8] Copying configuration files..."
|
||||
cp -r "$PROJECT_ROOT/config/"* "$WORK_DIR/chroot/tmp/" 2>/dev/null || true
|
||||
cp -r "$PROJECT_ROOT/scripts/"* "$WORK_DIR/chroot/usr/local/bin/" 2>/dev/null || true
|
||||
cp -r "$PROJECT_ROOT/systemd/"* "$WORK_DIR/chroot/etc/systemd/system/" 2>/dev/null || true
|
||||
|
||||
echo "[7/8] Creating squashfs filesystem..."
|
||||
mksquashfs "$WORK_DIR/chroot" "$WORK_DIR/iso/live/filesystem.squashfs" -e boot -comp xz
|
||||
|
||||
cp "$WORK_DIR/chroot/boot"/vmlinuz-* "$WORK_DIR/iso/live/vmlinuz"
|
||||
cp "$WORK_DIR/chroot/boot"/initrd.img-* "$WORK_DIR/iso/live/initrd"
|
||||
|
||||
cat > "$WORK_DIR/iso/isolinux/isolinux.cfg" << 'EOF'
|
||||
UI menu.c32
|
||||
PROMPT 0
|
||||
TIMEOUT 100
|
||||
DEFAULT vtl-linux
|
||||
|
||||
MENU TITLE VTL Linux Boot Menu
|
||||
|
||||
LABEL vtl-linux
|
||||
MENU LABEL ^Start VTL Linux
|
||||
KERNEL /live/vmlinuz
|
||||
APPEND initrd=/live/initrd boot=live quiet splash
|
||||
|
||||
LABEL vtl-linux-safe
|
||||
MENU LABEL Start VTL Linux (^Safe Mode)
|
||||
KERNEL /live/vmlinuz
|
||||
APPEND initrd=/live/initrd boot=live quiet splash nomodeset
|
||||
|
||||
LABEL vtl-linux-install
|
||||
MENU LABEL ^Install VTL Linux to Disk
|
||||
KERNEL /live/vmlinuz
|
||||
APPEND initrd=/live/initrd boot=live quiet splash toram
|
||||
EOF
|
||||
|
||||
cp /usr/lib/ISOLINUX/isolinux.bin "$WORK_DIR/iso/isolinux/"
|
||||
cp /usr/lib/syslinux/modules/bios/*.c32 "$WORK_DIR/iso/isolinux/"
|
||||
|
||||
echo "[8/8] Creating ISO image..."
|
||||
xorriso -as mkisofs \
|
||||
-iso-level 3 \
|
||||
-full-iso9660-filenames \
|
||||
-volid "${DISTRO_NAME}" \
|
||||
-eltorito-boot isolinux/isolinux.bin \
|
||||
-eltorito-catalog isolinux/boot.cat \
|
||||
-no-emul-boot \
|
||||
-boot-load-size 4 \
|
||||
-boot-info-table \
|
||||
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
|
||||
-output "$ISO_DIR/$ISO_NAME" \
|
||||
"$WORK_DIR/iso"
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo " Build Complete!"
|
||||
echo "=========================================="
|
||||
echo "ISO Location: $ISO_DIR/$ISO_NAME"
|
||||
echo "ISO Size: $(du -h "$ISO_DIR/$ISO_NAME" | cut -f1)"
|
||||
echo ""
|
||||
echo "Cleaning up..."
|
||||
umount "$WORK_DIR/chroot/dev/pts" 2>/dev/null || true
|
||||
umount "$WORK_DIR/chroot/dev" 2>/dev/null || true
|
||||
umount "$WORK_DIR/chroot/proc" 2>/dev/null || true
|
||||
umount "$WORK_DIR/chroot/sys" 2>/dev/null || true
|
||||
rm -rf "$WORK_DIR"
|
||||
|
||||
echo "Done!"
|
||||
Reference in New Issue
Block a user