Próbuję utworzyć obraz systemu Linux z niestandardowo wybranymi pakietami.
To, co próbuję zrobić, to ręcznie stworzyć pakiety, których będę używać na laptopie XO, ponieważ kompilacja pakietów zajmuje naprawdę dużo czasu na prawdziwym sprzęcie XO, jeśli mogę zbudować wszystkie potrzebne mi pakiety i po prostu sflashować obraz do XO, mogę zaoszczędzić czas i miejsce.
Kiedy próbowałem zainstalować niektóre pakiety, konfiguracja nie powiodła się z powodu braku katalogów proc, sys, dev. Nauczyłem się więc z innych miejsc, że muszę „zamontować” procesor hosta, ... katalogi do mojego środowiska chroot.
Widziałem dwie składnie i nie jestem pewien, której użyć.
W maszynie hosta:
mount --bind /proc <chroot dir>/proc
i inna składnia (w środowisku chroot):
mount -t proc none /proc
Którego powinienem użyć i jakie są różnice?
chroot()
”. W szczególności zdeterminowani mogą czytać pliki poza swoją sekcją systemu plików, jeśli nie jesteś ostrożny.Odpowiedzi:
Dla
/proc
i/sys
przypuszczam, że możesz użyć dowolnej z tych metod. Oba są specjalnymi systemami plików, więc można je odtworzyć dowolną liczbę razy (metoda łączenia bind używa dokładnie tego samego podłączenia co system hosta, podczas gdy druga metoda używa nowego podłączenia). Zawsze widziałem oprawę wiążącą zalecaną w przewodnikach, więc skorzystam z niej. O ile mi wiadomo, nie ma naprawdę istotnej różnicy.Jednak
/dev
zwykle jest to montowanie tmpfs, którym zarządza udev, więc musi to być ten sam system plików, co na komputerze hosta. Oznacza to, że musisz użyć metody bind mount.Jeśli ten chroot będzie przez jakiś czas dostępny, możesz umieścić te wpisy w
/etc/fstab
systemie hosta, aby uprościć sprawę.źródło
sys
type
system plików wydaje się ( dzisiaj ) już nie istnieć?Arch Linux Wiki proponuje następujące polecenia:
źródło
--rbind
dlasys
idev
.Gentoo konkretnie nazywa się te dwa polecenia do ponownego montażu / proc i / dev. Używałem ich kilka razy.
Podejrzewam, że / sys to zwykły folder, więc powinieneś mieć możliwość utworzenia twardego linku.
źródło
Warto zauważyć, że w tym popularnym pytaniu Arch Linux stworzył skrypt arch-chroot ; Ściągnij
arch-install-scripts-15-1-any.pkg.tar.xz
Zajmuje się różnymi pokrewnymi problemami zarówno w Arch-Linux, jak i Manjaro , gdzie również z powodzeniem go wykorzystałem. Możliwe, że więcej Arch- pochodnych, takich jak Parabola, jest również kompatybilnych.
Podczas gdy zwykły standard
chroot
w dodatkowej instalacji Manjaro nie pozwala na uruchomienie(srebrna kula po awarii systemu), zastępując linię
pozwoli ci naprawić twoją dodatkową instalację Arch-pochodną poprzez
jak urok. Skrypt bash
arch-chroot
zajmuje się/dev /sys /proc
i wiele więcej, które są pozostawione same sobie przez standardchroot
.patrz także: Korzystanie z arch-chroot
źródło
Istnieją inne pseudo systemy plików i lokalizacje tmpfs. To jest na Debianie:
Powinno być w porządku do zamontowania
usbfs
,rpc_pipefs
adevpts
pseudo-systemy plików od wewnątrz chroot. Polecam nie wiązanie/proc
z chroot/proc
, ponieważ jądro ma koncepcję przestrzeni nazw i może w rzeczywistości umieszczać różne rzeczy w procerze chroot.Aktualizacja: zgodnie z tym wątkiem listy mailingowej , / sys nie powinien być montowany w trybie wiązania, szczególnie jeśli procesy chrootowane korzystają z własnej sieciowej przestrzeni nazw.
To zły pomysł, aby zamontować system
/var
lub/run
na chroot, jeśli chroot ma własną przestrzeń nazw pid.źródło
Najłatwiejszym sposobem jest użycie pętli for:
źródło