[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Upgrade naar Jessie faalt



Hallo Maarten en anderen,

Op 21-06-16 om 23:30 schreef Hegebeek@posteo.de:
> Geachte dames en heren,
> 
> Ik dank Paul van der Vlis en Geert Stappers voor hun reacties.
> 
> Paul stelt de volgende vraag:
> 
> Wat zegt:
> grub-install --recheck /dev/sda
> 
> Met man grub-install kan de betekenis van bovenstaand commando worden
> gevonden. Het commando installeert grub op de eerste harde schijf, de
> optie maakt dat de 'device map' wordt verwijderd als die reeds bestaat.
> Met info grub-install wordt iets meer informatie verkregen. grub-install
> genereert eerst een 'core image' van grub met grub-mkimage en
> installeert dan het resultaat op het opgegeven apparaat. De optie
> --recheck maakt dat de 'device map' opnieuw wordt gecontroleerd, zelfs
> als /boot/grub/device.map reeds bestaat. Het is verwarrend (verwijderen
> is wat anders dan opnieuw controleren) en onduidelijk (vind een
> vergelijking plaats of vind alleen een vervanging plaats). Afgaande op
> de namen van het commando en de optie valt echter te verwachten dat een
> vergelijking plaatsvindt voordat de 'device map' wordt vervangen.
> 
> Omdat man grub-install werkt moet grub-install uitvoerbaar zijn. Er is
> mijns inziens ook geen bezwaar grub nog een keer te installeren op de
> eerste harde schijf, aangenomen dat het al gebeurd is. Als het nog niet
> gebeurd is, moet misschien daarna de tweede harde schijf nog een
> perfecte mirror worden gemaakt van de eerste.

Inderdaad.

> De reactie van Geert kan gemakkelijk worden beantwoord. Na de beschreven
> grote schoonmaak was de problematiek hetzelfde gebleven, die door
> apt-get werd samengevat met:
> 
> Fouten gevonden tijdens verwerken van:
>  linux-image-3.16.0-4-amd64
>  grub-pc
>  linux-image-amd64
>  startupmanager
> 
> Na het toepassen van zijn tip in iets aangepaste vorm werd de
> problematiek door apt-get samengevat met:
> 
> Fouten gevonden tijdens verwerken van:
>  linux-image-3.16.0-4-amd64
>  linux-image-amd64
> 
> Hierdoor is het aantal pakketten dat niet is geïnstalleerd en
> geconfigureerd afgenomen van 4 naar 2. Hierdoor is de problematiek
> oppervlakkig beschouwd in omvang afgenomen. Toegegeven, er is geknoeid
> met grub-pc.
> 
> Geert vraagt nog naar welke andere twee scripts op dezelfde manier
> zouden kunnen worden aangepakt. Dat zijn
> linux-image-3.16.0-4-amd64.postinst en zz-update-grub, die werden naast
> grub-pc.postinst door mij bestudeerd, zo schreef ik.
> 
> Ik had de drie scripts bestudeerd in het kader van een analyse van de
> foutmeldingen. In die analyse kwam ik iets op het spoor, maar het bleek
> uiteindelijk een dwaalspoor te zijn en daarom heb ik het uit het verslag
> verwijderd. Ik zal er alsnog iets over vertellen. De analyse begon met:
> 
> /etc/kernel/postinst.d/zz-update-grub:
> Generating grub configuration file ...
> cat: /video.lst: Bestand of map bestaat niet
> 
> Wat staat hier? zz-update-grub is gestart, geeft een voortgangsbericht
> en gebruikt dan cat om de inhoud van video.lst te verkrijgen. cat geeft
> vervolgens een foutmelding. Logisch, want video.lst bevindt zich niet in
> de root directory. Een slimme oplossing is dan om video.lst te kopiëren
> naar de root directory, maar die truc bleek niet te werken.
> 
> Ik voer nu grub-install --recheck /dev/sda uit:
> 
> root@desktop-computer:~# grub-install --recheck /dev/sda
> Installing for i386-pc platform.
> Installatie is afgerond. Er werden geen fouten gerapporteerd.
> root@desktop-computer:~#
> 
> Ik ga eens na of dit verbetering geeft:
> 
> root@desktop-computer:~# apt-get install linux-image-amd64

Wat later zien we dat de problemen optreden bij een dependency, namelijk
linux-image-3.16.0-4-amd64. Mijn gewoonte is het dan om het pakket wat
de problemen geeft nogmaals te installeren, dat geeft de meeste
informatie als ik me niet vergis. Verder doe ik probleemgevallen vaak in
het Engels, zodat er beter op de foutmeldingen gezocht kan worden. Ik
stel dus voor dat je dit commando uitvoert:

LANG=C apt-get install linux-image-3.16.0-4-amd64

Maar zie ook verderop.

> Pakketlijsten worden ingelezen... Klaar
> Boom van vereisten wordt opgebouwd
> De statusinformatie wordt gelezen... Klaar
> linux-image-amd64 is reeds de nieuwste versie.
> 0 opgewaardeerd, 0 nieuw geïnstalleerd, 0 te verwijderen en 0 niet
> opgewaardeerd.
> 2 niet volledig geïnstalleerd of verwijderd.
> Na deze bewerking zal er 0 B extra schijfruimte gebruikt worden.
> Wilt u doorgaan? [J/n] J
> Instellen van linux-image-3.16.0-4-amd64 (3.16.7-ckt25-2) ...
> vmlinuz(/boot/vmlinuz-3.16.0-4-amd64
> ) points to /boot/vmlinuz-3.16.0-4-amd64
>  (/boot/vmlinuz-3.16.0-4-amd64) -- doing nothing at
> /var/lib/dpkg/info/linux-image-3.16.0-4-amd64.postinst line 263.

Het is wellicht interessant eens te kijken naar wat er op deze regel van
dit script staat. Mijn suggestie ging er overigens vanuit dat je gedaan
had wat Geert schreef. Als je dat gedaan had was er geen regel 263
geweest, maar had het script uit maar 2 regels bestaan.

Wellicht doe je dat niet graag omdat je niet weet wat er gebeurd. Het
commando van Geert overschrijft /var/lib/dpkg/info/grub-pc.postinst en
maakt dat het niets doet. De doelstelling is uit de impasse te komen.
Eventueel zou je eerst een backup kunnen maken:
cp -a /var/lib/dpkg/info/grub-pc.postinst /root/
Maar ik verwacht dat een "apt-get install --reinstall ..." het ook weer
herstelt. Wat ook een optie is, is om het script te openen in een editor
en bovenaan "exit" te schrijven. Dan wordt het ook niet uitgevoerd.

Ik denk overigens dat de kans groot is dat het probleem ergens in de
grub-configuratie zit, dus in /boot/grub/ of in /etc/default/grub.

> initrd.img(/boot/initrd.img-3.16.0-4-amd64
> ) points to /boot/initrd.img-3.16.0-4-amd64
>  (/boot/initrd.img-3.16.0-4-amd64) -- doing nothing at
> /var/lib/dpkg/info/linux-image-3.16.0-4-amd64.postinst line 263.
> /etc/kernel/postinst.d/initramfs-tools:
> update-initramfs: Generating /boot/initrd.img-3.16.0-4-amd64
> /etc/kernel/postinst.d/zz-update-grub:
> Generating grub configuration file ...
> cat: /video.lst: Bestand of map bestaat niet
> /usr/sbin/grub-probe: fout: kan canoniek pad van '' niet achterhalen.
> Geen pad of apparaat gegeven.

Dit soort foutmeldingen zeggen in het Nederlands niet zo veel, maar in
het Engels kun je er vast veel op vinden. Dus vandaar dat ik "LANG=C"
voorstel. Dan wordt het commando in het engels uitgevoerd.

Ik raad je dus aan zoiets te doen, en uiteraard kritisch blijven kijken:

cp -a /var/lib/dpkg/info/grub-pc.postinst /root/
echo -e '#!/bin/sh\nexit 0' > /var/lib/dpkg/info/grub-pc.postinst
LANG=C apt-get install linux-image-3.16.0-4-amd64
grub-install --reinstall /dev/sda

Je zou ook een kopie van /boot/grub kunnen maken, Grub purgen en en
eventueel alles van grub verwijderen, en het opnieuw installeren.
Maar dat is wel een enigsinds riskante operatie.

Groet,
Paul.


-- 
Paul van der Vlis Linux systeembeheer Groningen
https://www.vandervlis.nl/


Reply to: