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
Użytkownik

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







Podobno człowiek...;)








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
Użytkownik

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







Palacz








Masz taki katalog /mnt/root ?
Offline
Użytkownik

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


Użytkownik



To pokaż wynik
ls /mnt
Offline
Użytkownik

root
Offline
Użytkownik

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/inita "/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

Użytkownik


Do tworzenia initramfs w Archlinux używany jest autorski program mkinitcipo. Skonfiguruj go - sekcja MODULES.
Offline
Strony: 1