[abgeschlossen] Entwurf: IDE Menü

Kreuzuebersetzer, Diskussion über Änderungen im Tuxbox-CDK und Tuxbox-CVS
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

[abgeschlossen] Entwurf: IDE Menü

Beitrag von Innuendo »

Tach ihrs,

hier mein Entwurf für ein IDE Menü:

edit: veraltete version gelöscht
Zuletzt geändert von Innuendo am Montag 26. März 2007, 08:52, insgesamt 1-mal geändert.
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

ide_setup.h

edit: veraltete version gelöscht
Zuletzt geändert von Innuendo am Montag 26. März 2007, 08:52, insgesamt 1-mal geändert.
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

edit: veraltete version gelöscht
Zuletzt geändert von Innuendo am Mittwoch 28. März 2007, 08:27, insgesamt 1-mal geändert.
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

So - der Krams war in Riker's Testsnap.
Es wäre nett, wenn Veränderungen/Erweiterungen/Korrekturen auch zurückkommen.

beispiel formating.start

Code: Alles auswählen

#!/bin/sh
# HDD format start script

# here you may add something like backup or other task, eg
# tar -cvf hddbackup.tar ./hdd

exit 0
beispiel formating.end

Code: Alles auswählen

#!/bin/sh
# HDD format end script

# here you may add tasks after hdd format

mkdir /hdd/movies
mkdir /hdd/pictures
mkdir /hdd/mp3
mkdir /hdd/epg

exit 0
regards
Innu
StevenSch
Einsteiger
Einsteiger
Beiträge: 105
Registriert: Mittwoch 20. Oktober 2004, 12:41

Beitrag von StevenSch »

Hallo,
habe die ide_setup.h und cpp nach neutrino/src/gui gelegt und die neutrino.cpp sowie die diversen locales und local.h files angepasst.
Fehlt hier noch ein Eintrag in der neutrino.h oder von wo kommt der folgende Fehler ?
neutrino.o(.text+0x44b0): In function `CNeutrinoApp::InitMainMenu(CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&, CMenuWidget&)':
: undefined reference to `IdeConfWidget::IdeConfWidget()'
collect2: ld returned 1 exit status
make[4]: *** [neutrino] Fehler 1
make[4]: Leaving directory `/home/steven/tuxbox/tuxbox-cvs/apps/tuxbox/neutrino/src'
make[3]: *** [all-recursive] Fehler 1
make[3]: Leaving directory `/home/steven/tuxbox/tuxbox-cvs/apps/tuxbox/neutrino/src'
make[2]: *** [all-recursive] Fehler 1
make[2]: Leaving directory `/home/steven/tuxbox/tuxbox-cvs/apps/tuxbox/neutrino'
make[1]: *** [all] Fehler 2
make[1]: Leaving directory `/home/steven/tuxbox/tuxbox-cvs/apps/tuxbox/neutrino'
make: *** [/home/steven/tuxbox/dbox2/cdkflash/root-neutrino] Fehler 2
Zuletzt geändert von StevenSch am Dienstag 20. März 2007, 01:48, insgesamt 1-mal geändert.
DrStoned
Tuxboxer
Tuxboxer
Beiträge: 2614
Registriert: Montag 20. Mai 2002, 10:49
Image: JTG-Image [IDE] Version 2.4.4
Image: (7025SS) Merlin

Beitrag von DrStoned »

Da fehlt jetzt noch eine hddcheck.start und eine hddcheck.end.

Teste gerade einen Testsnap von Riker, in dem das HDD-Menü eingebaut ist. Der HDD-Check ging erst, als ich smbd und nmbd beendet habe, da diese noch auf der Platte liefen.

Beispieldatei hddcheck.start

Code: Alles auswählen

#!/bin/sh
# HDD-Check start script

# here you may add something like killing deamons and programs which are running from HDD

killall smbd
killall nmbd

exit 0 
Beispieldatei hddcheck.end

Code: Alles auswählen

#!/bin/sh
# HDD-Check end script

# here you may add tasks after hdd checking, for example restart deamons and programs, which are running from HDD

/hdd/bin/nmbd -D
/hdd/bin/smbd -D

exit 0 
Ausserdem wäre es sinnvoll, nach der Überprüfung das Ergebnis des HDD-Checks anzuzeigen, damit man weiss, ob eventuell Fehler im Dateisystem der Festplatte vorliegen.

Greetz von DrStoned :lol: :lol: :lol:
Z80
Erleuchteter
Erleuchteter
Beiträge: 710
Registriert: Dienstag 3. September 2002, 12:54

Beitrag von Z80 »

hier mein Entwurf für ein IDE Menü:
froi froi :D
danke dir Innuendo für die Sourcen!
mohousch
Einsteiger
Einsteiger
Beiträge: 362
Registriert: Mittwoch 14. Dezember 2005, 03:25

Beitrag von mohousch »

@StevenSch

das ide_setup muss auch mitkompiliert werden...:D
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

Innuendo hat garantier noch das mmc menü in der hinterhand :) so wie ich die locale sehe
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

@Innuendo
ich hab die beiden gui dateien mal bisserl bearbeitet.kannst ja mal drüberschauen. getestet hab ich die nicht, da ich das manü nicht eingebaut habe.
edit rausgenommen, da was neues

ich werde mal versuchen die g.settings_ rauszubekommen, und das in eine eigene config zu packen.nicht, das es wieder in neutrino landet, wo du so schön den ganzen code dort rausgenommen hast. so stört der in neutrino.cpp nicht.
klasse arbeit :)
Zuletzt geändert von mb405 am Dienstag 10. April 2007, 10:04, insgesamt 1-mal geändert.
fran
Interessierter
Interessierter
Beiträge: 64
Registriert: Mittwoch 26. April 2006, 09:44

Beitrag von fran »

mit

//ide
int samba;
int hddfs;
char hddsleep[10];
int hddcache;
int swap;
int nfs;
int ide;

in der struct SNeutrinoSettings in system/settings.h kompiliert es zumindest mal durch.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

so ich hab mal bisserl umgecodet.
in der ide_setup.cpp

ganz oben das rein

Code: Alles auswählen

#define IDECFG "/var/tuxbox/config/ide.conf"
die funktion void IdeConfWidget::PaintSettings() hab ich zum einlesen der config missbraucht. da fehlen noch die default einstellungen.

Code: Alles auswählen

void IdeConfWidget::PaintSettings()
{
	printf("Harddisk Menu 2006-12-08 Innuendo V0.10 \n");
	//#############################################################################################################
	printf("  modifiziert 2007-03-20 mb405    V0.01 \n");
	
	FILE *ide_conf;			//ide conf
	char *read_puffer;
	char line_buffer[256];
	
	// open config
	if(!(ide_conf = fopen(IDECFG, "r")))
	{
		printf("%s nicht gefunden. Benutze Voreinstellungen.\n", IDECFG);
                //hier müssen die Voreinstellungen rein.
	}

	// read config
	while(fgets(line_buffer, sizeof(line_buffer), ide_conf))
	{
		if((read_puffer = strstr(line_buffer, "IDEMODE=")))
		{
			sscanf(read_puffer + 8, "%d", &ide_mode);
		}
		else if((read_puffer = strstr(line_buffer, "SWAP=")))
		{
			sscanf(read_puffer + 5, "%s", (char *)&swap);
		}
		else if((read_puffer = strstr(line_buffer, "HD-FS=")))
		{
			sscanf(read_puffer + 5, "%d", &hd_fs);
		}
		else if((read_puffer = strstr(line_buffer, "SLEEPTIME=")))
		{
			sscanf(read_puffer + 10, "%s", (char *)&hddsleep);
		}
		else if((read_puffer = strstr(line_buffer, "HDDCACHE=")))
		{
			sscanf(read_puffer + 9, "%s", (char *)&hddcache);
		}
		else if((read_puffer = strstr(line_buffer, "SAMBA=")))
		{
			sscanf(read_puffer + 6, "%s", &samba);
		}
		else if((read_puffer = strstr(line_buffer, "NFS=")))
		{
			sscanf(read_puffer + 4, "%s", &nfs);
		}
	}
	// close config
	fclose(ide_conf);
	//#############################################################################################################
}
die funktion bool IdeConfWidget::SaveSettings() speicher die config ab.

Code: Alles auswählen

bool IdeConfWidget::SaveSettings()
{
	//#############################################################################################################
	FILE* ide_conf = 0;
	ide_conf = fopen(IDECFG, "w");
	if(!ide_conf)
		{
		printf("Kann Datei nicht erstellen %s\n", IDECFG);
		return false;
		}

		printf("schreibe in Datei %s\n", SECTCFG);
		
		fprintf(ide_conf, "================= IDE Config =======================\n");
		fprintf(ide_conf, "IDEMODE=%d\n",ide_mode);
		fprintf(ide_conf, "SWAP=%s\n",swap);
		fprintf(ide_conf, "HD-FS=%d\n",hd_fs);
		fprintf(ide_conf, "SLEEPTIME=%s\n",hddsleep);
		fprintf(ide_conf, "HDDCACHE=%s\n",hddcache);
		fprintf(ide_conf, "================ Samba Config ======================\n");
		fprintf(ide_conf, "SAMBA=%d\n",samba);
		fprintf(ide_conf, "================= NFS Config =======================\n");
		fprintf(ide_conf, "NFS=%d\n",nfs);
		
	fclose(ide_conf);
	//##################################################################################################
#############
}
natürlich müsste der ganze code noch angepasst werden. und die config muss auch noch einen treffenden namen erhalten. ide.conf passt ja nicht so richtig.
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

schön - scheint ja doch ein paar zu interessieren.
leider gibt es ein problem beim einrichten der partitionen (sehr große und/oder sehr kleine (alte) hdds)

edit: veraltete version gelöscht

so werden die partitionsgrößen über zylinder berechnet. bitte mal testen.
swap partitionen über 4GB (alles über 128MB halte ich eh für quark) funktioniert nicht.

innu
Zuletzt geändert von Innuendo am Montag 26. März 2007, 08:53, insgesamt 1-mal geändert.
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

mb405 hat geschrieben:Innuendo hat garantier noch das mmc menü in der hinterhand :) so wie ich die locale sehe
nein, leider nicht. meine ide war nur, dass ich mmc und ide in einem menü zusammenbringe. ist aber noch nicht wirklich durchdacht ...
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

mb405 hat geschrieben:ich werde mal versuchen die g.settings_ rauszubekommen, und das in eine eigene config zu packen.nicht, das es wieder in neutrino landet, wo du so schön den ganzen code dort rausgenommen hast. so stört der in neutrino.cpp nicht.
wegen mir können wir eine eigene conf dafür erstellen. aber wenn du dich damit schon grad beschäftigst könntest du ja auch das ide treiber laden/entladen mit einpflegen. dann wäre der lästige reboot auch erledigt.
vorrausgesetzt natürlich wir gehen davon aus, dass treiber und fs als module geladen werden.

innu
DrStoned
Tuxboxer
Tuxboxer
Beiträge: 2614
Registriert: Montag 20. Mai 2002, 10:49
Image: JTG-Image [IDE] Version 2.4.4
Image: (7025SS) Merlin

Beitrag von DrStoned »

@Innuendo

Könntest Du bei Gelegenheit das hier auch noch einbauen. Ist nämlich ganz schön lästig, die Deamons vor dem Plattencheck abzuschießen.

Wenn mir Riker mit Deinen geposteten Änderungen einen Testsnap baut, kann ich das mal mit meiner Testplatte überprüfen. Diese ist nämlich so ein Kandidat, die Platte wird mit dem neuen HDD-Menü partioniert und formatiert, und lässt sich auch beschreiben. Aber wenn ich sie mit cfdisk überprüfe, gibt es Fehler, und cfdisk stürzt ab. Initialisiere ich sie hingegen mit dem Skript, funktioniert auch cfdisk.

Hier noch Infos von smartctl zu dieser Platte.

Code: Alles auswählen

smartctl version 5.36 [powerpc-tuxbox-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Model Family:     IBM Travelstar 32GH, 30GT, and 20GN family
Device Model:     IBM-DJSA-210
Serial Number:    9ZV9ZJ33705
Firmware Version: JS2OAB8A
User Capacity:    8,000,000,000 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   5
ATA Standard is:  ATA/ATAPI-5 T13 1321D revision 1
Local Time is:    Wed Mar 21 07:51:21 2007 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Eigenartigerweise wird diese Platte nur mit max. 8GB formatiert, obwohl 10,06 GB draufsteht. Ist also ein idealer Kandidat zum Testen des neuen Codes.

Greetz von DrStoned :lol: :lol: :lol:
Greetz von DrStoned :lol: :lol: :lol:
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

DrStoned hat geschrieben:Könntest Du bei Gelegenheit das hier auch noch einbauen. Ist nämlich ganz schön lästig, die Deamons vor dem Plattencheck abzuschießen.
kann ich machen, das ist schnell erledigt
DrStoned hat geschrieben: Wenn mir Riker mit Deinen geposteten Änderungen einen Testsnap baut, kann ich das mal mit meiner Testplatte überprüfen. Diese ist nämlich so ein Kandidat, die Platte wird mit dem neuen HDD-Menü partioniert und formatiert, und lässt sich auch beschreiben. Aber wenn ich sie mit cfdisk überprüfe, gibt es Fehler, und cfdisk stürzt ab. Initialisiere ich sie hingegen mit dem Skript, funktioniert auch cfdisk.
sobald riker lust & zeit hat, geb ich ihm den krams wieder für einen testsnap

innu
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

vorrausgesetzt natürlich wir gehen davon aus, dass treiber und fs als module geladen werden.
also das mit den filesystem modulen hab ich anders gemacht.
ext2 und ext3 ist bei mir im kernel. muss also nicht als modul sein.damit spart man sich das entladen der module. (ext2 und ext3 im kernel < weniger platz als ext2+ext3(als modul)+kernel)
xfs hab ich als modul gebaut, und in den var bereich verschoben. wenn ich das mal nutze, dann kann ich das einfach laden.
somit muss nur xfs geladen werden.

@Innuendo
kannst du mir mal die ide_menu sourchen auf meine mail schicken ? danke
wenn ich das hier aus dem board kopiere muss ich immer so viel nacharbeiten.
noch was anderes, was zwar nicht hier reingehört :) wir sollten uns mal über eine einheitliche code schreibweise einigen. das führt zum besseren verständnis bei allen. auch die tabs sind bei dir wohl 4 breit, ich nutze 8 wie denke ich im cvs auch. oder es hat mir beim copieren deiner sourcen von hier irgendwas kaputt gemacht.
dann das
einmal so

Code: Alles auswählen

if (g_settings.samba == 1)
	{
		system("/bin/nmbd");
		system("/bin/smbd -D -s /etc/smb.conf");
	}
und einmal so

Code: Alles auswählen

if (g_settings.samba == 1) {
		system("/bin/nmbd");
		system("/bin/smbd -D -s /etc/smb.conf");
}
ich weis, das beides richtig ist, aber eine einheitliche sache ist von vorteil, wenn man sich fremden code ansieht.
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

mb405 hat geschrieben:also das mit den filesystem modulen hab ich anders gemacht.
ext2 und ext3 ist bei mir im kernel. muss also nicht als modul sein.damit spart man sich das entladen der module. (ext2 und ext3 im kernel < weniger platz als ext2+ext3(als modul)+kernel)
xfs hab ich als modul gebaut, und in den var bereich verschoben. wenn ich das mal nutze, dann kann ich das einfach laden.
somit muss nur xfs geladen werden.
dann bleiben wir einfach beim reboot - dann ist es für alle tauglich und jeder kann es für sein system anpassen (oder auch nicht)
mb405 hat geschrieben: ich weis, das beides richtig ist, aber eine einheitliche sache ist von vorteil, wenn man sich fremden code ansieht.
zeitgleich zum unterricht "schönschreiben" wurde rumlümmeln & nix tun angeboten - ich hab letzteres gewählt ;-)

innu
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

hehe :) großes grinzen.

bitte schick mir mal die sourcen. ich werd die "schön-schreiben", und die config einarbeiten.
danke
DrStoned
Tuxboxer
Tuxboxer
Beiträge: 2614
Registriert: Montag 20. Mai 2002, 10:49
Image: JTG-Image [IDE] Version 2.4.4
Image: (7025SS) Merlin

Beitrag von DrStoned »

@Innuendo

Riker hat mir gestern Abend einen Testsnap mit dem neuen Formatierungscode erstellt. Es geht immer noch nicht richtig mit meiner alten IBM-Platte.

Code: Alles auswählen

smartctl version 5.36 [powerpc-tuxbox-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Model Family:     IBM Travelstar 32GH, 30GT, and 20GN family
Device Model:     IBM-DJSA-210

Serial Number:    9ZV9ZJ33705
Firmware Version: JS2OAB8A
User Capacity:    8,000,000,000 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   5
ATA Standard is:  ATA/ATAPI-5 T13 1321D revision 1
Local Time is:    Wed Mar 21 07:51:21 2007 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Hier das Ergebnis:

Code: Alles auswählen

~ > umount /hdd
~ > swapoff /dev/ide/host0/bus0/target0/lun0/part1
~ > cfdisk -P t /dev/ide/host0/bus0/target0/lun0/disc
FATAL ERROR: Bad primary partition 1: logical partitions overlap
Formatiere ich hingegen die Platte mit dem Skript erhalte ich folgendes:
Hier die wesentlichen Inhalte des Skripts:

Code: Alles auswählen

umount /hdd
swapoff /dev/ide/host0/bus0/target0/lun0/part1
sleep 3
sfdisk /dev/ide/host0/bus0/target0/lun0/disc << EOF
,128,S
,,L
EOF

mkswap /dev/ide/host0/bus0/target0/lun0/part1

/sbin/mkfs.ext3 -T largefile -m0 /dev/ide/host0/bus0/target0/lun0/part2
insmod jbd
insmod ext3
Ergebnis Initialisierung mit dem Skript:

Code: Alles auswählen

~ > cfdisk -P t /dev/ide/host0/bus0/target0/lun0/disc
Partition Table for /dev/ide/host0/bus0/target0/lun0/disc

         ---Starting---      ----Ending----    Start     Number of
 # Flags Head Sect Cyl   ID  Head Sect Cyl     Sector    Sectors
-- ----- ---- ---- ---- ---- ---- ---- ---- ----------- -----------
 1  0x00    0    2    0 0x82   15   63  127           1      129023
 2  0x00    0    1  128 0x83   15   63 1023      129024    15494976
 3  0x00    0    0    0 0x00    0    0    0           0           0
 4  0x00    0    0    0 0x00    0    0    0           0           0
Was mir auffällt, ist dass die Platte beim Cylinder 1023 aufhört.
Vermutlich liegt es an der Platte. Sie wird mit 8 GB formatiert, obwohl laut Aufdruck auf der Platte 10,01 GB drin sein sollten. Eventuell sollte sie umgejumpert werden, aber ich kann da bei der 2,5 Zoll Platte nichts finden.

Mit meiner neuen Platte kann und möchte ich momentan nicht testen, da ich da noch ca. 60 GB Filme draufhabe. Vielleicht komme ich nächste Woche mal dazu, den Datenbestand zu sichern und mal mit der neuen Platte zu testen.

Greetz von DrStoned :lol: :lol: :lol:
DrStoned
Tuxboxer
Tuxboxer
Beiträge: 2614
Registriert: Montag 20. Mai 2002, 10:49
Image: JTG-Image [IDE] Version 2.4.4
Image: (7025SS) Merlin

Beitrag von DrStoned »

Habe gerade noch zusammen mit Innuendo getestet, SWAP ausgeschaltet, dann gings ohne Probleme. Innu hat den Fehler in seinen Sourcen gefunden.

Code: Alles auswählen

~ > cfdisk -P t /dev/ide/host0/bus0/target0/lun0/disc
Partition Table for /dev/ide/host0/bus0/target0/lun0/disc

         ---Starting---      ----Ending----    Start     Number of
 # Flags Head Sect Cyl   ID  Head Sect Cyl     Sector    Sectors
-- ----- ---- ---- ---- ---- ---- ---- ---- ----------- -----------
 1  0x00    0    2    0 0x83   15   63 1023           1    15621983
 2  0x00    0    0    0 0x00    0    0    0           0           0
 3  0x00    0    0    0 0x00    0    0    0           0           0
 4  0x00    0    0    0 0x00    0    0    0           0           0
@Riker, Innu schickt Dir die geänderten Sourcen, machst Du mir bitte wieder einen Testsnap, dann teste ichs Morgen früh.

Greetz von DrStoned :lol: :lol: :lol:
Greetz von DrStoned :lol: :lol: :lol:
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

DrStoned hat geschrieben:

Code: Alles auswählen

FATAL ERROR: Bad primary partition 1: logical partitions overlap
fehler ist gefunden und behoben - riker bekommt später die beiden files für einen testschnaps

innu
Innuendo
Einsteiger
Einsteiger
Beiträge: 281
Registriert: Mittwoch 8. Dezember 2004, 21:45

Beitrag von Innuendo »

hier die korrektur
außerdem wird nun die datei ide.conf statt system settings verwendet

immernoch nur ein entwurf!

edit: typo fehler - korrektur folgt
Zuletzt geändert von Innuendo am Freitag 23. März 2007, 08:43, insgesamt 1-mal geändert.
StevenSch
Einsteiger
Einsteiger
Beiträge: 105
Registriert: Mittwoch 20. Oktober 2004, 12:41

Beitrag von StevenSch »

Danke !

Codeschnipsel 2 ist aber offensichtlich die ide_setup.h, oder ?