[FLUG] patchettina modulino trallallero trallalla
- From: Simon <f.simon@xxxxxxxx>
- To: fanolug@xxxxxxxxxxxxx
- Date: Mon, 17 Jun 2002 00:12:06 +0200
Mailing List del Fortunae LUG
=============================
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Dai questa è figa... inutile ma figa.
Tipo no se uno vuole fregare e dice io c'ho un i686 però mi
sta antipatico che quello che compilo dai sorgenti venga
ottimizzato per i686 e quindi il binario che ne risulta è
inutilizzabile sulle arch precedenti.
Allora tipo ho trovato sta roba qui:
http://rakshas.de/lfs/xcompile-a.2.html
Consiste in un modulino che inserito nel kernel te lo fa
diventare un iX86... quello che vuoi e che decidi al
momento della compilazione. Quando lo rimuovi ritorna
quello di prima.
Solo che sto ciaffetto qua non faceva una cosa... cioè non
cambiava la family in /proc/cpuinfo:
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
[...]
Infatti rimaneva 6.
La roba noiosa è che alcuni pacchettozzi non sempre usano
uname per determinare l'arch... ogni tanto sono bastardozzi
e vanno a vedere anche in /proc/cpuinfo quindi dovevo fare
qualcosa! dovevo mettere ordine in questo guazzabuglio.
Ho migliorato il programmino in modo che cambi anche
la family in /proc/cpuinfo.
Eccolo:
- ---------| INIZIO: uname_i586.c |------------
#include <linux/module.h>
#include <linux/utsname.h>
#include <asm/processor.h>
#ifndef UNAME_DUMB_STEPPING
#define UNAME_DUMB_STEPPING '5'
#endif
char machine_bak, family_bak;
int init_module(void)
{
machine_bak = system_utsname.machine[1];
system_utsname.machine[1] = UNAME_DUMB_STEPPING;
family_bak = cpu_data[0].x86;
cpu_data[0].x86 = UNAME_DUMB_STEPPING - '0';
return (0);
}
void cleanup_module(void)
{
system_utsname.machine[1] = machine_bak;
cpu_data[0].x86 = family_bak;
}
- ---------| FINE: uname_i586.c |----------
Per compilarlo:
$ gcc -Wall -O3 -c -DMODULE uname_i586.c
Per usarlo:
# insmod ./uname_i586.o
# uname -m
i586
# cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 5
# rmmod uname_i586
# uname -m
i686
Figo... funziona bene da bestia.
(a parte forse se è un SMP... in tal caso boh:)
- --
/* Federico 's1m0n' Simoncelli <f.simon@xxxxxxxx>
http://www.jkcal.org/simon
*/
int main(){unsigned int g,h=0;while(++h){for(g=(h>1)?2:1;g<
h/2+1&&h%g!=0;g++);if(g==h/2+1)printf("%i\n",h);}return 0;}
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQE9DQ0B/ItriIBKan0RAtEDAJ91Fl18m9QdfGNMidZhOtAdSb/oywCeICA+
Yb7ZbdNux4vgo9vp/l6MDug=
=aciH
-----END PGP SIGNATURE-----
--
<SmartArt> Ogni giorno un sistemista Windows NT si sveglia...... e sa che
dovra' lavorare.
<SmartArt> Ogni giorno un sistemista Linux si sveglia...... alle 13.00, per il
pranzo.
<SmartArt> Non importa che tu sia sistemista Windows NT o Linux.....tanto ti
pagano uguale!
Other related posts:
- » [FLUG] patchettina modulino trallallero trallalla