Von amd64 auf i386 kernel switchen

explorer

Well-Known Member
Hallo.
Vorweg erstmal eine generelle Frage:
Ist es möglich ohne das System neu aufzusetzen von einem amd64 Kernel auf einen i386 Kernel zu wechseln?

Ich wollte das mal probieren, da es in der pkgsrc oft hieß:"Not available for NetbsdX86_64".

Habe also mit
Code:
cvs -d $CVSROOT checkout -PA src
die current Quellen gezogen und mit
Code:
./build.sh -U -u tools
./build.sh -U -u distribution
./build.sh -U -m i386 -u kernel=GENERIC_ISDN
meinen i386 Kernel gebaut.
Dann erstmal eingestellt und gereebotet.
Beim Reboot mit dem neuen Kernel kam dann:
exec /sbin/init: error 8
init: trying /sbin/oinit
exec /sbin/oinit: error 2
init: trying /sbin/init.bak
exec /sbin/init.bak: error 2
init: not found
panic: no init
kdb breakpoint at 11d11e0
Stopped in pid 1.1 (init) at netbsd:cpu_Debugger+0x4: nop
db>

Was kann ich da machen?
Wenn ich vom alten Kernel boote geht es wieder.
Ich tippe mal drauf, das meine /sbin/init einfach nicht mit einem i386 Kernel läuft.
Wäre ein
Code:
./build.sh -U install=/
angebracht?Oder zerstöre ich damit mein System?

Danke schonmal im Vorraus.

mfg
Explorer
 
das problem duerfte sein, dass ein 32bit-kernel keine 64bit-binaries ausfuehren kann.

ich wuerde:

1) /rescue durch die 32bit-version ersetzen. vorher das alte /rescue sichern, z.b. nach /rescue.bak
2) /sbin/init und /lib sichern
3) in single-user wechseln
4) /sbin/init und /lib durch die 32bit-varianten austauschen. dafuer allerdings /rescue.bak/mv bzw. cp benutzen
5) mit /rescue.bak/reboot neustarten
6) den 32bit-kernel in single-user booten
7) mit /rescue/mv bzw. cp oder tar alle restlichen systembinaries sichern und durch 32bit-versionen ersetzen

kann sein, dass ich was vergessen habe auf die schnelle, aber so muesste das moeglich sein.

einfacher geht das ganze, wenn du eine extra partition wie z.b. /tmp kurzzeitig zur / deklarieren kannst. du installierst im laufenden 64bit-system das 32bit-system nach /tmp und bootest den neuen kernel dann mit -a und gibst als root-partition dann die an, die vorher /tmp war.
 
Danke für die schnelle und ausführliche Antwort.
Werd ich dann im laufe des Tages mal ausprobieren.
Ich melde mich dann später mit dem Ergebnis, da ich dann erstmal alle pakete neu kompilieren darf, wenns klappt :(

mfg
explorer
 
So.
Letztendlich habe ich es so versucht:

Erst das komplette /usr/src Verzeichnis in den Ursprungszustand versetzt um keine Probleme mit Abhängigkeiten oder noch liegenden .o's zu bekommen.

Dann ein ewig dauerndes
Code:
./build.sh -U -u -m i386 -D /usr/src/cross distribution
, welches gleich tools etc. mit gebaut hat.
Dann noch ein
Code:
./build.sh -U -u -m i386 kernel=GENERIC_ISDN

Danach habe ich meine Netbsd cd genommen und von da aus mit der Konsole /sbin, /rescue und /lib resichert.
Dann habe ich auch mit der cd die i386 /sbin und /lib genommen und die Alten durch sie ersetzt.
Dann noch den amd Kernel nach /netbsd.amd gesichert und den Neuen nach /netbsd kopiert.

Dann ein Reboot und die cd raus.

Beim Booten kommt jedoch weiterhin:
Code:
exec /sbin/init: error 8
init: trying /sbin/oinit
exec /sbin/oinit: error 2
init: trying /sbin/init.bak
exec /sbin/init.bak: error 2
init: not found
panic: no init
kdb breakpoint at 11d11e0
Stopped in pid 1.1 (init) at netbsd:cpu_Debugger+0x4: nop
db>

Daher sehe ich den Versuch bis hier hin als gescheitert an.
Wenn noch jemand eine Idee hat, würde ich mich freuen diese zu hören.

Ich für mich werde jetzt erstmal eine unplanmäßige Backuprunde einschieben ;)

mfg
explorer
 
Zurück
Oben