commit 23a5e434f80a7023d06ea8999f97e2e60442878f Author: 0xTux <0xTux@pm.me> Date: Fri Feb 11 23:59:50 2022 +0530 initial commit diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a4c3478 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Appletneo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..5cd92f5 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# tuxOS + +64-bit source code for the tuxOS diff --git a/airootfs/etc/fonts/conf.d/10-powerline-symbols.conf b/airootfs/etc/fonts/conf.d/10-powerline-symbols.conf new file mode 100644 index 0000000..7e34a12 --- /dev/null +++ b/airootfs/etc/fonts/conf.d/10-powerline-symbols.conf @@ -0,0 +1,105 @@ + + + + + + monospace + PowerlineSymbols + + + Droid Sans Mono + PowerlineSymbols + + + Droid Sans Mono Slashed + PowerlineSymbols + + + Droid Sans Mono Dotted + PowerlineSymbols + + + DejaVu Sans Mono + PowerlineSymbols + + + DejaVu Sans Mono + PowerlineSymbols + + + Envy Code R + PowerlineSymbols + + + Inconsolata + PowerlineSymbols + + + Lucida Console + PowerlineSymbols + + + Monaco + PowerlineSymbols + + + Pragmata + PowerlineSymbols + + + PragmataPro + PowerlineSymbols + + + Menlo + PowerlineSymbols + + + Source Code Pro + PowerlineSymbols + + + Consolas + PowerlineSymbols + + + Anonymous pro + PowerlineSymbols + + + Bitstream Vera Sans Mono + PowerlineSymbols + + + Liberation Mono + PowerlineSymbols + + + Ubuntu Mono + PowerlineSymbols + + + Meslo LG L + PowerlineSymbols + + + Meslo LG L DZ + PowerlineSymbols + + + Meslo LG M + PowerlineSymbols + + + Meslo LG M DZ + PowerlineSymbols + + + Meslo LG S + PowerlineSymbols + + + Meslo LG S DZ + PowerlineSymbols + + diff --git a/airootfs/etc/fstab b/airootfs/etc/fstab new file mode 100644 index 0000000..e69de29 diff --git a/airootfs/etc/hostname b/airootfs/etc/hostname new file mode 100644 index 0000000..885c883 --- /dev/null +++ b/airootfs/etc/hostname @@ -0,0 +1 @@ +tuxOS diff --git a/airootfs/etc/locale.conf b/airootfs/etc/locale.conf new file mode 100644 index 0000000..01ec548 --- /dev/null +++ b/airootfs/etc/locale.conf @@ -0,0 +1 @@ +LANG=en_US.UTF-8 diff --git a/airootfs/etc/machine-id b/airootfs/etc/machine-id new file mode 100644 index 0000000..e69de29 diff --git a/airootfs/etc/skel/.bash_profile b/airootfs/etc/skel/.bash_profile new file mode 100644 index 0000000..a0ef212 --- /dev/null +++ b/airootfs/etc/skel/.bash_profile @@ -0,0 +1,7 @@ +# +# ~/.bash_profile +# + +[[ -f ~/.bashrc ]] && . ~/.bashrc + +[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx \ No newline at end of file diff --git a/airootfs/etc/skel/.bashrc b/airootfs/etc/skel/.bashrc new file mode 100644 index 0000000..3ad765c --- /dev/null +++ b/airootfs/etc/skel/.bashrc @@ -0,0 +1,49 @@ +# +# ~/.bashrc +# + +# If not running interactively, don't do anything +[[ $- != *i* ]] && return + +# environment variables +export EDITOR="$(if [[ -n $DISPLAY ]]; then echo 'leafpad'; else echo 'nano'; fi)" # leafpad, nano + +PS1='\[\e[0;32m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[1;32m\]\$\[\e[m\] \[\e[1;37m\]' + +# pacman aliases (if desired, adapt for your favourite AUR helper) +alias pac="sudo /usr/bin/pacman -S" # default action - install one or more packages +alias pacu="sudo /usr/bin/pacman -Syu" # '[u]pdate' - upgrade all packages to their newest version +alias pacr="sudo /usr/bin/pacman -Rns" # '[r]emove' - uninstall one or more packages +alias pacs="/usr/bin/pacman -Ss" # '[s]earch' - search for a package using one or more keywords +alias paci="/usr/bin/pacman -Si" # '[i]nfo' - show information about a package +alias paclo="/usr/bin/pacman -Qdt" # '[l]ist [o]rphans' - list all packages which are orphaned +alias pacc="sudo /usr/bin/pacman -Scc" # '[c]lean cache' - delete all not currently installed package files +alias paclf="/usr/bin/pacman -Ql" # '[l]ist [f]iles' - list all files installed by a given package +alias pacexpl="sudo /usr/bin/pacman -D --asexp" # 'mark as [expl]icit' - mark one or more packages as explicitly installed +alias pacimpl="sudo /usr/bin/pacman -D --asdep" # 'mark as [impl]icit' - mark one or more packages as non explicitly installed + +# '[r]emove [o]rphans' - recursively remove ALL orphaned packages +alias pacro="/usr/bin/pacman -Qtdq > /dev/null && sudo /usr/bin/pacman -Rns \$(/usr/bin/pacman -Qtdq | sed -e ':a;N;$!ba;s/\n/ /g')" + +# Custom +alias led='leafpad ~/.bashrc' +alias bsu='source ~/.bashrc' +alias psync='sudo pacman -Syy' +alias paco='sudo pacman -Sc && sudo pacman-optimize' +alias pcf='profile-cleaner f' +alias pcc='profile-cleaner c' +alias pcg='profile-cleaner gc' +alias yd='youtube-dl' +alias lcp='sudo localepurge' +alias lcc='sudo /usr/bin/localepurge-config' +alias speed='speedtest-cli' +alias q='exit' +alias md='sudo updatedb' +alias fig='sudo leafpad /etc/pacman.conf' +alias yrt='yaourt -S' + +#powerline +powerline-daemon -q +POWERLINE_BASH_CONTINUATION=1 +POWERLINE_BASH_SELECT=1 +. /usr/lib/python3.6/site-packages/powerline/bindings/bash/powerline.sh \ No newline at end of file diff --git a/airootfs/etc/skel/.vimrc b/airootfs/etc/skel/.vimrc new file mode 100644 index 0000000..0e98664 --- /dev/null +++ b/airootfs/etc/skel/.vimrc @@ -0,0 +1,3 @@ +set rtp+=/usr/lib/python3.6/site-packages/powerline/bindings/vim/ +set laststatus=2 +set t_Co=256 \ No newline at end of file diff --git a/airootfs/etc/skel/.xinitrc b/airootfs/etc/skel/.xinitrc new file mode 100644 index 0000000..1f3f5c2 --- /dev/null +++ b/airootfs/etc/skel/.xinitrc @@ -0,0 +1,15 @@ + +#!/bin/sh +# +# ~/.xinitrc +# +# Executed by startx (run your window manager from here) + +if [ -d /etc/X11/xinit/xinitrc.d ]; then + for f in /etc/X11/xinit/xinitrc.d/*; do + [ -x "$f" ] && . "$f" + done + unset f +fi + +exec i3 diff --git a/airootfs/etc/skel/.xsession b/airootfs/etc/skel/.xsession new file mode 100644 index 0000000..e4aaa14 --- /dev/null +++ b/airootfs/etc/skel/.xsession @@ -0,0 +1,9 @@ +#!/bin/sh + +# +# ~/.xsession +# +# Executed by xdm/gdm/kdm at login +# + +/bin/bash --login -i ~/.xinitrc \ No newline at end of file diff --git a/airootfs/etc/sudoers.d/g_wheel b/airootfs/etc/sudoers.d/g_wheel new file mode 100644 index 0000000..03c473b --- /dev/null +++ b/airootfs/etc/sudoers.d/g_wheel @@ -0,0 +1 @@ +%wheel ALL=(ALL) NOPASSWD: ALL \ No newline at end of file diff --git a/airootfs/etc/udev/rules.d/81-dhcpcd.rules b/airootfs/etc/udev/rules.d/81-dhcpcd.rules new file mode 100644 index 0000000..1c4053c --- /dev/null +++ b/airootfs/etc/udev/rules.d/81-dhcpcd.rules @@ -0,0 +1 @@ +ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="en*|eth*", ENV{SYSTEMD_WANTS}="dhcpcd@$name.service" diff --git a/airootfs/root/customize_airootfs.sh b/airootfs/root/customize_airootfs.sh new file mode 100644 index 0000000..bedbc81 --- /dev/null +++ b/airootfs/root/customize_airootfs.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +set -e -u +sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen +locale-gen +ln -sf /usr/share/zoneinfo/UTC /etc/localtime +usermod -s /usr/bin/bash root +cp -aT /etc/skel/ /root/ + +#Create Liveuser +useradd -m -p "" -g users -G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -s /bin/bash liveuser +#chmod 700 /root +chown -R liveuser:users /home/liveuser + +#Load Appletneo Configuration +#cd /usr/bin +#dconf load / < desktop.dconf +#cd - + +#tuxOS Name +sed -i.bak 's/Arch Linux/tux OS/g' /usr/lib/os-release +sed -i.bak 's/ID=arch/ID=tux/g' /usr/lib/os-release +sed -i.bak 's/ID_LIKE=archlinux/ID_LIKE=tuxlinux/g' /usr/lib/os-release +sed -i.bak 's/www.archlinux.org/www.appletneo.com/g' /usr/lib/os-release +sed -i.bak 's/bbs.archlinux.org/www.appletneo.com/g' /usr/lib/os-release +sed -i.bak 's/bugs.archlinux.org/www.appletneo.com/g' /usr/lib/os-release +#cp /usr/lib/os-release /etc/os-release + +sed -i 's/#\(PermitRootLogin \).\+/\1yes/' /etc/ssh/sshd_config +sed -i "s/#Server/Server/g" /etc/pacman.d/mirrorlist +sed -i 's/#\(Storage=\)auto/\1volatile/' /etc/systemd/journald.conf + +sed -i 's/#\(HandleSuspendKey=\)suspend/\1ignore/' /etc/systemd/logind.conf +sed -i 's/#\(HandleHibernateKey=\)hibernate/\1ignore/' /etc/systemd/logind.conf +sed -i 's/#\(HandleLidSwitch=\)suspend/\1ignore/' /etc/systemd/logind.conf + +#systemctl enable pacman-init.service choose-mirror.service +systemctl set-default multi-user.target diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..29b44db --- /dev/null +++ b/build.sh @@ -0,0 +1,279 @@ +#!/bin/bash + +set -e -u + +iso_name=tuxOS +iso_label="tuxOS_$(date +%Y%m)" +iso_version=$(date +%Y.%m.%d) +install_dir=arch +work_dir=work +out_dir=out +gpg_key= + +arch=$(uname -m) +verbose="" +script_path=$(readlink -f ${0%/*}) + +_usage () +{ + echo "usage ${0} [options]" + echo + echo " General options:" + echo " -N Set an iso filename (prefix)" + echo " Default: ${iso_name}" + echo " -V Set an iso version (in filename)" + echo " Default: ${iso_version}" + echo " -L Set an iso label (disk label)" + echo " Default: ${iso_label}" + echo " -D Set an install_dir (directory inside iso)" + echo " Default: ${install_dir}" + echo " -w Set the working directory" + echo " Default: ${work_dir}" + echo " -o Set the output directory" + echo " Default: ${out_dir}" + echo " -v Enable verbose output" + echo " -h This help message" + exit ${1} +} + +# Helper function to run make_*() only one time per architecture. +run_once() { + if [[ ! -e ${work_dir}/build.${1}_${arch} ]]; then + $1 + touch ${work_dir}/build.${1}_${arch} + fi +} + +# Setup custom pacman.conf with current cache directories. +make_pacman_conf() { + local _cache_dirs + _cache_dirs=($(pacman -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g')) + sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n ${_cache_dirs[@]})|g" ${script_path}/pacman.conf > ${work_dir}/pacman.conf +} + +# Base installation, plus needed packages (airootfs) +make_basefs() { + setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" init + setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -p "haveged intel-ucode memtest86+ mkinitcpio-nfs-utils nbd zsh" install +} + +# Additional packages (airootfs) +make_packages() { + setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -p "$(grep -h -v ^# ${script_path}/packages.{both,${arch}})" install +} + +# Needed packages for x86_64 EFI boot +make_packages_efi() { + setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -p "efitools" install +} + +# Copy mkinitcpio archiso hooks and build initramfs (airootfs) +make_setup_mkinitcpio() { + local _hook + mkdir -p ${work_dir}/${arch}/airootfs/etc/initcpio/hooks + mkdir -p ${work_dir}/${arch}/airootfs/etc/initcpio/install + for _hook in archiso archiso_shutdown archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_loop_mnt; do + cp /usr/lib/initcpio/hooks/${_hook} ${work_dir}/${arch}/airootfs/etc/initcpio/hooks + cp /usr/lib/initcpio/install/${_hook} ${work_dir}/${arch}/airootfs/etc/initcpio/install + done + sed -i "s|/usr/lib/initcpio/|/etc/initcpio/|g" ${work_dir}/${arch}/airootfs/etc/initcpio/install/archiso_shutdown + cp /usr/lib/initcpio/install/archiso_kms ${work_dir}/${arch}/airootfs/etc/initcpio/install + cp /usr/lib/initcpio/archiso_shutdown ${work_dir}/${arch}/airootfs/etc/initcpio + cp ${script_path}/mkinitcpio.conf ${work_dir}/${arch}/airootfs/etc/mkinitcpio-archiso.conf + gnupg_fd= + if [[ ${gpg_key} ]]; then + gpg --export ${gpg_key} >${work_dir}/gpgkey + exec 17<>${work_dir}/gpgkey + fi + ARCHISO_GNUPG_FD=${gpg_key:+17} setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -r 'mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/archiso.img' run + if [[ ${gpg_key} ]]; then + exec 17<&- + fi +} + +# Customize installation (airootfs) +make_customize_airootfs() { + cp -af ${script_path}/airootfs ${work_dir}/${arch} + + curl -o ${work_dir}/${arch}/airootfs/etc/pacman.d/mirrorlist 'https://www.archlinux.org/mirrorlist/?country=all&protocol=http&use_mirror_status=on' + + lynx -dump -nolist 'https://wiki.archlinux.org/index.php/Installation_Guide?action=render' >> ${work_dir}/${arch}/airootfs/root/install.txt + + setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${work_dir}/pacman.conf" -D "${install_dir}" -r '/root/customize_airootfs.sh' run + rm ${work_dir}/${arch}/airootfs/root/customize_airootfs.sh +} + +# Prepare kernel/initramfs ${install_dir}/boot/ +make_boot() { + mkdir -p ${work_dir}/iso/${install_dir}/boot/${arch} + cp ${work_dir}/${arch}/airootfs/boot/archiso.img ${work_dir}/iso/${install_dir}/boot/${arch}/archiso.img + cp ${work_dir}/${arch}/airootfs/boot/vmlinuz-linux ${work_dir}/iso/${install_dir}/boot/${arch}/vmlinuz +} + +# Add other aditional/extra files to ${install_dir}/boot/ +make_boot_extra() { + cp ${work_dir}/${arch}/airootfs/boot/memtest86+/memtest.bin ${work_dir}/iso/${install_dir}/boot/memtest + cp ${work_dir}/${arch}/airootfs/usr/share/licenses/common/GPL2/license.txt ${work_dir}/iso/${install_dir}/boot/memtest.COPYING + cp ${work_dir}/${arch}/airootfs/boot/intel-ucode.img ${work_dir}/iso/${install_dir}/boot/intel_ucode.img + cp ${work_dir}/${arch}/airootfs/usr/share/licenses/intel-ucode/LICENSE ${work_dir}/iso/${install_dir}/boot/intel_ucode.LICENSE +} + +# Prepare /${install_dir}/boot/syslinux +make_syslinux() { + mkdir -p ${work_dir}/iso/${install_dir}/boot/syslinux + for _cfg in ${script_path}/syslinux/*.cfg; do + sed "s|%ARCHISO_LABEL%|${iso_label}|g; + s|%INSTALL_DIR%|${install_dir}|g" ${_cfg} > ${work_dir}/iso/${install_dir}/boot/syslinux/${_cfg##*/} + done + cp ${script_path}/syslinux/splash.png ${work_dir}/iso/${install_dir}/boot/syslinux + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/*.c32 ${work_dir}/iso/${install_dir}/boot/syslinux + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/lpxelinux.0 ${work_dir}/iso/${install_dir}/boot/syslinux + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/memdisk ${work_dir}/iso/${install_dir}/boot/syslinux + mkdir -p ${work_dir}/iso/${install_dir}/boot/syslinux/hdt + gzip -c -9 ${work_dir}/${arch}/airootfs/usr/share/hwdata/pci.ids > ${work_dir}/iso/${install_dir}/boot/syslinux/hdt/pciids.gz + gzip -c -9 ${work_dir}/${arch}/airootfs/usr/lib/modules/*-ARCH/modules.alias > ${work_dir}/iso/${install_dir}/boot/syslinux/hdt/modalias.gz +} + +# Prepare /isolinux +make_isolinux() { + mkdir -p ${work_dir}/iso/isolinux + sed "s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/isolinux/isolinux.cfg > ${work_dir}/iso/isolinux/isolinux.cfg + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/isolinux.bin ${work_dir}/iso/isolinux/ + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/isohdpfx.bin ${work_dir}/iso/isolinux/ + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/ +} + +# Prepare /EFI +make_efi() { + mkdir -p ${work_dir}/iso/EFI/boot + cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/PreLoader.efi ${work_dir}/iso/EFI/boot/bootx64.efi + cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/HashTool.efi ${work_dir}/iso/EFI/boot/ + + cp ${work_dir}/x86_64/airootfs/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${work_dir}/iso/EFI/boot/loader.efi + + mkdir -p ${work_dir}/iso/loader/entries + cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/iso/loader/ + cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/iso/loader/entries/ + cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/iso/loader/entries/ + + sed "s|%ARCHISO_LABEL%|${iso_label}|g; + s|%INSTALL_DIR%|${install_dir}|g" \ + ${script_path}/efiboot/loader/entries/archiso-x86_64-usb.conf > ${work_dir}/iso/loader/entries/archiso-x86_64.conf + + # EFI Shell 2.0 for UEFI 2.3+ + curl -o ${work_dir}/iso/EFI/shellx64_v2.efi https://raw.githubusercontent.com/tianocore/edk2/master/ShellBinPkg/UefiShell/X64/Shell.efi + # EFI Shell 1.0 for non UEFI 2.3+ + curl -o ${work_dir}/iso/EFI/shellx64_v1.efi https://raw.githubusercontent.com/tianocore/edk2/master/EdkShellBinPkg/FullShell/X64/Shell_Full.efi +} + +# Prepare efiboot.img::/EFI for "El Torito" EFI boot mode +make_efiboot() { + mkdir -p ${work_dir}/iso/EFI/archiso + truncate -s 64M ${work_dir}/iso/EFI/archiso/efiboot.img + mkfs.fat -n ARCHISO_EFI ${work_dir}/iso/EFI/archiso/efiboot.img + + mkdir -p ${work_dir}/efiboot + mount ${work_dir}/iso/EFI/archiso/efiboot.img ${work_dir}/efiboot + + mkdir -p ${work_dir}/efiboot/EFI/archiso + cp ${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz ${work_dir}/efiboot/EFI/archiso/vmlinuz.efi + cp ${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img ${work_dir}/efiboot/EFI/archiso/archiso.img + + cp ${work_dir}/iso/${install_dir}/boot/intel_ucode.img ${work_dir}/efiboot/EFI/archiso/intel_ucode.img + + mkdir -p ${work_dir}/efiboot/EFI/boot + cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/PreLoader.efi ${work_dir}/efiboot/EFI/boot/bootx64.efi + cp ${work_dir}/x86_64/airootfs/usr/share/efitools/efi/HashTool.efi ${work_dir}/efiboot/EFI/boot/ + + cp ${work_dir}/x86_64/airootfs/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${work_dir}/efiboot/EFI/boot/loader.efi + + mkdir -p ${work_dir}/efiboot/loader/entries + cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/efiboot/loader/ + cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot/loader/entries/ + cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot/loader/entries/ + + sed "s|%ARCHISO_LABEL%|${iso_label}|g; + s|%INSTALL_DIR%|${install_dir}|g" \ + ${script_path}/efiboot/loader/entries/archiso-x86_64-cd.conf > ${work_dir}/efiboot/loader/entries/archiso-x86_64.conf + + cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot/EFI/ + cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot/EFI/ + + umount -d ${work_dir}/efiboot +} + +# Build airootfs filesystem image +make_prepare() { + cp -a -l -f ${work_dir}/${arch}/airootfs ${work_dir} + setarch ${arch} mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" pkglist + setarch ${arch} mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" ${gpg_key:+-g ${gpg_key}} prepare + rm -rf ${work_dir}/airootfs + # rm -rf ${work_dir}/${arch}/airootfs (if low space, this helps) +} + +# Build ISO +make_iso() { + mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" -L "${iso_label}" -o "${out_dir}" iso "${iso_name}-${iso_version}-x86_64.iso" +} + +if [[ ${EUID} -ne 0 ]]; then + echo "This script must be run as root." + _usage 1 +fi + +if [[ ${arch} != x86_64 ]]; then + echo "This script needs to be run on x86_64" + _usage 1 +fi + +while getopts 'N:V:L:D:w:o:g:vh' arg; do + case "${arg}" in + N) iso_name="${OPTARG}" ;; + V) iso_version="${OPTARG}" ;; + L) iso_label="${OPTARG}" ;; + D) install_dir="${OPTARG}" ;; + w) work_dir="${OPTARG}" ;; + o) out_dir="${OPTARG}" ;; + g) gpg_key="${OPTARG}" ;; + v) verbose="-v" ;; + h) _usage 0 ;; + *) + echo "Invalid argument '${arg}'" + _usage 1 + ;; + esac +done + +mkdir -p ${work_dir} + +run_once make_pacman_conf + +# Do all stuff for each airootfs +for arch in x86_64; do + run_once make_basefs + run_once make_packages +done + +run_once make_packages_efi + +for arch in x86_64; do + run_once make_setup_mkinitcpio + run_once make_customize_airootfs +done + +for arch in x86_64; do + run_once make_boot +done + +# Do all stuff for "iso" +run_once make_boot_extra +run_once make_syslinux +run_once make_isolinux +run_once make_efi +run_once make_efiboot + +for arch in x86_64; do + run_once make_prepare +done + +run_once make_iso diff --git a/efiboot/loader/entries/archiso-x86_64-cd.conf b/efiboot/loader/entries/archiso-x86_64-cd.conf new file mode 100644 index 0000000..9cf2efa --- /dev/null +++ b/efiboot/loader/entries/archiso-x86_64-cd.conf @@ -0,0 +1,5 @@ +title Appletneo OS x86_64 UEFI CD +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/intel_ucode.img +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% diff --git a/efiboot/loader/entries/archiso-x86_64-usb.conf b/efiboot/loader/entries/archiso-x86_64-usb.conf new file mode 100644 index 0000000..a8bc954 --- /dev/null +++ b/efiboot/loader/entries/archiso-x86_64-usb.conf @@ -0,0 +1,5 @@ +title Appletneo OS x86_64 UEFI USB +linux /%INSTALL_DIR%/boot/x86_64/vmlinuz +initrd /%INSTALL_DIR%/boot/intel_ucode.img +initrd /%INSTALL_DIR%/boot/x86_64/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% diff --git a/efiboot/loader/entries/uefi-shell-v1-x86_64.conf b/efiboot/loader/entries/uefi-shell-v1-x86_64.conf new file mode 100644 index 0000000..9597ff2 --- /dev/null +++ b/efiboot/loader/entries/uefi-shell-v1-x86_64.conf @@ -0,0 +1,2 @@ +title UEFI Shell x86_64 v1 +efi /EFI/shellx64_v1.efi diff --git a/efiboot/loader/entries/uefi-shell-v2-x86_64.conf b/efiboot/loader/entries/uefi-shell-v2-x86_64.conf new file mode 100644 index 0000000..0dde77a --- /dev/null +++ b/efiboot/loader/entries/uefi-shell-v2-x86_64.conf @@ -0,0 +1,2 @@ +title UEFI Shell x86_64 v2 +efi /EFI/shellx64_v2.efi diff --git a/efiboot/loader/loader.conf b/efiboot/loader/loader.conf new file mode 100644 index 0000000..62c4a83 --- /dev/null +++ b/efiboot/loader/loader.conf @@ -0,0 +1,2 @@ +timeout 3 +default archiso-x86_64 diff --git a/isolinux/isolinux.cfg b/isolinux/isolinux.cfg new file mode 100644 index 0000000..10fd285 --- /dev/null +++ b/isolinux/isolinux.cfg @@ -0,0 +1,6 @@ +PATH /%INSTALL_DIR%/boot/syslinux/ +DEFAULT loadconfig + +LABEL loadconfig + CONFIG /%INSTALL_DIR%/boot/syslinux/archiso.cfg + APPEND /%INSTALL_DIR%/ diff --git a/mkinitcpio.conf b/mkinitcpio.conf new file mode 100644 index 0000000..d6fa64a --- /dev/null +++ b/mkinitcpio.conf @@ -0,0 +1,2 @@ +HOOKS="base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_kms block pcmcia filesystems keyboard" +COMPRESSION="xz" diff --git a/packages.both b/packages.both new file mode 100644 index 0000000..9ae420f --- /dev/null +++ b/packages.both @@ -0,0 +1,157 @@ +##xorg-Packages +xorg-fonts +xorg-server +xorg-server-common +xorg-xinit +xorg-xkill +boost +boost-libs +icu +libmtp +xz +xterm + +##System +xf86-video-ati +xf86-video-dummy +xf86-video-fbdev +xf86-video-nouveau +xf86-video-openchrome +xf86-video-vesa +xf86-video-vmware +xf86-video-voodoo +xf86-input-libinput +xf86-input-synaptics +xf86-input-keyboard +xf86-input-vmmouse +xf86-input-mouse +laptop-detect +mlocate +reflector +tracker +linux-headers +broadcom-wl-dkms +lightdm + +##VBox +virtualbox-guest-modules-arch +virtualbox-guest-utils + +##GUI +i3 + +##Themes +numix-gtk-theme +arc-gtk-theme +arc-icon-theme + +##Fonts +ttf-dejavu +ttf-liberation +cantarell-fonts + +##Environment +bash-completion +ncdu +speedtest-cli +pulseaudio +pulseaudio-alsa +pavucontrol +volumeicon +powerline +python + +##Applications +vlc +gparted +leafpad +youtube-dl +p7zip +python-pip +neofetch + +##File-Management +xdg-user-dirs +gvfs +gamin +tumbler + +##System-Packages +arch-install-scripts +b43-fwcutter +btrfs-progs +clonezilla +crda +darkhttpd +ddrescue +dhclient +dialog +dmraid +dnsmasq +dnsutils +dosfstools +elinks +ethtool +exfat-utils +f2fs-tools +fsarchiver +gnu-netcat +gpm +gptfdisk +grml-zsh-config +grub +hdparm +ipw2100-fw +ipw2200-fw +irssi +lftp +linux-atm +lsscsi +mc +mtools +ndisc6 +nfs-utils +nilfs-utils +nmap +ntfs-3g +ntp +openconnect +openssh +openvpn +partclone +parted +partimage +ppp +pptpclient +refind-efi +rfkill +rp-pppoe +rsync +sdparm +sg3_utils +smartmontools +speedtouch +sudo +tcpdump +testdisk +usb_modeswitch +vim-minimal +vpnc +wget +wireless_tools +wpa_actiond +wvdial +xl2tpd +zd1211-firmware +make +m4 +autoconf +automake +binutils +bison +fakeroot +flex +gcc +patch +perl-error +git \ No newline at end of file diff --git a/packages.i686 b/packages.i686 new file mode 100644 index 0000000..e69de29 diff --git a/packages.x86_64 b/packages.x86_64 new file mode 100644 index 0000000..e69de29 diff --git a/pacman.conf b/pacman.conf new file mode 100644 index 0000000..36714d9 --- /dev/null +++ b/pacman.conf @@ -0,0 +1,88 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives + +# +# GENERAL OPTIONS +# +[options] +# The following paths are commented out with their default values listed. +# If you wish to use different paths, uncomment and update the paths. +#RootDir = / +#DBPath = /var/lib/pacman/ +#CacheDir = /var/cache/pacman/pkg/ +#LogFile = /var/log/pacman.log +#GPGDir = /etc/pacman.d/gnupg/ +HoldPkg = pacman glibc +#XferCommand = /usr/bin/curl -C - -f %u > %o +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u +#CleanMethod = KeepInstalled +#UseDelta = 0.7 +Architecture = auto + +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup +#IgnorePkg = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options +#UseSyslog +#Color +#TotalDownload +# We cannot check disk space from within a chroot environment +#CheckSpace +#VerbosePkgLists + +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. +SigLevel = Required DatabaseOptional +LocalFileSigLevel = Optional +#RemoteFileSigLevel = Required + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. + +# +# REPOSITORIES +# - can be defined here or included from another file +# - pacman will search repositories in the order defined here +# - local/custom mirrors can be added here or in separate files +# - repositories listed first will take precedence when packages +# have identical names, regardless of version number +# - URLs will have $repo replaced by the name of the current repo +# - URLs will have $arch replaced by the name of the architecture +# +# Repository entries are of the format: +# [repo-name] +# Server = ServerName +# Include = IncludePath +# +# The header [repo-name] is crucial - it must be present and +# uncommented to enable the repo. +# + +# The testing repositories are disabled by default. To enable, uncomment the +# repo name header and Include lines. You can add preferred servers immediately +# after the header, and they will be used before the default mirrors. + +#[testing] +#Include = /etc/pacman.d/mirrorlist + +[core] +Include = /etc/pacman.d/mirrorlist + +[extra] +Include = /etc/pacman.d/mirrorlist + +#[community-testing] +#Include = /etc/pacman.d/mirrorlist + +[community] +Include = /etc/pacman.d/mirrorlist + +[multilib] +Include = /etc/pacman.d/mirrorlist \ No newline at end of file diff --git a/syslinux/archiso.cfg b/syslinux/archiso.cfg new file mode 100644 index 0000000..40d8b34 --- /dev/null +++ b/syslinux/archiso.cfg @@ -0,0 +1,11 @@ +DEFAULT select + +LABEL select +COM32 boot/syslinux/whichsys.c32 +APPEND -pxe- pxe -sys- sys -iso- sys + +LABEL pxe +CONFIG boot/syslinux/archiso_pxe.cfg + +LABEL sys +CONFIG boot/syslinux/archiso_sys.cfg diff --git a/syslinux/archiso_head.cfg b/syslinux/archiso_head.cfg new file mode 100644 index 0000000..f261049 --- /dev/null +++ b/syslinux/archiso_head.cfg @@ -0,0 +1,25 @@ +SERIAL 0 38400 +UI boot/syslinux/vesamenu.c32 +MENU TITLE Appletneo OS +MENU BACKGROUND boot/syslinux/splash.png + +MENU WIDTH 78 +MENU MARGIN 4 +MENU ROWS 7 +MENU VSHIFT 10 +MENU TABMSGROW 14 +MENU CMDLINEROW 14 +MENU HELPMSGROW 16 +MENU HELPMSGENDROW 29 + +# Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu + +MENU COLOR border 30;44 #40ffffff #a0000000 std +MENU COLOR title 1;36;44 #9033ccff #a0000000 std +MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all +MENU COLOR unsel 37;44 #50ffffff #a0000000 std +MENU COLOR help 37;40 #c0ffffff #a0000000 std +MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std +MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std +MENU COLOR msg07 37;40 #90ffffff #a0000000 std +MENU COLOR tabmsg 31;40 #30ffffff #00000000 std diff --git a/syslinux/archiso_pxe.cfg b/syslinux/archiso_pxe.cfg new file mode 100644 index 0000000..8d893ce --- /dev/null +++ b/syslinux/archiso_pxe.cfg @@ -0,0 +1,36 @@ +INCLUDE boot/syslinux/archiso_head.cfg + +LABEL arch64_nbd +TEXT HELP +Boot the Appletneo OS (x86_64) live medium (Using NBD). +It allows you to install Arch Linux or perform system maintenance. +ENDTEXT +MENU LABEL Boot Appletneo OS (x86_64) (NBD) +LINUX boot/x86_64/vmlinuz +INITRD boot/intel_ucode.img,boot/x86_64/archiso.img +APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% archiso_nbd_srv=${pxeserver} +SYSAPPEND 3 + +LABEL arch64_nfs +TEXT HELP +Boot the Appletneo OS (x86_64) live medium (Using NFS). +It allows you to install Arch Linux or perform system maintenance. +ENDTEXT +MENU LABEL Boot Appletneo OS (x86_64) (NFS) +LINUX boot/x86_64/vmlinuz +INITRD boot/intel_ucode.img,boot/x86_64/archiso.img +APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/archiso/bootmnt +SYSAPPEND 3 + +LABEL arch64_http +TEXT HELP +Boot the Appletneo OS (x86_64) live medium (Using HTTP). +It allows you to install Arch Linux or perform system maintenance. +ENDTEXT +MENU LABEL Boot Appletneo OS (x86_64) (HTTP) +LINUX boot/x86_64/vmlinuz +INITRD boot/intel_ucode.img,boot/x86_64/archiso.img +APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ +SYSAPPEND 3 + +INCLUDE boot/syslinux/archiso_tail.cfg diff --git a/syslinux/archiso_sys.cfg b/syslinux/archiso_sys.cfg new file mode 100644 index 0000000..a1a2cd6 --- /dev/null +++ b/syslinux/archiso_sys.cfg @@ -0,0 +1,13 @@ +INCLUDE boot/syslinux/archiso_head.cfg + +LABEL arch64 +TEXT HELP +Boot the Appletneo OS (x86_64) live medium. +It allows you to install Arch Linux or perform system maintenance. +ENDTEXT +MENU LABEL Boot Appletneo OS (x86_64) +LINUX boot/x86_64/vmlinuz +INITRD boot/intel_ucode.img,boot/x86_64/archiso.img +APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% + +INCLUDE boot/syslinux/archiso_tail.cfg diff --git a/syslinux/archiso_tail.cfg b/syslinux/archiso_tail.cfg new file mode 100644 index 0000000..e85d8e1 --- /dev/null +++ b/syslinux/archiso_tail.cfg @@ -0,0 +1,27 @@ +LABEL existing +TEXT HELP +Boot an existing operating system. +Press TAB to edit the disk and partition number to boot. +ENDTEXT +MENU LABEL Boot existing OS +COM32 boot/syslinux/chain.c32 +APPEND hd0 0 + +# http://www.memtest.org/ +LABEL memtest +MENU LABEL Run Memtest86+ (RAM test) +LINUX boot/memtest + +# http://hdt-project.org/ +LABEL hdt +MENU LABEL Hardware Information (HDT) +COM32 boot/syslinux/hdt.c32 +APPEND modules_alias=boot/syslinux/hdt/modalias.gz pciids=boot/syslinux/hdt/pciids.gz + +LABEL reboot +MENU LABEL Reboot +COM32 boot/syslinux/reboot.c32 + +LABEL poweroff +MENU LABEL Power Off +COM32 boot/syslinux/poweroff.c32 diff --git a/syslinux/splash.png b/syslinux/splash.png new file mode 100644 index 0000000..303fb33 Binary files /dev/null and b/syslinux/splash.png differ diff --git a/syslinux/syslinux.cfg b/syslinux/syslinux.cfg new file mode 100644 index 0000000..3ee98de --- /dev/null +++ b/syslinux/syslinux.cfg @@ -0,0 +1,5 @@ +DEFAULT loadconfig + +LABEL loadconfig + CONFIG archiso.cfg + APPEND ../../