Création d'un nouveau kernel

Asked by JulioJu on 2016-05-31

Bonjour,

J'aimerais créer un kernel Debian Wheezy d'une taille un peu plus grande que celle actuelle. En effet, 1.8 Go, c'est vraiment peu, on n'a même pas la place d'installer mysql. J'ai bien lu https://answers.launchpad.net/marionnet/+question/252529, cependant quand je teste le script http://bazaar.launchpad.net/~marionnet-drivers/marionnet/trunk/view/head:/uml/pupisto.debian/pupisto.debian.sh, j'ai l'erreur suivante :

+ [#395 launch_debootstrap_and_then_apt_get_install|once] echo 'Error: something goes wrong installing the basic set of packages with `debootstrap'\'''

J'ai testé ça sur ArchLinux, Debian Jessie, et dans un containeur Debian Wheezy.

Est-ce que j'aurais par hasard loupé une étape ? J'ai bien installé Debootstrap, et UML. Je ne comprends pas.
personnalisé, et notamment avec une
Merci par avance pour la réponse !

JulioJu

Question information

Language:
French Edit question
Status:
Solved
For:
marionnet Edit question
Assignee:
No assignee Edit question
Solved by:
JulioJu
Solved:
2016-06-04
Last query:
2016-06-04
Last reply:
2016-06-03
JulioJu (juanes0890) said : #1

Bonjour,

En effet, il y avait des bugs dans le script au niveau des adresses URL.

Dans le script pupisto.debian.sh:, à la ligne 776 il faut plutôt mettre « wget --no-check-certificate 'http://sourceforge.net/projects/ipv6-care/files/latest/' »

De plus, il faut changer l'adresse de Debian. Perso j'ai fait « find -type f -print0 | xargs -0 sed -i 's#http://ftp.debian.org/debian/#http://ftp2.fr.debian.org/debian/#g' ».

Par contre, maintenant ça coince au niveau de l'exécution du script pupisto.kernel.sh. Personnellement, je rentre dans la condition « return 2 » de la ligne 336. Je ne comprends pas pourquoi.

J'ai testé le code dans une machine virtuelle Debian Wheezy, et le noyau téléchargé lors de l'exécution du script semble bien être 3.2.58. Je ne comprends pas pourquoi, et j'ai beau lire et relire le script je ne vois pas comment régler le problème.

Merci par avance pour la réponse !

JulioJu

JulioJu (juanes0890) said : #2

Pardon, à la ligne 776 de pupisto.debian.sh c'est « wget --no-check-certificate 'https://sourceforge.net/projects/ipv6-care/files/latest/' » (avec le s dans http)

Merci par avance !

Jean-Vincent Loddo (loddo) said : #3

Bonjour,

Oui, les url doivent être mises à jour périodiquement et ça fait un
moment que je ne me sers pas du script...

En ce qui concerne l'erreur à la ligne 336, c'est dû au manque du
fichier de configuration correspondant à la version 3.2.58 que vous
essayez de compiler. Je viens de faire un commit pour rajouter deux
exemplaires (3.2.51 et 3.2.64), mais chacun peut modifier ces fichiers
ou en rajouter d'autres pour compiler des noyaux différents et chacun
selon ses besoins. On peut spécifier le noyau à compiler soit dans le
Makefile de pupisto.debian, soit manuellement dans les options de
pupisto.debian.sh ou directement pupisto.kernel.sh (utilisez -h dans les
deux cas pour avoir un peu d'aide).

Ce qu'il faut retenir, c'est qu'on est bel et bien obligés de fournir le
fichier configuration d'un noyau *manuellement*, parce qu'il n'y a
aucune chance que le noyau fonctionne avec uml (donc avec marionnet) si
on utilise le fichier de conf standard fourni avec le noyau.
Pratiquement cela revient à faire une copie d'un fichier de conf d'une
version pas trop lointaine (cp uml/kernel/CONFIG-3.2.51
uml/kernel/CONFIG-3.2.58), puis essayer de compiler et de corriger
jusqu'à avoir une bonne version de travail. Le répertoire de travail
temporaire pour la construction du noyau se trouvera dans
uml/pupisto.kernel/.

Même si j'ai rendu ces scripts publiques, très peu de gens s'intéressent
à ce type de fonctionnalité. Du coup, c'est loin d'être parfait et vous
essuyez les plâtres. Bon courage,
J.V. Loddo

Le 01/06/2016 16:22, JulioJu a écrit :
> Question #294666 on marionnet changed:
> https://answers.launchpad.net/marionnet/+question/294666
>
> JulioJu gave more information on the question:
> Pardon, à la ligne 776 de pupisto.debian.sh c'est « wget --no-check-
> certificate 'https://sourceforge.net/projects/ipv6-care/files/latest/' »
> (avec le s dans http)
>
>
> Merci par avance !
>

JulioJu (juanes0890) said : #4

Bonsoir,

Je vous remercie pour votre réponse. J'ai fait des tests, sans résultats. Ce qui est étrange et me paraît anormal, c'est que meme quand j'essaye de compiler un noyau qui dispose d'un fichier de configuration que vous avez paramétré (par exemple le 3.0.8), je tombe toujours sur la meme erreur :

Error: /kernel/older-versions/CONFIG-2.6.18 not found
Moving `_build.debian-wheezy-with-linux-3.0.8.2016-06-01.18h26/linux-3.0.8' -> `../pupisto.kernel/_build.linux-3.0.8.2016-06-01.18h50.21943'
mv: cannot stat `_build.debian-wheezy-with-linux-3.0.8.2016-06-01.18h26/linux-3.0.8': No such file or directory
ln: failed to create symbolic link `_build.debian-wheezy-with-linux-3.0.8.2016-06-01.18h26/linux-3.0.8': No such file or directory

Code d'erreur 3.

A y regarder de plus près, j'ai peut-être du du louper autre chose, ce ne serait pas forcément un problème de fichier de configuration ?

Je n'ai peut-etre pas vraiment le niveau suffisant pour faire ce que je souhaiterais faire.

J'aurais juste beaucoup aimé avoir un kernel Debian Wheezy qui dispose d'un espace disque supérieur à celui mis à disposition sur Marionnet.org, peut importe la version du noyau, afin de pouvoir installer quelques logiciels.

Encore une fois, merci à vous !

Julio

JulioJu (juanes0890) said : #5

Bonjour,

Je réfléchis encore à ce problème de compilation de noyau. Juste pour précision, pour savoir si j'ai bien compris : ce n'est pas normal que ça ne marche pas avec le noyau 3.0.8 ?

Merci par avance !

Julio

Jean-Vincent Loddo (loddo) said : #6

Bonjour,

 > J'aurais juste beaucoup aimé avoir un kernel Debian Wheezy qui dispose
 > d'un espace disque supérieur...

Si je comprends bien, vous n'avez aucun besoin d'un nouveau noyau, mais
d'une image plus grande, capable d’accueillir de nouveaux logiciels.

Je vous envoie les instructions (en anglais) pour ce faire, sachant
qu'une fois que vous aurez modifié l'image, il vaudra mieux installer
les logiciels par les sources (make, make install), plutôt que par
apt-get (ou aptitude). En effet, ce dernier touche à un ensemble très
importants de fichiers, ce qui cause de gros problèmes au couple de
technologies UML-COW que Marionnet utilise.
Bon courage,
Jean-Vincent Loddo
---

A simpler solution may be to use `dd' to enlarge the virtual disk, then
`gparted' to fix the size of the inner partition. For instance:

$ cp /usr/local/share/marionnet/filesystems/machine-guignol-21852 /tmp/

$ du -sh /tmp/machine-guignol-21852
55M /tmp/machine-guignol-21852

$ e2fsck /tmp/machine-guignol-21852
e2fsck 1.42.12 (29-Aug-2014)
/tmp/machine-guignol-21852 : clean, 2021/2464 files, 47453/55624 blocks

$ dd if=/dev/zero bs=1M count=10 >> /tmp/machine-guignol-21852

# (resize2fs may also do the work)
$ sudo gparted /tmp/machine-guignol-21852
# Menu Partition -> Verify
# Apply changes

$ du -sh /tmp/machine-guignol-21852
65M /tmp/machine-guignol-21852

$ e2fsck /tmp/machine-guignol-21852
e2fsck 1.42.12 (29-Aug-2014)
/tmp/machine-guignol-21852 : clean, 2021/3168 fles, 47549/65864 blocks

# Mount the image (in loopback) and install your programs, then continue:

# Change the .conf related file:
$ cp /usr/local/share/marionnet/filesystems/machine-guignol-21852.conf /tmp/

$ stat -c "%Y" /tmp/machine-guignol-21852
1461753434

$ sum /tmp/machine-guignol-21852
46723 65864

# Fix the name of the image and the related file .conf :
$ rename 's/21852/46723/' /tmp/machine-guignol-21852*

# Fix the modification time (MTIME) of the image (relevant for sharing
projects):
$ sed -i -e 's/MTIME=.*/MTIME=1461753434/' /tmp/machine-guignol-46723.conf

# Install both files:
sudo mv /tmp/machine-guignol-46723* /usr/local/share/marionnet/filesystems/
sudo mkdir
/usr/local/share/marionnet/filesystems/machine-guignol-46723_variants

Le 01/06/2016 21:12, JulioJu a écrit :
> Question #294666 on marionnet changed:
> https://answers.launchpad.net/marionnet/+question/294666
>
> JulioJu posted a new comment:
> Bonsoir,
>
> Je vous remercie pour votre réponse. J'ai fait des tests, sans
> résultats. Ce qui est étrange et me paraît anormal, c'est que meme quand
> j'essaye de compiler un noyau qui dispose d'un fichier de configuration
> que vous avez paramétré (par exemple le 3.0.8), je tombe toujours sur la
> meme erreur :
>
>
> Error: /kernel/older-versions/CONFIG-2.6.18 not found
> Moving `_build.debian-wheezy-with-linux-3.0.8.2016-06-01.18h26/linux-3.0.8' -> `../pupisto.kernel/_build.linux-3.0.8.2016-06-01.18h50.21943'
> mv: cannot stat `_build.debian-wheezy-with-linux-3.0.8.2016-06-01.18h26/linux-3.0.8': No such file or directory
> ln: failed to create symbolic link `_build.debian-wheezy-with-linux-3.0.8.2016-06-01.18h26/linux-3.0.8': No such file or directory
>
> Code d'erreur 3.
>
> A y regarder de plus près, j'ai peut-être du du louper autre chose, ce
> ne serait pas forcément un problème de fichier de configuration ?
>
> Je n'ai peut-etre pas vraiment le niveau suffisant pour faire ce que je
> souhaiterais faire.
>
> J'aurais juste beaucoup aimé avoir un kernel Debian Wheezy qui dispose
> d'un espace disque supérieur à celui mis à disposition sur
> Marionnet.org, peut importe la version du noyau, afin de pouvoir
> installer quelques logiciels.
>
> Encore une fois, merci à vous !
>
> Julio
>

JulioJu (juanes0890) said : #7

Bonjour,

Je vous remercie beaucoup pour votre réponse. Le problème, c'est que Gparted ne parvient pas à reconnaître la table de partition. Mais vos indications m'ont beaucoup aidé, et j'ai également trouvé http://user-mode-linux.sourceforge.net/old/resize.html qui m'a permis de compléter votre solution. Il faut utiliser « resize2fs -p filename », et non gparted, et ça marche (vérifié avec la commande « df » dans Marionnet) ! .

J'ai pris en considération ce que vous m'avez dit à propos de l'installation de logiciels. Du coup, afin d'être très propre, j'ai carrément créé un nouveau filesystem avec les logiciels qui m'intéressaient. Dans le dossier pupisto.debian, j'ai dé-commenté les logiciels qui m'intéressaient dans les fichiers « package_catalog.selection, RELEVANT_FILE_HERE1, RELEVANT_FILE_HERE2 », puis j'ai commenté la fonction « once make_or_link_the_kernel $KERNEL_VERSION » dans pupisto.debian.sh, puis j'ai exécuté pupisto.debian.sh. Ça m'a permis de créer le filesystem.

Peut-être qu'il serait intéressant de mettre que ça peut poser des problèmes d'utiliser apt-get et aptitude dans la FAC du site internet ? Pour ma part je compte faire un petit laius dans le Wiki anglais d'Archlinux concernant l'installation et la customisation de Marionnet (après mes partiels).

Bien cordialement,

Julio

JulioJu (juanes0890) said : #8

P.S. Pardon, la bonne manière de customiser son filesystem se trouve au lien suivant : https://lists.launchpad.net/marionnet-dev/msg00653.html.

JulioJu (juanes0890) said : #9

PS2 J'ai réalisé un nouveau test. Gparted ne fonctionne pas, mais par contre il faut utiliser successivement :
resize2fs -f filename
resize2fs -p filename

Jean-Vincent Loddo (loddo) said : #10

J'ai réussi sans problèmes avec gparted. Ceci dit, resizefs permet
d'obtenir le même résultat (et de façon sans doute plus rapide en ligne
de commande). Merci en tout cas du test et du retour.
Jean-Vincent

Le 05/06/2016 11:27, JulioJu a écrit :
> Question #294666 on marionnet changed:
> https://answers.launchpad.net/marionnet/+question/294666
>
> JulioJu posted a new comment:
> PS2 J'ai réalisé un nouveau test. Gparted ne fonctionne pas, mais par contre il faut utiliser successivement :
> resize2fs -f filename
> resize2fs -p filename
>

JulioJu (juanes0890) said : #11

Merci pour ta réonse,

J'ai essayé avec Gparted sur Debian Wheezy, et en effet ça marche :-). Bizarre que ça ne marche pas sous le Gparted d'Archlinux, j'avais pourtant installé toutes les dépendances. Probablement une dépendance non proposée sous Archlinux.

J'ai retesté la compilation du kernel, et j'ai enfin réussie ! Si on exécute le script à partir de /trunk/uml/pupisto.debian, il faut rajouter cd ../../ avant la ligne 992, et le script se termine alors par un « success ».

J'ai essayé de compiler une version amd64, j'ai adapté le script pupito.debian.sh, les scripts présents dans pupisto.kernel/, et /kernel/CONFIG-3.2.64. Le processus de compilation s'est déroulé parfaitement, et s'est terminé par « success ».

Cependant, dans le dossier /uml/pupisto.debian/_build.debian-wheezy-with-linux-3.2.64.2016…/, j'ai un dossier linux-3.2.64 mais pas de fichier qui ressemble à un noyau. J'ai dû louper autre chose.

Je pensais qu'à l'avenir ce serait bien de proposer une version 64 bits, car la version 32 peut poser des problèmes de compatibilité. Ainsi, ActivePerl n'est désormais disponible que pour les processeurs 64 bits.

Julio