User Tools

Site Tools


сборка_на_базе_mageia_mandriva

Сборка на базе Mageia (Mandriva)

Надобно создать образ корневой файловой системы

mkdir /home/uf4n/myrootfs/

Так решается непонятная проблема с urpmi

mkdir -p /home/uf4n/myrootfs/usr/lib64/gconv
cp /usr/lib64/gconv/gconv-modules.cache /home/uf4n/myrootfs/usr/lib64/gconv

Примонтировать некоторые системные каталоги для более корректной работы пакетного менеджера

сначала создать будущие точки монтирования

mkdir /home/uf4n/myrootfs/proc /home/uf4n/myrootfs/dev /home/uf4n/myrootfs/sys

примонтировать всё что нужно

mount -t proc none /home/uf4n/myrootfs/proc
mount --bind /dev /home/uf4n/myrootfs/dev
mount --bind /sys /home/uf4n/myrootfs/sys

Установка базового набора (система будет без пакетного менеждера; только Bash и основные утилиты)

urpmi bash net-tools iputils dhcpcd --force --root /home/uf4n/myrootfs/

Установка пакетного менеджера

urpmi rpm-build wget urpmi --force --root /home/uf4n/myrootfs/

Чтобы установить систему на диск, нужен загрузчик, утилиты для разбивки и форматирования диска

urpmi lilo e2fsprogs --force --root /home/uf4n/myrootfs/

Примечание: ядро тянет непонятные зависимости и установка в среде chroot проходит не совсем корректно. Надо устанавливать ядро по-другому. Из исходников.

По идее, этого достаточно, чтобы установить систему (вручную) с работающим пакетным менеджером.

umount /home/uf4n/myrootfs/dev
umount /home/uf4n/myrootfs/sys
umount /home/uf4n/myrootfs/proc

Запаковать в архив образ корневой файловой системы

cd /home/uf4n/myrootfs/
tar -cJf MyPreciousRootFS.tar.xz *

Установка на диск вручную

1) Записать на одну флешку rescue-образ, на другую архив с файловой системой.

2) Отформатировать диск

создать разделы на /dev/sda

fdisk /dev/sda

* Удалить все существующие разделы на диске, введя d и указав номер раздела.
* Создать новый раздел, введя n.
* Выбрать тип раздела (обычно p для основного раздела или e для расширенного раздела).
* Ввести номер нового раздела.
* Ввести начальный и конечный сектор раздела. Если надо использовать все свободное пространство, оставьте эти поля пустыми.
* Записать изменения, введя w.

отформатировать разделы

mkfs.ext4 /dev/sda1

3) Распаковать архив с корневой ФС на диск и чрутнуться на него

mkdir /mnt/n95 && mount /dev/sda1 /mnt/n95 && cd /mnt/n95
tar -xpJf ../MyPreciousRootFS.tar.xz

4) Написать /etc/fstab (/mnt/n95/etc/fstab)

proc		/proc			proc	nosuid,noexec,gid=proc		0 0
devpts		/dev/pts		devpts	nosuid,noexec,gid=tty,mode=620	0 0
tmpfs		/tmp			tmpfs	nosuid				0 0

/dev/sda1	swap	swap	defaults	0	0
/dev/sda2	/	ext4	noatime	1	1

5) Чрутнуться

mount -o rbind /dev /mnt/n95/dev
mount -o rbind /sys /mnt/n95/sys/
mount -t proc none /mnt/n95/proc/
env -i TERM=$TERM SHELL=/bin/bash HOME=$HOME $(which chroot) /mnt/n95 /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"

6) Указать пакетному менеджеру репозиторий

“Прокинуть” сеть в среду chroot

ifconfig enp0s20u2c2 down
ifconfig enp0s20u2c2 up
dhcpcd enp0s20u2c2
urpmi.addmedia yamirr https://mirror.yandex.ru/mageia/distrib/9/x86_64/media/core/release/

7) Собрать ядро

urpmi ncurses-devel flex bison
cd /boot
tar -xpJf linux-5.15.79.tar.xz
cd linux-5.15.79
make defconfig
make -j`nproc`
cp arch/x86_64/boot/bzImage /boot/vmlinuz
cd /boot
gcc -Wall init.c -o /sbin/my_init

8) Перегенерировать initrd

Перегенерация initrd

9) Установить загрузчик lilo

Установка и настройка загрузчика LILO

10) Настроить lilo на загрузку нужного ядра и init'a

Попытка сделать образ с apt оказалась неудачной

urpmi rpm-build --root /home/uf4n/myrootfs/
urpmi apt --root /home/uf4n/myrootfs/

Примечания

  • количество странных зависимостей, типа python и systemd повергает в шок!
  • пакетный менеджер написан на perl. Это плохо.

Ссылки

Пакетный менеджер urpmi

Как самому за один вечер собрать минимальную ОС Linux из исходного кода | Хабр

сборка_на_базе_mageia_mandriva.txt · Last modified: 2024/04/29 14:35 by uf4n