Używam Clonezilla, aby umieścić nowy obraz CentOS 7 na naszych komputerach. Większość z nich to komputery stacjonarne Lenovo i mamy kilka komputerów stacjonarnych HP, na których obecnie działa stary obraz.
Aby nowy obraz działał po przywróceniu go przez Clonezillę do nowego obrazu, musimy wstawić USB z dyskiem ratunkowym CentOS 7 i uruchomić go, aby uruchomić niektóre polecenia, zaczynając od chroot /mnt/sysimage
.
Działa to dobrze na komputerach stacjonarnych Lenovo, ale po uruchomieniu tego polecenia na komputerach HP otrzymuję ten komunikat o błędzie:
chroot: failed to run command ‘/bin/bash’: No such file or directory
Zarówno Lenovo, jak i maszyny HP mają ten sam rozmiar HD (80 GB) i na obu z nich wprowadzam dokładnie ten sam nowy obraz. Przez całe życie nie mogę zrozumieć, dlaczego jeden działa, a drugi nie, i nie chcę demontować nowego obrazu i zaczynać od zera (mamy tylko około 5 maszyn HP, reszta to Lenovo) .
Czy ktokolwiek mógłby dostarczyć informacji na temat tego, dlaczego polecenie chroot nie działa na komputerach HP? Dzięki.
Odpowiedzi:
Wygląda na to, że / mnt / sysimage nie jest zamontowany zgodnie z oczekiwaniami. Komenda
powinien powiedzieć ci, co jest zamontowane
/mnt/sysimage
. Jeśli nie ma wyjścia,/mnt/sysimage
nie jest zamontowany, w takim przypadku spróbuj go zamontować ręcznie. Użyj polecenia:aby uzyskać listę partycji. Więc spróbuj
Być może będziesz musiał odgadnąć poprawną nazwę partycji. Nie możemy nam powiedzieć z podanych informacji. Aby spróbować innej partycji, odmontuj poprzednią partycję przez
źródło
mount /dev/<partition_name> /mnt/sysimage
Polecenie, że partycja jest chroniona przed zapisem i tylko do odczytu. Potem spróbujęchroot /mnt/sysimage
polecenie i otrzymaj dokładnie ten sam błąd, co poprzednio. Jestem całkiem pewien, że to powinno być/dev/sda
które montuję, ponieważ moje inne polecenia muszą działać przeciwko temu.dmesg | grep sda
by dowiedzieć się więcej.sdb
w takim przypadku dysk USB jestsda
który prawdopodobnie ma system plików iso9660 (który jest tylko do odczytu)/dev/sda
jest partycją Linuksa, podczas gdy na maszynach, które NIE działają,/dev/sdb
jest partycją Linuksa i/dev/sda
wydaje się, że jest to dysk USB, który wkładam do dysku ratunkowego.Komunikat o błędzie jest mylący i oznacza to tylko
/bin/bash
nie istnieje (nie w twoim przypadku); lub że używany jest dynamiczny program ładujący/bin/bash
nie istnieje (prawdopodobnie twój przypadek); lub nawet, że rsync został użyty do utworzenia folderów usr, lib i lib64 bez zachowaj flagę linków.Najbardziej prawdopodobnym wyjaśnieniem jest brak folderów lib i / lub lib64 twój chroot.
Powinieneś albo skopiować trzy foldery usr, lib i lib64, zachowując linki, albo po prostu
mount --bind
oni do/mnt/sysimage
.źródło
Jeśli działa na niektórych komputerach, ale nie na innych, możliwe, że architektury są różne. Podejrzewam, że jeden z nich był ustawiony na 32-bitowy, a drugi na 64-bitowy - należy zapewnić, aby pliki binarne i biblioteki współdzielone istniały dla obu architektur lub pamięć USB nie będzie działać dla obu. .
źródło
Odkryłem więc, że maszyny HP (wraz z nowszym modelem Lenovos) montowały partycje Linuksa
/dev/sdb
zamiast/dev/sda
kiedy włożyłem Dysk ratunkowy CentOS 7.Było tak, ponieważ miałem dysk ratunkowy na USB, więc system zamontował USB
/dev/sda
zamiast innej partycji.Aby obejść ten problem, pobrałem ISO dla CentOS 7 i nagrałem go na DVD i uruchomiłem. Mogę teraz wykonać moje
chroot
polecenie bez problemu, ponieważ partycja Linuksa jest teraz włączona/dev/sda
.Dziękujemy wszystkim za sugestie i pomoc.
źródło