Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Alternatief voor forcefsck Ubuntu 16.04  (gelezen 270 keer)

Offline Algol

  • Lid
  • Steunpunt: Nee
Alternatief voor forcefsck Ubuntu 16.04
« Gepost op: 2017/04/03, 20:17:17 »
Van Ubuntu 14.04 naar 16.04 is onder meer  de 'forcefsck' optie verdwenen. 
Daarom zocht ik naar iets anders om naar wens een integriteitscontrole van de Linux-systeempartitie te laten uitvoeren.
Booten via een extern medium vind ik dan te omslachtig.  Dan maar via een Bash-script iets gebakken.
Mogelijk kan ik daar iemand nog een plezier mee doen, dus hierbij de info.

Opkomende vraag: hoort dit niet onder het forumhoofdstuk Programmering, dan denk ik dat het uiteindelijke doel meer met de systeemconfiguratie te maken heeft, vandaar mijn bijdrage op deze plek.

Volgende scriptje bijvoorbeeld in persoonlijke map/Scripts/Werkend/ zetten, zie variabele Aanroepbestand.
Via Opstarttoepassingen dit script in de startblokken zetten.
Bij iedere boot start dit onzichtbaar en past dan van een dummybestand de naam aan, die begint met een getal, het aantal boots (eigenlijk mounts).
Overschrijdt het aantal boots het in de var maxboot staande waarde, dan wordt een tweede script gestart.
Bij het eerste gebruik, of bij onverhoopte verwijdering, wordt het dummybestand als nog aangemaakt.

#!/bin/bash
# script hoort bij iedere boot gestart te worden door Opstarttoepassingen
# Algol 3 april 2017
sleep 10;

maxboot=30;
AanroepBestand=~/Scripts/Werkend/Controleer-Linux-partitie-check;

# Kijk of dummy-bestand X-NietVerwijderen in persoonlijke map bestaat.
# X is hier een getal aangevende hoeveel boots er zijn geweest na de laatste check van de Linux-partitie
NaamFile=$(dir -1 ~/ | grep NietVerwijderen);
if [[ $NaamFile == "" ]];
# dummy-bestand bestaat niet
then
# dummy-bestand alsnog maken
gnome-terminal -e $AanroepBestand --geometry=100x25+0+0;
else
# dummy-bestand bestaat en krijgt nieuwe naam
BootCount=$(dir -1 ~/ | grep NietVerwijderen | grep -o ^[0-9]*);
Counter=`expr 1 + $BootCount`;
NewName=$Counter"-NietVerwijderen";
mv -T ~/$NaamFile ~/$NewName ;
if [[ $BootCount -ge $maxboot ]];
then
# overschrijding melden en desgewenst bootcheck instellen
gnome-terminal -e $AanroepBestand --geometry=100x25+0+0;
fi;
fi;
# einde

Voor de feitelijke acties is het volgende script bedoeld.
Zonodig de partitievariabele aanpassen (sudo blkid).
Variabele maxboot: na hoeveel boots moet overschrijding van de grens gemeld worden en kan voor diskcontrole gekozen worden.


#!/bin/bash
#include <strings.h>
# Algol 3 april 2017

# vang <CTRl>-C netjes op om script af te breken
trap 'echo; echo -e "\033[1;31m* Script Afgebroken\033[0m"; exit;' SIGINT SIGTERM;

# te controleren partitie
partitie="/dev/sda1";
OrgNaam="0-NietVerwijderen";
# grens waarboven gewaarschuwd wordt om partitie te testen bij eerstvolgende boot
maxboot=30;
# arbitraire grootte kiezen voor maxmountcount
maxmountcount=1000;

# Kijk of dummy-bestand X-NietVerwijderen in persoonlijke map bestaat.
# X is hier een getal aangevende hoeveel boots er zijn geweest na de laatste check van de Linux-partitie
NaamFile=$(dir -1 ~/ | grep NietVerwijderen);
if [[ $NaamFile == "" ]];
# dummy-bestand bestaat niet
then
echo "* Benodigd bestand, X-NietVerwijderen, ontbreekt in folder ~/.";
echo "* Kan nu niet bepalen hoeveel boots er na laatste partitiecheck geweest zijn.";
echo "* We gaan dit bestand aanmaken.";
# haal aantal boots op van partitie
mountcount=$(sudo tune2fs -l $partitie | grep Mount | grep count | grep -o [0-9]*$);
touch ~/$mountcount"-NietVerwijderen";
# bepaal de nieuwe dummy-bestandsnaam
NaamFile=$(dir -1 ~/ | grep NietVerwijderen);
echo;
fi;

# dummy-bestandsnaam X-NietVerwijderen bestaat
BootCount=$(dir -1 ~/ | grep NietVerwijderen | grep -o ^[0-9]*);
if [[ $BootCount -ge $maxboot ]];
then
echo "* $BootCount maal geboot, is meer dan ingestelde $maxboot maal.";
echo "* Tijd om de Linux-partitie, $partitie, te testen bij ";
echo "* de volgende boot.";
echo "* $partitie bij volgende boot testen op integriteit [j/n] ? default=ja:";
read antw;
Pattern='^[nN]';
if [[ $antw =~ $Pattern ]];
then
echo "* Niets gedaan. Wordt weer gevraagd bij volgende boot.";
exit;
else
# antwoord is ja
echo "* Om een spontane test te voorkomen zorgen dat";
echo "* het max. aantal aankoppelingen (=boots) $maxmountcount is en blijft.";
sudo tune2fs -c `expr $maxmountcount` $partitie ;
echo;
echo "* Partitiegegevens:";
echo;
sudo tune2fs -l $partitie | grep state ;
sudo tune2fs -l $partitie | grep checked | grep Last ;
sudo tune2fs -l $partitie | grep count | grep Mount ;
maxmountcount=$(sudo tune2fs -l $partitie | grep Maximum | grep -o [0-9]*$);
mountcount=$(sudo tune2fs -l $partitie | grep Mount | grep count | grep -o [0-9]*$);
# controleer of beide countergegevens gelijk zijn
if [[ $BootCount -ne $mountcount ]];
then
echo "* Discrepantie tussen bootaantal in NietVerwijderen-bestandstitel ($BootCount)"
echo "* t.o.v. partitiegegevens ($mountcount)."
echo "* Deze discrepantie wordt na de test opgeheven."
fi;
echo;
sudo tune2fs -C `expr 1 + $maxmountcount` $partitie ;
# mountcount wordt over de grens van maxmountcount getild om bij eerstvolgende boot
# getest te worden en wordt daarbij weer op 1 gezet
echo;
# zet dummy-bestandsnaam weer terug naar $OrgNaam
mv -T ~/$NaamFile ~/$OrgNaam ;
echo "* en dus wordt bij volgende boot de Linux partitie, $partitie, getest.";
fi;
fi;
echo;
echo "* Klaar.";

Zijn er vragen, ik hoor het wel.
Dual boot Ubuntu 14.04 LTS en dual boot Ubuntu 16.04 LTS, beide met iets van usoft.

Offline Nero

  • Lid
  • Steunpunt: Ja
Re: Alternatief voor forcefsck Ubuntu 16.04
« Reactie #1 Gepost op: 2017/04/03, 21:27:32 »
Gewoon in GRUB Advanced options kiezen is eenvoudiger.

Offline Algol

  • Lid
  • Steunpunt: Nee
Re: Alternatief voor forcefsck Ubuntu 16.04
« Reactie #2 Gepost op: 2017/04/04, 11:27:52 »
@ Nero, Ik ben altijd in voor iets eenvoudigers.
Maar kies Grub, Advanced Options vraagt voor mij wat meer toelichting.
Ik zie dan alleen maar voor iedere Linux-versie staan: -generic, -generic (upstart) en -generic (recovery mode).
Hoe verder ?
Dual boot Ubuntu 14.04 LTS en dual boot Ubuntu 16.04 LTS, beide met iets van usoft.

Offline Nero

  • Lid
  • Steunpunt: Ja
Re: Alternatief voor forcefsck Ubuntu 16.04
« Reactie #3 Gepost op: 2017/04/04, 11:48:48 »
Kies hier voor de Recovery mode. Daarna fsck - Check file systems.

Offline Algol

  • Lid
  • Steunpunt: Nee
Re: Alternatief voor forcefsck Ubuntu 16.04
« Reactie #4 Gepost op: 2017/04/04, 12:32:51 »
@ Nero, bedankt voor de snelle reactie, maar als ik dat kies, dan krijg ik een, mij bekend, probleem met de grafische drivers. Er volgt dan namelijk 'mode not supported' op zwart scherm.
Maar los hiervan, is mijn bedoeling om zelf niet het initiatief voor de test te hoeven nemen.
Mijn keuze: na 30 boots moet het systeem aan de bel trekken, hoef je dit zelf niet in de gaten te houden.

N.B. het grafische driver verhaal leidt er ook toe dat halverwege het booten standaard bij mij het woord Ubuntu boven de 5 stippen verdwijnt en alleen de stippen blijven knipperen. Acceptabel voor mij.
Dual boot Ubuntu 14.04 LTS en dual boot Ubuntu 16.04 LTS, beide met iets van usoft.

Offline Nero

  • Lid
  • Steunpunt: Ja
Re: Alternatief voor forcefsck Ubuntu 16.04
« Reactie #5 Gepost op: 2017/04/04, 13:00:27 »
Je hoeft niet zelf het initiatief te nemen. Bij iedere boot gebeurt er een snelle fsck van de root partitie.

Wat betreft de grafische driver: voor de tekst gebaseerde mode (recovery) kan je eens proberen met nomodeset. Eenmalig toevoegen in GRUB kan je doen door tijdens de menukeuze op e te drukken en dan nomodeset toevoegen op het einde van de linux lijn.

http://askubuntu.com/questions/38780/how-do-i-set-nomodeset-after-ive-already-installed-ubuntu