Android Ice Cream Sandwich (ICS) sur HTC Desire

Mise à jour du 7/2/2012: On est passé à la 0.3.9. Évidemment, encore un full-wipe depuis la 0.2. L’appareil photo fonctionne, les vidéos sont par contre saccadées. Le projet avance pas mal, à son rythme…

Mise à jour du 9/1/2012: La partie appareil photo fonctionne maintenant (mais est encore plutôt instable). Ça se passe dans la version 0.2.1, qui a vu un changement de framework. Par conséquent il est nécessaire de faire un full wipe pour passer de la 0.1.x à la 0.2.x.

Bien que très peu de téléphones aient été mis à jour officiellement en ICS, la publication du code source a déchaîné les développeurs de ROMs. À tel point qu’une ROM existe pour mon HTC Desire. Il est d’ailleurs intéressant de remarquer que le Nexus One n’aura pas ICS de façon « officielle » (c’est à dire mis à jour directement par Google ou l’opérateur), et que le Nexus One et le Desire sont extrêmement proches. Je suppose que ICS sera porté sur le Nexus One de manière similaire au Desire (qui a un peu plus de mémoire interne).

Les informations sont sur le site http://www.sandvold.as/ , ainsi qu’un thread sur xda. La ROM est encore beta (la 0.1.4 au moment où j’écris ces lignes) et donc pas encore super stable. Je l’utilise depuis quelques jours, et je dois dire qu’elle marche franchement pas mal. Il y a des défauts, l’appareil photo ne marche pas encore, et le Wifi est parfois un peu capricieux, mais pour consulter ses mail, facebook, twitter ou G+, ben ça tourne pas mal.

