Skip to content
Snippets Groups Projects
Verified Commit f671b728 authored by Lars Frost's avatar Lars Frost
Browse files

Move to manjaro with initial version

Currently has no LIPNSA, or Doku
parent 5464f90f
Branches
No related tags found
No related merge requests found
*.iso *.iso
grub_target.cfg grub_target.cfg
iso-content
manjaro-dependencies/pkg
manjaro-dependencies/*.tar.zst
...@@ -5,17 +5,20 @@ Its name could mean at least one of: ...@@ -5,17 +5,20 @@ Its name could mean at least one of:
- **T**ARDIS **a**ssisted **R**e**d**istribution of L**i**nux **S**ystems - **T**ARDIS **a**ssisted **R**e**d**istribution of L**i**nux **S**ystems
- **T**ARDIS **a**ssisted **R**edistribution **D**evice for L**i**nux **S**ystems - **T**ARDIS **a**ssisted **R**edistribution **D**evice for L**i**nux **S**ystems
- **T**ARDIS **a**ugmented **r**eliable **d**istribution **i**nstaller **s**tick - **T**ARDIS **a**ugmented **r**eliable **d**istribution **i**nstaller **s**tick
- **T**he **a**utomated **r**eproducible **d**istribution **i**nstallation **s**ystem
# How to use it # How to use it
1. Install the dependencies. On ubuntu you can do that by going to [ubuntu-dependencies](ubuntu-dependencies), executing [build.sh](ubuntu-dependencies/build.sh) and then installing the created `tardis.deb`. For other systems you can view the dependency list in [debian package control file](ubuntu-dependencies/tardisDev/DEBIAN/control). 1. Setup a manjaro system, either a virtual machine or preferably directly on hardware. Manjaro in docker doesn't work.
2. Download the kubuntu version, that is mentioned at the start of [assemble\_image.sh](assemble_image.sh) 2. Install the dependencies. You can do that by going to [manjaro-dependencies](manjaro-dependencies), executing `makepkg` and then installing the created pavkage with `sudo pacman -U ./tardis-dev-dependencies-1.0-1-x86_64.pkg.tar.zst`.
3. Create a directory `/workspace`, that is owned by your regular non-root user 3. You call [assemble\_image.sh](assemble_image.sh). This takes some time.
4. (OPTIONAL) Set `USE_OFFLINE_REPO` in [assemble\_image.sh](assemble_image.sh) to `1`, to create an offline repo on the stick 4. The compiled image is at `workspace/output.img`. It is an MBR/DOS-partitioned image, that can be copied byte-by-byte onto a stick (for example with `sudo dd if=/workspace/output.img of=/dev/sdX bs=4M conv=fsync oflag=direct status=progress` replacing `/dev/sdX`, with your stick's device-file and sudo with the privilege elevation tool of your choice).
5. You call [assemble\_image.sh](assemble_image.sh). This takes some time.
6. The compiled image is at `/workspace/output.img`. It is an MBR/DOS-partitioned image, that can be copied byte-by-byte onto a stick (for example with `sudo dd if=/workspace/output.img of=/dev/sdX bs=4M conv=fsync oflag=direct status=progress` replacing `/dev/sdX`, with your stick's device-file and sudo with the privilege elevation tool of your choice).
# How it works internally # How it works internally
We use the [well documented](https://github.com/calamares/calamares/wiki/Deploy-Guide) [calamares](https://github.com/calamares/calamares) installer and the [somewhat documented](https://wiki.manjaro.org/index.php?title=Build_Manjaro_ISOs_with_buildiso) [buildiso manjaro-tool](https://gitlab.manjaro.org/tools/development-tools/manjaro-tools).
We use the preseed mechanism of debian-installer to start scripts before and after the regular installation and to set the language. # How to update to new Manjaro versions?
Information about preseeding can be found in the [debian manual](https://www.debian.org/releases/stable/amd64/apb.en.html). 1. Update the `ISO` variable in [extract\_iso\_fs.sh](extract_iso_fs.sh) to the path to the newest image.
Information about the ubuntu specific options can be found in the [ubuntu wiki](https://wiki.ubuntu.com/UbiquityAutomation). 1. Extract new iso-content with [extract\_iso\_fs.sh](extract_iso_fs.sh)
1. Look what changed in iso-content/livefs/etc/calamares/settings.conf and merge with [own calamares config](calamares-settings.conf)
1. Look what changed in iso-content/livefs/usr/share/grub/cfg and merge with [own grub config](grub-cfg)
1. Update linux kernel reference of the two `buildiso` commands in [assemble\_image.sh](assemble_image.sh) to the newest supported LTS release.
...@@ -3,63 +3,125 @@ ...@@ -3,63 +3,125 @@
set -e set -e
set -x set -x
image_size="3600M" # Params
img1="kubuntu-22.04-desktop-amd64.iso" WORKSPACE="workspace"
bootimg="$img1"
: ${workspace:="/workspace"} # Helpers
: ${USE_OFFLINE_REPO:=0} REGULAR_USER="${SUDO_USER:-${USER}}"
if [[ "$USE_OFFLINE_REPO" -eq 1 ]] REGULAR_USER_HOME=$(getent passwd "$REGULAR_USER" | cut -d: -f6)
then ISO_PROFILES_REPO="$REGULAR_USER_HOME/iso-profiles"
offlinerepo1='archives-jammy' PROFILE="$ISO_PROFILES_REPO/osak/lip"
image_size='7300M'
fi
# mtools, ddrescure, fdisk, grub, 7z # https://stackoverflow.com/questions/1527049/how-can-i-join-elements-of-an-array-in-bash
rm -rf "$workspace/part_files" function join_by {
mkdir -p "$workspace/part_files" local d=${1-} f=${2-}
# copy only relevant files if shift 2; then
git -C "$workspace/part_files" clone --depth 1 --single-branch --branch tardis https://git.fsmpi.rwth-aachen.de/osak/lipstick.git . printf %s "$f" "${@/#/$d}"
rsync -av /usr/lib/grub/i386-efi "$workspace/part_files"/grub
rsync -av /usr/lib/grub/i386-pc "$workspace/part_files"/grub
rsync -av /usr/share/grub/themes "$workspace/part_files"/grub
mkdir -p "$workspace/part_files"/grub/fonts/
rsync -av /usr/share/grub/unicode.pf2 "$workspace/part_files"/grub/fonts/
7z x "$bootimg" -o"$workspace/part_files" EFI/
7z x "$bootimg" -o"$workspace/part_files" boot/grub/x86_64-efi
mv "$workspace/part_files"/grub/* "$workspace/part_files"/boot/grub/
rm -rf "$workspace/part_files"/grub
7z x "$img1" /preseed/kubuntu.seed -o"$workspace/part_files"
cat "$workspace/part_files/preseed/lip.seed" >> "$workspace/part_files/preseed/kubuntu.seed"
mv -f "$workspace/part_files/preseed/kubuntu.seed" "$workspace/part_files/preseed/lip.seed"
xorriso -indev "$img1" -outdev "$workspace/part_files/$img1" -map "$workspace/part_files/preseed" /preseed -rm /preseed/kubuntu.seed -- -chown_r 0 /preseed -- -chgrp_r 0 /preseed -- -chmod_r a+rwx /preseed
source ./grub_config.sh # functions to fill grub_template.cfg
cp grub_template.cfg "$workspace/part_files/boot/grub/grub.cfg"
fill_grub_config_template "$img1" "$workspace/part_files/boot/grub/grub.cfg"
if [[ "$USE_OFFLINE_REPO" -eq 1 ]]
then
# Note: in practice you might still want to create the offline repo separately and just copy or move the directories here.
# Creating the offline repo requires root privileges and can be quite slow.
./create_offlinerepo.sh "$workspace/part_files/$offlinerepo1" "$img1" $(grep '^[^#]' packages | cut -d'|' -f 2)
fi fi
}
rm -rf "$ISO_PROFILES_REPO"
rm -rf workspace
mkdir workspace
chmod a+rx workspace
git clone --depth 1 https://gitlab.manjaro.org/profiles-and-settings/iso-profiles.git "$ISO_PROFILES_REPO"
mkdir -p "$PROFILE"
rsync -a --copy-links "$ISO_PROFILES_REPO/manjaro/kde/" "$PROFILE"
grep '^[^|#]*L[^|]*|' packages | cut -d'|' -f 2 >> "$PROFILE/Packages-Live"
grep '^[^|#]*D[^|]*|' packages | cut -d'|' -f 2 >> "$PROFILE/Packages-Desktop"
remove_live_package() {
pkg="${1:?}"
cat "$PROFILE/Packages-Live" | grep --invert-match "$pkg" > "$PROFILE/Packages-Live.tmp"
mv "$PROFILE/Packages-Live.tmp" "$PROFILE/Packages-Live"
}
remove_desktop_package() {
pkg="${1:?}"
cat "$PROFILE/Packages-Desktop" | grep --invert-match "$pkg" > "$PROFILE/Packages-Desktop.tmp"
mv "$PROFILE/Packages-Desktop.tmp" "$PROFILE/Packages-Desktop"
}
remove_live_package "manjaro-hello"
remove_desktop_package "manjaro-hello"
LIVE="$PROFILE/live-overlay"
mkdir -p "$LIVE/usr/share/applications"
ETC_CAL="$LIVE/etc/calamares"
mkdir -p "$ETC_CAL/modules"
mkdir -p "$LIVE/usr/share/grub/cfg"
rsync --recursive grub-cfg/ "$LIVE/usr/share/grub/cfg"
cp "calamares.desktop" "$LIVE/usr/share/applications/calamares.desktop"
configure_package_chooser() {
local ID="${1:?}"
local WILDCARD="${2:?}"
local EN="${3:?}"
local DE="${4:?}"
cat > "$ETC_CAL/modules/packages_$ID.conf" << EOF
mode: optionalmultiple
method: packages
labels:
step: "$EN"
step[de]: "$DE"
default: id0
items:
EOF
local i=0
while read -r line; do
name="$(echo "$line" | cut -d'|' -f 3)"
packages="$(echo "$line" | cut -d'|' -f 2)"
id="id$i"
i="$((i + 1))"
echo "- id: $id" >> "$ETC_CAL/modules/packages_$ID.conf"
echo " name: \"$name\"" >> "$ETC_CAL/modules/packages_$ID.conf"
echo " packages: [$(join_by ", " $packages)]" >> "$ETC_CAL/modules/packages_$ID.conf"
done < <(grep "^[^|#]*[$WILDCARD][^|]*|" packages)
}
configure_package_chooser common "cC" "Common Packages" "Allgemeine Software"
configure_package_chooser mathe "mM" "Mathematics Packages" "Mathematik-Software"
configure_package_chooser physik "pP" "Physics Packages" "Physik-Software"
configure_package_chooser informatik "iI" "Computer Science Packages" "Informatik-Software"
cp calamares-packages.conf "$ETC_CAL/modules/packages.conf"
chown "$REGULAR_USER:$REGULAR_USER" -R "$ISO_PROFILES_REPO"
create_offline_repo() {
local DESKTOPFS="/var/lib/manjaro-tools/buildiso/lip/x86_64/desktopfs"
local PACMAN_DB="$DESKTOPFS/var/lib/pacman"
mkdir -p "$PACMAN_DB"
local PACMAN_CACHE="$DESKTOPFS/var/cache/pacman/pkg"
mkdir -p "$PACMAN_CACHE"
grep '^[^|#][cCmMpPiI][^|]*|' packages | cut -d'|' -f 2 | tr '\n' ' ' > "$WORKSPACE/offline_packages.txt"
CACHE="${XDG_CACHE_HOME:-"$HOME/.cache"}/lip-build/pacman"
mkdir -p "$CACHE/db"
mkdir -p "$CACHE/pkg"
pacman -Sy --dbpath "$CACHE/db"
rsync -a "$CACHE/db/" "$PACMAN_DB"
pacman -S --dbpath "$PACMAN_DB" --cachedir "$CACHE/pkg" --downloadonly --noconfirm $(cat "$WORKSPACE/offline_packages.txt")
rsync -a "$CACHE/pkg/" "$PACMAN_CACHE"
}
set +e # buildiso returns a 1 on partial builds
buildiso -p lip -x -k linux515 # build only filesystems, but not the iso
BO="$?"
set -e
[[ 1 -eq "$BO" ]]
# override some of the generated files
cp -f calamares-settings.conf /var/lib/manjaro-tools/buildiso/lip/x86_64/livefs/etc/calamares/settings.conf
create_offline_repo
set +e # buildiso returns a 1 on partial builds
buildiso -p lip -zc -k linux515 # and then build the iso
BO="$?"
set -e
[[ 1 -eq "$BO" ]]
mv /var/cache/manjaro-tools/iso/osak/lip/*/*.iso "$WORKSPACE"
cp packages "$workspace/part_files/packages" # vim: tabstop=2 shiftwidth=2 expandtab number
# The following command is dangerous: If offline repo is missing and "download updates while installing" is selected (default), this will install ALL listed packages during the installation.
#echo "ubiquity ubiquity/keep-installed string $(grep '^[^#]' packages | cut -d'|' -f 2 | tr '\n' ' ')" >> "$workspace/part_files/preseed/lip.seed"
rm -f "$workspace/part.img"
truncate -s "$image_size" "$workspace/part.img"
mkfs.vfat -n "LIPSTICK" "$workspace/part.img"
# Note: in *ubuntu 21.10 mcopy has a bug and option "-b" should be removed.
MTOOLS_SKIP_CHECK=1 mcopy -i "$workspace/part.img" -b -s -v "$workspace/part_files"/* "$workspace/part_files"/.git ::
rm -rf "$workspace/part_files"
grub-mkimage --prefix "(hd0,msdos1)/boot/grub" --output "$workspace/grub.i386-pc.img" --format "i386-pc" part_msdos fat ext2 biosdisk
dd if=/usr/lib/grub/i386-pc/boot.img of="$workspace/output.img" bs=446 count=1
dd if="$workspace/grub.i386-pc.img" of="$workspace/output.img" bs=512 seek=1
ddrescue --output-position=2048s --sparse "$workspace/part.img" "$workspace/output.img"
printf "label: dos\nunit: sectors\n2048,+,b,*\n" | sfdisk "$workspace/output.img"
echo "Used $(du -s -h "$workspace/output.img" | cut -f1) of ${image_size}"
backend: pacman
skip_if_no_internet: false
update_db: false
update_system: false
---
modules-search: [ local ]
instances:
- id: common
module: packagechooser
config: packages_common.conf
- id: mathe
module: packagechooser
config: packages_mathe.conf
- id: physik
module: packagechooser
config: packages_physik.conf
- id: informatik
module: packagechooser
config: packages_informatik.conf
sequence:
- show:
- welcome
- locale
- keyboard
- packagechooser@common
- packagechooser@mathe
- packagechooser@physik
- packagechooser@informatik
- partition
- users
- summary
- exec:
- partition
- mount
- unpackfs
- networkcfg
- machineid
- fstab
- locale
- keyboard
- localecfg
- luksopenswaphookcfg
- luksbootkeyfile
- initcpiocfg
- initcpio
- users
- displaymanager
- mhwdcfg
- hwclock
- services
- grubcfg
- bootloader
- postcfg
- packages
- umount
- show:
- finished
branding: manjaro
prompt-install: true
dont-chroot: false
oem-setup: false
disable-cancel: false
disable-cancel-during-exec: true
quit-at-end: false
[Desktop Entry]
Type=Application
Version=1.0
Name=Install Manjaro Linux
Name[da]=Installer Manjaro Linux
GenericName=Live Installer
GenericName[da]=Live-installationsprogram
Comment=Install the operating system to disk
Comment[da]=Installer styresystemet på disk
Comment[de]=Manjaro Linux installieren
Exec=/usr/bin/calamares_polkit -d %f
Icon=calamares
Terminal=false
StartupNotify=true
Type=Application
Categories=Qt;System;
#!/bin/bash
set -e
set -x
# Params
WORKSPACE="workspace"
# Helpers
MOUNTED_ISO="$WORKSPACE/iso"
umount "$MOUNTED_ISO"
losetup -d /dev/loop0
rm -rf workspace
# vim: tabstop=2 shiftwidth=2 expandtab nu
#!/bin/bash
ISO="/mnt/osiris/distros/manjaro/manjaro-kde-22.0.0-220816-linux515.iso"
MOUNTED_ISO="/tmp/manjaro-iso"
DEST="iso-content"
rm -rf "$MOUNTED_ISO" "$DEST"
mkdir "$MOUNTED_ISO"
mkdir "$DEST"
LOOP=$(losetup --partscan --find --show "$ISO")
mount /dev/loop0p1 "$MOUNTED_ISO"
unsquashfs -dest "$DEST/livefs" "$MOUNTED_ISO/manjaro/x86_64/livefs.sfs"
unsquashfs -dest "$DEST/desktopfs" "$MOUNTED_ISO/manjaro/x86_64/desktopfs.sfs"
unsquashfs -dest "$DEST/mhwdfs" "$MOUNTED_ISO/manjaro/x86_64/mhwdfs.sfs"
unsquashfs -dest "$DEST/rootfs" "$MOUNTED_ISO/manjaro/x86_64/rootfs.sfs"
umount "$MOUNTED_ISO"
losetup --detach "$LOOP"
rm -d "$MOUNTED_ISO"
if [ -z "${def_bootlang}" ]; then
def_bootlang="de_DE"
def_keyboard="de"
def_timezone="Europe/Berlin"
fi
if [ -z "${bootlang}" ]; then
bootlang="lang=${def_bootlang}"
keyboard="keytable=${def_keyboard}"
timezone="tz=${def_timezone}"
fi
insmod font
insmod keylayouts
insmod part_msdos
insmod part_gpt
export loaded
export koptsok
export disable_gfxterm
export bootarch
export firmware
export firmware_found
export from
export fromiso
export bootlang
export keyboard
export timezone
export hwclock
export def_bootlang
export def_keyboard
export def_timezone
export menu_color_normal
export menu_color_highlight
export pager
function menu_help {
check_help
grub_help
}
function check_help {
if [ -z "${koptsok}" ]; then
echo $"WARNING: nothing set"
echo $" System will use defaults"
echo " American English <> utc clock <> us "$"keyboard <> free drivers"
echo ""
fi
}
function kopts_help {
echo $"Example boot command line arguments:"
echo $" Setup"
echo " lang=<language>_<variant> keytable=<layout> tz=<region>/<city>"
echo " hostname=<name> username=<name>"
echo $" Kernel"
echo " blacklist=<module>"
echo $" Video"
echo " <module>.modeset=0"
echo " radeon.modeset=0 nouveau.modeset=0 i915.modeset=0"
echo " video=VGA-1:1920x1080e DVI-0:800x600"
echo ""
}
function grub_help {
echo $"To use the menu:"
echo $" press up or down to move between items"
echo $" press enter or right to select the item"
echo $" press e to edit the current item"
echo $" press c to go to the grub command line"
echo ""
echo $"Simply edit the first line of most menus to control them"
echo $"Select or edit the blank line to enter command line arguments"
echo ""
}
function menu_reload {
configfile /boot/grub/grub.cfg
}
function menu_continue {
echo -n $"Press Enter to continue"
read mcont
}
function prompt {
echo -n "> "
}
function is_efi {
if [ "${grub_platform}" = "efi" ]; then
return 0
fi
return 1
}
function efi_detect {
if is_efi ; then
submenu --class=find.efi --hotkey=f "Detect EFI bootloaders" {
efi_found=false
for efi in (*,gpt*)/efi/*/*.efi (*,gpt*)/efi/*/*/*.efi (*,gpt*)/*.efi (*,gpt*)/*/*.efi ; do
regexp --set=1:efi_device '^\((.*)\)/' "${efi}"
if [ -e "${efi}" ]; then
efi_found=true
menuentry --class=efi "${efi}" "${efi_device}" {
root="${2}"
chainloader "${1}"
}
fi
done
if [ "${efi_found}" != true ]; then
menuentry --hotkey=q --class=find.none "No EFI files detected." {menu_reload}
else
menuentry --hotkey=q --class=cancel "Cancel" {menu_reload}
fi
}
fi
}
function memtest_detect {
if ! is_efi; then
if [ -f /boot/memtest ]; then
menuentry --class=memtest --hotkey=m "Memory Test" {linux16 /boot/$1}
fi
fi
}
function lang_setup {
source /boot/grub/locales/${1}
menu_reload
}
function lang_menu {
menuentry --class=lang.${ll} "lang=${ll}" "${ll}" {lang_setup "${2}"}
}
function show_timezones {
submenu --class=tz --hotkey=t "tz=${def_timezone}" {# set the timezone above with the editor
if [ -n "$1" ];then
if [ "$1" = "tz=${def_timezone}" ]; then
default=0
menuentry --class=cancel --hotkey=q "Cancel (${def_timezone})" {menu_reload}
for tt in Africa America Asia Atlantic Australia Etc Europe Pacific; do
submenu --class=tz.${tt} "${tt}" {
menuentry --class=cancel --hotkey=q "Cancel (${def_timezone})" {menu_reload}
source "/boot/grub/tz/${1}"
}
done
else
regexp -s newtz '^tz=(.*)' "$1"
if [ -z "$newtz" ]; then
def_timezone="$1"
else
def_timezone="$newtz"
fi
timezone="tz=$def_timezone"
menu_reload
fi
fi
}
}
function show_keymaps {
submenu --class=kbd --hotkey=k "keytable=${def_keyboard}" {# set the timezone above with the editor
if [ -n "$1" ]; then
if [ "$1" = "keytable=${def_keyboard}" ]; then
default=0
menuentry --class=cancel --hotkey=q "Cancel (${def_keyboard})" {menu_reload}
source /boot/grub/locales/keyboards
else
regexp -s newkey '^keytable=(.*)' "$1"
if [ -z "$newkey" ]; then
def_keyboard="$1"
else
def_keyboard="$newkey"
fi
keyboard="keytable=$def_keyboard"
menu_reload
fi
fi
}
}
function show_languages {
submenu --hotkey=l --class=lang "lang=${def_bootlang}" {# set the timezone above with the editor
if [ -n "$1" ]; then
if [ "$1" = "lang=${def_bootlang}" ]; then
default=0
menuentry --class=lang.${def_bootlang} "lang=${def_bootlang}" {menu_reload}
menuentry --class=lang.cs "Čeština" {lang_setup "cs_CZ"}
menuentry --class=lang.da "Dansk" {lang_setup "da_DK"}
submenu --class=lang.de "Deutsch" {
for ll in de_DE de_AT de_BE de_CH de_LI de_LU; do
lang_menu ${ll}
done
}
submenu --class=lang.el "Ελληνικά" {
for ll in el_GR el_CY; do
lang_menu ${ll}
done
}
submenu --class=lang.en "English" {
for ll in en_US en_AG en_AU en_BW en_CA en_DK en_GB en_HK en_IE en_IN en_NG en_NZ en_PH en_SG en_ZA en_ZW; do
lang_menu ${ll}
done
}
submenu --class=lang.es "Español" {
for ll in es_ES es_AR es_BO es_CL es_CO es_CR es_DO es_EC es_GT es_HN es_MX es_NI es_PA es_PE es_PR es_PY es_SV es_US es_UY es_VE; do
lang_menu ${ll}
done
}
submenu --class=lang.fr "Français" {
for ll in fr_FR fr_BE fr_CA fr_CH fr_LU fr_NC; do
lang_menu ${ll}
done
}
menuentry --class=lang.he "עִבְרִית" {lang_setup "he_IL"}
submenu --class=lang.it "Italiano" {
for ll in it_IT it_CH; do
lang_menu ${ll}
done
}
menuentry --class=lang.ja "日本語" {lang_setup "ja_JP"}
submenu --class=lang.nl "Nederlands" {
for ll in nl_NL nl_AW nl_BE; do
lang_menu ${ll}
done
}
menuentry --class=lang.pl "Polski" {lang_setup "pl_PL"}
submenu --class=lang.pt "Português" {
for ll in pt_BR pt_PT; do
lang_menu ${ll}
done
}
menuentry --class=lang.ro "Română" {lang_setup "ro_RO"}
submenu --class=lang.ru "Русский" {
for ll in ru_RU ru_UA;do
lang_menu ${ll}
done
}
submenu --class=lang.zh "中文" {
for ll in zh_CN zh_TW; do
lang_menu ${ll}
done
}
else
regexp -s newlang '^lang=(.*)' "$1"
if [ -z "$newlang" ]; then
def_bootlang="$1"
else
def_bootlang="$newlang"
fi
bootlang="lang=$def_bootlang"
if [ -f /boot/grub/locales/${def_bootlang} ]; then
source /boot/grub/locales/${def_bootlang}
fi
menu_reload
fi
fi
}
}
function boot_menu {
if [ "${hwclock}" = "utc=yes" ]; then
class="utc"
title="utc"
clockset=""
elif [ "${timezone}${bootlang}" = "" ]; then
class="unset"
title="utc"
clockset=""
else
title="${def_timezone}"
class="tz.${def_timezone}"
clockset="utc=yes"
fi
min2d="$MINUTE"
if regexp '(^.$)' "$min2d"; then
min2d="0${min2d}"
fi
hour2d="$HOUR"
if regexp '(^.$)' "$hour2d"; then
hour2d="0${hour2d}"
fi
menuentry --class=tz.$class --hotkey=u "$hour2d:$min2d $title" "$clockset" {
hwclock="$2"
menu_reload
}
show_timezones
show_keymaps
# show_languages
default=3
}
function boot_defaults {
source /boot/grub/defaults.cfg
}
function grub_reboot {
menuentry " " {true}
menuentry --class=reboot "Reboot!" {reboot}
}
function grub_bios_installed {
if ! is_efi; then
menuentry "" {true}
menuentry --class=manjaro "Installed BIOS-System on $installed" {exit}
fi
}
function grub_efi_installed {
if is_efi; then
menu "" {true}
menu --class=manjaro "Installed EFI-System on $installed" {exit}
fi
}
function check {
cliname="$1"
varname="$2"
if [ "${optname}" != "${cliname}" ]; then
return 1
fi
if [ -z "$varname" ]; then
varname="${cliname}"
fi
if [ -z "${optval}" ]; then
eval ${varname}="${cliname}"
else
eval ${varname}="${cliname}=${optval}"
if [ "${optname}" = "lang" ]; then
lang_setup ${optval}
elif [ "${optname}" = "keytable" ]; then
def_keyboard="${optval}"
elif [ "${optname}" = "tz" ]; then
def_timezone="${optval}"
fi
fi
return 0
}
function checkinput {
newinput="$1"
newoutput=""
for newcli in ${newinput} ; do
optname=""
optval=""
optdone=""
regexp -s optname '^(.+)=.*$' "${newcli}"
if [ -z "${optname}" ]; then
optname="${newcli}"
else
regexp -s optval '^.+=(.*)$' "${newcli}"
fi
for tocheck in "lang bootlang" "keytable keyboard" "tz timezone" "utc hwclock"; do
if check $tocheck ; then
optdone="Y"
break
fi
done
if [ -z "${optdone}" ]; then
if [ -z "${newoutput}" ]; then
newoutput="${newcli}"
else
newoutput="${newoutput} ${newcli}"
fi
fi
done
}
function new2cli {
newinput="$1"
if [ -n "$newinput" ]; then
checkinput "$newinput"
if [ -n "${newoutput}" ]; then
newinput="${newoutput}"
if [ -n "$clinput" ]; then
clinput="$clinput $newinput"
else
clinput="$newinput"
fi
export clinput
fi
fi
}
function getargs {
args=""
for a in $@; do
if [ -n "${a}" ]; then
args="${args} ${a}"
fi
done
}
function bootcheck {
getargs
}
pager=1
insmod regexp
insmod datehook
if ! is_efi; then
insmod part_gpt
fi
if is_efi; then
insmod efi_gop
insmod efi_uga
fi
if [ -z "${loaded}" ]; then
iscd=""
auto=""
regexp -s iscd '^(cd)' "${root}"
if [ "${iscd}" != "cd" -a -e (cd) ]; then
probe -s cdp -u cd
probe -s hdp -u $root
if [ -n "$cdp" -a "$cdp" = "$hdp" ]; then
iscd="cd"
fi
fi
if [ "${root}" != "hd96" -a "${iscd}" != "cd" ]; then
auto="${auto}"
fi
source /boot/grub/variable.cfg
loaded=true
if keystatus --shift; then
disable_gfxterm=true
fi
if [ "${disable_gfxterm}" != "true" ]; then
if loadfont /boot/grub/unicode.pf2 ; then
if [ -z "$gfxmode" ] ; then
gfxmode=1024x768,auto # 1280x1024,1024x768,800x600,640x480 possible value
gfxpayload=keep
fi
if keystatus --ctrl; then
gfxok=""
pager=0
while [ -z "$gfxok" ]; do
echo "gfxmode=$gfxmode"
echo "Input new mode or Enter to confirm"
prompt
read gfxmodein
if [ -n "$gfxmodein" ]; then
gfxmode="$gfxmodein"
echo ""
else
gfxok="true"
fi
done
fi
insmod all_video
insmod gfxterm
if terminal_output --append gfxterm; then
terminal_output --remove console
else
disable_gfxterm=true
fi
else
disable_gfxterm=true
fi
fi
if [ "${disable_gfxterm}" != "true" -a -f "${grub_theme}" ]; then
insmod gfxmenu
themedir=""
regexp -s themedir '^(.*)/.*$' "${grub_theme}"
for themefont in $themedir/*.pf2 $themedir/f/*.pf2; do
if [ -f "${themefont}" ]; then
loadfont "${themefont}"
fi
done
for imagetype in jpg jpeg png tga; do
for themeimage in ${themedir}/*.${imagetype}; do
if [ -f "${themeimage}" ]; then
if [ "${imagetype}" = "jpg" ]; then
insmod jpeg
else
insmod $imagetype
fi
fi
done
done
theme=${grub_theme}
export theme
fi
menu_color_normal=cyan/blue
menu_color_highlight=white/blue
if [ -n "${iso_path}" ]; then
auto="img_dev=/dev/disk/by-uuid/${rootuuid} img_loop=${iso_path}"
fi
export auto
fi
boot_defaults
for kopt in "${clinput}" "${bootlang}" "${keyboard}" "${timezone}" "${hwclock}" "${auto}"; do
if [ -n "${kopt}" ]; then
kopts="${kopts} ${kopt}"
fi
done
if [ -n "${bootlang}${keyboard}${timezone}" ]; then
koptsok="true"
fi
boot_menu
source /boot/grub/kernels.cfg
if [ -n "$clinput" ]; then
menuentry --class=edit "$clinput" {
if [ -n "$1" ]; then
clinput="$@"
else
unset clinput
fi
menu_reload
}
fi
menuentry --class=type --hotkey=tab "" {# set arguments above with the editor
getargs $@
pager=0
if [ -z "$args" ]; then
check_help
kopts_help
echo $"Input command line options, press Enter to continue"
prompt
read newinput
else
newinput="$args"
fi
new2cli "$newinput"
pager=1
menu_reload
}
menuentry --hotkey=h --class=help "Help" {
pager=0
menu_help
menu_continue
pager=1
}
efi_detect
memtest_detect
search --no-floppy --file /etc/issue --set installed
grub_bios_installed
grub_efi_installed
grub_reboot
for kk in /boot/vmlinu*-*64; do
if [ "$kk" != "/boot/vmlinu*-*64" ]; then
have64="true"
if cpuid -l; then
have_kernel="true"
else
have_kernel="false"
fi
fi
done
for kk in /boot/vmlinu*-*86; do
if [ "$kk" != "/boot/vmlinu*-*86" ]; then
have32="true"
have_kernel="true"
fi
done
if [ "${have_kernel}" != "true" ]; then
menuentry --class=find.none "NO SUITABLE KERNELS AVAILABLE" {echo $@ echo "There are no kernels suitable for this machine available."
echo ""
if ! cpuid -l; then
echo "This machine is NOT 64bit capable."
echo ""
fi
echo "There are no suitable kernels available"
if [ "${have64}" == "true" ]; then
echo ""
echo "It appears you are trying to boot a 64bit release on a 32bit machine"
echo "This cannot work!"
fi
echo ""
echo "Press Escape to return to the main menu"
sleep --interruptible 9999
menu_reload
}
else
title=""
for kopt in @ARCH@ $kopts @DEFAULT_ARGS@ @BOOT_ARGS@; do
if [ -n "$title" ] ; then
title="$title $kopt";
else
title="$kopt";
fi;
done
menuentry "Mit Open-Source Treibern starten" --class=@DIST_NAME@.@ARCH@ "$title" {# set arguments above with the editor
source /boot/grub/locales/de_DE
linux /boot/vmlinuz-$2 driver=free nouveau.modeset=1 i915.modeset=1 radeon.modeset=1
initrd /boot/amd_ucode.img /boot/intel_ucode.img /boot/initramfs-@ARCH@.img
}
menuentry "Mit proprietären Treibern starten" --class=@DIST_NAME@.@ARCH@ "$title" {# set arguments above with the editor
source /boot/grub/locales/de_DE
linux /boot/vmlinuz-$2 driver=nonfree nouveau.modeset=0 i915.modeset=1 radeon.modeset=1
initrd /boot/amd_ucode.img /boot/intel_ucode.img /boot/initramfs-@ARCH@.img
}
menuentry "Boot with open source drivers" --class=@DIST_NAME@.@ARCH@ "$title" {# set arguments above with the editor
linux /boot/vmlinuz-$2 driver=free nouveau.modeset=1 i915.modeset=1 radeon.modeset=1
initrd /boot/amd_ucode.img /boot/intel_ucode.img /boot/initramfs-@ARCH@.img
}
menuentry "Boot with proprietary drivers" --class=@DIST_NAME@.@ARCH@ "$title" {# set arguments above with the editor
linux /boot/vmlinuz-$2 driver=nonfree nouveau.modeset=0 i915.modeset=1 radeon.modeset=1
initrd /boot/amd_ucode.img /boot/intel_ucode.img /boot/initramfs-@ARCH@.img
}
fi
source /boot/grub/grub.cfg
grub_theme=/boot/grub/themes/@ISO_NAME@-live/theme.txt
timeout=-1
# Maintainer OSAK <osak@fsmpi.rwth-aachen.de>
pkgname=tardis-dev-dependencies
pkgver=1.0
pkgrel=1
pkgdesc="LIP automation tool dependencies"
arch=(x86_64)
url="https://git.fsmpi.rwth-aachen.de/osak/tardis"
license=('GPL3')
depends=(bash coreutils git rsync grep pacman wget squashfs-tools manjaro-tools-iso util-linux)
Pro:
- installer ist viel einfacher (geht auch super mit verschlüsseln der root-partition, Konkurenz wegen Bitlocker)
Neutral:
- Lass mal gemeinsam die pamac defaults durchgehen, ob das so sinnvoll ist
- Im Gegensatz zur früheren XFCE Version wird nur noch Firefox installiert und nicht Chromium + Firefox. Das hab ich zwar auf meinem Ubuntu selbst so, aber als default 2 Browser zu installieren war schon seltsam
- Auf bestehendes lvm on LUKS installieren geht nicht, aber das hab ich bei GUI installer auch nicht erwartet
Contra:
- Das man aus der gestarteten Live-Umgebung keine Pakete mehr installieren wirkt nicht so vertrauenserweckend. Vor allem weil die GUI dir nur sagt, dass es einen Fehler gibt. Um herauszufinden, welche Fehlermeldung es denn gab, musste man doch wieder die CLI benutzten. Das wiederspricht der Idee, das Manjaro für bessere Einsteigerfreundlichkeit alles per GUI ermöglicht. Die gleiche Abwesenheit an Fehlermeldungen gibt es auch beim installieren von Sprachpaketen.
- Die fehlenden Fehlermeldung ziehen sich in Manjaro durch alle GUIs.
TODO:
- compile own package chooser to use QAbstractItemView::MultiSelection instead of QAbstractItemView::ExtendedSelection and to allow multiple default selections
- oder man nehme das alte Skript via https://github.com/calamares/calamares/blob/calamares/src/modules/shellprocess/shellprocess.conf
- offline repo?
- manjaro-hello im Live-Image deaktivieren und stattdessen den Installer per autostart ausführen
- manjaro-news und weitere plasma-browser-integration deaktivieren?
- Use remmina (https://wiki.archlinux.org/title/Remmina) instead of x2goclient to avoid AUR? (Also update docs in that case)
- add Doku for preinstalled programs like the music player Elisa.
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
C |gimp|gimp: Bildbearbeitung (Pixelbasiert) C |gimp|gimp: Bildbearbeitung (Pixelbasiert)
c |zsh zsh-doc|zsh: Alternative Shell c |zsh zsh-doc|zsh: Alternative Shell
c |fish|fish: The Friendly Interactive Shell c |fish|fish: The Friendly Interactive Shell
cM |x2goclient|x2go: Remote Desktop Client (z.B. für den RBI-Pool) cM |remmina|x2go: Remote Desktop Client (z.B. für den RBI-Pool)
m |singular|singular: Tool für die Vorlesung Computeralgebra m |singular|singular: Tool für die Vorlesung Computeralgebra
m |gap gap-*|gap: Groups, Algorithms, Programming - ein System für diskrete Mathematik m |gap gap-*|gap: Groups, Algorithms, Programming - ein System für diskrete Mathematik
M |codeblocks|codeblocks: IDE für das C++-Praktikum M |codeblocks|codeblocks: IDE für das C++-Praktikum
...@@ -38,9 +38,6 @@ ...@@ -38,9 +38,6 @@
Pi|valgrind|valgrind: Debugging- und Profilingtool, welches bei der Entwicklung von Programmen hilft Pi|valgrind|valgrind: Debugging- und Profilingtool, welches bei der Entwicklung von Programmen hilft
Pi|gdb|GNU Debugger: Anderes Debugging-Tool Pi|gdb|GNU Debugger: Anderes Debugging-Tool
# Update installer if possible
L |ubiquity|
#Desktop stuff for Kubuntu #Desktop stuff for Kubuntu
D |thunderbird|Thunderbird: E-Mail-Client D |thunderbird|Thunderbird: E-Mail-Client
C |texstudio|texstudio: Graphischer LaTeX-Editor C |texstudio|texstudio: Graphischer LaTeX-Editor
...@@ -49,8 +46,8 @@ L |ubiquity| ...@@ -49,8 +46,8 @@ L |ubiquity|
D |hunspell| D |hunspell|
D |vlc| D |vlc|
c |mpv|mpv: Minimalistischer Mediaplayer c |mpv|mpv: Minimalistischer Mediaplayer
D |p7zip-full| D |p7zip|
D |unrar-free| D |unrar|
#Zenity for Linuxparty.sh #Zenity for Linuxparty.sh
|zenity| |zenity|
...@@ -58,16 +55,15 @@ L |ubiquity| ...@@ -58,16 +55,15 @@ L |ubiquity|
#System stuff, e.g. gcc and efibootmgr #System stuff, e.g. gcc and efibootmgr
D |automake| D |automake|
D |cmake| D |cmake|
D |build-essential|
D |lvm2| D |lvm2|
D |screen| D |screen|
D |tmux| D |tmux|
D |tofrodos| # D |tofrodos| # doesn't exist on manjaro?
D |efibootmgr| D |efibootmgr|
D |gdisk| D |gdisk|
D |fdisk| # D |fdisk| # preinstalled in utils-linux
D |linux-headers-generic| # D |linux-headers-generic| # preinstalled in linux-api-headers
D |network-manager-vpnc| # D |network-manager-vpnc| # doesn't exist in manjaro?
LD |efivar| LD |efivar|
LD |vim| LD |vim|
LD |htop| LD |htop|
...@@ -75,22 +71,16 @@ LD |git| ...@@ -75,22 +71,16 @@ LD |git|
LD |gparted| LD |gparted|
#texlive #texlive
C |texlive-lang-english texlive-bibtex-extra tipa texlive-latex-extra texlive-xetex texlive-latex-base chktex texlive-latex-recommended texlive-lang-german texlive-fonts-recommended psutils texlive-extra-utils texlive-font-utils latexmk texlive-pstricks feynmf texlive-science texlive-pictures texlive-metapost latexdiff tex-gyre texlive-publishers texlive-base lmodern texlive-luatex texlive-binaries|LaTeX mit vielen Paketen für wissenschaftliche Arbeiten C |texlive-bibtexextra texlive-latexextra texlive-fontsextra psutils texlive-pstricks texlive-science texlive-pictures git-latexdiff tex-gyre-fonts texlive-publishers texlive-core texlive-bin texinfo|LaTeX mit vielen Paketen für wissenschaftliche Arbeiten
C |dvidvi dvipng texlive-music tex4ht lcdf-typetools cm-super latex-cjk-all texlive-games context t1utils texlive-fonts-extra lacheck prerex purifyeps texlive-formats-extra texinfo texlive-humanities fragmaster|Zusätzliche Fonts und Pakete für LaTeX C |texlive-music texlive-games t1utils texlive-formatsextra texinfo texlive-humanities|Zusätzliche Fonts und Pakete für LaTeX
c |texlive-metapost-doc texlive-science-doc texlive-latex-recommended-doc texlive-humanities-doc texlive-latex-base-doc texlive-fonts-recommended-doc texlive-pictures-doc info|Dokumentation für LaTeX
# c |texlive-fonts-extra-doc texlive-publishers-doc texlive-latex-extra-doc texlive-pstricks-doc info|Dokumentation für LaTeX
#german language support #german language support
D |hunspell-de-de| D |hunspell-de|
LD |language-pack-de| D |libreoffice-still-de|
D |wngerman| D |man-pages-de|
D |wogerman|
D |wswiss|
D |poppler-data| D |poppler-data|
D |libreoffice-l10n-de|
D |libreoffice-help-de|
D |hyphen-de| D |hyphen-de|
D |mythes-de| D |mythes-de|
D |aspell-de| D |aspell-de|
D |thunderbird-locale-de| D |thunderbird-i18n-de|
D |firefox-locale-de| D |firefox-i18n-de|
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment