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

  • OK, ez a szerkesztés jobbra lépés irány. Feltételezzük, hogy már telepítve van egy Linux rendszer? sda6 -ről indul? itt válaszom segít?
  • FWIW, /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

Válasz

Kövesse ezeket a lépéseket:

  1. Indítsa el az élő Linux munkamenetet.

  2. Csatlakoztassa a telepített operációs rendszer / partícióját a /mnt

    sudo mount /dev/sda6 /mnt 
  3. chroot környezet beállítása:

    sudo chroot /mnt 
  4. 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 egy chroot 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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük