Форум
CRUX
redix:
Привет! Спортивнее было бы не вводить 100500 команд, а сделать скрипт, выложить его на гитхаб, или пастебин, и запустить его командой типа:wget $url -O - | sh
илиcurl https://www.example.com/files/coreinstall.sh -o new-filename.sh
Можно будет обработать ссылку линк-шортенером, и существенно укоротить команду.ЗЫ. Если нужен пример, то могу выложить скрипт, которым я обстругивал центось.
Привет!
Попробовал и я соорудить скрипт. Выложи пожалуйста свой для центоси. Просто интересна логика мышления, чего я не предусмотрел. Учиться никогда не поздно...
Скрипт скачивает образ последнего CRUX на подготовленный для этого раздел. Автоматом монтирует образ, раздел для установки. Устанавливает, делает минимальные действия по настройке русификации и настройке prt-get и pkgmk, создаёт скрипт для chroot. Ты умеешь читать скрипты, поэтому вся основная инфа в самом скрипте. Скрипт имеет свой конфиг - install_crux.conf. Именно в нём определяются каталоги - откуда брать и куда устанавливать:
#╓────────────────────────
#║ Определение переменных
#╚═════════════════════════════════════════════════════─────────────────────────
# install_crux.conf
# Переменные, которые нужно ОБЯЗАТЕЛЬНО подстроить под свои требования
# перед началом работы скрипта.
# Определитесь, куда вы собираетесь устанавливать дистрибутив.
# Можете определить рабочий каталог, куда будет скачпан ISO-образ CRUX
# Каталог в который будет монтироваться раздел, на который установим CRUX
TRG_CRUX="/mnt/crux"
# Рабочий каталог
WRK_CRUX="/wrk/"
# Каталог в который монтируется ISO-образ CRUX
SRC_CRUX="/wrk/isos"
# ISO-образ CRUX
ISO_CRUX="crux-3.5-updated.iso"
# http - адрес откуда скачаем ISO-образ CRUX
ISO_ADDR="https://crux.ninja/updated-iso/"
# Раздел, на который установим CRUX
DEV_CRUX="/dev/sda5"
# Раздел подкачки
SWP_CRUX="/dev/sda6"
#╓────────────────────────
#║ End of file
#╚═════════════════════════════════════════════════════─────────────────────────Собственно сам скрипт install_crux:
#!/bin/sh
# версия 0.1 2020.05.10
#╓────────────────────────
#║ Определение переменных
#╚═════════════════════════════════════════════════════─────────────────────────
source ./install_crux.conf || exit 1
#╓────────────────────────
#║ Подготовка к установке
#╚═════════════════════════════════════════════════════─────────────────────────
# Создать каталог, если не существовало ни его самого, ни ссылки на него.
if [[ ! -d "$TRG_CRUX" && ! -L "$TRG_CRUX" ]] ; then
mkdir -p $TRG_CRUX
fi
if [[ ! -d "$SRC_CRUX" && ! -L "$SRC_CRUX" ]] ; then
mkdir -p $SRC_CRUX
fi
# Проверяем наличие iso-образа в каталоге.
# Если нету, то скачиваем и монтируем.
# Если уже есть, то просто монтируем.
if [[ ! -f "$SRC_CRUX"/"$ISO_CRUX" && ! -L "$SRC_CRUX"/"$ISO_CRUX" ]]; then
echo "Скачиваю образ $ISO_CRUX и монтирую его";
( cd "$WRK_CRUX"; wget -c $ISO_ADDR/$ISO_CRUX )
mount "$WRK_CRUX"/"$ISO_CRUX" "$SRC_CRUX"
else
echo "$ISO_CRUX закачан ранее, просто монтирую его"
mount "$WRK_CRUX"/"$ISO_CRUX" "$SRC_CRUX"
fi
# Монтирование раздела для установки CRUX
mount $DEV_CRUX $TRG_CRUX
#╓────────────────────────
#║ Процесс установки.
#╚═════════════════════════════════════════════════════─────────────────────────
cd $WRK_CRUX
# Извлекаем менеджер пакетов pkgadd для установки пакетов CRUX
tar xvf $SRC_CRUX/crux/core/pkgutils*.tar* usr/bin/pkgadd -O > ./pkgadd
chmod a+rx ./pkgadd
# Создаём пустой файл базы данных установленных пакетов
mkdir -p $TRG_CRUX/var/lib/pkg
touch $TRG_CRUX/var/lib/pkg/db
# Устанавливаем пакеты набора core
for pkg in $SRC_CRUX/crux/core/*
do echo "Установка пакета $pkg"
./pkgadd -r $TRG_CRUX/ $pkg
done
#╓────────────────────────
#║ Предварительная настройка дистрибутива
#╚═════════════════════════════════════════════════════─────────────────────────
# Создаём файл fstab
cat > $TRG_CRUX/etc/fstab << EOF
$SWP_CRUX swap swap defaults 0 0
$DEV_CRUX / ext4 defaults 1 1
devpts /dev/pts devpts gid=5,mode=620 0 0
proc /proc proc defaults 0 0
tmpfs /dev/shm tmpfs nosuid,nodev,noexec 0 0
# Монтирование /tmp в ОЗУ. Раскоментировать по желанию строку ниже,
# если ОЗУ 4Гб и больше.
#tmpfs /tmp tmpfs defaults,size=2G,mode=1777 0 0
EOF
# Прописываем версию дистрибутива для того, чтобы загрузчик ОС GRUB
# не принимал CRUX за "неизвестный linux"
cat > $TRG_CRUX/etc/lsb-release << EOF
DISTRIB_ID=CRUX
DISTRIB_RELEASE=3.5
DISTRIB_CODENAME=posix
DISTRIB_DESCRIPTION="Crux64 3.5 updated"
EOF
# Системные настройки - русификация, шрифт консоли, временная зона
cat > $TRG_CRUX/etc/rc.conf << EOF
#╓────────────────────────
#║ /etc/rc.conf: system configuration
#╚═════════════════════════════════════════════════════─────────────────────────
FONT=LatArCyrHeb-16
KEYMAP=ruwin_ct_sh-UTF-8.map
TIMEZONE=Europe/Moscow
HOSTNAME=cdrw
SYSLOG=sysklogd
SERVICES=(lo net crond)
#╓────────────────────────
#║ End of file
#╚═════════════════════════════════════════════════════─────────────────────────
EOF
# Сохраняем оригинальный pkgmk.conf на всякий случай
mv $TRG_CRUX/etc/pkgmk.conf $TRG_CRUX/etc/pkgmk.conf.old
# Создаём новый pkgmk.conf преднастроеный под свои нужды
cat > $TRG_CRUX/etc/pkgmk.conf << EOF
#╓────────────────────────
#║ /etc/pkgmk.conf: конфигурация pkgmk(8)
#╚═════════════════════════════════════════════════════─────────────────────────
export CFLAGS="-O2 -march=x86-64 -pipe"
export CXXFLAGS="\${CFLAGS}"
export JOBS=\$(nproc)
export MAKEFLAGS="-j \$JOBS"
case \${PKGMK_ARCH} in
"64"|"")
;;
"32")
export CFLAGS="\${CFLAGS} -m32"
export CXXFLAGS="\${CXXFLAGS} -m32"
export LDFLAGS="\${LDFLAGS} -m32"
export PKG_CONFIG_LIBDIR="/usr/lib32/pkgconfig"
;;
*)
echo "Unknown architecture selected! Exiting."
exit 1
;;
esac
# PKGMK_SOURCE_MIRRORS=()
# PKGMK_SOURCE_DIR="\$PWD"
# PKGMK_PACKAGE_DIR="\$PWD"
# PKGMK_WORK_DIR="\$PWD/work"
# PKGMK_DOWNLOAD="no"
PKGMK_IGNORE_SIGNATURE="yes"
PKGMK_IGNORE_MD5SUM="yes"
PKGMK_IGNORE_FOOTPRINT="yes"
# PKGMK_IGNORE_NEW="no"
PKGMK_NO_STRIP="no"
# PKGMK_DOWNLOAD_PROG="wget"
# PKGMK_WGET_OPTS=""
# PKGMK_CURL_OPTS=""
PKGMK_COMPRESSION_MODE="xz"
#╓────────────────────────
#║ End of file
#╚═════════════════════════════════════════════════════─────────────────────────
EOF
# Сохраняем оригинальный prt-get.conf на всякий случай
mv $TRG_CRUX/etc/prt-get.conf $TRG_CRUX/etc/prt-get.conf.old
# Создаём новый prt-get.conf преднастроеный под свои нужды
cat > $TRG_CRUX/etc/prt-get.conf << EOF
#╓────────────────────────
#║ /etc/prt-get.conf: конфигурация prt-get(8)
#╚═════════════════════════════════════════════════════─────────────────────────
# Примечание:
# Очередность расположения в списке каталогов с портами имеет значение
# Это на случай, если в каталогах с портами две версии одного и того же пакета
# При создании пакета приоритет будет отдан первому по списку каталогу с портами
prtdir /usr/ports/core
prtdir /usr/ports/opt
prtdir /usr/ports/xorg
# Раскоментируйте, если хотите использовать мультибиблиотечность в системе
#prtdir /usr/ports/compat-32
# Раскоментируйте, если хотите использовать неофициальные порты от сообщества
#prtdir /usr/ports/contrib
### Так подключают свой, локальный репозиторий
# prtdir /home/packages/build:mypackage
### Опции журналирования:
# writelog enabled # (enabled|disabled)
# logmode overwrite # (append|overwrite)
# rmlog_on_success yes # (no|yes)
logfile /var/log/pkgbuild/%n.log
# path, %p=path to port dir, %n=port name
# %v=version, %r=release
### Использовать альтернативный файл кэша (default: /var/lib/pkg/prt-get.cache
# cachefile /mnt/nfs/cache
### Вывод информации из файла README:
# readme verbose # (verbose|compact|disabled)
### Предпочитать более новые версии sysup / diff
# preferhigher no # (yes|no)
### При поиске использовать regexp
# useregex no # (yes|no)
### Выполнять до/после-установочные скрипты; yes - эквивалентно опции
### --install-scripts option
# runscripts no # (no|yes)
### ЭКСПЕРТ РАЗДЕЛ ###
### альтернативные команды
# makecommand pkgmk
# addcommand pkgadd
# removecommand pkgrm
# runscriptcommand sh
#╓────────────────────────
#║ End of file
#╚═════════════════════════════════════════════════════─────────────────────────
EOF
# Создаём скрипт chroot.sh для входа в сеанс chroot
cat > ./chroot.sh << EOF
#!/bin/sh
#╓────────────────────────
#║ Скрипт смены корневого каталога chroot.sh
#╚═════════════════════════════════════════════════════─────────────────────────
if [ "\$UID" != "0" ]; then
echo "Для chroot нужен доступ под root!"
exit 1
fi
CRUX=\$1
if [ -z \$1 ]; then
echo "Введите путь для смены корневого каталога!"
exit 1
fi
if [ ! -d \$CRUX ]; then
echo "Каталог '$CRUX' не существует"
exit 1
fi
pushd \$CRUX
mount -v --bind /dev \$CRUX/dev
mount -vt devpts devpts \$CRUX/dev/pts -o gid=5,mode=620
mount -vt proc proc \$CRUX/proc
mount -vt sysfs sysfs \$CRUX/sys
mount -vt tmpfs tmpfs \$CRUX/run
if [ -e /etc/resolv.conf ]; then
cp -L /etc/resolv.conf \$CRUX/etc/
fi
chroot "\$CRUX" /bin/bash -l
popd
echo "Сеанс chroot закончен."
echo "Отмонтирование виртуальных файловых систем"
umount -v \$CRUX/dev/pts
umount -v \$CRUX/dev
umount -v \$CRUX/run
umount -v \$CRUX/proc
umount -v \$CRUX/sys
exit $?
#╓────────────────────────
#║ End of file
#╚═════════════════════════════════════════════════════─────────────────────────
EOF
chmod a+rx ./chroot.sh
umount $SRC_CRUX
umount $TRG_CRUXЕсли не лень, попробуй, мне важно мнение со стороны... Критику и матюки воспринимаю, только тихонько, шоб соседи не слышали... :)
#!/usr/bin/bash
#
# Postinstall script for MontanaLinux: https://img.cs.montana.edu/linux/montanalinux/
#
# Install ELREPO
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
# Install Nux-Dextop repo
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
# Creating a /swapfile & enable it
fallocate -l 8G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo "/swapfile none swap defaults 0 0" >> /etc/fstab
# Enable CR repo & rebase system
# yum clean all
# yum-config-manager --enable cr
# yum update -y
# Install yum-pugins & update system
yum install yum-langpacks -y
rm -rf /var/cache/yum
yum update -y
# Install some other stuff
yum install dmz-cursor-themes gnome-disk-utility lightdm-settings gtk-murrine-engine \
firefox gvfs gtk-xfce-engine gtk2-engines beesu unzip p7zip p7zip-plugins conky \
file-roller xfce4-weather-plugin htop xdg-user-dirs alsa-utils pavucontrol Zim \
xfce4-xkb-plugin xfce4-taskmanager woeusb notify-python pygtk2-libglade wget firefox \
dconf-editor libusal genisoimage libarchive lzop ncompress autofs nano hwinfo \
librsvg2 xed bash-completion system-config-date system-config-users yumex xclip \
ntfs-3g xfce4-whiskermenu-plugin menulibre libXScrnSaver os-prober xviewer \
xviewer-plugins xfce4-genmon-plugin xfce4-time-out-plugin dconf ntfsprogs \
xfce4-pulseaudio-plugin light-locker gvfs-mtp xfce4-genmon-plugin numlockx \
xfce4-time-out-plugin xdg-user-dirs cairo libXft xorg-x11-server-Xvfb -y
# Resolve Thunar archive plugin problem
ln -s /usr/libexec/thunar-archive-plugin/file-roller.tap /usr/libexec/thunar-archive-plugin/org.gnome.FileRoller.tap
# Create folders in home dir
xdg-user-dirs-update
# Set hardware clock to UTC
hwclock --systohc --utc
# Move /tmp to RAM
cd /
sudo su -c 'echo "tmpfs /tmp tmpfs size=2G,noexec,nosuid,rw,auto,nouser,sync,relatime,mode=01777 0 0" >> /etc/fstab'
# Disable SELinux
sed -i -e 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# Limit the number of installed kernels
sed -i -e 's/installonly_limit=5/installonly_limit=2/' /etc/yum.conf
# Disable unnecessary services
localectl set-keymap no
localectl set-x11-keymap no
systemctl mask systemd-udev-settle
systemctl mask lvm2-monitor.service
systemctl mask NetworkManager-wait-online.service
systemctl mask postfix.service
# Install additional wallpapers
cd /usr/share/backgrounds
wget -O - "https://www.dropbox.com/s/dsyudgg06zab1z2/wls.tar.gz?dl=0" | tar xzf -Век живи, век учись... Из ссылки узнал про команду fallocate...
И ещё про MontanaLinux, чьими репами дистр пользуется? Или это уже самостоятельный дистрибутив?
У него репы центоси, да это центось и есть на самом деле, форк для универа штата монтана делает Scott Dowdle, насколько я понял для учебного процесса. Я беру мин образ, и проезжаю по нему этим и еще тремя скриптами, и получается centos 7 + xfce c мултимедиями и тем софтом, что я использую. Ставлю в один раздел ext4.
ЗЫ. Только сейчас какой то бок вылез, после обновления дико тормозит курсор и инерция у него какая то, не разбирался пока, не очень со временем свободным.
shurumburum:
Похоже в этой связке ошибка
if [ -e /etc/resolve.conf ]; then
cp -L /etc/resolve.conf $CRUX/etc/
fiтот, который resolve.conf не resolve совсем, а resolv, то бишь resolv.conf
В остальном всё работает на отлично.
С Новым голом!
Спасибо за поздравление. Про ошибку знаю, сам позже заметил. Исправлять лень, да и положительный эффект есть. Кто-то, да заметил. Всёж приятно...
Привет
Впечатления исключительно замечательные.
Я сторонник простоты и надёжности.
CRUX у меня ещё версии 3.3.
На большие версии пакеты не обновляю.
На отдельном разделе стоит последняя 3.6 версия, иногда обновляемая, но мне оно что-то не нравится.
По сравнению с 3.3 очень толстое, медленное и, как мне кажется, лишнего в мой любимый CRUX разрабы напихивают всё больше и больше... а зачем, непонятно.
А 3.3 летает и, что удивительно, не ломается... от слова совсем!
Мне, как минималисту по жизни, нужно совсем мало - geany, mtpaint, mpv, audacious, file-roller, gparted, FBReader и, конечно, милашка xfce4 (4.12) полностью, надёрганная ещё из 3.2 версии.
Само собой есть ворованное из slackware 14.2, все эти gvfs и прибамбасы для работы с смартфоном.
И все программки исключительно на GTK2.
Быстрые, надёжные и красивые.
Ну, и Firefox самый последний в компании с apulse ( пульсу я не ставил, не люблю её). Вот его я только и меняю регулярно...
Торчать за компом некогда, а приведённый набор программ меня вполне устраивает.
Для меня интернет чисто источник знаний и способ общения с пока ещё живыми одноклассниками и друзьями детства.
Жизнь в реале интереснее чем в интернете. И чем дольше живу, тем больше это понимаю.
А Вам успехов всегда и во всём!