Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam!
korzystając z tego: https://wiki.gentoo.org/wiki/Custom_Initramfs tutoriala próbuje utworzyć Initramfs. Zamiast korzystać z busyboxa skopiowałem "bash", "sh", "mount" i "umount" do katalogu "bin" i umieściłem potrzebne biblioteki w folderze "lib". Pojawia się jednak problem z zamontowaniem partycji "/dev/sda1"
mount: /mnt/root: unknown filesystem type 'ext4' Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
plik init:
#!/bin/sh /bin/mount -t proc none /proc /bin/mount -t sysfs none /sys /bin/mount -t ext4 -o ro /dev/sda1 /mnt/root /bin/umount /proc /bin/umount /sys exec switch_root /mnt/root /sbin/init
grub.cfg
linux /boot/vmlinuz-linux root=/dev/ram0 initrd /boot/custom-initramfs.cpio.gz
Ostatnio edytowany przez andrewdre (2019-11-30 20:42:47)
Offline
Pierwsze Primo:
Wkompiluj systemy plików na stale w jajko, zaznaczasz, żeby były w kernelu a nie jako ładowalne.
Drugie Primo:
Initramfs CI się przyda do szyfrowanej partycji, w przeciwnym razie lepiej, żeby jajo do podniesienia systemu nie potrzebowało niczego.
Trzecie Primo:
Teraz się do initrams używa Dracuta od jakiegoś czasu.
Wygodniejsze to jest od starej gimnastyki z initrafs.
https://wiki.gentoo.org/wiki/Initramfs/Guide#Using_dracut
https://wiki.gentoo.org/wiki/Dracut
Pozdro
PS:
Primo. xD
Ostatnio edytowany przez Jacekalex (2019-11-30 21:12:06)
Offline
Dzięki za odpowiedź i filmik :) Przepraszam że teraz dopiero odpisuje. Spróbowałem z busyboxem i nie ma już problemu z ext4. Pojawił się niestety inny:
mount: mounting /dev/sda1 on /mnt/root failed: No such file or directory.
Offline
Masz taki katalog /mnt/root ?
Offline
Tak. Dodałem polecenie lsblk do pliku init i lista dysków jest pusta.
Ostatnio edytowany przez andrewdre (2019-12-03 18:11:08)
Offline
To pokaż wynik
ls /mnt
Offline
root
Offline
Udało się ogarnąć, ale nie tak jak chciałem. Skorzystałem z domyślnego initramfs:
gunzip -c /boot/initramfs-linux.img | cpio -id
Strukturę plików i katalogów zostawiłem.
Zmieniony przeze mnie init wygląda tak:
#!/usr/bin/ash run_hookfunctions() { local hook fn=$1 desc=$2 shift 2 for hook in "$@"; do [ -x "/hooks/$hook" ] || continue unset "$fn" . "/hooks/$hook" type "$fn" >/dev/null || continue "$fn" done } mount -t proc none /proc mount -t sysfs none /sys mount -t devtmpfs none /dev run_hookfunctions 'run_earlyhook' 'early hook' 'udev' run_hookfunctions 'run_hook' 'hook' 'udev' mount -t ext4 -o ro /dev/sda1 /mnt/root run_hookfunctions 'run_latehook' 'late hook' '' run_hookfunctions 'run_cleanuphook' 'cleanup hook' 'udev' umount /proc umount /sys umount /dev exec switch_root /mnt/root /sbin/init
a "/hooks/udev" tak:
#!/usr/bin/ash run_earlyhook() { kmod static-nodes --format=tmpfiles --output=/run/tmpfiles.d/kmod.conf systemd-tmpfiles --prefix=/dev --create --boot /usr/lib/systemd/systemd-udevd --daemon --resolve-names=never udevd_running=1 } run_hook() { msg ":: Triggering uevents..." udevadm trigger --action=add --type=subsystems udevadm trigger --action=add --type=devices udevadm settle } run_cleanuphook() { udevadm control --exit udevadm info --cleanup-db } # vim: set ft=sh ts=4 sw=4 et:
To rozwiązanie działa, ale problem polega na tym, że po aktualizacji kernela muszę ponownie rozpakować "initramfs-linux.img" i podmieniać pliki. Proszę o pomoc z wersją z busyboxem.
Ostatnio edytowany przez andrewdre (2019-12-06 00:08:25)
Offline
Do tworzenia initramfs w Archlinux używany jest autorski program mkinitcipo. Skonfiguruj go - sekcja MODULES.
Offline
Strony: 1