rcS.m4 und hdd mount/hdparm incl. patch

Kreuzuebersetzer, Diskussion über Änderungen im Tuxbox-CDK und Tuxbox-CVS
hansj
Neugieriger
Neugieriger
Beiträge: 19
Registriert: Mittwoch 20. Oktober 2004, 13:39

rcS.m4 und hdd mount/hdparm incl. patch

Beitrag von hansj »

Ich habe gerade ein frisches Image compiliert, allerdings wird die Festplatte jetzt nicht mehr automatisch gemounted, ebenso die hdparm's nicht gesetzt. Nach etwas troubleshooting bin ich auf die rcS.m4 (oder rcS) gestoßen.
Dort wird ein mount -a ausgeführt, bevor die ide-Treiber geladen sind. Somit wird der hdd-mountpoint in der /etc/fstab natürlich ignoriert.
Desweiteren funktioniert
hdparm "`cat /var/tuxbox/config/target0.hdparm`" /dev/ide/host0/bus0/target0/lun0/disc
nicht.

Deswegen habe ich den mount nach dem Laden der IDE-Treiber geschoben und die hdparm Argumente etwas umformuliert:
Index: rcS.m4
===================================================================
RCS file: /cvs/tuxbox/cdk/root/etc/init.d/rcS.m4,v
retrieving revision 1.4
diff -u -p -r1.4 rcS.m4
--- a/rcS.m4 11 Feb 2009 21:29:13 -0000 1.4
+++ b/rcS.m4 16 Feb 2009 22:24:08 -0000
@@ -126,14 +126,6 @@ if [ $KMINOR -ge 6 ]; then
mount /dev/pts
fi

-if [ $KMINOR -ge 6 ]; then
- # everything else is already mounted
- mount /var
-else
- # Mount file systems in /etc/fstab
- mount -a
-fi
-
# If appropriate, load ide drivers and file system drivers
if [ $KMINOR -ge 6 ]; then
# kernel 2.6
@@ -154,11 +146,19 @@ else
fi
fi

+if [ $KMINOR -ge 6 ]; then
+ # everything else is already mounted
+ mount /var
+else
+ # Mount file systems in /etc/fstab
+ mount -a
+fi
+
# Turn on swap
ifmarkerfile({swap},{swapon -a})

-runprogifexists({/var/tuxbox/config/target0.hdparm},{hdparm},{"`cat /var/tuxbox/config/target0.hdparm`" /dev/ide/host0/bus0/target0/lun0/disc})
-runprogifexists({/var/tuxbox/config/target1.hdparm},{hdparm},{"`cat /var/tuxbox/config/target1.hdparm`" /dev/ide/host0/bus0/target1/lun0/disc})
+runprogifexists({/var/tuxbox/config/target0.hdparm},{hdparm},{$(cat /var/tuxbox/config/target0.hdparm 2>/dev/null) /dev/ide/host0/bus0/target0/lun0/disc})
+runprogifexists({/var/tuxbox/config/target1.hdparm},{hdparm},{$(cat /var/tuxbox/config/target1.hdparm 2>/dev/null) /dev/ide/host0/bus0/target1/lun0/disc})

# Set time zone etc
. /etc/profile
Ich frage mich die ganze Zeit nur, warum meine alten Images funktioniert haben :gruebel: wahrscheinlich Alzheimer...

Habt Ihr keine Probleme mit der IDE-Unterstützung im blanken CVS?

hansj
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: rcS.m4 und hdd mount/hdparm incl. patch

Beitrag von seife »

Damit kannst du keine Module mehr aus /var/lib/modules laden. /var sollte IMHO immer so früh wie möglich gemountet werden.
hansj
Neugieriger
Neugieriger
Beiträge: 19
Registriert: Mittwoch 20. Oktober 2004, 13:39

Re: rcS.m4 und hdd mount/hdparm incl. patch

Beitrag von hansj »

Stimmt, :o , dann werde ich den mount einfach duplizieren, zuerst um /var zu laden und danach nochmal, um die Festplatte zu mounten, sozusagen ein module-dependend mount.

Macht das Sinn?
jojo
Interessierter
Interessierter
Beiträge: 48
Registriert: Freitag 9. Januar 2009, 18:52

