Как стать автором
Обновить

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

Уровень сложностиСредний

Введение

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. Статья написана более подробно, так как изначально рассчитана на обширный круг интересующих данной темой читателей.

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

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.