Was passiert bei 2x Reset drücken - Analyse

Status
Für weitere Antworten geschlossen.

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
da gerade die Diskussion was passiert bei 2x reset drücken stark im Gange ist, mußte meine 106 als Versuchskaninchen herhalten.
Was passiert:
es wird .noroot nach / geschrieben
reboot
linuxrc.syno aus dem flash erkennt .noroot
Rich (BBCode):
if [ -f ${Mnt}/.noroot ]; then
	Exit 2 ".noroot exists"
und steigt aus
hda1 wird nach /tmpRoot gemountet
/etc/rc aus dem flash wird abgearbeitet
jetzt wartet die DS auf das .pat file
nach der Übertragung reboot
hda1 wird nach /tmpRoot gemountet
/etc/upgrade.sh aus dem flash wird gestartet
findet /tmpRoot/.upgrade_vol mit dem Inhalt /dev/hda3
jetzt beginnt die Upgrade-Prozedur, siehe /etc/upgrade.sh

tja, nix ist mit formatieren ein schnödes
Rich (BBCode):
# rm all files on root fs
$Rm -rf $RootMnt/*
Das gesamte log Anhang anzeigen CAPTURE2_1.TXT
Gruß Götz
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hallo,
tja, nix ist mit formatieren ein schnödes
Code:
# rm all files on root fs
$Rm -rf $RootMnt/*
Dann wäre das ja ein für alle mal geklärt. Topp Arbeit, danke:)
Wenn man den obigen Befehl im Script gegen format ersetzen würde, was würde dann passieren? Klar das müsste Synology anpassen, da das File ja aus dem Flash kommt. Aber rein theoretisch müsste es doch möglich sein für Syno einen format der Sys Part einzubauen

Gruss

tobi
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
sollte einfach sein, aber eigentlich sollte das rm auch reichen. Mir ist auch nicht klar woher die Probleme bei einigen kommen, es wird ja ne Menge gecheckt.
Unter bestimmten Umständen wird auch formatiert
Rich (BBCode):
UpgradeFile="SynoUpgrade.tar.gz"
DotUpgradeFile=".SynoUpgrade.tar.gz"
SupportRAID=`/bin/get_key_value /etc/synoinfo.conf supportraid`
DefFS=`/bin/get_key_value /etc/synoinfo.conf defaultfs`
RootMnt="/tmpRoot"
DataMnt="/tmpData"
FsckFlag="/tmp/.fsckfail"
MkfsFlag="/tmp/.mkfsfail"
# executables
Sfdisk="/sbin/sfdisk"
Umount="/bin/umount -f"
Mount="/bin/mount"
Cp="/bin/cp"
Rm="/bin/rm"
Mv="/bin/mv"
Tar="/bin/tar"
Mkdir="/bin/mkdir"
Mkfs="/sbin/mkfs.${DefFS}"
# backup configs
BackupDir="${DataMnt}/upd@te"
BackupDir2="${DataMnt}/s@vedconfig"
DotBackupDir="${DataMnt}/.upd@te"
DotBackupDir2="${DataMnt}/.s@vedconfig"
BackupDirList="/etc /usr/syno/etc /var /usr/syno/synoman/webman/3rdparty /usr/local"
RemoveFileList="/etc/ftpusers /etc/rc /etc/rc.network /etc/ssh/sshd_config /usr/syno/etc/.htpasswd /usr/syno/etc/lpd/lpd.conf /usr/syno/etc/php.ini /usr/syno/etc/printcap /usr/syno/etc/ups.conf /usr/syno/etc/upsd.conf"
RemoveDirList="/etc/pam.d /usr/syno/etc/vfs"
UPGRADE_VOL_FILE="${RootMnt}/.upgrade_vol" 
...
if [ -d ${BackupDir2} -o -f ${FsckFlag} ]; then
		if [ -d ${BackupDir2} ]; then
			echo "Found an old version saved upgrade file on data volume."
		else
			echo "${RootDevice} fsck fail or had lost\+found files"
                        
			if [ ${RootPartition} == ${DataPartition} ]; then
				echo "sad.. your patch is just on the failed volume."
				exit 5
			fi
		fi
		
		echo "Try to umount ${RootPartition}"
		${Umount} -f ${RootMnt}

		echo "Begin ${Mkfs} ${RootPartition}"
		${Mkfs} ${RootPartition}

		ResMkfs=$?
		if [ $ResMkfs -ne 0 ]; then
			touch ${MkfsFlag}
			exit 3
		fi

		echo "mounting ${RootPartition}"
		MountRootPartition
	fi
wenn fsck fehlschlug oder noch ein altes upgrade gefunden wird.

Gruß Götz
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ah, jetzt seh ich auch, welche Verzeichnisse einen Upgrade überstehen:

Rich (BBCode):
BackupDirList="/etc /usr/syno/etc /var /usr/syno/synoman/webman/3rdparty /usr/local"

Wobei ja nun noch die Frage wäre, wann nach einem Reset ein 'Upgrade' (/etc/upgrade.sh) gefahren wird und wann eine 'Neuinstallation' (mit welchen Skripten?) mit Formatieren der Root-Partition erzwungen werden kann ...

Itari
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
die upgrade.sh wird bei jedem Systemstart abgearbeitet.

1. Korrektur
findet /tmpRoot/.upgrade_vol mit dem Inhalt /dev/hda3
da wird nur die Data-Partition ermittelt, wenn nicht vorhanden Standard 3, ausschlaggebendes Kriterium ist
Rich (BBCode):
if [ -f $DataMnt/$UpgradeFile ]; then
	# file exists. start upgrade
	echo "Found an upgrade file on data volume. Begin upgrade"

Vermutungen:
1. die Verzeichnisse die auch in BackupDirList stehen werden schon zu dem selben Zeitpunkt gelöscht wie .noroot angelegt wird. upgrade.sh liefert Fehler beim Versuch die Verzeichnisse zu kopieren
Rich (BBCode):
Found an upgrade file on data volume. Begin upgrade
/tmpRoot//etc ->		/tmpData/upd@te/etc/
cp: /tmpRoot//etc: No such file or directory
/tmpRoot//usr/syno/etc ->		/tmpData/upd@te/usr/syno/etc/
cp: /tmpRoot//usr/syno/etc: No such file or directory
/tmpRoot//var ->		/tmpData/upd@te/var/
cp: /tmpRoot//var: No such file or directory
/tmpRoot//usr/syno/synoman/webman/3rdparty ->		/tmpData/upd@te/usr/syno/synoman/webman/3rdparty/
cp: /tmpRoot//usr/syno/synoman/webman/3rdparty: No such file or directory
/tmpRoot//usr/local ->		/tmpData/upd@te/usr/local/
cp: /tmpRoot//usr/local: No such file or directory

Ein rückspielen ist dann nicht möglich.

Ein formatieren könnte mit dem anlegen des Verzeichnisses /volume1/.s@vedconfig angestoßen werden. Habe aber bisher keinen weiteren Verweis oder Nutzung dieses Verzeichnisses gefunden, möglich: tief in den binarys.

Gruß Götz
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat