v0.1.0: Initial SamiOS archiso profile
- Basic archiso profile with CLI-only system - Custom 'samios' CLI tool for system management - BIOS (syslinux) and UEFI (grub) boot support - System configuration (hostname, locale, network) - Automated script for first boot - Mirror selection utility - Documentation (README, installation guide, roadmap) - Font policy: excludes fonts with '7777' in name Next: automated installer, desktop environment, testing
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# SamiOS - A Custom Arch Linux Distribution
|
||||
|
||||
## Overview
|
||||
SamiOS is a custom Linux distribution based on Arch Linux, designed as a Windows replacement for personal use.
|
||||
|
||||
## Features
|
||||
- Rolling release (Arch-based)
|
||||
- Custom CLI tool (`samios`) for system management
|
||||
- Automated installation scripts
|
||||
- Custom branding and configuration
|
||||
- Font policy: excludes fonts with "7777" in the name
|
||||
|
||||
## Building from Source
|
||||
|
||||
### Prerequisites
|
||||
```bash
|
||||
# On Arch Linux
|
||||
sudo pacman -S archiso git
|
||||
```
|
||||
|
||||
### Clone and Build
|
||||
```bash
|
||||
git clone https://git.sami/sami7777/samios.git
|
||||
cd samios/packaging/archiso
|
||||
sudo ./build.sh
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
### From ISO
|
||||
1. Boot from the generated ISO
|
||||
2. Run the automated installer:
|
||||
```bash
|
||||
samios install
|
||||
```
|
||||
|
||||
### Manual Installation
|
||||
See `docs/installation.md` for detailed instructions.
|
||||
|
||||
## CLI Tool
|
||||
The `samios` command provides system management:
|
||||
```bash
|
||||
samios status # Show system status
|
||||
samios update # Update system
|
||||
samios install # Install packages
|
||||
samios fonts # Manage fonts
|
||||
samios help # Show all commands
|
||||
```
|
||||
|
||||
## Font Policy
|
||||
SamiOS excludes any fonts with "7777" in the filename as these are personal branding fonts.
|
||||
|
||||
## Development
|
||||
This project is under active development. See `docs/roadmap.md` for planned features.
|
||||
|
||||
## License
|
||||
TBD
|
||||
@@ -0,0 +1,100 @@
|
||||
# SamiOS Installation Guide
|
||||
|
||||
## Prerequisites
|
||||
- SamiOS ISO (built from source or downloaded)
|
||||
- USB drive (2GB+) or CD/DVD
|
||||
- Target machine with at least 2GB RAM
|
||||
- 20GB+ storage space
|
||||
|
||||
## Creating Bootable Media
|
||||
|
||||
### Linux
|
||||
```bash
|
||||
# Find your USB device
|
||||
lsblk
|
||||
|
||||
# Write ISO to USB (replace /dev/sdX with your device)
|
||||
sudo dd if=samios-*.iso of=/dev/sdX bs=4M status=progress oflag=sync
|
||||
```
|
||||
|
||||
### Windows
|
||||
Use Rufus or Etcher to write the ISO to USB.
|
||||
|
||||
## Installation Process
|
||||
|
||||
### 1. Boot from Media
|
||||
- Insert USB/CD and boot the target machine
|
||||
- Select "SamiOS Live" from the boot menu
|
||||
|
||||
### 2. Connect to Network (if needed)
|
||||
```bash
|
||||
# WiFi
|
||||
iwctl
|
||||
[iwd]# device list
|
||||
[iwd]# station wlan0 scan
|
||||
[iwd]# station wlan0 get-networks
|
||||
[iwd]# station wlan0 connect YOUR_SSID
|
||||
[iwd]# exit
|
||||
|
||||
# Ethernet (auto-connects)
|
||||
```
|
||||
|
||||
### 3. Run Installer
|
||||
```bash
|
||||
samios install
|
||||
```
|
||||
|
||||
The installer will:
|
||||
- Partition the disk
|
||||
- Install base system
|
||||
- Configure bootloader
|
||||
- Set up user account
|
||||
|
||||
### 4. Reboot
|
||||
```bash
|
||||
reboot
|
||||
```
|
||||
|
||||
Remove installation media and boot into SamiOS.
|
||||
|
||||
## Post-Installation
|
||||
|
||||
### Update System
|
||||
```bash
|
||||
samios update
|
||||
```
|
||||
|
||||
### Install Additional Packages
|
||||
```bash
|
||||
samios install firefox
|
||||
samios install vim
|
||||
```
|
||||
|
||||
### Configure System
|
||||
```bash
|
||||
samios status
|
||||
samios fonts
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Boot Issues
|
||||
- Try "Copy to RAM" option from boot menu
|
||||
- Check BIOS/UEFI settings (Secure Boot may need to be disabled)
|
||||
|
||||
### Network Issues
|
||||
```bash
|
||||
# Check network status
|
||||
ip addr
|
||||
ping -c 3 archlinux.org
|
||||
|
||||
# Restart NetworkManager
|
||||
systemctl restart NetworkManager
|
||||
```
|
||||
|
||||
### Installation Fails
|
||||
- Check disk space: `df -h`
|
||||
- Check logs: `journalctl -xe`
|
||||
|
||||
## Support
|
||||
For issues and questions, please open an issue on the SamiOS repository.
|
||||
@@ -0,0 +1,67 @@
|
||||
# SamiOS Roadmap
|
||||
|
||||
## Phase 1: Foundation (Current)
|
||||
- [x] Basic archiso profile
|
||||
- [x] CLI tool (`samios`)
|
||||
- [x] Boot configuration (BIOS + UEFI)
|
||||
- [x] System configuration files
|
||||
- [ ] Automated installer
|
||||
- [ ] Font management system
|
||||
- [ ] Build automation
|
||||
|
||||
## Phase 2: Desktop Environment
|
||||
- [ ] KDE Plasma integration
|
||||
- [ ] Display manager (SDDM)
|
||||
- [ ] Graphics drivers (NVIDIA/AMD/Intel)
|
||||
- [ ] Audio setup (PipeWire)
|
||||
- [ ] Network management GUI
|
||||
- [ ] System settings GUI
|
||||
|
||||
## Phase 3: Applications
|
||||
- [ ] Web browser (Firefox/Chromium)
|
||||
- [ ] File manager (Dolphin)
|
||||
- [ ] Terminal emulator (Konsole)
|
||||
- [ ] Text editor (Kate)
|
||||
- [ ] Office suite (LibreOffice)
|
||||
- [ ] Media player (VLC)
|
||||
- [ ] Image viewer (Gwenview)
|
||||
|
||||
## Phase 4: System Tools
|
||||
- [ ] Package manager GUI (Pamac)
|
||||
- [ ] System monitor
|
||||
- [ ] Backup tool
|
||||
- [ ] Firewall configuration
|
||||
- [ ] User management GUI
|
||||
|
||||
## Phase 5: Polish
|
||||
- [ ] Custom themes
|
||||
- [ ] SamiOS branding
|
||||
- [ ] Documentation
|
||||
- [ ] Testing suite
|
||||
- [ ] Release automation
|
||||
|
||||
## Phase 6: Advanced Features
|
||||
- [ ] Dual-boot setup tool
|
||||
- [ ] System recovery tools
|
||||
- [ ] Snapshot/rollback (Btrfs)
|
||||
- [ ] Container support (Docker/Podman)
|
||||
- [ ] Virtual machine support
|
||||
|
||||
## Long-term Goals
|
||||
- [ ] Custom kernel with optimizations
|
||||
- [ ] SamiOS-specific packages
|
||||
- [ ] Community repository
|
||||
- [ ] Hardware certification
|
||||
- [ ] Enterprise features
|
||||
|
||||
## Timeline
|
||||
- Phase 1: Q4 2024
|
||||
- Phase 2: Q1 2025
|
||||
- Phase 3: Q2 2025
|
||||
- Phase 4-6: Ongoing
|
||||
|
||||
## Notes
|
||||
- Prioritize stability over features
|
||||
- Keep system lightweight
|
||||
- Maintain Arch compatibility
|
||||
- Focus on daily-driver usability
|
||||
@@ -0,0 +1,26 @@
|
||||
# SamiOS Build System
|
||||
|
||||
## Overview
|
||||
This directory contains the archiso profile for building SamiOS ISO images.
|
||||
|
||||
## Structure
|
||||
- `profiledef.sh` - ISO profile definition
|
||||
- `packages.x86_64` - Package list for x86_64 architecture
|
||||
- `build.sh` - Build script
|
||||
- `airootfs/` - Files to overlay on the live system
|
||||
- `syslinux/` - Syslinux bootloader configuration
|
||||
- `grub/` - GRUB bootloader configuration
|
||||
- `efiboot/` - EFI boot configuration
|
||||
|
||||
## Building
|
||||
```bash
|
||||
./build.sh
|
||||
```
|
||||
|
||||
## Requirements
|
||||
- Arch Linux (or compatible)
|
||||
- archiso package
|
||||
- Root privileges
|
||||
|
||||
## Output
|
||||
ISO files are generated in the `out/` directory.
|
||||
@@ -0,0 +1,2 @@
|
||||
# SamiOS fstab (live system uses tmpfs)
|
||||
# tmpfs /tmp tmpfs nodev,nosuid,mode=1777 0 0
|
||||
@@ -0,0 +1,2 @@
|
||||
# SamiOS hostname
|
||||
samios
|
||||
@@ -0,0 +1,4 @@
|
||||
# SamiOS /etc/hosts
|
||||
127.0.0.1 localhost
|
||||
::1 localhost
|
||||
127.0.1.1 samios.localdomain samios
|
||||
@@ -0,0 +1,2 @@
|
||||
# SamiOS issue (login banner)
|
||||
SamiOS \r (\l)
|
||||
@@ -0,0 +1,2 @@
|
||||
# SamiOS locale
|
||||
LANG=en_US.UTF-8
|
||||
@@ -0,0 +1,4 @@
|
||||
# SamiOS motd
|
||||
Welcome to SamiOS!
|
||||
|
||||
Type 'samios help' for available commands.
|
||||
@@ -0,0 +1,2 @@
|
||||
# SamiOS root password (empty for live system, user sets during install)
|
||||
root::14871::::::
|
||||
@@ -0,0 +1,2 @@
|
||||
# SamiOS keymap
|
||||
KEYMAP=us
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
# SamiOS automated script - runs on first boot
|
||||
|
||||
# Set up locale
|
||||
locale-gen
|
||||
localectl set-locale LANG=en_US.UTF-8
|
||||
|
||||
# Enable NetworkManager
|
||||
systemctl enable NetworkManager
|
||||
|
||||
# Show welcome message
|
||||
echo "SamiOS is ready!"
|
||||
echo "Type 'samios help' to get started"
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
# SamiOS mirror selection script
|
||||
|
||||
if [ -t 0 ]; then
|
||||
echo "Select a mirror country:"
|
||||
select country in "United States" "United Kingdom" "Germany" "Japan" "Australia" "All"; do
|
||||
case $country in
|
||||
"United States" )
|
||||
reflector --country "United States" --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
|
||||
break
|
||||
;;
|
||||
"United Kingdom" )
|
||||
reflector --country "United Kingdom" --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
|
||||
break
|
||||
;;
|
||||
"Germany" )
|
||||
reflector --country "Germany" --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
|
||||
break
|
||||
;;
|
||||
"Japan" )
|
||||
reflector --country "Japan" --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
|
||||
break
|
||||
;;
|
||||
"Australia" )
|
||||
reflector --country "Australia" --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
|
||||
break
|
||||
;;
|
||||
"All" )
|
||||
reflector --latest 20 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
echo "Mirror list updated!"
|
||||
else
|
||||
echo "This script requires an interactive terminal"
|
||||
exit 1
|
||||
fi
|
||||
+140
@@ -0,0 +1,140 @@
|
||||
#!/bin/bash
|
||||
# SamiOS CLI - System management tool
|
||||
|
||||
set -e
|
||||
|
||||
VERSION="0.1.0"
|
||||
CONFIG_DIR="/etc/samios"
|
||||
LOG_FILE="/var/log/samios.log"
|
||||
|
||||
log() {
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE"
|
||||
}
|
||||
|
||||
cmd_help() {
|
||||
cat << EOF
|
||||
SamiOS CLI v${VERSION}
|
||||
|
||||
Usage: samios <command> [options]
|
||||
|
||||
Commands:
|
||||
version Show version
|
||||
status Show system status
|
||||
update Update system packages
|
||||
install <pkg> Install a package
|
||||
remove <pkg> Remove a package
|
||||
services List services
|
||||
fonts Manage fonts
|
||||
help Show this help
|
||||
|
||||
Examples:
|
||||
samios version
|
||||
samios status
|
||||
samios update
|
||||
samios install firefox
|
||||
EOF
|
||||
}
|
||||
|
||||
cmd_version() {
|
||||
echo "SamiOS v${VERSION}"
|
||||
echo "Kernel: $(uname -r)"
|
||||
echo "Architecture: $(uname -m)"
|
||||
}
|
||||
|
||||
cmd_status() {
|
||||
echo "=== SamiOS System Status ==="
|
||||
echo "Version: ${VERSION}"
|
||||
echo "Hostname: $(hostname)"
|
||||
echo "Kernel: $(uname -r)"
|
||||
echo "Uptime: $(uptime -p)"
|
||||
echo
|
||||
echo "=== Disk Usage ==="
|
||||
df -h / | tail -n 1
|
||||
echo
|
||||
echo "=== Memory ==="
|
||||
free -h | grep "Mem:"
|
||||
echo
|
||||
echo "=== Network ==="
|
||||
ip -br addr show | grep -v "lo"
|
||||
}
|
||||
|
||||
cmd_update() {
|
||||
log "Starting system update"
|
||||
pacman -Syu --noconfirm
|
||||
log "Update complete"
|
||||
}
|
||||
|
||||
cmd_install() {
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: samios install <package>"
|
||||
exit 1
|
||||
fi
|
||||
log "Installing $1"
|
||||
pacman -S --noconfirm "$1"
|
||||
}
|
||||
|
||||
cmd_remove() {
|
||||
if [ -z "$1" ]; then
|
||||
echo "Usage: samios remove <package>"
|
||||
exit 1
|
||||
fi
|
||||
log "Removing $1"
|
||||
pacman -R --noconfirm "$1"
|
||||
}
|
||||
|
||||
cmd_services() {
|
||||
systemctl list-units --type=service --state=running
|
||||
}
|
||||
|
||||
cmd_fonts() {
|
||||
echo "=== Installed Fonts ==="
|
||||
fc-list | wc -l
|
||||
echo "fonts installed"
|
||||
echo
|
||||
echo "=== Font Policy ==="
|
||||
echo "Excluded: fonts with '7777' in name (personal branding)"
|
||||
echo
|
||||
|
||||
# Check for forbidden fonts
|
||||
if fc-list | grep -i "7777" > /dev/null; then
|
||||
echo "WARNING: Found fonts with '7777' in name:"
|
||||
fc-list | grep -i "7777"
|
||||
else
|
||||
echo "✓ No forbidden fonts detected"
|
||||
fi
|
||||
}
|
||||
|
||||
# Main command dispatcher
|
||||
case "${1:-}" in
|
||||
version)
|
||||
cmd_version
|
||||
;;
|
||||
status)
|
||||
cmd_status
|
||||
;;
|
||||
update)
|
||||
cmd_update
|
||||
;;
|
||||
install)
|
||||
shift
|
||||
cmd_install "$@"
|
||||
;;
|
||||
remove)
|
||||
shift
|
||||
cmd_remove "$@"
|
||||
;;
|
||||
services)
|
||||
cmd_services
|
||||
;;
|
||||
fonts)
|
||||
cmd_fonts
|
||||
;;
|
||||
help|--help|-h|"")
|
||||
cmd_help
|
||||
;;
|
||||
*)
|
||||
echo "Unknown command: $1"
|
||||
echo "Run 'samios help' for usage"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
# SamiOS ISO build script
|
||||
|
||||
set -e
|
||||
|
||||
PROFILE_DIR="$(dirname "$0")"
|
||||
WORK_DIR="${WORK_DIR:-/tmp/samios-build}"
|
||||
OUT_DIR="${OUT_DIR:-$PROFILE_DIR/out}"
|
||||
|
||||
echo "Building SamiOS ISO..."
|
||||
echo "Profile: $PROFILE_DIR"
|
||||
echo "Work directory: $WORK_DIR"
|
||||
echo "Output directory: $OUT_DIR"
|
||||
|
||||
# Clean previous build
|
||||
rm -rf "$WORK_DIR"
|
||||
mkdir -p "$WORK_DIR" "$OUT_DIR"
|
||||
|
||||
# Build the ISO using archiso
|
||||
mkarchiso -v -w "$WORK_DIR" -o "$OUT_DIR" "$PROFILE_DIR"
|
||||
|
||||
echo "Build complete!"
|
||||
echo "ISO location: $OUT_DIR/samios-*.iso"
|
||||
@@ -0,0 +1,4 @@
|
||||
title SamiOS Live
|
||||
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux
|
||||
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
|
||||
options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%
|
||||
@@ -0,0 +1,3 @@
|
||||
default samios.conf
|
||||
timeout 5
|
||||
editor 0
|
||||
@@ -0,0 +1,14 @@
|
||||
# SamiOS GRUB configuration
|
||||
|
||||
set default=0
|
||||
set timeout=5
|
||||
|
||||
menuentry "SamiOS Live" {
|
||||
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%
|
||||
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
|
||||
}
|
||||
|
||||
menuentry "SamiOS Live (Copy to RAM)" {
|
||||
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram
|
||||
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
# SamiOS minimal CLI packages
|
||||
# Core system
|
||||
base
|
||||
base-devel
|
||||
linux
|
||||
linux-firmware
|
||||
|
||||
# Bootloader
|
||||
grub
|
||||
efibootmgr
|
||||
|
||||
# Essential utilities
|
||||
bash
|
||||
coreutils
|
||||
filesystem
|
||||
util-linux
|
||||
shadow
|
||||
sudo
|
||||
|
||||
# Networking
|
||||
networkmanager
|
||||
dhclient
|
||||
openssh
|
||||
curl
|
||||
wget
|
||||
|
||||
# Filesystem tools
|
||||
dosfstools
|
||||
e2fsprogs
|
||||
btrfs-progs
|
||||
gptfdisk
|
||||
|
||||
# System tools
|
||||
systemd-sysvcompat
|
||||
arch-install-scripts
|
||||
pacman-contrib
|
||||
|
||||
# SamiOS branding
|
||||
samios-branding
|
||||
|
||||
# Excluded: fonts with 7777 in name (personal branding)
|
||||
# Excluded: desktop environment (CLI-only for now)
|
||||
@@ -0,0 +1,18 @@
|
||||
# SamiOS pacman configuration for ISO build
|
||||
# Based on Arch Linux pacman.conf
|
||||
|
||||
[options]
|
||||
HoldPkg = pacman glibc
|
||||
Architecture = auto
|
||||
CheckSpace
|
||||
SigLevel = Required DatabaseOptional
|
||||
LocalFileSigLevel = Optional
|
||||
|
||||
[core]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[extra]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[multilib]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
# shellcheck disable=SC2034
|
||||
|
||||
# SamiOS archiso profile definition
|
||||
# Minimal CLI-based Arch Linux with SamiOS branding
|
||||
|
||||
iso_name="samios"
|
||||
iso_label="SAMIOS_$(date +%Y%m)"
|
||||
iso_publisher="Sami Ahmed <sami@sami-ahmed.net>"
|
||||
iso_application="SamiOS Live/Rescue CD"
|
||||
iso_version="0.1.0"
|
||||
install_dir="arch"
|
||||
buildmodes=('iso')
|
||||
bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito' 'uefi-x64.grub.esp' 'uefi-x64.grub.eltorito')
|
||||
arch="x86_64"
|
||||
pacman_conf="pacman.conf"
|
||||
airootfs_image_type="squashfs"
|
||||
airootfs_image_tool_options=('-comp' 'xz' '-Xbcj' 'x86' '-b' '1M' '-Xdict-size' '1M')
|
||||
bootstrap_tarball_compression=('zstd' '-c' '-T0' '--ultra' '-20')
|
||||
file_permissions=(
|
||||
["/etc/shadow"]="0:0:400"
|
||||
["/etc/gshadow"]="0:0:400"
|
||||
["/root"]="0:0:750"
|
||||
["/root/.automated_script.sh"]="0:0:755"
|
||||
["/root/.gnupg"]="0:0:700"
|
||||
["/usr/local/bin/choose-mirror"]="0:0:755"
|
||||
["/usr/local/bin/samios"]="0:0:755"
|
||||
)
|
||||
@@ -0,0 +1,20 @@
|
||||
DEFAULT samios
|
||||
SERIAL 0 115200
|
||||
|
||||
LABEL samios
|
||||
TEXT HELP
|
||||
Boot SamiOS live system
|
||||
ENDTEXT
|
||||
MENU LABEL SamiOS Live
|
||||
LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux
|
||||
INITRD /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
|
||||
APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%
|
||||
|
||||
LABEL samios
|
||||
TEXT HELP
|
||||
Boot SamiOS live system with copy-to-RAM
|
||||
ENDTEXT
|
||||
MENU LABEL SamiOS Live (Copy to RAM)
|
||||
LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux
|
||||
INITRD /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux.img
|
||||
APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram
|
||||
Reference in New Issue
Block a user