Сайт | Скачать | Видео | Wiki

Автор Тема: Сборка UIRD в Arch Linux (PKGBUILD)  (Прочитано 15213 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #15 : 29 Февраль 2020, 12:13:38 »
Тогда лучше сделать 2 своих пакета : uird-busybox uird dracut и их в зависимости пакета uird

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #16 : 29 Февраль 2020, 12:24:23 »
Делал пакет для магеи. В src пакет исходники и бизибокса и дракута входят, а в самом пакете mkuird только откомпиленный бинарник бизибокса и то что нужно от дракута. Все это лежит в одной папке uird в usr/lib или в /usr/share используется только для сборки уирд и системным дракуту и бизибоксу не мешает никак.

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #17 : 29 Февраль 2020, 13:53:45 »
Из гит уирд нужно все. В подпапке бизибокса только сам бинарь. В подпапке дракут после компиляции тоже наверное можно почистить, но кажется я не стал разбираться и оставил все. Все это добро после инсталляции лежит в одной папке в /usr/share или в /usr/lib не уверен как правильнее. Сам пакет правильнее назвать mkuird по аналогии с mkinitrd. Соответсятвенно и папку также. Кроме этого нужен еще скриптик /usr/bin/mkuird который бы и собирал uird используя mkuird из сборочной папки уирд.
« Последнее редактирование: 29 Февраль 2020, 14:33:50 от betcher »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #18 : 29 Февраль 2020, 14:33:34 »
Код
# Maintainer: 
# Contributor:

pkgname=('uird-busybox' 'uird-dracut' 'uird')
#pkgname=('uird')
_gitname=uird
pkgver=r529.92152f2
pkgrel=2
pkgdesc='UIRD initrd'
arch=('i686' 'x86_64' 'aarch64')
url="https://github.com/neobht/uird.git"
license=('GPL')
#groups=('uird')
makedepends=('make' 'gcc' 'pkgconfig' 'git')
source=("git+$url")
md5sums=('SKIP')

pkgver() {
    cd "${srcdir}/${_gitname}"
    printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}

build() {
    cd "${srcdir}/${_gitname}"
    ./make_busybox.sh
    ./make_dracut.sh
}

package_uird-busybox() {
pkgdesc="UIRD busybox"
    cd "${srcdir}/${_gitname}/busybox"
    #make DESTDIR="$pkgdir" install
    mkdir -p "${pkgdir}"/usr/lib/uird/busybox
    install -m755 "${srcdir}"/${_gitname}/busybox/busybox "${pkgdir}"/usr/lib/uird/busybox
}

package_uird-dracut() {
pkgdesc="UIRD dracut"
depends=('bash' 'coreutils' 'cpio' 'filesystem' 'findutils' 'grep' 'gzip'
         'kmod' 'pkgconf' 'procps-ng' 'sed' 'systemd' 'util-linux' 'xz')
provides=('initramfs')
conflicts=('dracut')
#backup=('etc/dracut.conf')

    cd "${srcdir}/${_gitname}/dracut"
#    mkdir -p   "${pkgdir}"/usr/lib/uird/dracut
#    make DESTDIR="$pkgdir"/usr/lib/uird/dracut install
    make DESTDIR="$pkgdir" install
}

package_uird() {
pkgdesc="UIRD initrd"
depends=('uird-busybox' 'uird-dracut' 'cpio' 'filesystem' 'findutils' 'grep' 'gzip'
         'kmod' 'pkgconf' 'procps-ng' 'sed' 'systemd' 'util-linux' 'xz')
    cd "${srcdir}/${_gitname}"
    mkdir -p "${pkgdir}"/usr/lib/uird
  install -Dm644 {mkuird.cfg,dracut.conf} "${pkgdir}"/usr/lib/uird
  cp -a {configs,keys,i18n,initrd,modules.d} "${pkgdir}"/usr/lib/uird
  ln -s /usr/lib/dracut "${pkgdir}"/usr/lib/uird

  install -Dm755 "mkuird" "${pkgdir}"/usr/lib/uird
  sed -i 's#./dracut/dracut.sh#dracut#' "${pkgdir}"/usr/lib/uird/mkuird
}
Только надо придумать как поправить usr/lib/kernel/install.d/50-dracut.install  - автопересборка
Ну или удалить его и дальше руками (плохо)
« Последнее редактирование: 29 Февраль 2020, 14:37:15 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #19 : 29 Февраль 2020, 15:00:27 »
надо придумать как поправить usr/lib/kernel/install.d/50-dracut.install 
функцию add переделать на
Код
/usr/lib/uird/mkuird prar1912 -e crypt,aes,ntfs &&
    mv /usr/lib/uird/uird.prar1912.cpio.xz $INITRD
        ret=$?
Менее костыльно без переделки mkuird не сделать

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #20 : 29 Февраль 2020, 15:56:01 »
Менее костыльно без переделки mkuird не сделать
Что-то вроде такого и было в /usr/bin/mkuird.
Можно и сам mkuird переделать, главное чтоб ничего никому не сломать. Есть идеи?
« Последнее редактирование: 29 Февраль 2020, 17:46:26 от betcher »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #21 : 29 Февраль 2020, 17:40:14 »
Спек. Собирал по нему и в росе и в магее. После немного правили магеевцы, в какой стадии конкретно этот вариант уже не помню :)
Код
%define gitrev af85318
%define gitdate 20190208

