Форум
CRUX
Наигравшись с разными дистрибутивами, особенно с NuTyX, созрел для опробования его родоначальника, дистрибутива CRUX.
Напрямую установить не получилось, что то пошло не так. Не заработало... Установил на соседний раздел из дистрибутива MX-Linux. Скорее всего, конфиг ядра не подошёл моему компу. Поэтому, скомпилировал ядро для CRUX от Slackware-current, которое доказало свою работоспособность на моём стареньком компе.
Вобщем, ещё один вариант установки дистрибутива CRUX, по материалам множества постов и авторов статей. Не указываю авторов специально, если шо, плюйте в меня. Но от меня им спасибо.
Вобщем по порядку. Есть комп с установленным MX-Linux, GRUB Управляет пуском ракет, он и должен запустить нового соседа по имени CRUX.
Инсталляционный ISO образ дистрибутива CRUX содержит статистически скомпилированную утилиту pkgadd.
Поэтому её можно использовать для установки системы CRUX из пакетов, также включенных в ISO, из другого дистрибутива.
Для начала нужно загрузить установочный образ ISO с одного из зеркал.
wget -c http://ftp.spline.inf.fu-berlin.de/pub/crux/crux-3.4/iso/crux-3.4.isoДалее, под root, смонтируйте его так, чтобы его файлы были доступны системе:
sudo mkdir -p /mnt/crux-mount
sudo mkdir -p /mnt/crux
sudo mount /dev/sda9 /mnt/crux/
sudo mount -o loop,ro crux-3.4.iso /mnt/crux-mountПотом извлеките менеджер пакетов в домашний каталог:
tar xvf /mnt/crux-mount/crux/core/pkgutils*.tar* usr/bin/pkgadd -O > ./pkgadd
chmod a+rx ./pkgaddСоздайте необходимые каталог и файл на разделе для CRUX, для подготовки к работе утилиты pkgadd.
sudo mkdir -p /mnt/crux/var/lib/pkg
sudo touch /mnt/crux/var/lib/pkg/dbУстановите пакеты из всех трёх категорий пакетов:
sudo for pkg in /mnt/crux-mount/crux/core/*; do echo "installing $pkg" && ./pkgadd -r /mnt/crux/ $pkg; done
sudo for pkg in /mnt/crux-mount/crux/opt/*; do echo "installing $pkg" && ./pkgadd -r /mnt/crux/ $pkg; done
sudo for pkg in /mnt/crux-mount/crux/xorg/*; do echo "installing $pkg" && ./pkgadd -r /mnt/crux/ $pkg; doneПропишите версию дистрибутива для того, чтобы grub не принимал CRUX за “неизвестный linux”:
sudo cat > /mnt/crux/etc/lsb-release << EOF
DISTRIB_ID=CRUX
DISTRIB_RELEASE=3.4
DISTRIB_CODENAME=posix
DISTRIB_DESCRIPTION="Crux 3.4 LTS"
EOFСоздайте скрипт входа в среду chroot:
#!/bin/bash
if [ "$UID" != "0" ]; then
echo "Chroot need root access!"
exit 1
fi
CRUX=$1
if [ -z $1 ]; then
echo "Please set directory to chroot!"
exit 1
fi
if [ ! -d $CRUX ]; then
echo "Directory '$CRUX' not exist"
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 [ -h $CRUX/dev/shm ]; then
mkdir -pv $CRUX/$(readlink $CRUX/dev/shm)
fi
if [ -e /etc/resolve.conf ]; then
cp -L /etc/resolve.conf $CRUX/etc/
fi
chroot "$CRUX" /usr/bin/env -i \
HOME=/root \
TERM="$TERM" \
PS1='(crux chroot) \u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin /bin/bash --login
popd
echo chroot exited
echo "Unmounting virtual filesystem"
umount -v $CRUX/dev/pts
umount -v $CRUX/dev
umount -v $CRUX/run
umount -v $CRUX/proc
umount -v $CRUX/sys
exit $?Войдите в среду “chroot” в окне root:
./chroot /mnt/cruxПерейдите в каталог с предполагаемыми исходниками ядра:
cd /usr/src/Скачайте архив с исходниками ядра:
wget -c https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.13.tar.xzИзвлеките исходники:
tar -xvf linux-<version>.tar.xz -C /usr/srcСоздайте символическую ссылку(Slackware влияет на мозги):
ln -s linux-4.19.13 linuxПерейдите в каталог с исходниками ядра:
cd /usr/src/linuxСкачайте конфиг с действующего Slackware-current:
wget -c http://slackware.uk/slackware/slackware-current/source/k/kernel-configs/config-huge-4.19.13.x64Скомпилируйте ядро с помощью команд:
make menuconfigУзнайте количество ядер своего процессора с помощью команды nproc:
nproc
4
Для продолжения нажмите любую клавишу...Запустите процесс компиляции ядра и модулей:
make -j4После окончания компиляции установите модули ядра командой:
make modules_installСкопируйте ядро в каталог /boot:
cp arch/x86/boot/bzImage /boot/vmlinuz-4.19.13Туда же скопируйте файл с символьной таблицей адресов функций и процедур System.map:
cp System.map /bootТуда же скопируйте на всякий случай конфиг скомпилированного ядра:
cp .config /boot/config-huge-4.19.13.x64Назначьте пароль пользователю root:
passwdСоздайте пользователя, я создаю в примере пользователя cdrw:
useradd -m -G users,wheel,video,audio -s /bin/bash cdrwИ ему тоже назначьте пароль:
passwd cdrwПереходим в домашний каталог root:
cd /rootНастраиваем файл /etc/rc.conf:
sudo /usr/bin/featherpad /mnt/crux/rc.confПриводим к такому виду,
#
# /etc/rc.conf: system configuration
#
FONT=LatArCyrHeb-16
KEYMAP=ruwin_ct_sh-UTF-8.map
TIMEZONE=Europe/Vilnius
HOSTNAME=cdrw
SYSLOG=sysklogd
SERVICES=(lo net crond)
# End of fileчто значит:
FONT= консольный шрифт, имеющий в своём составе кириллицу.
KEYMAP= консольная раскладка, умеющая переключать клавиатуру с латиницы на кириллицу.
TIMEZONE= временная зона, часовой пояс, где вы находитесь.
HOSTNAME= имя вашего компьютера, который будет, возможно, виден под ним в сети.
SYSLOG= оставляем без изменений... Сам не знаю, журнал какой то.
SERVISES= службы, которые вы хотите запустить при старте системы.
Генерируем русскую локаль:
localedef -i ru_RU -f UTF-8 ru_RU.utf8Помещаем строки
export LANG=ru_RU.utf8
source ~/.bashrcв файл /etc/profile.
Делаем доступной категорию портов compat-32:
mv /etc/ports/compat-32.rsync.inactive /etc/ports/compat-32.rsyncДелаем доступной категорию портов contrib:
mv /etc/ports/contrib.rsync.inactive /etc/ports/contrib.rsyncОбновляем порты:
ports -uЗагружаем исходники в порты, чтобы не заморачиваться потом:
for pkg in `prt-get listinst`; do cd /usr/ports/*/$pkg && pkgmk -do; doneУстанавливаем файловый консольный менеджер mc:
cd /usr/ports/opt/mcСобираем порт:
pkgmk -dУстанавливаем образовавшийся в результате этой операции бинарный пакет:
pkgadd mc#4.8.22-1.pkg.tar.gzВыходим из сеанса chroot:
exitОчищаем результаты своей деятельности:
umount /mnt/crux-mount
rmdir /mnt/crux-mount
rm ./pkgadd
umount /mnt/cruxПрописываем систему:
sudo update-grubПерезагружаемся.
Всё.
Привет! Спортивнее было бы не вводить 100500 команд, а сделать скрипт, выложить его на гитхаб, или пастебин, и запустить его командой типа:
wget $url -O - | shили
curl https://www.example.com/files/coreinstall.sh -o new-filename.shМожно будет обработать ссылку линк-шортенером, и существенно укоротить команду.
ЗЫ. Если нужен пример, то могу выложить скрипт, которым я обстругивал центось.
Напишешь комментарии, вот проблема. Начинающий все равно не установит, а сведущий прочитает, я всегда(почти) читаю их. А есть еще чувак из Франции Kiki Novak, он пилит офисную систему на базе центоси, так у него в скрипте кругом эхо понатыкано, при установке еще и пишет в терминале, по хранцузски правда, сейчас делается то-то.
Вот мой скрипт тебе для примера:Спойлер
#!/usr/bin/bash
#
# Postinstall script for MontanaLinux: [url]https://img.cs.montana.edu/linux/montanalinux/[/url]
#
# Install Epel-release & disable gpgchech
rpm --import [url]http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7[/url]
yum install epel-release -y
sed -i -e 's/gpgcheck=1/gpgcheck=0/' /etc/yum.repos.d/epel.repo
# Install ELREPO
rpm --import [url]https://www.elrepo.org/RPM-GPG-KEY-elrepo.org[/url]
rpm -Uvh [url]http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm[/url]
## Install additional repos & disable it
# Install Nux-Dextop repo
rpm --import [url]http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro[/url]
rpm -Uvh [url]http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm[/url]
yum-config-manager --disable nux-dextop
# Install StotinkaOS repo
rpm --import [url]https://www.stotinkaos.net/stotinkaOS/repo/7/RPM-GPG-KEY-StotinkaOS-7[/url]
yum-config-manager --add-repo=https://www.stotinkaos.net/stotinkaOS/repo/7/stotinkaOS.repo
yum-config-manager --disable StotinkaOS-Base
yum-config-manager --disable StotinkaOS-Wine
# 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
# Limit the number of installed Linux kernels
sed -i -e 's/installonly_limit=5/installonly_limit=2/g' /etc/yum.conf
# Install yum-pugins & update system
yum install yum-langpacks -y
rm -rf /var/cache/yum
yum update -y
# Install some other stuff
yum install gnome-disk-utility lightdm-settings gtk-murrine-engine \
gvfs gtk-xfce-engine gtk2-engines beesu unzip p7zip p7zip-plugins conky \
file-roller xfce4-weather-plugin xdg-user-dirs alsa-utils pavucontrol \
xfce4-xkb-plugin xfce4-taskmanager notify-python pygtk2-libglade wget \
dconf-editor libusal genisoimage libarchive lzop ncompress autofs nano \
librsvg2 xed bash-completion system-config-date system-config-users yumex \
ntfs-3g xfce4-whiskermenu-plugin alacarte libXScrnSaver os-prober xviewer \
xviewer-plugins xfce4-genmon-plugin xfce4-time-out-plugin dconf ntfsprogs \
xfce4-pulseaudio-plugin -y
# Install additional xfce plugins
yum --enablerepo=StotinkaOS-Base install xfce4-genmon-plugin numlockx \
xfce4-places-plugin xfce4-time-out-plugin gtkhash-thunar thunar-dropbox \
thunar-media-tags-plugin thunar-archive-plugin xfburn mugshot galculator \
catfish -y
# Set hardware clock to UTC
hwclock --systohc --utc
# 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 - "[url]https://www.dropbox.com/s/dsyudgg06zab1z2/wls.tar.gz?dl=0[/url]" | tar xzf -
## Install additional fonts & infinality packages
yum --enablerepo=StotinkaOS-Base install ubuntu-fonts google-roboto-fonts google-roboto-mono-fonts bitstream-vera* -y
yum --enablerepo=nux-dextop install cairo libXft fontconfig-infinality freetype-infinality -y
# Install OTF SF Pro & Monaco fonts
cd /usr/share/fonts
wget -O - "[url]https://www.dropbox.com/s/5nf6isrp44rzf3p/OTF.tar.gz[/url]" | tar xzf -
# Create an index of X font files in a directory
cd OTF && mkfontdir
# Go to parent folder & update font cache
cd .. && fc-cache -fv
# Download infinality.conf
cd /etc/fonts/infinality/ && mv infinality.conf infinality.conf.bak
wget -O infinality.conf [url]https://pastebin.com/raw/DXsRTLmt[/url]
# Choose a rendering style
./infctl.sh setstyle
Приветствую участников форума! Извиняюсь за орфографию, пишу с телефона.
У меня вопрос относительно локализации crux. Что делаю: генерирую русскую локаль, прописываю в profile заветную строчку, пересобираю все пакеты, затем собираю chromium и увы, русских символов он не понимает. Не нужно ли в pkgfile указывать какую либо функцию вроде setlocate? И если да, то как это должно выглядеть.
ПС. с линуксами на Вы, буду рад любым ответам, ссылкам. спасибо
В отличие от Арчлинуха допустим, в круксе генерят локали по другому:
6.1.4. Generating locales
Starting with CRUX 2.5, glibc does not contain all possible locales anymore, thus you'll have to generate the locales you need/use. The following example is a typical setup for swedish users, replace sv_SE* with the locale you want:
# localedef -i sv_SE -f ISO-8859-1 sv_SE
# localedef -i sv_SE -f ISO-8859-1 sv_SE.ISO-8859-1
# localedef -i sv_SE -f UTF-8 sv_SE.UTF-8 https://crux.nu/Main/Handbook3-4
Пустое, я не обидчивый. Возможно какие то опции при сборке нужно указывать, крукс вроде использует систему портов, может вам стоит покурить бсд-шные доки? Впрочем тут я не советчик. По локализации, как по мне так гентушная вики написано более понятным языком, чем арчевики, местами по крайней мере. https://wiki.gentoo.org/wiki/Localization/Guide/ru
И что, так прямо и сдадитесь? Попробуйте Venom Linux, он основан на LFS и по мотивам Крукса.
Страница загрузки: https://sourceforge.net/projects/venomlinux/files/
Спасибо, не слышал об этом дестрибутиве. Похоже дестрибутив появился недавно, на distrowatch информации по нему нету, да и на сайте проекта ничего. Предлагаете подрабатывать мейнтейнером на общественных началах? Мысль интересная, и даже возможно практичная, в плане получения опыта, жаль нет времени.
ПС crux оставил в дуалбуте, будет время обязательно разберусь.
Дело в том, что хромой и производные по идее должен подхватывать настройки окружения, он же на Gtk3/ Но это по идее, а без идеи что там в головах разработчиков - фик его знает.
PS. Чтобы дистрибутив появился на дистроваче, многие разработчики сами предлагают Ладиславу свои сборки. По крайней мере разрабы PiSi Linux так и сделали году в 12-13-ом. Если зайти на sourceforge, и набрать в поиске Arch например, то вывалится страниц десять с производными, и не факт что из них многие будут на дистроваче.