Re: rcS.m4 und hdd mount/hdparm incl. patch

Beitrag von jojo »

hansj hat geschrieben:Stimmt, :o , dann werde ich den mount einfach duplizieren, zuerst um /var zu laden und danach nochmal, um die Festplatte zu mounten, sozusagen ein module-dependend mount.

Macht das Sinn?
Hier mal meine rcS.m4...

Code: Alles auswählen

Index: cdk/root/etc/init.d/rcS.m4
===================================================================
RCS file: /cvs/tuxbox/cdk/root/etc/init.d/rcS.m4,v
retrieving revision 1.4
diff -u -r1.4 rcS.m4
--- a/cdk/root/etc/init.d/rcS.m4	11 Feb 2009 21:29:13 -0000	1.4
+++ b/cdk/root/etc/init.d/rcS.m4	17 Feb 2009 08:02:34 -0000
@@ -134,12 +134,30 @@
 	mount -a
 fi
 
+# BaD mAgIc
+# bAd MaGiC
 # If appropriate, load ide drivers and file system drivers
 if [ $KMINOR -ge 6 ]; then
 	# kernel 2.6
 	if [ -e /lib/modules/$(uname -r)/extra/ide/dboxide.ko ] ; then
 		loadmodule(dboxide)
+		loadmodule(ide-disk)
+	fi
+
+	if [ -e /lib/modules/$(uname -r)/extra/mmc/mmc_spi_block.ko ] ; then
+		ifmarkerfile({mmc},{loadmodule(mmc_spi_block)})
+	fi
+
+	if [ -e /sys/module/ide_disk -o -e /sys/module/mmc_spi_block ] ; then
+		ifmarkerfile({ext2fs},{loadmodule(ext2)})
+		ifmarkerfile({ext3fs},{loadmodule(ext3)})
+		loadmodule(xfs)
+		ifmarkerfile({vfatfs},{loadmodule(vfat)})
 	fi
+	mount /dev/mtdblock/3 /var
+	runprogifexists({/var/tuxbox/config/target0.hdparm},{hdparm},{"`cat /var/tuxbox/config/target0.hdparm`" /dev/hda})
+	runprogifexists({/var/tuxbox/config/target1.hdparm},{hdparm},{"`cat /var/tuxbox/config/target1.hdparm`" /dev/hdb})
+	mount -a
 else
 	# kernel 2.4
 	if [ -e /lib/modules/$(uname -r)/misc/dboxide.o ] ; then
@@ -151,15 +169,14 @@
 		loadmodule(jbd)
 		loadmodule(ext3)
 		loadmodule(xfs)
+		runprogifexists({/var/tuxbox/config/target0.hdparm},{hdparm},{"`cat /var/tuxbox/config/target0.hdparm`" /dev/ide/host0/bus0/target0/lun0/disc})
+		runprogifexists({/var/tuxbox/config/target1.hdparm},{hdparm},{"`cat /var/tuxbox/config/target1.hdparm`" /dev/ide/host0/bus0/target1/lun0/disc})
 	fi
 fi
 
 # Turn on swap
 ifmarkerfile({swap},{swapon -a})
 
-runprogifexists({/var/tuxbox/config/target0.hdparm},{hdparm},{"`cat /var/tuxbox/config/target0.hdparm`" /dev/ide/host0/bus0/target0/lun0/disc})
-runprogifexists({/var/tuxbox/config/target1.hdparm},{hdparm},{"`cat /var/tuxbox/config/target1.hdparm`" /dev/ide/host0/bus0/target1/lun0/disc})
-
 # Set time zone etc
 . /etc/profile
   
@@ -192,6 +209,8 @@
 	dnl FIXME: using loadmodule makes no sense here
 	dnl since modprobe is used to pull in the dependencies
 
+	dmesg >/tmp/dmesg-01.log
+
 	# I2C core
 	loadmodule(dbox2_i2c)
 	# load order is somehow important, if dbox2_napi (which pulls in
@@ -339,3 +358,4 @@
 elif [ -e /etc/init.d/rcS.local ]; then
 	. /etc/init.d/rcS.local
 fi
+dmesg >/tmp/dmesg-02.log
Im Grunde genommen könnte man doch bereits die rcS durch den Macro-Generator strippen lassen, so daß sie direkt für den jeweiligen Kernel optimiert ist.
Oder verwendet jemand mehrere Kernel mit dem gleichen /etc resp /var/etc?
[Korrigierte Version, da ich meine /etc/fstab customized hatte]
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: rcS.m4 und hdd mount/hdparm incl. patch

Beitrag von dbt »

Sollte wieder so sein wie es war, als die Datei noch im Newmake-Branch war, mit den letzten Änderungen versteht sich, Hab ich wohl neulich versiebt, als ich ein Revert gemacht hatte. :dash:
tine1084
Einsteiger
Einsteiger
Beiträge: 160
Registriert: Freitag 8. September 2006, 14:58

Re: rcS.m4 und hdd mount/hdparm incl. patch

Beitrag von tine1084 »

Seit dieser änderung im cvs wird meine hdd nicht mehr erkannt.

So sieht meine rcS aus:

Code: Alles auswählen

	# devices with dynamic minor numbers are created by /sbin/hotplug

	ln -sf /dev/fb0 /dev/fb/0
	ln -sf /dev/tty0 /dev/vc/0
		
	mount /dev/pts
fi

# If appropriate, load ide drivers and file system drivers
if [ $KMINOR -ge 6 ]; then
	# kernel 2.6
	if [ -e /lib/modules/$(uname -r)/extra/ide/dboxide.ko ] ; then
		$IM ${MD}dboxide 
	fi
else
	# kernel 2.4
	if [ -e /var/etc/.start_ide ]; then
	      . /etc/init.d/init_ide &
	fi
fi

if [ $KMINOR -ge 6 ]; then
	# everything else is already mounted
	mount /var
else
	# Mount file systems in /etc/fstab
	mount -a
fi

# Set time zone etc
. /etc/profile
  
# Setup hostname
hostname -F /etc/hostname
ifup -a
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: rcS.m4 und hdd mount/hdparm incl. patch

Beitrag von dbt »

Code: Alles auswählen

else
   # kernel 2.4
   if [ -e /var/etc/.start_ide ]; then
         . /etc/init.d/init_ide &
   fi
fi
Die rcS ist aber bis auf die letzten Änderungen von rhabarber1848 fast identisch mit der, die bisher auch zu Newmakezeiten aktuell war. Die bisherige erstellte rcS hatte bisher keinen Bezug zu irgendeiner Schalterdatei /var/etc/.start_ide oder externe init_ide. Ich sehe das zumindest nicht.
Die Treiber/Module werden geladen, wenn sie da sind und dann die HDD mit dem default Filesystem eingehängt. Das wird dann über die fstab gemacht.
Allerdings das:
seife hat geschrieben:Damit kannst du keine Module mehr aus /var/lib/modules laden.
Müsste auch vorher schon immer so gewesen sein. Das müsste man halt ändern.
Ich bin eigentlich dafür /var ohne fstab zu mounten, auch wenn das nicht unbedingt den Linuxgepflogenheiten entspricht. Dann gibts aber wieder Ärger mit Yadd, das hatten wir ja schon mal... :evil: Deshalb lass ich das auch erst mal so stehen.
Da sind einige (lösbare) Dilemma drin, wie's scheint. Alleine die fstab ist schon ein Ding für sich, weil die eigentlich nicht wirklich nutzbar ist, ausser nur eben im fest eingebauten Zustand, in yadd und jffs2-Images. Die BB ist zwar so umgebogen, dass auch mount -a mit einer /var/etc/fstab funktioniert, nützt aber nichts solange /var noch nicht eingehängt ist und ist im Moment mehr zum Experimentieren gedacht.
Fazit: Es besteht Bedarf rcS.m4 an einigen Stellen umzustricken, aber 100% universal wird man sie wohl nicht hinbekommen. Diesbezüglich finde ich diese Idee auch ganz gut.
http://forum.tuxbox-cvs.sourceforge.net ... =7&t=48534
Und dann war ja noch das:
http://forum.tuxbox-cvs.sourceforge.net ... el#p356486
evtl. hat jemand da schon was konkretes anzubieten. :wink:
tine1084
Einsteiger
Einsteiger
Beiträge: 160
Registriert: Freitag 8. September 2006, 14:58

