Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 >

mercredi 8 juin 2011

[Kernel 2.6.39.1/x86_64] Compiler un noyau pour x86_64 depuis un environnement x86

Voulant booster le temps de compilation du noyau 2.6.39.1 pour mes tests avec Xen 4.1.0 sous AMD64, j'ai décidé de recourir à ma machine la plus puissante.

Seul souci, cette machine dispose d'une Ubuntu 8.04 32 bits

La solution a été trouvée a partir de l'url suivante http://blog.kdecherf.com/2010/04/19/linux-compiler-un-noyau-x86_64-avec-un-environnement-x86/

Il faut donc procéder aux étapes fournies dans la page en question. Il faudra ajouter objdump dans la boucle for (chose que l'auteur a oublié d'ajouter mais ça c'est pas grave)

Du coup, celà donnera
apt-get install gcc-multilib
mkdir ~/bin
 (echo '#!/bin/sh'; echo 'exec gcc -m64 "$@"';) > ~/bin/x86_64-linux-gnu-gcc
chmod +x ~/bin/x86_64-linux-gnu-gcc
 for i in ar ld nm objcopy objdump strip; do ln -s `which $i` ~/bin/x86_64-linux-gnu-$i; done

export PATH=/root/bin:$PATH

Récupération de la branche stable/2.6.39.1

root@monroe:/opt# git clone git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen.git linux_xen_2.6.39.x-stable && cd linux_xen_2.6.39.x-stable && git checkout -b stable/2.6.39
.x origin/stable/2.6.39.x
Initialized empty Git repository in /opt/linux_xen_2.6.39.x-stable/.git/
remote: Counting objects: 2084227, done.
remote: Compressing objects: 100% (324815/324815), done.
remote: Total 2084227 (delta 1743703), reused 2080470 (delta 1740014)
Receiving objects: 100% (2084227/2084227), 509.02 MiB | 1716 KiB/s, done.
Resolving deltas: 100% (1743703/1743703), done.
Checking out files: 100% (36664/36664), done.
Branch stable/2.6.39.x set up to track remote branch refs/remotes/origin/stable/2.6.39.x.
Switched to a new branch "stable/2.6.39.x"
On vérifie
root@monroe:/opt/linux_xen_2.6.39.x-stable# head -n4 Makefile
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 39
EXTRAVERSION = .1

Compilation

On se fait un petit fichier .config (make ARCH=x86_64 CROSS_COMPILE=x86_64-linux-gnu- menuconfig ) bien comme il faut et ensuite
export TARGET=/opt/build_xen_2.6.39.x
mkdir -pv $TARGET/boot
export INSTALL_PATH=$TARGET/boot
export INSTALL_MOD_PATH=$TARGET
cp ../.config .
grep -i configfs_fs .config 
echo "compilation" > /tmp/date.log
date >> /tmp/date.log;
make ARCH=x86_64 CROSS_COMPILE=x86_64-linux-gnu- -j8 bzImage modules
date >> /tmp/date.log
echo "installation" >> /tmp/date.log
date >> /tmp/date.log
make ARCH=x86_64 CROSS_COMPILE=x86_64-linux-gnu- -j8 modules_install install
date >> /tmp/date.log

Divers avant déploiement

On supprime ensuite le superflux dans boot
root@monroe:/opt/linux_xen_2.6.39.x-stable# cd $TARGET/boot
root@monroe:/opt/build_xen_2.6.39.x/boot# ls -al 
total 9660
drwxr-xr-x 2 root root    4096 2011-06-09 10:12 .
drwxr-xr-x 4 root root    4096 2011-06-09 10:12 ..
lrwxrwxrwx 1 root root      16 2011-06-09 10:12 config -> config-2.6.39.1+
-rw-r--r-- 1 root root  125181 2011-06-09 10:12 config-2.6.39.1+
lrwxrwxrwx 1 root root      20 2011-06-09 10:12 System.map -> System.map-2.6.39.1+
-rw-r--r-- 1 root root 3773722 2011-06-09 10:12 System.map-2.6.39.1+
lrwxrwxrwx 1 root root      17 2011-06-09 10:12 vmlinuz -> vmlinuz-2.6.39.1+
-rw-r--r-- 1 root root 5956432 2011-06-09 10:12 vmlinuz-2.6.39.1+
root@monroe:/opt/build_xen_2.6.39.x/boot# rm -vf config System.map vmlinuz
On pourra aussi faire du ménage dans $TARGET/lib/modules/2.6.39.1+ Avant de déployer sur la machine-cible, si on dispose de pbzip2 pour la compression, il suffira de faire
root@monroe:/opt/build_xen_2.6.39.x# tar -cf ../xen_kernel.2.6.39.1+.tar.bz2 --use-compress-prog=pbzip2 .

Remarque: Personnellement depuis que j'ai découvert pbzip2, j'en suis assez fier car ca permet d'optimiser le temps de compression

Une fois l'arborescence déployée sur la machine-cible, il faudra penser à
  • générer un initrd () sur la machine cible
    mkinitramfs -o /boot/initrd.img-2.6.39.1+ 2.6.39.1+
  • Mettre à jour son grub
    update-grub2

vendredi 3 juin 2011

[Kernel 2.6.39] Activation des logs au démarrage (patch VGA)

Depuis quelques temps, il était impossible d'avoir les messages au démarrage du dom0 depuis l'écran. Le dom0 boutait comme il faut mais on obtenait à un certain moment un écran noir. Konrad (de chez nos amis d'Oracle) a donc patché dans la branche stable/2.6.39.x pour réobtenir les logs.

mardi 24 mai 2011

Un drôle de pressentiment

Depuis quelques jours, j'ai bien l'impression que dans les jours/mois à venir certaines données vont changer.

Ce n'est pas quelque chose qu'on peut facilement expliquer quand celà vous tient et vous travaille de l'intérieur. On patiente et on attend...

Un peu comme quelqu'un qu'on aurait mis au cachot depuis bien longtemps, dont personne n'a plus entendu parler depuis très longtemps, dont on a terré le nom va refaire surface(...).

J'ai l'impression qu'on guette, qu'on attend que les conditions soient réunies. La probabilité pour que de tels évènements puissent se produire et à la suite me parait excessivement faible, voire nulle. Une petite voix intérieure me murmure que le moment est pour bientôt. Pour le moment, je me concentre sur ce quoi je dois terminer sur Avignon. J'ai bien l'impression que quelqu'un va s'inviter au voyage et arriver aussi à destination.

J'ai la forte impression que cette présence ne m'est pas inconnue, voire proche, quelqu'un de déjà rencontré dans le passé. On verra une fois arriver à destination.

dimanche 22 mai 2011

C'était la dernière fois...

De mercredi à dimanche, j'ai hébergé quelqu'un que j'apprécie chez moi. Une galère qui survient au dernier moment comme on dit, c'est des choses qui arrive tout le monde. Je ne vais pas claquer ma porte à quelqu'un. Les galères de dernières minutes on connait tous ça!

Ce vendredi 2011/05/20 en début après-midi, j'ai appelé à Lyon pour confirmer. Le courrier est parti. Je devrais le recevoir dans les jours à venir. Nouveau contrat, nouvelle vie!

Vedène, 17h42, ce dimanche 2011/05/22, le colis est arrivé à bon port. Pour le colis aussi, j'espère aussi que ce sera nouveau départ, nouvelle vie!

De mon côté c'était la dernière fois. Je laisse les épreuves, les actes, le hasard décider du reste(...) Un coup de fil, une parole, je ne regarderais plus en arrière en prenant la direction de Lyon.

Affaire classée!