Коммит 80490349 создал по автору golovin's avatar golovin
Просмотр файлов

2025-12-15

владелец 5f6235ab
#!/bin/bash
[ "$UID" != 0 ] && { exec sudo bash "$0" && exit 0; }
echo "Установка os-prober на Void и обновление загрузочного меню GRUB."
config="/etc/default/grub" ## && xbps-install -y os-prober
echo "Включение os-prober на Void и обновление загрузочного меню GRUB."
config="/etc/default/grub" # && xbps-install -y os-prober # пакет уже должен быть установлен
function set_grub_param { # заменить строку, если она есть, или добавить строку, если её нет
grep -q "$1" "$config" && sed -i "s|^.*$1.*$|$1=$2|" "$config" || echo "$1=$2" >>"$config"
}
......@@ -11,5 +11,9 @@ echo "Сохранение последней выбранной строки."
set_grub_param "GRUB_SAVEDEFAULT" "true"
echo "Сохранённая строка по умолчанию."
set_grub_param "GRUB_DEFAULT" "saved"
echo "Обновление конфигурации."
echo "Фирменная картинка для оригинальности и для узнаваемости."
set_grub_param "GRUB_BACKGROUND" "/usr/share/void-artwork/splash.png"
echo "Разрешение экрана для графического терминала."
set_grub_param "GRUB_GFXMODE" "1280x800x32"
echo "Обновление конфигурации загрузочного меню GRUB."
grub-mkconfig -o /boot/grub/grub.cfg
#!/bin/bash
[ "$UID" != 0 ] && { exec sudo bash "$0" && exit 0; }
[[ "$TERM" =~ xterm* ]] && { echo "ОШИБКА: setfont в графической консоли не работает." && ERROR=0; }
man -w xbps &>/dev/null || { echo "ОШИБКА: операционная система Void не обнаружена." && ERROR=0; }
[ "$ERROR" == 0 ] && exit 0 || echo "Установка шрифта и раскладки клавиатуры для консоли Void."
# название шрифта и раскладки клавиатуры, полный путь к файлу конфигурации
font="LatGrkCyr-8x16" && keymap="ruwin_alt_sh-UTF-8" && conf="/etc/rc.conf"
# установка шрифта
if setfont "$font"; then
# замена строки со шрифтом в файле конфигурации
sed -i -E "s|^.*FONT=.*$|FONT=\"$font\"|" "$conf"
# замена строки с раскладкой клавиатуры в файле конфигурации
sed -i -E "s|^.*KEYMAP=.*$|KEYMAP=\"$keymap\"|" "$conf"
fi
#!/bin/bash
[ "$UID" != 0 ] && { exec sudo bash "$0" && exit 0; }
package="xtools" && export FONT="ruscii_8x16"
#-----------------------------------------------------------------------------------------------;
xbps-query "$package" >/dev/null || { echo "ОШИБКА: пакет '$package' не найден" >&2 && ERROR=1; }
setfont "$FONT" || { echo "ОШИБКА: шрифт с русскими буквами '$FONT' не найден" >&2 && ERROR=1; }
[ "$ERROR" == 1 ] && { echo "Скрипт следует выполнять в операционной системе Void." >&2 && exit 1; }
export FONT="ruscii_8x16" && if ! setfont "$FONT"; then echo "MISSING RUS FONT" >&2 && exit 1; fi
#-----------------------------------------------------------------------------------------------;
declare -A COLOR=([BW]="30;47" [R]=31 [BR]="30;41" [G]=32 [Y]=33 [BY]="30;43" [C]=36 [N]=0)
function print_color { printf "\e[${COLOR[$1]}m%s\e[${COLOR[N]}m\n" "$2"; } && TARGET="/mnt"
#-----------------------------------------------------------------------------------------------;
title="Установка базовой системы Void Linux EFI и вспомогательных пакетов." && version="2025-12-09"
error_message="Не обнаружены программы из пакетов xbps, xtools операционной системы Void."
printf '%s\n' xbps-install xbps-reconfigure xgenfstab xchroot | while read -r program; do
command -v "$program" >/dev/null || { print_color R "$error_message" >&2 && exit 1; }
done
#-----------------------------------------------------------------------------------------------;
title="Установка базовой системы Void Linux EFI и вспомогательных пакетов." && version="2025-12-13"
printf '%s %s\n' "$(print_color C "$title")" "$(print_color BY "$version")" # (c) Геннадий Головин
#-----------------------------------------------------------------------------------------------;
print_color G "Для установки требуется смонтировать как минимум два раздела в каталог '$TARGET'."
......@@ -57,7 +58,7 @@ while true; do
printf '%s%s %s\n' "$dm_prompt" "$partition" "$(print_color R "$error_message")" && exit 1
fi
text="файловая система:" && dm_text+="$partition $text " && dm_prompt+="$partition $(print_color Y "$text") "
dropdown_menu "$dm_text" "$dm_prompt" BY ext4 fat32 swap && system="$dm_value"
dropdown_menu "$dm_text" "$dm_prompt" BY ext2 ext4 fat32 swap && system="$dm_value"
printf '\r\e[J' && [ "$system" == "ОТМЕНА" ] && continue
text="точка монтирования:" && dm_text+="$system $text " && dm_prompt+="$system $(print_color Y "$text") "
if [ "$system" == "swap" ]; then point="[SWAP]"; else
......@@ -72,6 +73,7 @@ while true; do
printf '%s%s\n' "$dm_prompt" "$format"
[ "$format" == "ДА" ] && case "$system" in
"swap") p_actions+=("mkswap --verbose $partition") ;;
"ext2") p_actions+=("mkfs.ext2 -v $partition") ;;
"ext4") p_actions+=("mkfs.ext4 -v $partition") ;;
"fat32") p_actions+=("mkfs.fat -v -F32 $partition") ;;
esac
......@@ -82,8 +84,8 @@ while true; do
done
#-----------------------------------------------------------------------------------------------;
# проверка корректности введённых данных, корневой и EFI разделы должны быть указаны обязательно
printf '%s\n' "${p_actions[@]}" | grep -qE '\s*/mnt[/]{,1}\s*$' || p_errors+=("корневой раздел (/)")
printf '%s\n' "${p_actions[@]}" | grep -qE '\s*/mnt/boot/efi[/]{,1}\s*$' || p_errors+=("раздел EFI (/boot/efi)")
printf '%s\n' "${p_actions[@]}" | grep -qE '\s+/mnt[/]{,1}\s*$' || p_errors+=("корневой раздел (/)")
printf '%s\n' "${p_actions[@]}" | grep -qE '\s+/mnt/boot/efi[/]{,1}\s*$' || p_errors+=("раздел EFI (/boot/efi)")
((${#p_errors[@]} > 0)) && { for p in "${p_errors[@]}"; do print_color R "ОШИБКА: не указан $p."; done && exit 1; }
#-----------------------------------------------------------------------------------------------;
print_color G "Название компьютера, имя пользователя и пароли для учётных записей не могут быть"
......@@ -102,7 +104,7 @@ function enter_the_name {
}
#-----------------------------------------------------------------------------------------------;
enter_the_name "Название компьютера" "void" && hostname="$the_name"
enter_the_name "Новый пользователь" "void" && username="$the_name"
enter_the_name "Новый пользователь" "void" && username="$the_name" && printf '\n\n\e[2A'
#-----------------------------------------------------------------------------------------------;
function enter_password_2times {
while true; do
......@@ -145,7 +147,7 @@ function scrolling_region {
for ((gap = $1, i = gap; i > 0; i--)); do printf " %02d \n" "$i" | awk '{t="########";print t$0t$0t$0t$0t}'; done
# сужение региона прокрутки от текущей позиции вверх на $1 строк и переопределение курсора в текущей позиции
printf "\e[%s;%sr\e[%sH" "$((cursor - gap))" "$cursor" "$cursor"
# запуск программы с большим количеством выходных сообщений в консоль
# запуск программы с большим количеством исходящих сообщений в консоль
}
#-----------------------------------------------------------------------------------------------;
print_color R "Установка базовой системы и вспомогательных пакетов в каталог '$TARGET'."
......@@ -186,7 +188,7 @@ xchroot "$TARGET" mkdir -p /boot/efi/EFI/boot
xchroot "$TARGET" cp /boot/efi/EFI/the_void/grubx64.efi /boot/efi/EFI/boot/bootx64.efi
#-----------------------------------------------------------------------------------------------;
print_color Y "Конфигурирование пакетов, создание файлов локализации и загрузочного меню GRUB."
scrolling_region 20 && xchroot "$TARGET" xbps-reconfigure -fa && scrolling_region
scrolling_region 20 && { xchroot "$TARGET" xbps-reconfigure -fa || exit 1; } && scrolling_region
#-----------------------------------------------------------------------------------------------;
echo "Название компьютера в сети." && echo "$hostname" >"$TARGET/etc/hostname"
echo "127.0.1.1 $hostname.home $hostname" >>"$TARGET/etc/hosts"
......
......@@ -11,17 +11,3 @@ pkg_list+=(pulseaudio network-manager-applet lightdm-gtk-greeter-settings)
pkg_list+=(numlockx) # установка пакетов и включение служб в автозагрузку
xbps-install -Suy "${pkg_list[@]}" && services=(lightdm dbus gpm NetworkManager)
printf '/etc/sv/%s ' "${services[@]}" | xargs ln -vs -t /etc/runit/runsvdir/default/
# включение NumLock по умолчанию для графической сессии
line="greeter-setup-script=" && conf="/etc/lightdm/lightdm.conf"
sed -i "s|#$line.*\$|$line/usr/bin/numlockx on|" "$conf"
# настройка экрана входа в систему
cat >"/etc/lightdm/lightdm-gtk-greeter.conf" <<\GREETER
[greeter]
theme-name = Arc-Lighter
icon-theme-name = Papirus-Light
background = /usr/share/backgrounds/xfce/xfce-blue.jpg
user-background = false
hide-user-image = true
clock-format = %a %d, %H:%M
indicators = ~host;~spacer;~spacer;~clock;~spacer;~spacer;~language;~session;~a11y;~power
GREETER
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать