vasek, я немного о другом. Параметр img_loop - єто полный путь iso файла на устройстве $img_dev. Пруф Т.е. если они у вас были в корне диска, то все-таки правильно было бы писать не archlinu...iso, a /archlinux...iso. Именно по этому wau и страдает.
PS. Более того, допустим sda1 монтируется как /boot, а sda2 как /home/anode к корневому диску sda3. Есть два образа арча: один /boot/iso/arch.iso, второй /home/anode/iso/arch.iso. img_dev для них будет различным, но img_loop=/iso/arch.iso одинаков.
wau, попробуйте
# пункт меню номер 4
menuentry "ArchLinux ISO" {
isofile=/boot/arch.iso
root='hd0,msdos3'
loopback loop $isofile
probe -s root_uuid -u $root
root='loop'
 linux /arch/boot/x86_64/vmlinuz-linux img_dev=/dev/disk/by-uuid/$root_uuid img_loop=$isofile earlymodules=loop
 initrd /arch/boot/x86_64/initramfs-linux.img /arch/boot/intel-ucode.img /arch/boot/amd-ucode.img
}
wau
прописал я ему, ненасытному, img_loop=archlinux-2020.12.01-x86_64.iso. Толку ноль
Естественно. Прописать вы должны полный путь iso образа. В вашем случае img_loop=/boot/arch.iso
Как грузиться с установочного образа арча нцать лет назад Natrio в вики написал. С тех пор изменилось только название ядра и образа инитрам соответственно на vmlinuz-linux и initramfs-linux.img( было vmlinuz и archiso.img). Я бы еще добавил микрокод для своего процессора, а можно и для обеих, раз уж они есть на сидюке. В результате получим:

dir=
#Файл образа с именем вида archlinux-YYYY.MM.DD-x86_64.iso должен лежать в корне раздела.
#В этом случае текст файла конфигурации можно использовать "как есть", без каких-либо правок
#Если же вы хотите использовать для образа (образов) особый каталог,
#впишите путь к нему (относительно корня раздела) в строку dir=, например
#dir=/boot/iso
arch=x86_64
insmod regexp               # для шаблонов * в именах файлов
probe -s root_uuid -u $root # получаем UUID для подстановки в img_dev=

for iso in $dir/archlinux-*-$arch.iso ; do      # ищем образ(ы) Arch по шаблону
 if [ ! -f "$iso" ] ; then continue; fi        # только если образ существует
 regexp -s build 'archlinux-(.+)-'$arch "$iso"  # получаем из имени образа дату сборки

  menuentry "Arch Linux ISO $build $arch" --source="\
loopback loop $iso
probe -s isolabel -l loop
linux (loop)/arch/boot/$arch/vmlinuz-linux archisolabel=\$isolabel img_dev=/dev/disk/by-uuid/$root_uuid img_loop=$iso earlymodules=loop
initrd (loop)/arch/boot/$arch/initramfs-linux.img (loop)/arch/boot/intel-ucode.img (loop)/arch/boot/amd-ucode.img"

done
Надо помнить, что строка probe -s root_udid -u $root сохраняет UUID раздела, на котором хранятся образ сидюка. Если ГРОБ и образ на разных разделах - получите фигню. Тогда можно добавить перед этой строкой root='раздел, где исо'.
PS. vasek, мне кажется, что строка linux .... в вашем посте должна выглядеть так:
grub > linux (loop)/arch/boot/x86_64/vmlinuz-linux img_dev=/dev/disk/by-uuid/$root_uuid img_loop=$isofile  earlymodules=boot
img_loop=$isofile
wau
(hd0,3)
нет такого раздела в grub-2.04*. Просто нет. Есть (hd0,msdos3), а (hd0,3) нет.
wau
probe (я, конечно, пробовал) - моя консоль такого не знает.
Какая консоль? Это команда grub.
Родилось подозрение, что у вас или первый grub или grub4dos.
PS. В части msdos может и не прав, grub на такой, (hd0,3), синтаксис отзывается.