Les pré-requis sont d’avoir un partitionnement standard. J’ai donc du le restaurer, moi qui avait mis le partitionnement adapté à la ROM CyanogenMod. (voir sur http://alpharev.nl/ pour les tables des partitions et sur http://www.roms-au.com/faq/hboot/ pour l’explication des redimmensionnements), ainsi que d’avoir déjà installé une recovery facilement accessible. Il faudra de plus avoir une sdcard rapide (Classe 6 minimum) partitionnée avec une partition en ext (peut être en ext3 aussi…). En effet, il n’y a pas assez de place sur la mémoire interne du Desire pour mettre ICS ! C’est d’ailleurs la raison qui fait que le Nexus One n’est pas sensé avoir droit à sa mise à jour officielle.

Pour le reste, un full-wipe, installation de la ROM, installation d’un script pour utiliser la partition de la sdcard, et ça roule ! Attention, le premier boot est assez long.

C’est une beta, y’a des bugs, donc ce n’est pas fait pour une utilisation quotidienne…

Pour le reste, quelques screenshots de mon téléphone…

   

Récupérer la table des partitions après une fausse manip sous Linux…

Cet article fait suite à la mésaventure arrivée à un client. Lors d’une manipulation dangereuse (sfdisk…), il a totalement écrasé la table des partitions de son disque système. Fort heureusement il a laissé son système en marche, il ne l’a surtout pas redémarré.

 

Attention, cet article s’adresse à des utilisateurs confirmés. Si vous n’avez pas l’habitude de fdisk, ou que vous avez déjà redémarré votre machine, cet article n’est pas pour vous. Si vous perdez vos données, vous en êtes responsable. Ce n’est pas parce que ça a marché dans mon cas, que ça marchera dans le votre. Les commandes données ne sont pas complètes, il ne s’agit pas d’un tutoriel. L’explication sera parlante aux personnes capables de réaliser les commandes. Bref, tout ceci pour vous dire que je ne suis pas responsable en cas de soucis sur vos données.

 

Pourquoi c’est une bonne idée de ne pas l’avoir redémarré après l’erreur ?

Lors de son démarrage, le noyau a mémorisé la table des partitions de son disque de démarrage. C’est d’ailleurs pour ça qu’on doit redémarrer la machine, ou lancer l’outil partprobe après avoir modifié la table des partitions du disque de démarrage. Sinon, la table des partitions du disque est différente de la table des partitions mémorisée par le noyau…

Heureusement qu’il n’a pas lancé partprobe /dev/sda !

En fait, il a lancé la commande. Et c’est ce qui lui a mis la puce à l’oreille. Partprobe lui a répondu par pleins d’erreurs, qui pourraient être traduites par je ne peux pas changer la table des partitions dans le noyau, car les partitions utilisées ont été modifiées. En effet, sa partition / est forcément montée, et dans la nouvelle table des partitions, elle n’existe plus. Le noyau continue donc d’utiliser l’ancienne table, puisqu’il s’appuie sur cette ancienne table pour fonctionner.

La méthode.

L’idée repose sur le fait que justement, le noyau a gardé en mémoire l’ancienne table des partitions. On va donc regarder ce qu’il a en mémoire, et remettre la même chose sur le disque. La machine ne doit en aucun cas être arrêtée ou redémarrée tant que l’opération n’est pas complète. On pourra voir ce qu’il a en mémoire à l’aide des informations accessibles dans /sys.

[root@localhost ~]# cat /sys/block/hda/hda1/start
63
[root@localhost ~]# cat /sys/block/hda/hda1/size
208782

L’opération est à refaire pour chaque partition.

[root@localhost ~]# cat /sys/block/hda/hda2/start
208845
[root@localhost ~]# cat /sys/block/hda/hda2/size
16563015

Dans mon exemple, j’ai deux partitions:

  • hda1 commençant au secteur 63 de taille 208782 secteurs.
  • hda2 commençant au secteur 208845 de taille 16563015 secteurs.
C’est donc le moment de lancer fdisk, et de détruire toutes les mauvaises partitions qu’on a créé. Je ne détaillerai pas ces opérations. Une fois que notre table des partitions est vide, on peut mettre les valeurs qu’on a trouver:
Commande (m pour l'aide): p

Disque /dev/hda: 8589 Mo, 8589934592 octets
255 heads, 63 sectors/track, 1044 cylinders
Unités = cylindres de 16065 * 512 = 8225280 octets

Périphérique Amorce    Début         Fin      Blocs    Id  Système

Commande (m pour l'aide):

Les partitions sont affichées en cylindres, ce qui ne nous arrange pas. Passons les en secteurs avec la commande u

Commande (m pour l'aide): u
Modification des unités d'affichage/saisie à secteurs

Commande (m pour l'aide): p

Disque /dev/hda: 8589 Mo, 8589934592 octets
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 secteurs
Unités = secteurs de 1 * 512 = 512 octets

Périphérique Amorce    Début         Fin      Blocs    Id  Système

Commande (m pour l'aide):
Faisons notre partition 1, début 63 et taille de 208782. Attention, quand on précise la taille, on enlève 1 à la valeur trouvée dans /sys. Je dois avouer que je ne sais pas pourquoi, mais sinon, on ne tombe pas sur un nombre de cylindres entier… Si quelqu’un a une explication plus propre, je suis preneur ;). Donc on fera +208781.
Commande (m pour l'aide): n
Action de commande
   e   étendue
   p   partition primaire (1-4)
p
Numéro de partition (1-4): 1
Premier secteur (63-16777215, par défaut 63):
Utilisation de la valeur par défaut 63
Dernier secteur ou +taille or +tailleM ou +tailleK (63-16777215,
par défaut 16777215): +208781

Commande (m pour l'aide): p

Disque /dev/hda: 8589 Mo, 8589934592 octets
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 secteurs
Unités = secteurs de 1 * 512 = 512 octets

Périphérique Amorce    Début         Fin      Blocs    Id  Système
/dev/hda1              63      208844      104391   83  Linux

Commande (m pour l'aide):
Ça a l’air d’être ce qu’on veut. Seconde partition maintenant, début 208845 de taille 16563015, donc +16563014 pour fdisk:
Commande (m pour l'aide): n
Action de commande
   e   étendue
   p   partition primaire (1-4)
p
Numéro de partition (1-4): 2
Premier secteur (208845-16777215, par défaut 208845): 208845
Dernier secteur ou +taille or +tailleM ou +tailleK (208845-16777215,
par défaut 16777215): +16563014        

Commande (m pour l'aide): p

Disque /dev/hda: 8589 Mo, 8589934592 octets
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 secteurs
Unités = secteurs de 1 * 512 = 512 octets

Périphérique Amorce    Début         Fin      Blocs    Id  Système
/dev/hda1              63      208844      104391   83  Linux
/dev/hda2          208845    16771859     8281507+  83  Linux

Et là, oh miracle, on a retrouvé notre table originale. Un reboot permet de vérifier ça (mais attention, si vous redémarrez et que vous n’avez pas passé les bonnes tailles, il faudra alors utiliser un outil de récupération de partitions, avec les risques d’erreurs que ça engendre…).

eG8 ou le bal des convenus

J’en fais parfois, mais les billets d’humeurs sont quand même assez rares sur mon blog (déjà que je poste très aléatoirement !), mais en ce moment, ça me titille sérieusement.

En effet, le eG8 vient de se finir, et je ne peux que donner raison à Éric Besson, c’était plus un Economic-G8 qu’un Electronic-G8… Je n’ai pas spécialement suivi les débats, étant occupé à d’autres activités plus professionnelles et accessoirement rémunératrices, cependant à lire les commentaires, à entendre les remarques, une constante ressort. On le sait bien, le eG8 est un prétexte publicitaire pour la majorité afin de montrer qu’elle s’occupe réellement d’Internet, après l’avoir largement dénigré et mis au placard. Je ne suis pas dupe du fonctionnement de ce « sommet », on devient sponsor (de 100 000 à 500 000 €, chiffre lu sur Numérama si je me souviens bien), et on monte sur scène pour parler du sujet à la mode. Exit donc la CNIL, la société civile et les jeunes entrepreneurs. Le principe est criticable, je le trouve même scandaleux, mais ce n’est pas le point le plus remarquable. Non, pour moi, ce qui ressort de ce eG8 c’est la méthode politicienne d’avancer sur le sujet d’Internet, sujet qui les dépasse complètement. Cette méthode est toujours la même, je ne vise aucun coté en particulier.

Cette méthode se résume en quelques points. J’invite les gros, les très gros, le plus possible, des acteurs supposés du net, et on discute avec eux. Pour le eG8, c’était comment civiliser le Net, alors forcément, on appelle les cultureux (Pascal Nègre et consorts) pour savoir quelle solutions prendre. C’est un peu comme demander à un fabriquant d’extincteurs quelles solutions on peut mettre en place pour diminuer les incendies. La réponse est évidente… Pour les extincteurs, comme pour les industriels du divertissement. On tourne évidemment en rond, et aucune solution ne peut en sortir (je ne parle pas de mots, mais de vraies solutions aux vrais problèmes).

Ils serait bon d’arrêter les idioties. Quand on veut connaître comment améliorer la création d’entreprises sur le net, on n’invite pas les gros du secteurs ! Le seul intérêt de ces gros, c’est que les nouveaux ne viennent pas sur leurs platebandes. On ne demande pas à une entreprise ayant un intérêt dans la chose la marche à suivre.

Internet n’est pas un média, ce n’est pas un produit et ce n’est pas un endroit. Par conséquent, on ne travaille pas sur le sujet de la même manière que pour la presse, pour une salle de spectacle ou un média à réguler. Si je pouvais donner un conseil à nos dirigeants pour essayer de comprendre Internet, c’est tout d’abord de ne pas faire de parallèle. Autoroutes de l’information, exit. Internet c’est quelque chose qui n’a pas de formes, pas d’équivalent. Et la forme, ou plutôt les formes que prend Internet est directement en relation avec les usages qui en sont fait. Ces usages sont importants, car c’est par les usages qu’il évolue, et c’est également par ces usages que les nouvelles générations pensent et construisent leur monde. En cela, les mots de Jérémie Zimmerman lors de son intervention au eG8 est parfaite. Pour la nouvelle génération, l’action de lecture/visionnage/consultation n’est pas dissociée de l’action de copie. Et que de demander quoi faire, comment faire au dirigeant d’une maison de disques est pour le moins cocasse à un forum dédié à Internet. Je ne parlerai pas de l’anachronisme d’offrir un CD audio aux invités…

Pour connaître quelles sont les attentes des vrais entrepreneurs du net (non, Orange n’en est pas un, sa présence dans l’Internet s’est faite à reculons), il faut dialoguer avec les entrepreneurs qui ont des problèmes, qui cherchent à créer quelquechose, pas les mastodontes établis ! Les problèmes et souhaits d’Orange, d’eBay, de Facebook ou d’Alcatel sont complètement dissociés  des problèmes rencontrés par les vrais créateurs, les TPE/PME qui cherchent à innover, par idéologie, par motivation et aussi par survie.

Accéder à un LVM depuis un disque de secours

Un problème courant, avec LVM, c’est de démarrer une machine installée avec LVM depuis un support externe, et de pester car le support externe ne « voit » pas le LVM. On a parfois ce soucis en utilisant le mode rescue de certains hébergeurs de serveurs dédiés. Alors comment faire ?

Le soucis est que le système possède sans doute les outils LVM, mais ne lance pas de recherche d’installation LVM existante. Il suffit donc de lancer cette recherche à la main. La première chose à faire est de lancer (en root) la commande lvscan. Celle-ci va rechercher des signatures de type LVM parmi tous les supports de stockages de la machine. Elle devrait donc détecter nos disques LVM. Par contre, une fois les volumes logiques détectés, ils ne sont pas pour autant utilisables !

lvscan

En effet, la seconde étape va être d’activer ces groupes de volumes, car par défaut, ils sont en mode « non disponibles ». C’est ce qu’on fait avec la commande vgchange. En lui passant l’option -a y, on met les groupes de volumes en mode « disponible » (l’option -a veut dire available et le y est pour yes). La sortie de la commande doit nous afficher qu’elle a bien activé les groupes de volumes.

vgchange -a y

On peut alors les utiliser, et les monter dans notre arborescence pour continuer notre dépannage, leur contenu est utilisable.

Virtual Box très lent sous OS X 64 bits (ou comment passer OS X en 32 bits)

Lors de son démarrage, les MBP équipés du processeur i7 (et sans doutes d’autres) démarrent avec un noyau 64 bits.

Malheureusement, avec un noyau en 64 bits, VirtualBox devient extrêmement lent (affichage du menu GRUB en plus d’une minute…). Moi qui utilise beaucoup les machines virtuelles pour mon activité, me voilà bien embêté. Un ticket est ouvert chez VirtualBox pour le moment, mais pas de correctif publié.

Une solution temporaire est de reconfigurer le Mac pour qu’il démarre en 32 bits (à priori, peu de contres indications au mode 32 bits, les programmes 64 bits continuent de fonctionner). Pour ça, on a le choix:

  • Au boot du Mac, il faut appuyer simultanément sur 3 et 2. Pratique pour le faire une fois de temps en temps, mais pas très pratique pour les têtes en l’air qui oublieraient !
  • Rendre le changement permanent à l’aide de la commande « sudo systemsetup -setkernelbootarchitecture i386 ». La commande « sudo systemsetup -setkernelbootarchitecture x86_64 » permettant de revenir au boot par défaut en 64 bits. Attention, ça ne marche pas si on change de disque de démarrage bien sûr.

Voilà, maintenant mon VirtualBox fonctionne, je peux travailler normalement !