Re: rcS.m4 und hdd mount/hdparm incl. patch

Beitrag von tine1084 »

Kann man nicht einfach die fstab weg lassen und alles in der rcS unterbringen?

Bei jtg-image gibt es ja glaube ich auch keine fstab.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: rcS.m4 und hdd mount/hdparm incl. patch

Beitrag von dbt »

tine1084 hat geschrieben: Kann man nicht einfach die fstab weg lassen und alles in der rcS unterbringen?
Könnte man, aber wie gesagt, die fstab erwartet man eigentlich und ich würde sie generell fürs Einhängen der Festplatten/MMC verwenden nur wenns um /var und die anderen notwendigen Sachen geht, würde ich das mit einem Mountbefehl festmachen. Man muss das beim bauen der rcS dann so drehen, dass /var so eingehängt wird, dass es dann auch mit yadd usw. funktioniert. Ich hatte das im Prinzip schon mal gelöst, aber habs vorerst verworfen, weil noch andere Sachen anstehen. Es würde auf einen Kompromiß hinauslaufen, aber was ist man bei der ollen dbox nicht schon für Kompromisse eingegangen, auf den Einen käme es eigentlich nicht an. :wink:
tine1084 hat geschrieben: Bei jtg-image gibt es ja glaube ich auch keine fstab.
Richtg, die ist zwar drin und oxidiert sinnlos vor sich hin, aber das wird nicht so bleiben...

... und weils noch wegen der hdd-gui einiges zu überlegen gibt, lass ich das auch so wie's ist, es sei denn, jemand anders macht sich an rcS zu schaffen und stutzt die zurecht. :wink:
hansj
Neugieriger
Neugieriger
Beiträge: 19
Registriert: Mittwoch 20. Oktober 2004, 13:39

Re: rcS.m4 und hdd mount/hdparm incl. patch

Beitrag von hansj »

Unabhängig, welche rcS.m4 später mal die 'richtige' sein wird, funktioniert in der jetzigen rcS die Parameterübergabe an hdparm nicht.

Als Bug-fix biete ich folgenden patch an:
Index: rcS.m4
===================================================================
RCS file: /cvs/tuxbox/cdk/root/etc/init.d/rcS.m4,v
retrieving revision 1.6
diff -u -p -r1.6 rcS.m4
--- a/rcS.m4 19 Feb 2009 08:56:01 -0000 1.6
+++ b/rcS.m4 20 Feb 2009 22:06:31 -0000
@@ -159,8 +159,8 @@ fi
# Turn on swap
ifmarkerfile({swap},{swapon -a})

-runprogifexists({/var/tuxbox/config/target0.hdparm},{hdparm},{"`cat /var/tuxbox
/config/target0.hdparm`" /dev/ide/host0/bus0/target0/lun0/disc})
-runprogifexists({/var/tuxbox/config/target1.hdparm},{hdparm},{"`cat /var/tuxbox
/config/target1.hdparm`" /dev/ide/host0/bus0/target1/lun0/disc})
+runprogifexists({/var/tuxbox/config/target0.hdparm},{hdparm},{$(cat /var/tuxbox
/config/target0.hdparm 2>/dev/null) /dev/ide/host0/bus0/target0/lun0/disc})
+runprogifexists({/var/tuxbox/config/target1.hdparm},{hdparm},{$(cat /var/tuxbox
/config/target1.hdparm 2>/dev/null) /dev/ide/host0/bus0/target1/lun0/disc})

# Set time zone etc
. /etc/profile


Und für das Mounten würde ich gerne eine fstab behalten, da dies im Unix nunmal ein Standart ist.
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: rcS.m4 und hdd mount/hdparm incl. patch

Beitrag von dbt »

Danke, werds mal durchspielen. Muss mir sowieso was einfallen lassen.
Und für das Mounten würde ich gerne eine fstab behalten, da dies im Unix nunmal ein Standart ist.
Darauf läufts auf jeden Fall hinaus, soviel ist klar... :wink: