Aller au contenu
Règlement du forum ×
IPTV et arnaques ×

TUTO: Créer un système GNU/Linux MINIMAL à partir de ZERO.


DELTA47

Messages recommandés

Bonjour les forumdziens,

 

" La curiosité n'est pas un vilain défaut". Avec cette expression finit le présentateur d'une émission scientifique sur La5 chaque épisode.

Alors si vous êtes trop curieux comme moi, c'est votre jour de chance.

 

/****************************************************************************************************************************************

Linux est une très belle histoire qui commence en 1991 dans la chambre universitaire d'un étudiant Finlandais "Linus Torvalds"et finit dans votre Set Top Boxe (démo satellite), votre modem-routeur ou même dans votre lave linge !!!

*****************************************************************************************************************************************/

OBJECTIF:

 

Nous allons voir comment créer "from scratch" (à partir de ZERO , en fait à partir du code source) un système Linux minimal (vraiment basique de chez basique, mais qui peut servire de base pour une distrib bien aboutie (voir la section: TO DO)) et le "booter" à partir d'une clef USB (flash disk).

 

Les composantes d'un system GNU/linux:

 

En réalité Linux n'est que le noyau, le system total on l'appel GNU/linux (GNU c'est le projet des logiciels libres).

 

1- Le chargeur (bootloader): une sorte de démarreur .

2- Le noyau Linux (kernel): le moteur ou le coeur du systeme.

3- Le systeme des fichiers (root file system): les applications et fichiers de configuration. Si on continue dans la logique d'analogie avec un véhicule

ça représente : le volant, l'accélerateur, les freins..... tout qui affecte l'état du vehicule en mouvement koi.

 

Le "boot process": comment démarre votre PC sous Linux?

 

Après la mise sous tension d'un ordinateur de type PC, le processeur commence à exécuter le BIOS (Basic In/out System), un programme sauvegardé dans la ROM qui a pour rôle d'initialiser les différents circuit électroniques (controlleur d'interruptions PIC, circuit d'accèss direct à la mémoire DMA, ports d'ntrées/sorties PIA...etc) puis il charge le premier secteur du disque dur (MBR) ds la RAM à l'adresse 0000:7C00 et verifie si le disque est bootable (signature AA55 à la fin du 512 octets), si oui le bios passe la main au MBR.

Le MBR contient un code pour aller chercher un programme (le bootloader dans notre cas) dans la tables des fichiers FAT et le charge en mémoire puis il lui passe la main. Le bootloader de son coté va chercher le noyau et le charger en RAM et puis il lui passe la main. Enfin le noyau s'auto décompresse, initialise la carte mère ... et enfin aller exécuter un fichier INIT qui se trouve sur le systeme de fichier (espace utilisateur: user space).

INIT comme son nom l'indique initialise le system et passe la main à un autre programme comme le Shell (où en saisie les commandes).

 

/*****************************************************************************************************************

On aura peut être l'occasion de voir un peu plus en détail l'architecture du noyau et son processus de boot.

******************************************************************************************************************/

 

I) Préparer l'environnement de développement:

 

N.B: J'utilise une distribution basé sur UBUNTU, c'est presque la même démarche si vous avez autre chose.

 

On commence par ouvrir un terminal, soit un emulateur graphique soit un VRAI (si vous êtes un linuxien pur et dur !)

 

1- Installer les outils suivants:

build-essential, wget, make, kernel-package, libncurses5-dev.

 

sudo apt-get install build-essential libncurses5-dev wget kernel-package

 

entrer votre mot de pass puis valider

 

2- Créer un répertoire de travail, par exemple: MINI ds votre HOME (~):

 

    ~$ mkdir MINI
   ~$ cd MINI

3- télécharger les sources suivants:

- noyau linux Vanilla (qui ne contient aucun patch) à partir du site officiel http://www.kernel.org. Pour ma part j'ai utilisé un noyau 2.6.24.3.

 

 [MINI]$ wget .........(mettre ici l'url de l'archive à télécharger)

 

- les sources de Busybox à partir du site http://www.busybox.net:

 

 [MINI]$ wget .........(mettre ici l'url de l'archive à télécharger)

 

4- Décompresser les sources:

 

     [MINI]$ tar xvjf linux-X.Y.Z.tar.bz2
    [MINI]$ tar xvjf busybox-X.Y.Z.tar.bz2

5- Renommer le dossier linux-X.Y.Z en Linux

et le dossier busybox-X.X.Z en busybox.

 

    [MINI]$ mv linux-X.Y.Z linux
   [MINI]$ mv busybox-X.X.Z busybox

Bien sûr vous pouvez faire les étapes 3, 4 et 5 en mode graphique.

 

II)Le noyau:

 

1- Configuration:

 

    [MINI]$ cd linux      

   [linux]$ make menuconfig   

un menu semi graphique s'ouvre comme sur la photo (s'il ya un probleme agrandissez la fenetre du terminal):

 

La navigation dans cette interface est simple :

 

Flèches haut/bas pour monter/descendre

Entrée pour entrer dans les sous-menus

Échappement deux fois pour sortir d'un sous-menu

h pour demander l'aide d'une option

Oblique "/" pour rechercher une option

Espace pour sélectionner une option

 

On touche à rien, on va juste activer les deux options "ELF support" et "Initial RAM file system support" :

 

General setup —>

Initial RAM filesystem and RAM disk (initramfs/initrd) support (on verra ça tout à l'heure).

 

Executable file formats / Emulations —>

Kernel support for ELF binaries

 

2- Compilation:

 

  [linux]$ make

 

Aller faire des courses, boir un café ... car la compilation prend du temps (ça dépend de la configuration de votre ordi).

voilà ! Enfin, notre noyau est dans ~/MINI/linux/arch/x86/boot/ elle se nomme bzImage. Laisson le se reposer pour le moment !!

 

II) Le système des fichiers:

 

On va créer un initrd (INITial Ram Disk) qui est un systeme de fichiers compressé, il sera monté dans la RAM (voir la section références en bas).

 

 

1- Créer un repertoire rootfs:

 

    [MINI]$ cd ..
    [MINI]$ mkdir rootfs

2-Compiler busybox:

BusyBox, est le couteau suisse du GNU/Linux, c'est un unique programme qui combine un grand nombre d'utilitaires systèmes en les réunissant en un seul exécutable. BusyBox intègre les commandes Unix de base (ls, cd, cp....) entre autres, ainsi qu'un shell (ash), un serveur HTTP, un serveur FTP et bien d'autres. Chaque commande est un lien symbolique vers l'exécutable busybox. (voir la section références en bas).

 

- Mettez-vous ds le répertoir des sources busybox:

 

  [MINI]$ cd busybox

 

- Créer le fichier de configuration (.config):

 

  [busybox]$ make defconfig

 

- On va modifier (choisir) la configuration:

 

[busybox]$ make menuconfig

 

un menu semi graphique emblable à celui du noyau s'ouvre:

 

- On va choisir le mode "STATIC" ( un exécutable qui n'a pas besoin d'acune librairie ):

 

Busybox Settings —>

Build Options —>

Build BusyBox as a static binary (no shared libs)=y

- Puis la compilation:

 

 [busybox]$ make

 

- Enfin l'installation de busybox dans notre rootfs:

 

[busybox]$ sudo make CONFIG_PREFIX=~/MINI/rootfs install  

 

Aller jetter un coup d'oeuil dans le répertoir rootfs pour voir les dossier crées et leurs contenus.

Dans le dossier bin par exemple on trouve pleins de liens symboliques qui portent les noms des commands usuels et qui pontent tous vers l'exécutable "busybox".

 

3- Peupler le rootfs:

 

Nous avons déjà dans notre rootfs quelques dossiers essentiels crées lors de l'installation de busybox il suffit d'ajouter quelques autres.

 

[busybox]$ cd ~/MINI/rootfs

 

- crééer les répértoirs style Unix:

 

 [rootfs]$ mkdir dev proc sys tmp

 

- supprimer le fichier "linuxrc" crée lors de l'installation de busybox:

 

[rootfs]$ rm linuxrc

 

- Créer les noeuds:

 

[rootfs]$ sudo mknod dev/console c 5 1

 

- Créer le fichier "init" nécessaire pour le boot:

 

    [rootfs]$ cat >> init     #!/bin/sh
   echo =======================
   echo
   echo 1 2 3 VIVA L'ALGERIE
   echo
   echo =======================
   mount -t proc none /proc
   mount -t sysfs none /sys
   /bin/sh
   EOF

 

- Rendre le fichier init exécutable:

 

 [rootfs]$ sudo chmod +x init

 

- Compresser le rootfs:

 

 [rootfs]$ sudo find . | cpio -H newc -o | gzip -9 > ~/MINI/rootfs.gz

 

l'initrd "rootfs.gz" compressé est dans ~/MINI .

 

III) Préparer la clé USB et Installer le bootloader:

 

Personellement j'ai réalisé cette étape sur "WINDOBE" !!!!!!

Je sens des grincements des dents de certains parmi vous, je m'excuse. On verra peut être comment faire ça sur linux plus tard.

 

1- Copier les fichiers "bzImage" et "rootfs.gz" dans un répertoire accessible par windobe.

2- Télécharger le bootloader syslinux ici: http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.83.zip .

3- Décompresser l'archive dans un dossier sur la racine C: on va dire SYSLINUX, dedans il va y avoir un répertoire WIN32.

4- Mettre la clef USB et repérer le lecteur, on va dire F.

5- Formater la clef en FAT32.

6- Y copier les fichiers "bzImage" et "rootfs.gz".

7- Lancer une commande MSDOS et tape ceci :

   C:
   CD \SYSLINUX\WIN32         (ca doit vous placer dans le répertoire WIN32)

   syslinux.exe -m -a F:      ( remplacer F: par la lettre que vous avez réperé en 4)

 

après cette commande le MBR sera changé et un fichier caché LDLINUX.SYS qui est notre bootloader est crée sur la clef.

votre clef est BOOTABLE !!

8- Créer le fichier de configuration pour le bootloader:

 

avec NOTEPAD (surtout PAS word) créer un fichier texte "syslinux.cfg". Voici son contenu:

 

    label FORUMDZ
   kernel bzImage
   append initrd=rootfs.gz

   default FORUMDZ

   implicit 0    
   prompt 1    
   timeout 10

 

/*------------------------------------------------------------------------------------------------

 

NOTE: SYSLINUX searches for the SYSLINUX.CFG file in the following order:

 

/boot/syslinux/syslinux.cfg

/syslinux/syslinux.cfg

/syslinux.cfg

-----------------------------------------------------------------------------------------------*/

 

Voilà c'est tout OUUUUUUUUUFFFFFF !!!!!

 

 

 

 

 

IV) ENJOY !

 

- Redémarrer votre PC (la clef USB dedans).

- Entrer dans le setup et changer l'ordre du boot: mettre USB en premier bien sûr.

- F10 puis valider.

 

Après un reboot un message de syslinux s'écrit sur l'écran:

boot: ( ne toucher à rien)

loading bzImage ..........

loading rootfs...........

 

après les messages du kernel (qui s'afficent très vite) on vers la fin notre message:

 

==========================

 

1 2 3 VIVA L'ALGERIE

 

===========================

 

puis un curseur qui clignote.

 

entrer "ls" puis valider .....

 

 

 

 

 

TO DO:

 

- Booter sur un vrai systeme de fichier dans la clé USB soit indirectement en passant par l'initrd et en PIVOT_ROOTant, soit directement, dans ce cas il faut un "dealy" pour permetre au noyau de détecter la clef.

J'ai pas réussi les deux méthodes (pour le moment). Si quelqu'un peux m'aider ça sera très sympa.

- Ajouter un serveur XORG pour travailler dans un environnement graphique.

- Ajouter d'autres applications et fichiers de configuration.

- .............

 

Références:

 

http://wiki.linux-france.org/wiki/Les_commandes_fondamentales_de_Linux

http://doc.ubuntu-fr.org/tutoriel/compiler_linux

https://www.ibm.com/developerworks/library/l-initrd/

http://fr.wikipedia.org/wiki/BusyBox

http://www.syslinux.org/wiki/index.php/SYSLINUX

 

 

 

menuconfig.gif

Modifié par DELTA47
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • Messages

    • Vous êtes surement  utilisateur des réseaux sociaux WhatsApp, Instagram ou Facebook Messenger et vous avez sans doute remarqué qu'un rond bleu apparaissait à différents endroits de votre écran car vous utilisez ces applications pour smartphone, tablette installées depuis play store de Google où par défaut. Le problème c'est qu'il est pour l'instant impossible de supprimer l'IA de Meta représentée par le cercle Bleu.  Cette IA récemment ajoutée par Meta va en agacer plus d'un pour des questions de confidentialité et de sécurité . Si vous êtes très attaché à ces réseaux il est possible de les utiliser sans les applications officielles  ou les remplacer par les applications Facebook et Instagram lites que j'ai proposées sur le forum. https://www.forumdz.com/topic/48750-mes-applications-android-légères-pour-smart-tv-firestick-tv-watch-tv-ou-box-tv/#comment-353735 .
    • Internet a vraiment simplifié les choses pour tous. Faire ses courses et payer à distance, effectuer ses opérations bancaires et se former sont désormais à portée de main. Mais la facilité d'accès comporte des risques. De nombreux sites web suspects sont aujourd'hui en ligne, peu sûrs et en quête de vos données personnelles. On cherche même à usurper votre identité , d'autres veulent votre compte bancaire . Certains navigateurs modernes se pré-occupent sérieusement de la sécurité , d'autres peuvent être  affiliés à des régies publicitaires , des entités étatiques ou  aux GAFAM Puis-je faire confiance à ce site ? Ce que vous devez savoir Tous les sites ne sont pas fiables. Certaines personnes en ligne recherchent vos informations personnelles ; soyez donc prudent quant à ce que vous partagez et à l'endroit où vous le faites. Voici quelques conseils utiles pour vous aider à prendre une décision éclairée quant à savoir si un site est digne de confiance ou non. Âge du domaine L'âge du domaine peut vous donner une idée de la fiabilité d'un site. C’est parce que généralement les sites Web qui existent depuis longtemps doivent avoir fait quelque chose de bien pour être toujours en activité. Il convient toutefois de noter que certains propriétaires de sites peuvent acheter des domaines anciens dans le but d'essayer de tromper les gens en leur faisant croire qu'ils sont en activité depuis longtemps. L'âge du domaine à lui seul ne suffit donc pas à confirmer si un site est digne de confiance ou non. Expiration du domaine La date d'enregistrement d'un domaine indique la date à laquelle il a été enregistré et sa date d'expiration indique sa date d'expiration. La date d'expiration d'un domaine peut vous donner une idée de la sécurité du site. Les fraudeurs ont tendance à changer régulièrement de domaine, ce qui peut les empêcher de durer longtemps. Ils peuvent simplement créer des sites à court terme sur différents domaines et les utiliser à des fins frauduleuses. Vous pouvez ainsi vérifier quand le domaine a été enregistré et quand il doit expirer pour vous donner une idée si le propriétaire envisage de rester en activité pendant longtemps ou simplement de s'installer pendant une courte période pour passer à autre chose une fois ses activités illégitimes exposées. Détails WHOIS Consultez les informations WHOIS pour connaître les détails de l'enregistrement du domaine. Les informations WHOIS révèlent généralement les coordonnées, ou au moins le pays, du propriétaire du domaine, ce qui vous permet de vérifier son identité. Il est important de noter que certaines personnes utilisent la confidentialité du domaine ou du WHOIS pour masquer leurs coordonnées, vous empêchant ainsi d'accéder à leurs informations. Cela vaut néanmoins la peine d'essayer. Navigation sécurisée Assurez-vous que le site que vous consultez est sécurisé. Les sites sécurisés utilisent généralement le protocole HTTPS et disposent d'un certificat SSL/TLS valide. Ce certificat permet de chiffrer les données et de protéger vos informations personnelles. Pour vérifier que le site possède ce certificat, recherchez l'icône de cadenas dans la barre d'adresse. Assurez-vous également que l'URL commence par « https ». Conception et contenu professionnels En général, un site qui fait des affaires légitimes s'assurera d'avoir un design professionnel et ne plaisantera pas avec son bon contenu. Une fois que vous voyez un site avec de mauvaises images, une grammaire médiocre et de nombreuses fautes d'orthographe, vous savez que quelque chose ne va pas. Cela ne le rend pas dangereux, mais cela montre qu'il n'est pas bien géré. Soyez prudent lorsque vous visitez de tels sites. Avertissements concernant les logiciels malveillants et le phishing Utilisez des navigateurs sécurisés et des outils de sécurité en ligne qui fournissent des alertes contre les logiciels malveillants et le phishing. Soyez attentif à ces avertissements, car ils peuvent vous aider à identifier les menaces potentielles et vous indiquer si un site web est sûr ou non. Politique de confidentialité et conditions d'utilisation Les sites légitimes ont toujours une politique de confidentialité claire et concise, ainsi que des conditions d'utilisation claires. Ils vous informent également des types de cookies qu'ils utilisent et de l'utilisation qu'ils font des informations publiées sur leurs sites. Avis et notes des utilisateurs Découvrez ce que les autres disent de votre site. Consultez différentes plateformes en ligne pour consulter les avis de personnes ayant utilisé le service ou acheté le produit qui vous intéresse. Méfiez-vous des faux avis et soyez attentif aux signaux d'alarme, comme les avis qui se ressemblent, car les propriétaires de sites se font souvent passer pour des utilisateurs et publient eux-mêmes des avis sur leurs sites. Certains paient même des tiers pour leur donner de bons avis. Assurez-vous que les avis sont détaillés et sensés et n'oubliez pas de comparer les avis de différentes plateformes. Coordonnées Les sites légitimes n'ont rien à cacher et fournissent donc des coordonnées claires et légitimes. Celles-ci incluent généralement l'adresse, le numéro de téléphone et l'adresse e-mail. Service client Les sites professionnels sont toujours sérieux envers leurs clients et offrent donc un excellent service client. Les sites qui rendent difficile l'accès en cas de problème ne sont certainement pas dignes de confiance. Conclusion Bien que les conseils ci-dessus devraient vous aider à mieux décider si un site est fiable ou non, ils ne sont qu'une indication. Certains sites peuvent ne pas présenter certains des éléments mentionnés ci-dessus tout en étant sûrs et fiables. D'autres sites peuvent remplir certaines conditions tout en présentant un risque.
    • lyes...nimporte qui peut ouvrir un compte....mais il ne sert a rien sauf s'il est confirmé/verifié....et on fait cela avec une procedure....normalement tu sais ca...toute les "banques" fonctionnent comme ca....
    • je vois...je dois donc faire un test reel...et on verra... preuve en est que toute l'algerie...et le monde CONFIRME qu'il faut une carte debit/iban pour confirmer le compte....or j'ai confirmé ca avec juste un ID.... toute la terre s'est trompée ? on dirait bien vu que meme dans paypal cette info n'est pas explicite...
×
×
  • Créer...