{"id":123,"date":"2014-04-27T22:57:55","date_gmt":"2014-04-27T20:57:55","guid":{"rendered":"http:\/\/www.e-jim.be\/blog\/?p=123"},"modified":"2014-04-27T22:57:55","modified_gmt":"2014-04-27T20:57:55","slug":"creer-un-serveur-ltsp-sans-avoir-la-main-sur-le-dhcp-du-reseau","status":"publish","type":"post","link":"https:\/\/e-jim.be\/blog\/index.php\/2014\/04\/27\/creer-un-serveur-ltsp-sans-avoir-la-main-sur-le-dhcp-du-reseau\/","title":{"rendered":"Cr\u00e9er un serveur ltsp sans avoir la main sur le DHCP du r\u00e9seau"},"content":{"rendered":"<p>\t\t\t\tParfois, il est pratique de pouvoir arriver dans un environnement d\u00e9j\u00e0 existant et de d\u00e9ployer un serveur LTSP sans alt\u00e9rer les infrastructures en place.<\/p>\n<p>Dans le cas qui m&rsquo;occupe, l&rsquo;id\u00e9e est de pouvoir arriver dans une \u00e9cole et d\u00e9marrer des PC depuis un serveur LTSP, sans avoir la main sur le serveur DHCP principal, qui peut \u00e9ventuellement \u00eatre g\u00e9r\u00e9 par une simple box de FAI (ce qui se voit tr\u00e8s souvent).<\/p>\n<p>Pour pouvoir faire cela, il faut mettre en place un proxy-dhcp (pour mieux comprendre comment \u00e7a se passe, voir les specs du PXE, sp\u00e9cialement la page 18 ftp:\/\/download.intel.com\/design\/archives\/wfm\/downloads\/pxespec.pdf)<\/p>\n<p>Le seul serveur DHCP sous linux que j&rsquo;aie trouv\u00e9 et qui permette cela est dnsmasq.<\/p>\n<p>Donc, pour commencer, on installe dnsmasq et le serveur ltsp (ATTENTION, pas le serveur standalone, qui va \u00e9galement installer un serveur dhcp3, qui n&rsquo;est pas capable de faire du proxy-dhcp)<\/p>\n<p>Cela donne (sur Debian ou d\u00e9riv\u00e9)<\/p>\n<pre class=\"lang:default decode:true\">sudo apt-get install dnsmasq ltsp-server<\/pre>\n<p>Ensuite, on va cr\u00e9er l&rsquo;image qui sera transmise par le serveur LTSP aux clients:<\/p>\n<pre class=\"lang:default decode:true\">sudo ltsp-build-client --arch i386 --fat-client\n<\/pre>\n<p>Cette op\u00e9ration va automatiquement cr\u00e9er un r\u00e9pertoire \/opt\/ltsp\/i386, lequel va servir de racine pour un chroot dans lequel le client va \u00eatre install\u00e9.<\/p>\n<p>Cela va prendre un moment, surtout si vous \u00eates sur une architecture autre que i386, car tous les paquets pour cr\u00e9er le client vont \u00eatre t\u00e9l\u00e9charg\u00e9s. Et quoi qu&rsquo;il arrive, un upgrade sera appliqu\u00e9, histoire de commencer avec l&rsquo;image la plus \u00e0 jour possible.<\/p>\n<p>Le script va aussi g\u00e9n\u00e9rer une image pxelinux, qui sera l&rsquo;amorce de l&rsquo;OS LTSP. Cette image se trouve dans \/var\/lib\/tftpboot\/ltsp\/i386\/.<\/p>\n<p>Malheureusement, la config par d\u00e9faut n&rsquo;offre pas le support pour le dhcp-proxy.<br \/>\nIl faudra donc rajouter dans le fichier de config de ce pxelinux (\/var\/lib\/tftpboot\/ltsp\/i386\/pxelinux.cfg\/default) une ligne contenant ceci:<\/p>\n<pre class=\"lang:default decode:true\">ipappend 3<\/pre>\n<p>Apparement dans Ubuntu 14.02, la valeur de ipappend est de 2, il faut alors la modifier \u00e0 3.<\/p>\n<p>Enfin, il faut modifier la config de DNSmasq pour lui dire de faire DHCP-proxy et lui indiquer quelle image d\u00e9livrer:<\/p>\n<pre class=\"lang:default decode:true\">#\n#Settings TFTP\n#\n\nenable-tftp\ntftp-root=\/var\/lib\/tftpboot\n\n#\n# Settings DHPC\n#\n\ndhcp-range=192.168.1.0, proxy\n# On met l'adresse du R\u00c9SEAU. Possible pr\u00e9ciser un v\u00e9ritable range, ou un masque de sous-r\u00e9seau. Voir man dnsmasq\n\ndhcp-option=vendor:PXEClient,6,2b\n#Pour que les clients n'utilise pas la d\u00e9couverte d'h\u00f4tes multicast. Pour \u00eatre honn\u00eate, j'ai pas fouill\u00e9\n\ndhcp-no-override\n#Apparement, permet un support plus large de clients un peu vieux, au ayant mal implement\u00e9 PXE\n\n#\n#Menu PXE.\n#\n#D\u00e9commenter les lignes pour avoir un menu. Personnelement, je pr\u00e9f\u00e8re qu'il n'y ait pas de menu, pour qu'aucune intervention ne soit n\u00e9cessaire.\n\n#pxe-prompt= \"Appuyer sur F8 pour avoir un menu\", 10\npxe-service=x86PC, \"Boot depuis le r\u00e9seau\", \/ltsp\/i386\/pxelinux \n# Charge l'image qui se trouve sur \/var\/lib\/tftpboot\/ltsp\/i386\/pxelinux.0, laquelle va r\u00e9diger vers d'autres fichiers se trouvant dans son dossier\n#pxe-service=x86PC, \"Demarage depuis le disque\"\n<\/pre>\n<p>Et voil\u00e0, c&rsquo;est fini. Plus qu&rsquo;\u00e0 red\u00e9marrer le service dnsmasq, et tous les clients qui booteront en PXE sur le r\u00e9seau chargeront la nouvelle image.<\/p>\n<pre class=\"lang:default decode:true\">sudo service dnsmasq force-reload<\/pre>\n<pre class=\"lang:default decode:true\">sudo service dnsmasq force-reload<\/pre>\n<p>Bon amusement avec votre LTSP!<\/p>\n<p>Sources (i.a.):<\/p>\n<p><a href=\"http:\/\/askubuntu.com\/questions\/100056\/ltsp-overlays-for-fat-clients\">http:\/\/askubuntu.com\/questions\/100056\/ltsp-overlays-for-fat-clients<\/a><br \/>\n<a href=\"https:\/\/help.ubuntu.com\/community\/UbuntuLTSP\/ProxyDHCP\">https:\/\/help.ubuntu.com\/community\/UbuntuLTSP\/ProxyDHCP<\/a><br \/>\n<a href=\"howto.basjes.nl\/linux\/doing-pxe-without-dhcp-control\">howto.basjes.nl\/linux\/doing-pxe-without-dhcp-control<\/a><br \/>\n<a href=\"https:\/\/weblogs.java.net\/blog\/2009\/02\/07\/booting-installer-network-when-you-dont-own-dhcp-server\">https:\/\/weblogs.java.net\/blog\/2009\/02\/07\/booting-installer-network-when-you-dont-own-dhcp-server<\/a><br \/>\n<a href=\"http:\/\/jonathancarter.org\/2010\/11\/24\/how-do-ltsp-fat-clients-work\/\">http:\/\/jonathancarter.org\/2010\/11\/24\/how-do-ltsp-fat-clients-work\/<\/a><br \/>\n<a href=\"http:\/\/ubuntuforums.org\/showthread.php?t=2173749\">http:\/\/ubuntuforums.org\/showthread.php?t=2173749<\/a>\t\t<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Parfois, il est pratique de pouvoir arriver dans un environnement d\u00e9j\u00e0 existant et de d\u00e9ployer un serveur LTSP sans alt\u00e9rer les infrastructures en place. Dans le cas qui m&rsquo;occupe, l&rsquo;id\u00e9e est de pouvoir arriver dans une \u00e9cole et d\u00e9marrer des PC depuis un serveur LTSP, sans avoir la main sur le serveur DHCP principal, qui [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-123","post","type-post","status-publish","format-standard","hentry","category-bidouille"],"_links":{"self":[{"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/posts\/123"}],"collection":[{"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=123"}],"version-history":[{"count":0,"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/posts\/123\/revisions"}],"wp:attachment":[{"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/e-jim.be\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}