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
9) Установить загрузчик lilo
Установка и настройка загрузчика LILO
10) Настроить lilo на загрузку нужного ядра и init'a
urpmi rpm-build --root /home/uf4n/myrootfs/ urpmi apt --root /home/uf4n/myrootfs/
Ссылки
Как самому за один вечер собрать минимальную ОС Linux из исходного кода | Хабр