{"id":1832,"date":"2013-10-09T05:24:39","date_gmt":"2013-10-09T03:24:39","guid":{"rendered":"https:\/\/www.azurs.net\/carnet\/?p=1832"},"modified":"2025-10-22T11:34:16","modified_gmt":"2025-10-22T09:34:16","slug":"demarrer-la-carte-raspberry-pi-sous-arch-linux-arm-sur-une-cle-usb","status":"publish","type":"post","link":"https:\/\/www.azurs.net\/carnet\/2013\/10\/demarrer-la-carte-raspberry-pi-sous-arch-linux-arm-sur-une-cle-usb\/","title":{"rendered":"D\u00e9marrer la carte Raspberry Pi sous Arch Linux ARM sur une cl\u00e9 USB"},"content":{"rendered":"<p>Pour pr\u00e9server la carte SD ins\u00e9r\u00e9e dans une carte Raspberry Pi de la corruption, pour am\u00e9liorer les performances ou parce que l&rsquo;on manque de place sur la carte SD, il est possible de d\u00e9placer le syst\u00e8me de fichiers vers une cl\u00e9 USB ou toute autre unit\u00e9 de stockage (disque dur, SSD, etc.). Il faut cependant qu&rsquo;une carte SD soit ins\u00e9r\u00e9e dans le Raspberry Pi pour que ce dernier d\u00e9marre.<\/p>\n<figure id=\"attachment_2022\" aria-describedby=\"caption-attachment-2022\" style=\"width: 537px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/10\/clef-serrure-537x750.jpg\" alt=\"Main tournant une clef dans la serrure d&#039;une porte de cellule de prison.\" width=\"537\" height=\"750\" class=\"size-large wp-image-2022\" srcset=\"https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/10\/clef-serrure-537x750.jpg 537w, https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/10\/clef-serrure-214x300.jpg 214w, https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/10\/clef-serrure-624x871.jpg 624w, https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/10\/clef-serrure.jpg 939w\" sizes=\"auto, (max-width: 537px) 100vw, 537px\" \/><figcaption id=\"caption-attachment-2022\" class=\"wp-caption-text\">M\u00e9thode rustique pour lib\u00e9rer le Raspberry Pi. Source : <a href=\"http:\/\/gallica.bnf.fr\/ark:\/12148\/btv1b9021733z\">gallica.bnf.fr<\/a>.<\/figcaption><\/figure>\n<p>Voici une des fa\u00e7ons de proc\u00e9der pour d\u00e9marrer le Raspberry Pi sur une cl\u00e9 USB sous Arch Linux ARM.<!--more--><\/p>\n<h2>Pr\u00e9-requis<\/h2>\n<p>Les \u00e9tapes d\u00e9crites ici ont \u00e9t\u00e9 test\u00e9es dans la configuration suivante :<\/p>\n<ul>\n<li>Raspberry Pi mod\u00e8le B<\/li>\n<li>Arch Linux ARM install\u00e9 sur une carte SD de 8&nbsp;Go, correctement configur\u00e9 et fonctionnel<\/li>\n<li>Cl\u00e9 USB de 16&nbsp;Go (les donn\u00e9es qui se trouvaient \u00e9ventuellement sur la cl\u00e9 USB vont \u00eatre irr\u00e9m\u00e9diablement perdues)<\/li>\n<li>Machine-relais autre que la carte Raspberry Pi sur laquelle s&rsquo;effectue l&rsquo;op\u00e9ration, tournant sous Linux (dans mon cas, PC de bureau sous Xubuntu, mais j&rsquo;aurais tout aussi bien pu choisir ma seconde carte Raspberry Pi, en y accrochant un lecteur de carte SD)<\/li>\n<\/ul>\n<h2>\u00ab Copier \u00bb l&rsquo;image de la carte SD sur la cl\u00e9 USB<\/h2>\n<h3>Cr\u00e9er une image de la carte SD sur la machine-relais avec dd<\/h3>\n<p>On connecte la cl\u00e9 USB \u00e0 la carte Raspberry Pi que l&rsquo;on d\u00e9marre.<br \/>\nDepuis la machine-relais, on se connecte en tant qu&rsquo;utilisateur <i>root<\/i> \u00e0 la carte Raspberry Pi en SSH<br \/>\n<code>$ <span style=\"color: navy\">ssh root@X.X.X.X<\/span><\/code><br \/>\nOn rep\u00e8re le nom des p\u00e9riph\u00e9riques que l&rsquo;on va modifier et on le note :<br \/>\n<code># <span style=\"color: navy\">lsblk -f<\/span><\/code><br \/>\nPour la suite :<\/p>\n<ul>\n<li>\/dev\/sdA fait r\u00e9f\u00e9rence au nom de la carte SD sur le Raspberry Pi<\/li>\n<li>\/dev\/sdB fait r\u00e9f\u00e9rence au nom de la cl\u00e9 USB sur le Raspberry Pi<\/li>\n<\/ul>\n<p>On arr\u00eate le syst\u00e8me sur la carte Raspberry Pi :<br \/>\n<code># <span style=\"color: navy\">shutdown -h now<\/span><\/code><br \/>\nOn retire la carte SD et la cl\u00e9 USB de la carte Raspberry Pi et on les connecte \u00e0 la machine-relais, sur laquelle on ouvre un terminal.<br \/>\nOn rep\u00e8re le nom des p\u00e9riph\u00e9riques correspondant \u00e0 la carte SD et \u00e0 la cl\u00e9 USB sur la machine-relais.<br \/>\n<code>$ <span style=\"color: navy\">lsblk -f<\/span><\/code><br \/>\nPour la suite :<\/p>\n<ul>\n<li>\/dev\/sdC fait r\u00e9f\u00e9rence au nom de la carte SD sur la machine-relais<\/li>\n<li>\/dev\/sdD fait r\u00e9f\u00e9rence au nom de la cl\u00e9 USB sur la machine-relais<\/li>\n<\/ul>\n<p>Depuis la machine-relais avec les droits d&rsquo;administrateur (en tant que <i>root<\/i> ou via <i>sudo<\/i>), on cr\u00e9e une image de la carte SD que l&rsquo;on place transitoirement sur la machine-relais :<br \/>\n<code># <span style=\"color: navy\">dd if=\/dev\/sdC of=image-carte-sd.img bs=1M<\/span><\/code><\/p>\n<h3>\u00c9crire l&rsquo;image de la carte SD sur la cl\u00e9 USB<\/h3>\n<p>On retire la carte SD de la machine-relais.<\/p>\n<p>Depuis la machine-relais, on \u00e9crit l&rsquo;image de la carte SD sur la cl\u00e9 USB.<br \/>\n<code># <span style=\"color: navy\">dd if=image-carte-sd.img of=\/dev\/sdD bs=1M<\/span><\/code><\/p>\n<h2>Modification de cmdline.txt dans \/boot\/ pour faire d\u00e9marrer la carte Raspberry Pi sur la cl\u00e9 USB plut\u00f4t que sur la carte SD<\/h2>\n<p>On d\u00e9connecte la cl\u00e9 USB de la machine-relais.<br \/>\nOn ins\u00e8re \u00e0 nouveau la carte SD dans la carte Raspberry Pi et on y connecte la cl\u00e9 USB.<br \/>\nOn alimente la carte Raspberry Pi pour la red\u00e9marrer.<br \/>\nOn se connecte \u00e0 la carte Raspberry Pi en SSH depuis la machine-relais.<br \/>\n<code>$ <span style=\"color: navy\">ssh root@X.X.X.X<\/span><\/code><br \/>\nOn \u00e9dite le fichier cmdline.txt :<br \/>\n<code># <span style=\"color: navy\">nano \/boot\/cmdline.txt<\/span><\/code><br \/>\nRemplacer <code>root=\/dev\/sdA5<\/code> par <code>root=\/dev\/sdB5<\/code><br \/>\nOn red\u00e9marre le syst\u00e8me :<br \/>\n<code># <span style=\"color: navy\">shutdown -r now<\/span><\/code><\/p>\n<p>Normalement, le syst\u00e8me de fichiers est d\u00e9sormais celui de la cl\u00e9 USB.<\/p>\n<h2>Utiliser toute la capacit\u00e9 de stockage de la cl\u00e9 USB<\/h2>\n<p>Ma cl\u00e9 USB a une capacit\u00e9 de 16&nbsp;Go, ma carte SD a une capacit\u00e9 de 8&nbsp;Go. L&rsquo;\u00e9criture de l&rsquo;image n&rsquo;a plac\u00e9 sur la cl\u00e9 USB que ce qui se trouvait \u00e0 l&rsquo;origine sur la carte SD. En redimensionnant les partitions de la cl\u00e9 USB, je peux profiter de toute la capacit\u00e9 de stockage disponible pour le syst\u00e8me de fichiers. Pour profiter de l&rsquo;int\u00e9gralit\u00e9 de l&rsquo;espace de stockage disponible sur la cl\u00e9 USB, il faut redimensionner les partitions de la cl\u00e9 USB.<\/p>\n<p>On se connecte via SSH \u00e0 la carte Raspberry Pi et on ouvre un terminal :<br \/>\n<code>$ <span style=\"color: navy\">ssh root@X.X.X.X<\/span><\/code><br \/>\nOn lance fdisk :<br \/>\n<code># <span style=\"color: navy\">fdisk \/dev\/sdB<\/span><\/p>\n<p>Welcome to fdisk (util-linux 2.23.2).<\/p>\n<p>Changes will remain in memory only, until you decide to write them.<br \/>\nBe careful before using the write command.<\/code><br \/>\nOn liste les partitions :<br \/>\n<code>Command (m for help): <span style=\"color: navy\">p<\/span><\/p>\n<p>Disk \/dev\/sdB: 15.5 GB, 15504900096 bytes, 30283008 sectors<br \/>\nUnits = sectors of 1 * 512 = 512 bytes<br \/>\nSector size (logical\/physical): 512 bytes \/ 512 bytes<br \/>\nI\/O size (minimum\/optimal): 512 bytes \/ 512 bytes<br \/>\nDisk label type: dos<br \/>\nDisk identifier: 0\u00d700057540<\/p>\n<p>Device Boot Start End Blocks Id System<br \/>\n\/dev\/sdB1 2048 186367 92160 c W95 FAT32 (LBA)<br \/>\n\/dev\/sdB2 186368 15499263 7656448 5 Extended<br \/>\n\/dev\/sdB5 188416 15499263 7655424 83 Linux<\/code><br \/>\nOn efface les partitions 5 puis 2 :<br \/>\n<code>Command (m for help): <span style=\"color: navy\">d<\/span><br \/>\nPartition number (1,2,5, default 5): <span style=\"color: navy\">5<\/span><br \/>\nPartition 5 is deleted<\/p>\n<p>Command (m for help): <span style=\"color: navy\">d<\/span><br \/>\nPartition number (1,2, default 2): <span style=\"color: navy\">2<\/span><br \/>\nPartition 2 is deleted<\/code><br \/>\nPuis on recr\u00e9e la partition 2 (\u00e9tendue) :<br \/>\n<code>Command (m for help): <span style=\"color: navy\">n<\/span><br \/>\nPartition type:<br \/>\np primary (1 primary, 0 extended, 3 free)<br \/>\ne extended<br \/>\nSelect (default p): <span style=\"color: navy\">e<\/span><br \/>\nPartition number (2-4, default 2): <span style=\"color: navy\">2<\/span><\/code><br \/>\nElle d\u00e9marre au m\u00eame secteur que l&rsquo;ancienne :<br \/>\n<code>First sector (186368-30283007, default 186368): <span style=\"color: navy\">186368<\/span><\/code><br \/>\nEt se termine au dernier secteur disponible (valeur par d\u00e9faut propos\u00e9e par fdisk) :<br \/>\n<code>Last sector, +sectors or +size{K,M,G} (186368-30283007, default 30283007):<br \/>\nUsing default value 30283007<br \/>\nPartition 2 of type Extended and of size 14.4 GiB is set<\/code><br \/>\nOn recr\u00e9e la partition 5 (logique) :<br \/>\n<code>Command (m for help): <span style=\"color: navy\">n<\/span><br \/>\nPartition type:<br \/>\np primary (1 primary, 1 extended, 2 free)<br \/>\nl logical (numbered from 5)<br \/>\nSelect (default p): <span style=\"color: navy\">l<\/span><br \/>\nAdding logical partition 5<\/code><br \/>\nQui d\u00e9marre au m\u00eame secteur que la pr\u00e9c\u00e9dente :<br \/>\n<code>First sector (188416-30283007, default 188416): <span style=\"color: navy\">188416<\/span><\/code><br \/>\nEt se termine, comme la partition 2, au dernier secteur disponible :<br \/>\n<code>Last sector, +sectors or +size{K,M,G} (188416-30283007, default 30283007): <span style=\"color: navy\">30283007<\/span><br \/>\nPartition 5 of type Linux and of size 14.4 GiB is set<\/code><br \/>\nOn \u00e9crit la table de partition :<br \/>\n<code>Command (m for help): <span style=\"color: navy\">w<\/span><br \/>\nThe partition table has been altered!<\/p>\n<p>Calling ioctl() to re-read partition table.<\/p>\n<p>WARNING: Re-reading the partition table failed with error 16: Device or resource busy.<br \/>\nThe kernel still uses the old table. The new table will be used at<br \/>\nthe next reboot or after you run partprobe(8) or kpartx(8)<br \/>\nSyncing disks.<\/code><br \/>\nEt on red\u00e9marre :<br \/>\n<code># <span style=\"color: navy\">shutdown -r now<\/span><\/code><\/p>\n<p>C&rsquo;est presque termin\u00e9. Il reste \u00e0 faire co\u00efncider la taille du syst\u00e8me de fichier avec la taille des partitions.<\/p>\n<p>Apr\u00e8s avoir ouvert un terminal sur la carte Raspberry Pi via SSH, on ex\u00e9cute la commande resize2fs sur la partition logique :<br \/>\n<code># <span style=\"color: navy\">resize2fs \/dev\/sdB5<\/span><\/code><\/p>\n<p>Et voil\u00e0 !<\/p>\n<p>Parmi les ressources qui m&rsquo;ont \u00e9t\u00e9 utiles ;<\/p>\n<ul>\n<li><a href=\"http:\/\/www.pihomeserver.fr\/2013\/06\/10\/raspberry-pi-home-server-utiliser-une-cle-usb-pour-vos-partitions\/\">Raspberry Pi Home Server : Raspberry Pi \u2013 Utiliser une cl\u00e9 USB pour vos partitions<\/a> (pour faire la m\u00eame chose, ou presque, sous Raspbian).<\/li>\n<li><a href=\"http:\/\/jonathanmh.com\/raspberry-pi-installing-arch-linux-on-usb-drive\/\">JonathanMH : Raspberry PI, installing Arch Linux on USB drive<\/a><\/li>\n<li><a href=\"http:\/\/archlinuxarm.org\/support\/reinstallation\">Arch Linux ARM : Reinstallation<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Explique comment d\u00e9marrer le Raspberry Pi \u00e0 partir d&rsquo;une cl\u00e9 USB sous Arch Linux ARM pour am\u00e9liorer les performances ou encore pr\u00e9server la carte SD.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[395],"tags":[249,349,348,345,206,246],"class_list":["post-1832","post","type-post","status-publish","format-standard","hentry","category-bidouillages","tag-archlinux","tag-boot","tag-cle-usb","tag-demarrage","tag-linux","tag-raspberry-pi-2"],"share_on_mastodon":{"url":"","error":""},"_links":{"self":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts\/1832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/comments?post=1832"}],"version-history":[{"count":26,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts\/1832\/revisions"}],"predecessor-version":[{"id":2034,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts\/1832\/revisions\/2034"}],"wp:attachment":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/media?parent=1832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/categories?post=1832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/tags?post=1832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}