kanonikus útvonalát. Megpróbálom újratelepíteni a grub-ot USB-meghajtóról. A következőt futtatom: :
sudo mount /dev/sda6 /mnt sudo grub-install --root-directory=/mnt /dev/sda
A következő hibát kapom:
grub-probe: error: failed to get canonical path of /cow.
magyarázhatja valaki a hibát , és hogyan lehet megoldani?
Szerkesztés
Megpróbálom a megszakadt kettős rendszerindító rendszer kijavításához, Linux-mentát tartalmazó USB-ről futva.
Megjegyzések
Válasz
Kövesse ezeket a lépéseket:
-
Indítsa el az élő Linux munkamenetet.
-
Csatlakoztassa a telepített operációs rendszer
/
partícióját a/mnt
sudo mount /dev/sda6 /mnt
-
chroot
környezet beállítása:sudo chroot /mnt
-
Most egy “hamis” Linux-telepítésen van, amely a
/mnt
-t/
-ként kezeli. . Ez azt jelenti, hogy a GRUB-hoz szükséges összes fájl a/boot
fájlban található, ahol a rendszer elvárja tőlük, és a GRUB-ot úgy is telepítheti, mintha a telepített rendszert futtatná:sudo update-grub sudo grub-install /dev/sda
Most indítsa újra, és látnia kell, hogy a GRUB menü rendesen megjelenik.
Megjegyzések
- I ‘ próbálok telepíteni az USB-eszközről. bármilyen módon, megpróbáltam telepítés nélkül is – ugyanaz a hiba. meg tudja magyarázni a hibát?
- @elyashiv szerkessze a kérdését, és magyarázza el, hogy mit próbál meg. Meghibásodott rendszert próbál megmenteni? Élő rendszert indít USB-ről? Ha igen, mondja el nekünk . Milyen operációs rendszert használ? Mitől gondolod, hogy a GRUB
root-device
opcióval rendelkezik, és mit vársz tőle? Beállított egychroot
környezetet? Amikor feltesz egy kérdést, pontosan meg kell magyaráznia, mit akar tenni, ‘ nem tudunk kitalálni. - hoppá, a -gyökérre gondoltam -könyvtár
- @elyashiv there ‘ s sem
--root-directory
. Olvassa el itt található válaszomat, amely elmagyarázza a grub újratelepítését. - nézze meg az első választ itt
Válasz
Ha a grub azt mondja, hogy nem tudta megoldani valaminek a kanonikus útvonalát , ez azt jelenti, hogy nem létezik, vagy realpath()
nem sikerült.
Ebben az esetben próbálkozzon:
$ realpath /cow $ ls -la /cow
Ha mindkét parancs azt mondja, hogy “nem található fájl vagy könyvtár”, akkor létre kell hoznia egyet.
Ha a második parancs működik, de az első nem, ellenőrizze, hogy miért nem működik. Ennek egyik oka az lehet, hogy a /proc
nincs csatlakoztatva. A libc egyes megvalósításaiban a /proc/self/fd
fájlok kanonikus elérési útjának megszerzésére szolgál.
Megjegyzések
- Az első parancs működik, de a második nem.
- ÉN: root @ ubuntu: / # realpath / cow TERMINAL: / tehén ME: # ls -la / tehén TERMINAL: ls: lehetetlen hozzáférés ‘ / cow ‘: Nincs ilyen fájl vagy mappa (nagyjából lefordítva).
Válasz
Ezt a hibát én is kapom, és nem hiszem, hogy chroot-ban történik.
Háttér
Azt hiszem, ilyenkor a systemd nem találja meg az elérési utat, mert egy könyvtárba van telepítve. Tehát a különbség abban áll, hogy amikor egy chroot-t állít be, akkor már konfigurálja a hardverhez való hozzáférést, beleértve a meghajtókat is.
Bár konfigurálhatja ezt a hozzáférést a Systemd belsejében, ami nem azt jelenti, hogy ugyanúgy konfigurálhatja az adott meghajtók engedélyeit.
Például ezt a fájlt hoztam létre:
/etc/systemd/system/[email protected]/override.conf
És tartalmazza s ezeket a beállításokat:
[Service] DeviceAllow=char-usb_device rwm DeviceAllow=char-usb [Files] Bind=/var/cache/apt/pkgcache.bin Bind=/var/cache/apt/srcpkgcache.bin
Ez még mindig nem működik a grub-install /dev/sda
vagy a egy Pi-n lévő USB-hez, amelyet a Debian Stretch segítségével indítanak. Még a grub-uboot és a grub-efi-arm használatakor is fennáll ez a hiba, a grub-probe
nem találja meg a kanonikus utat.
Nem csak, de bár update-grub
látni fogja és tudja, mi az operációs rendszer, de érdekes módon grub-install
nem ismerje fel, hogy a Debian operációs rendszer USB-n van.
Példa
root@raspixmc:/home/pi# grub-install /dev/sda Installing for arm-uboot platform. grub-install: warning: no hints available for your platform. Expect reduced performance. grub-install: warning: WARNING: no platform-specific install was performed. Installation finished. No error reported. root@raspixmc:/home/pi#
Érdekes, amikor létrehozok egy chroot-t és futtathatok update-grub
, Annak ellenére, hogy azon az operációs rendszeren vagyok, amelyet debuttattam az USB-re, nem látja a saját operációs rendszerét!
root@raspixmc:/home/pi# mount /dev/sda1 /mnt root@raspixmc:/home/pi# cd /mnt root@raspixmc:/mnt# mount --bind /dev dev/ root@raspixmc:/mnt# mount --bind /sys sys/ root@raspixmc:/mnt# mount --bind /proc proc/ root@raspixmc:/mnt# mount --bind /dev/pts dev/pts root@raspixmc:/mnt# chroot . bin/bash root@raspixmc:/# update-grub Generating grub configuration file ... Found Raspbian GNU/Linux 9 (stretch) on /dev/mmcblk0p2 done root@raspixmc:/#
Csak a Raspbian-t látja. Ez csak akkor történik, amikor megpróbálja telepíteni és frissíteni a GRUB-ot a konténer belsejében, de amikor kilépek a chroot-ból.
Figyeld meg, hogyan működik most, mert nem szereltem le a chroot könyvtárakat:
/dev dev/ /sys sys/ /proc proc/ /dev/pts dev/pts
A tárolón kívülről fut, futok ez a parancs a grub-uboot
alkalmazással a Raspbian-ra telepítve, a Grub pedig nincs az USB-n, amely debootstrapped Debian-t tartalmaz. a nem hivatalosan elérhető képek egyikével történik a Debian ARM számára , de nyilvánvalóan ez még mindig egy testreszabás, amely még nem áll rendelkezésre a debootstrappinghez.
Hibaelhárítás
Valóban vannak olyan esetek, amikor jobb, ha csak elérési utat hozunk létre. Az egyetlen következő (és valószínű) lehetőség a GRUB egyszerű megírása. És erre csak olvasni fogok ezen az oldalon.
https://www.dedoimedo.com/computers/grub-2.html
Egy másik dolog, amit szeretnék megosztani ezzel a problémával, egy megoldás, amely működhet, de a microSD kártyák nagyon érzékenyek. Saját Linux-képeket készítettem, és ezt gyorsan megtanultam. A legjobb dolog a Qemu használata, amikor csak lehetséges, de egy régi partíciós tábla törléséhez próbálkozzon a sgdisk --zap-all
futtatásával a meghajtón.
sgdisk --zap-all /dev/sdd
Valójában néha, ha először ad hibát, és ez nem csak olvasható hiba, futtathatja újra, és végül az összes partíciós tábla új vagy régi lesz.
És használhatja a Qemu-t a Raspberry utánzásához Pi szabványos AMD / Intel alapú számítógépen. Ajánlanám. Tudom, hogy ez több információ, mint ami az eredeti hozzászólásra vonatkozik, de úgy gondolom, hogy valószínűleg ez a hiba származik. Ez a tároló kora.
Válasz
A leírtak alapján úgy tűnik, hogy megpróbálja telepíteni a GRUB-ot / dev / sda. Nem akarja csatlakoztatni a lemezt.
Valószínűleg a következőt keresi: grub-install /dev/sda
GRUB kézikönyv referenciaként, vagy man grub-install
a rendszeréből: http://linux.die.net/man/8/grub-install
Megjegyzések
- Már beírtam a grub-install parancsot (a dev.sda1 oldalon), de hibát észleltem a blokkokról. És a ” tehén ” hibát kaptam a ” grub-install –recheck –root-directory = / mnt / dev / sda1 ” parancs.
Válasz
Mindenkinek, aki ezzel küzd, aki élő USB-t vagy más chroot eszközt próbál használni a grub újratelepítéséhez vagy telepítéséhez – néhányszor foglalkoztam ezzel, és elfelejtettem korábban dokumentálni, bár szándékomban állt .
Az a probléma, amellyel szembesül, a grub “nem fér hozzá ahhoz az útvonalhoz, amelyre forrásként (/ boot) vagy célként hivatkozik (láthatja a rendszer és a chroot /dev/sda
például?) vagy mindkettő. Amikor felkészül a chroot-ra, olyan kötéstartókat hoz létre, amelyek hozzáférhetők a chroot környezetben, vagy a chroot-on belül a -t -t segítségével. Olyan sok online útmutató van, amely akárhogy is csinálja.
Győződjön meg róla, hogy a / dev fájlt vagy csak a / boot rendszerindító fájlokat tartalmazó partíció (ka) t kötötte (pl. / Dev / sda1) . A / boot vagy egy külön partíció, vagy egy könyvtár a / könyvtárban. A chroot-nak hozzáférése kell ahhoz a meghajtóhoz, amelyet a grub (újbóli) telepítéséhez használ. Ehhez tegye meg az fdisk -l parancsot a chroot-ban, hogy megbizonyosodjon arról, hogy látja az eszközt a kimenetben. Ne feledje, hogy ha nincs külön boot partíciója, de van egy boot könyvtár a / root könyvtárban a rendszerindító fájlokkal (nem csak egy csatlakoztatási ponttal), akkor csak a rootot tartalmazó partíciót kell csatlakoztatnia. nem kell semmit felcsatolni a / root / boot fájlba.
Biztosítani kell a proc és a sys fájlrendszerek összekapcsolását is, de minden általam látott útmutatóban megvan ez a kettő. / dev néha kimaradt. Előfordulhat, hogy nincs rá szükség, de én nem tudok róluk.
tl; dr: győződjön meg róla, hogy a mount / dev fájlt kötötte
Megjegyzések
- Miért beszél
chroot
-ről, amikor a kérdés nem ‘ t szól ” chroot“? - Az OP azt mondja, hogy ” egy linux mentát tartalmazó USB-ről fut “. Ez chroot lesz.
sda6
-ről indul? itt válaszom segít?/cow
a Másolás írásra fájlrendszer, amely a/
helyre van telepítve CD-ről vagy USB-ről történő indításkor