Pull to refresh

Автозапуск своих скриптов в Systemrescuecd

Level of difficultyMedium

Введение

Systemrescuecd - Live-CD образ linux основанный на Arch Linux, до версии 6.0, основа данного образа являлась Gentoo. В рабочих задачах порой незаменимый ToolPack для сисадмина или иных технических специалистов.

В какое-то время у нас возникает желание что-то автоматизировать, а не постоянно вводить длинные и большие по количеству команды. В нашем случае используя systemrescuecd, мы добавим простенький скрипт меню в автозагрузку используя whiptail.

И так, начнём.

ШАГ 1. Подготовка

Создание каталога проекта и дочерний каталог для распаковки iso образа:

mkdir -p ~/rescuecd/unpacked

Переходим в каталог rescuecd и скачиваем посредством wget iso образ:

cd ~/rescuecd
wget https://fastly-cdn.system-rescue.org/releases/11.03/systemrescue-11.03-amd64.iso -O systemrescuecd.iso

Далее для распаковки образа iso, а также его сборки нам необходим sysrescue-customize, также через wget:

wget https://gitlab.com/systemrescue/systemrescue-sources/-/raw/main/airootfs/usr/share/sysrescue/bin/sysrescue-customize?inline=false -O sysrescue-customize

Присваиваем права на выполнение sysrescue-customize:

 chmod +x ./sysrescue-customize

ШАГ 2. Распаковка образа

С помощью sysrescue-customize распаковываем iso образ командой:

./sysrescue-customize --unpack --source=systemrescuecd.iso --dest=./unpacked

ШАГ 3. Создаём базовый скрипт меню

С помощью whiptail, мы позволим пользователю взаимодействовать со скриптом более интерактивно, поэтому напишем такой скрипт в каталоге autorun распакованного образа:

vim ./unpacked/filesystem/autorun/auto-menu.sh
#!/bin/bash

MENU=$(
    whiptail --title "Your menu" \
    --menu "Choose task" 15 60 4 \
    "1" "First item" \
    "2" "Second item" \
    "3" "Third item" \
    3>&1 1>&2 2>&3)

execstat=$?

if [ $execstat = 0 ]; then
    echo "Selected $MENU"
    read -p "Press enter: "
else   
    echo "Canceled"
    read -p "Press enter: "
fi

После сохраняем и закрываем файл. Важно выдать сразу права на исполнение, иначе при запуске получим Permission denied:

chmod +x ./unpacked/filesystem/autorun/auto-menu.sh

ШАГ 4. Настройка автозапуска

Настройку автозапуска, мы будем производить посредством конфигурации YAML, поэтому редактируем файл:

vim unpacked/filesystem/sysrescue.d/100-defaults.yaml
#Редактируем блок autorun

autorun: 
  exec: 
    300: 
      path: "/run/archiso/bootmnt/autorun/auto-menu.sh"

Путь в запущенном образе каталог autorun содержится в /run/archiso/bootmnt/, в YAML конфигурации как мы видим, мы указали абсолютный путь до скрипта, после чего нам необходимо только собрать образ в iso и выполнить его запуск в виртуальной машине или записать на носитель, тут уж кто во что горазд.

ШАГ 5. Сборка образа

В сборке образа iso, также используем sysrescue-customize:

./sysrescue-customize --rebuild --source=unpacked --dest=sysres.iso

Если после изменений скрипта автозапуска или других файлов, вам не хочется удалять каждый раз изменёный только что образ iso, используем опцию --overwrite.

ШАГ 6. Запускаем и радуемся

Финальная картина, следующая:

Автозапуск меню с помощью whiptail
Автозапуск меню с помощью whiptail

P.S.

Вот таким образом мы смогли создать скрипт и внести его в автозагрузку Live-CD systemrescuecd. Статья написана более подробно, так как изначально рассчитана на обширный круг интересующих данной темой читателей.

Если в данной статье вы нашли ошибку, что-то у вас не получилось или имеются предложения по статье, прошу в комментарии.

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.