%define _missing_build_ids_terminate_build 0

# Git repo: https://github.com/neobht/uird.git

# How to prepare the source archive from the git tree:
# git clone --recursive https://github.com/neobht/uird.git && cd uird
# hash=$(git log -1 --format='%h') ; date=$(git log -1 --format='%cd' --date=short | tr -d -) &&  tar czf  ../uird-${date}-git${hash}.tar.gz --exclude=.git  ../uird

Summary:    Unified Init Ram Disk system
Name:       uird
Version:    2.1.1
Release:    %mkrel -c 1 %{gitdate}git%{gitrev}
License:    GPLv2+
Group:      System/Base
Url:        http://neobht.github.io/uird
Source0:    %{name}-%{gitdate}-git%{gitrev}.tar.gz
Source1:    mkuird
Source2:    MgaRemix
AutoReq:    no

BuildRequires:    git-core
BuildRequires:    dash
BuildRequires:    bash
BuildRequires:    pkgconfig(systemd)
BuildRequires:    bash-completion
BuildRequires:    pkgconfig
BuildRequires:    pkgconfig(libkmod)
Requires:    systemd >= 219
Requires(pre):    filesystem
Requires(pre):    coreutils
Requires:    udev
Requires:    util-linux-ng
Requires:    kmod
Requires:    e2fsprogs
Requires:    cpio
Requires:    findutils
Requires:    binutils
Requires:    grep
Requires:    mktemp
Requires:    bash
Requires:    dash
Requires:    kbd
Requires:    tar
Requires:    gzip
Requires:    bzip2
Requires:    xz
Requires:    file
Requires:       qemu-img
Requires:       aria2
Requires:       httpfs
Requires:       rsync

%description
UIRD - dracut based unified init ram disk system.
Dracut contains tools to create a bootable initramfs for Linux kernels.

%prep
%setup -qn %{name}

%build
./make_busybox.sh
./make_dracut.sh

%install
mkdir -p %{buildroot}%{_datadir}/uird/busybox/  %{buildroot}%{_bindir}/
cp -fr ./dracut    %{buildroot}%{_datadir}/uird/
cp -fr ./configs   %{buildroot}%{_datadir}/uird/
cp -fr ./initrd    %{buildroot}%{_datadir}/uird/
cp -fr ./i18n %{buildroot}%{_datadir}/uird/
cp -fr ./modules.d %{buildroot}%{_datadir}/uird/
find ./  -maxdepth 1 -type f -regex "./[a-z,A-Z,0-9].*" -exec cp {}  %{buildroot}%{_datadir}/uird/  \;
cp ./busybox/busybox %{buildroot}%{_datadir}/uird/busybox/