[[email protected] ~]# pacstrap /mnt/cont base
.....
[[email protected] ~]# systemd-nspawn -D /mnt/cont/
Spawning container cont on /mnt/cont.
Press ^] three times within 1s to kill container.
[[email protected] ~]# hwclock --systohc
hwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --verbose option to see the details of our search for an access method.
vasek
а вот вместо chroot
фиг применеш во время установки, хотя часы можно и потом установить, а вот с grubом как? Попробуйте применить параметр --bind для systemd-nspawn или позаписовать что-то типа ' b 8:* rwm' в файл /sys/fs/cgroup/devices/machine.slice/machine-ваш_контейнер.scope/devices.allow на хосте после запуска контейнера. Вам понравится, линукс же, куча методов )))
ЗЫ. Запуск командой systemd-nspawn -D /mnt/cont --bind=/dev/rtc0 -b -- --unit rescue.target не дает установить часы:
[[email protected] ~]# hwclock --systohc
hwclock: ioctl(RTC_SET_TIME) to /dev/rtc0 to set the time failed: Permission denied
[[email protected] ~]# ls -l /dev
....
crw-rw-rw- 1 root root   1, 8 Dec  6 12:35 random
crw------- 1 root root 249, 0 Dec  5 19:55 rtc0
drwxrwxrwt 2 root root     40 Dec  6 12:35 shm
...
vasek, с таким объемом gcc-10.x.x уже и не скомпилируеш. Места не хватит ))
vasek
по дефолту идет в tmpfs
сомнительно. Из man makepkg.conf:
If this value is not set, packages will, by default, be built in subdirectories of the directory that makepkg is called from. 
из файла /etc/makepkg.conf:
#BUILDDIR=/tmp/makepkg
Как видим, по-умолчанию каталог, из которого запушен makepkg.
BUILDDIR=куда хотите
makepkg --help и man makepkg{,.conf} вам поможет, в вики теже разделы.
PS. За час я даже на своих дровах ядро компилирую, если же вы решили скомпилировать ядро со всеми дровами для сетевух, юсби и прочего зоопарка,имхо,плохая затея.
Естественно, их нет и быть не должно. /usr/lib/os-release принадлежит systemd.
Если такой файл создать, лучше от єтого не становится.
Да и речь совершенно о другом. Chroot - традиционная юникс команда, предназначенная для выполнения в специальном корневом каталоге команды из этого каталога. Имеет 5 параметров,два из которых --version и --help. И man страницу на 10 строк.
systemd-nspawn - контейнер, со всеми вытекающими, пусть и легковесный, пусть очередной велосипед от Лёни, но контейнер: сотня опций, конфиги и.т.д. Конечно, можно использовать вместо chroot, для наивных так в руководстве и написано: продвинутый chroot, но это из пушки по воробьям.
ЗЫ.
Все привыкли чарутиться с командой /bin/sh -i, но ведь можно и так:
-su-5.0# uname -a
Linux TM8481 4.19.57-1 #1 SMP PREEMPT Sat Jul 6 08:46:19 EEST 2019 x86_64 Intel(R) Core(TM) i3-2357M CPU @ 1.30GHz GenuineIntel GNU/Linux
-su-5.0# chroot /mnt/arch /usr/bin/mkinitcpio -p linux
==> ERROR: /proc must be mounted!
-su-5.0# mount -B /proc /mnt/arch/proc
-su-5.0# mount -B /dev /mnt/arch/dev
-su-5.0# mount -B /sys /mnt/arch/sys
-su-5.0# ls -l /mnt/arch/boot/*.img
-rw-r--r-- 1 root root 3164160 чер 12 21:00 /mnt/arch/boot/intel-ucode.img
-su-5.0# chroot /mnt/arch /usr/bin/mkinitcpio -p linux
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
  -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==> Starting build: 5.7.2-arch1-1
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [resume]
  -> Running build hook: [autodetect]
  -> Running build hook: [modconf]
  -> Running build hook: [block]
  -> Running build hook: [filesystems]
  -> Running build hook: [keyboard]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux.img
==> Image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback'
  -> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback.img -S autodetect
==> Starting build: 5.7.2-arch1-1
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [resume]
  -> Running build hook: [modconf]
  -> Running build hook: [block]
==> WARNING: Possibly missing firmware for module: aic94xx
==> WARNING: Possibly missing firmware for module: wd719x
  -> Running build hook: [filesystems]
  -> Running build hook: [keyboard]
  -> Running build hook: [fsck]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-fallback.img
==> Image generation successful
-su-5.0# ls -l /mnt/arch/boot/*.img
-rw-r--r-- 1 root root 34441486 гру  3 12:26 /mnt/arch/boot/initramfs-linux-fallback.img
-rw-r--r-- 1 root root 13052135 гру  3 12:25 /mnt/arch/boot/initramfs-linux.img
-rw-r--r-- 1 root root  3164160 чер 12 21:00 /mnt/arch/boot/intel-ucode.img
Как видите, я сгенерировал образы инитрам для арча находясьв другой ос, не покидая ее и не имея в ней команды mkinitcpio )
Можно и так
-su-5.0# chroot /mnt/arch /usr/bin/pacman -Sy
:: Синхронізування бази даних пакунків...
 core                            132,8 KiB   179 KiB/s 00:01 [################################] 100%
 extra                          1636,4 KiB  1788 KiB/s 00:01 [################################] 100%
 community                         5,2 MiB  2,99 MiB/s 00:02 [################################] 100%
 archlinuxcn                    1433,8 KiB  2,32 MiB/s 00:01 [################################] 100%
-su-5.0#

vasek
лучше su не использовать …
аргументы?

vasek
этот дистр без systemd? - правда даже и не знаю, важно ли это.
Не просто важно, а как говАривал дедушка Лёнарт: Архи важно! Всех, кто не использует СистемДЭ к стенке! )))
ЗЫ. А особенно меня пугает, что сиськадэ - это уже не система инициализации, а:
suite of basic building blocks for a Linux system