install -m 755 %{SOURCE1} %{buildroot}%{_bindir}/
install -m 644 %{SOURCE2} %{buildroot}%{_datadir}/uird/configs/uird_configs/
rm -rf %{buildroot}%{_prefix}/lib
rm -rf %{buildroot}%{_prefix}/src

%files
%{_datadir}/uird/*
%{_bindir}/mkuird

%changelog


А это /usr/bin/mkuird, тот что в спеке Source1 (Source2 это конфиг uird для MgaRemix там ничего интересного)
Код
#!/bin/bash
CUR_PWD=$(pwd)
cd /usr/share/uird
./mkuird $@
mv ./uird* ${CUR_PWD}/
cd $CUR_PWD


Не знаю поможет ли, но вдруг :)
« Последнее редактирование: 29 Февраль 2020, 17:43:42 от betcher »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #22 : 29 Февраль 2020, 18:14:38 »
Что-то упустил в зависимостях. Собранный скриптом uird не загружает :(

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #23 : 29 Февраль 2020, 18:28:14 »
cp -fr ./dracut    %{buildroot}%{_datadir}/uird/
Ну это уж совсем плохо. Копировать вместе с src
Почему make install не сделать в нужное место
mv ./uird* ${CUR_PWD}/
:D тоже не заморачивались
В mkuird надо хотя бы опциональный ключ -output
Это никому ничего не сломает
Тогда
Код
/usr/lib/uird/mkuird -o $INITRD
        ret=$?
Ну и конфиги в lib - как то не очень. Хотя бы пересести в /etc , в в либ - симлинки сделать
Кстати  -с для юирд есть, а конфиг дракут гвоздями прибит
Хорошо бы тоже в ключ -cd например

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #24 : 29 Февраль 2020, 18:29:38 »
:D тоже не заморачивались
Моя задача была сделать чтоб работало :) До ума так и не довели

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #25 : 29 Февраль 2020, 18:38:06 »
В mkuird надо хотя бы опциональный ключ -output
Это никому ничего не сломает
Тогда
Код

/usr/lib/uird/mkuird -o $INITRD
        ret=$?

Ну и конфиги в lib - как то не очень. Хотя бы пересести в /etc , в в либ - симлинки сделать
Кстати  -с для юирд есть, а конфиг дракут гвоздями прибит
Хорошо бы тоже в ключ -cd например
Подумаю что можно сделать.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #26 : 29 Февраль 2020, 18:38:29 »
пересести в /etc , в в либ - симлинки сделать
Кстати  -с для юирд есть, а конфиг дракут гвоздями прибит
Хорошо бы тоже в ключ -cd например
Так будет значительно лучше и совместимо

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #27 : 29 Февраль 2020, 18:45:40 »
Так будет значительно лучше и совместимо
Либо делать еще один скрипт, который будет уже брать конфиги из /etc и скармливать все это mkuird. Мне кажется mkuird должен остаться локальным, чтоб git clone и собирай все в одной папке. Такой юзкейс же нельзя исключать.

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #28 : 29 Февраль 2020, 18:52:07 »
Либо делать еще один скрипт,
Да, наверное так. А в mkuird добавить ключ для конфига дракута только.

Оффлайн k0l0p0k

  • Ветеран
  • *****
  • Сообщений: 1611
  • Репутация: +27/-1
Re: Сборка UIRD в Arch Linux (PKGBUILD)
« Ответ #29 : 01 Март 2020, 09:23:14 »
https://github.com/neobht/uird/blob/master/i18n/usr/share/uird.help/ru_RU.UTF-8/uird.noload.help

описывается параметр uird.noload=
а в примере:
Цитата
Пример:
uird.load=/modules/;/optional/
Такая запись означает: подключать модули и каталоги из источников (uird.from=), которые прошли фильтр
uird.load= только в случае, если в полном имени файла/каталога отсутствует сочетание символов
/modules/ либо /optional/

в примере все верно? где жирным выделил, не подразумевается ли noload ?
« Последнее редактирование: 01 Март 2020, 09:46:54 от k0l0p0k »
1.пень G2020,8Gb,Radeon RX460 (Debian+openBox+LXPanel)
2.нетбук  Samsung N145 (Debian+openBox+LXPanel, ddr01)