{"id":3828,"date":"2017-01-12T17:02:18","date_gmt":"2017-01-12T16:02:18","guid":{"rendered":"https:\/\/diocesanos.es\/blogs\/equipotic\/?p=3828"},"modified":"2017-01-12T17:06:26","modified_gmt":"2017-01-12T16:06:26","slug":"como-congelarrestaurar-la-configuracion-de-escritorio-del-alumno-al-iniciar-el-sistema","status":"publish","type":"post","link":"https:\/\/diocesanos.es\/blogs\/equipotic\/2017\/01\/12\/como-congelarrestaurar-la-configuracion-de-escritorio-del-alumno-al-iniciar-el-sistema\/","title":{"rendered":"C\u00f3mo \u00abcongelar \/ restaurar\u00bb la configuraci\u00f3n de escritorio del alumno al iniciar el sistema"},"content":{"rendered":"<p>Seguro que existen soluciones m\u00e1s \u00abprofesionales\u00bb pero esta es la que mejor nos est\u00e1 funcionando en los Colegios.<\/p>\n<p><a href=\"https:\/\/diocesanos.es\/blogs\/equipotic\/2017\/01\/12\/como-congelarrestaurar-la-configuracion-de-escritorio-del-alumno-al-iniciar-el-sistema\/congelado-2\/\" rel=\"attachment wp-att-3829\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-3829\" src=\"https:\/\/diocesanos.es\/blogs\/equipotic\/wp-content\/uploads\/sites\/2\/2017\/01\/congelado-300x226.jpg\" alt=\"\" width=\"300\" height=\"226\" srcset=\"https:\/\/diocesanos.es\/blogs\/equipotic\/wp-content\/uploads\/sites\/2\/2017\/01\/congelado-300x226.jpg 300w, https:\/\/diocesanos.es\/blogs\/equipotic\/wp-content\/uploads\/sites\/2\/2017\/01\/congelado.jpg 634w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>Se trata de garantizar la \u00abexperiencia de usuario\u00bb permitiendo al alumno que adapte y modifique a su gusto el escritorio y configuraci\u00f3n de los programas en su sesi\u00f3n (fondo de escritorio, complementos, ventanas, etc). Cuando se reinicie el ordenador la sesi\u00f3n del alumno volver\u00e1 a una configuraci\u00f3n inicial prefijada, lo que no implica necesariamente perder los documentos creados en la sesi\u00f3n anterior.<\/p>\n<p><!--more--><\/p>\n<h3>El proceso es relativamente sencillo:<\/h3>\n<ol>\n<li>Creamos un fichero con la informaci\u00f3n que deseamos mantener, por ejemplo con:\n<pre style=\"font-size: 67%;\">tar -zcf <strong>\/home\/alumno.tgz<\/strong> \/home\/alumno\/.config \/home\/alumno\/.local \/home\/alumno\/.profile<\/pre>\n<p>Podemos a\u00f1adir todos aquellos directorios y ficheros que consideremos importantes. Personalmente tengo un peque\u00f1o shell-script\u00a0 que me permite regenerar el archivo despu\u00e9s de aplicar actualizaciones en el sistema.<\/li>\n<li>Editamos el fichero \u00ab<strong><em>\/etc\/rc.local<\/em><\/strong>\u00bb y a\u00f1adimos la orden para restaurar la configuraci\u00f3n del alumno:\n<pre style=\"font-size: 67%;\">tar -zxf \/home\/alumno.tgz -C \/ &gt;\/dev\/null 2&gt;&amp;1<\/pre>\n<p>Este fichero se ejecutar\u00e1 al final del proceso de arranque de\u00a0 Linux.\u00a0 Otra posibilidad es programar la acci\u00f3n en el servicio de \u00ab<strong>cron<\/strong>\u00bb del sistema para que lo haga una vez a la semana o en los momentos en los que nos interese.<\/li>\n<\/ol>\n<h3>Problema en las \u00faltimas versiones de Ubuntu &gt;= 16.10<\/h3>\n<p>El fichero \u00ab<em><strong>\/etc\/rc.local<\/strong><\/em>\u00bb no se incluye por defecto y crearle manualmente no es suficiente. El \u00abproblema\u00bb viene por el uso del nuevo \u00ab<strong>systemd<\/strong>\u00bb como sustituto del proceso \u00ab<strong>init.d<\/strong>\u00bb\u00a0 de inicio del sistema.<\/p>\n<p>Para comprobarlo prueba a habilitar \u00abservicio\u00bb:<\/p>\n<pre style=\"font-size: 67%;\">sudo systemctl enable rc-local<\/pre>\n<p>En caso de no disponer de \u00abrc-local\u00bb obtendr\u00e1s una respuesta similar a esta:<\/p>\n<pre style=\"font-size: 67%;\">The unit files have no installation config (WantedBy, RequiredBy, Also, Alias\r\nsettings in the [Install] section, and DefaultInstance for template units).\r\nThis means they are not meant to be enabled using systemctl.\r\nPossible reasons for having this kind of units are:\r\n1) A unit may be statically enabled by being symlinked from another unit's\r\n .wants\/ or .requires\/ directory.\r\n2) A unit's purpose may be to act as a helper for some other unit which has\r\n a requirement dependency on it.\r\n3) A unit may be started when needed via activation (socket, path, timer,\r\n D-Bus, udev, scripted systemctl call, ...).\r\n4) In case of template units, the unit is meant to be enabled with some\r\n instance name specified.<\/pre>\n<h3>Soluci\u00f3n<\/h3>\n<ol>\n<li>Crea el fichero \u00ab<strong>\/etc\/rc.local<\/strong>\u00bb asegur\u00e1ndote de a\u00f1adir la orden \u00abexit\u00bb con el c\u00f3digo de salida \u00ab0\u00bb u otro en caso de error:\n<pre style=\"font-size: 67%;\">#!\/bin\/sh -e\r\ntar -zxf \/home\/alumno.tgz -C \/ &gt;\/dev\/null 2&gt;&amp;1\r\nexit 0<\/pre>\n<\/li>\n<li>Aseg\u00farate de que tenga los permisos de ejecuci\u00f3n:\n<pre style=\"font-size: 67%;\">sudo chmod +x \/etc\/rc.local<\/pre>\n<\/li>\n<li>Crea un fichero de definici\u00f3n del servicio de la forma\n<pre style=\"font-size: 67%;\">sudo vi \/etc\/systemd\/system\/rc-local.service<\/pre>\n<p>y a\u00f1ade el siguiente contenido:<\/p>\n<pre style=\"font-size: 67%;\">[Unit]\r\n Description=\/etc\/rc.local Compatibility\r\n ConditionPathExists=\/etc\/rc.local\r\n\r\n[Service]\r\n Type=forking\r\n ExecStart=\/etc\/rc.local start\r\n TimeoutSec=0\r\n StandardOutput=tty\r\n RemainAfterExit=yes\r\n\r\n[Install]\r\n WantedBy=multi-user.target<\/pre>\n<\/li>\n<li>Ahora habilita el servicio para que arranque al inicio del sistema:\n<pre style=\"font-size: 67%;\">sudo systemctl enable rc-local<\/pre>\n<p>y obtendr\u00e1s una salida parecida a esta:<\/p>\n<pre style=\"font-size: 67%;\">Created symlink \/etc\/systemd\/system\/multi-user.target.wants\/rc-local.service \u2192 \/etc\/systemd\/system\/rc-local.service.<\/pre>\n<p>En caso contrario revisa el fichero \u00ab<strong><em>\/etc\/systemd\/system\/rc-local.service<\/em><\/strong>\u00bb y vuelve a intentarlo.<\/li>\n<li>Por \u00faltimo inicia el servicio:\n<pre style=\"font-size: 67%;\">sudo systemctl start rc-local.service<\/pre>\n<p>y comprueba su estado:<\/p>\n<pre style=\"font-size: 67%;\">sudo systemctl status rc-local.service<\/pre>\n<p>Si todo ha ido bien obtendr\u00e1s una salida similar a esta:<\/p>\n<pre style=\"font-size: 67%;\"><span style=\"color: #008000;\">\u25cf<\/span> rc-local.service - \/etc\/rc.local Compatibility\r\n Loaded: loaded (\/etc\/systemd\/system\/rc-local.service; enabled; vendor preset: enabled)\r\n Drop-In: \/lib\/systemd\/system\/rc-local.service.d\r\n \u2514\u2500debian.conf\r\n Active: <span style=\"color: #008000;\">active (exited)<\/span> since jue 2017-01-12 16:05:17 CET; 6s ago\r\n Process: 5913 ExecStart=\/etc\/rc.local start (code=exited, status=0\/SUCCESS)\r\n\r\nene 12 16:05:17 linuxcasa1 systemd[1]: Starting \/etc\/rc.local Compatibility...\r\nene 12 16:05:17 linuxcasa1 systemd[1]: Started \/etc\/rc.local Compatibility.<\/pre>\n<\/li>\n<\/ol>\n<h3>Opci\u00f3n 2: programaci\u00f3n con \u00abcron\u00bb<\/h3>\n<p>Si la soluci\u00f3n anterior no es posible o prefieres depender del proceso \u00ab<strong>cron\u00bb<\/strong> del sistema (que a su vez debe estar habilitado) puedes ejecutar:<\/p>\n<pre style=\"font-size: 67%;\">sudo crontab -e<\/pre>\n<p>y a\u00f1adir la l\u00ednea<\/p>\n<pre style=\"font-size: 67%;\">@reboot\u00a0 \/bin\/ tar -zxf \/home\/alumno.tgz -C \/ &gt;\/dev\/null 2&gt;&amp;1<\/pre>\n<h3>Explicaci\u00f3n adicional sobre el inicio de servicios<\/h3>\n<p><strong><code>init.d<\/code><\/strong>, tambi\u00e9n conocido como script SysV, permite iniciar y parar servicios durante la inicializaci\u00f3n y cierre del sistema (los scripts de <code>\/etc\/init.d\/<\/code> tambi\u00e9n son procesados en sistemas con\u00a0 \u00ab<strong>systemd<\/strong>\u00bb por compatibilidad).<\/p>\n<ul>\n<li>Puedes definir en qu\u00e9 orden exactamente se ejecutar\u00e1n los scripts, tanto al inicio como al cerrar el sistema.<\/li>\n<li>Estos scripts (si est\u00e1n bien definidos) deben soportar los par\u00e1metros <code>start<\/code> y <code>stop<\/code> por lo menos (siguiendo las recomendaciones de Debian).<\/li>\n<\/ul>\n<p><strong><code>crontab<\/code><\/strong> (y en particular con\u00a0 <code>@reboot<\/code>).<\/p>\n<ul>\n<li><strong>cron<\/strong> puede ejecutar cualquier comando o script.<\/li>\n<li>cualquier usuario puede agregar a su lista de tareas una de tipo\u00a0 <code>@reboot<\/code><\/li>\n<li>en sistemas basados en\u00a0 Debian (como Ubuntu y derivados)\u00a0 que ya implementan \u00ab<strong>systemd<\/strong>\u00bb las l\u00edneas \u00ab@reboot\u00bb\u00a0 se ejecutan durante el objetivo (nivel de ejecuci\u00f3n)\u00a0 <code>multi-user.target<\/code>.<\/li>\n<li>en sistemas\u00a0 <strong>SysV<\/strong> (no systemd), las llamadas \u00a0 <code>@reboot<\/code> de <strong>cron<\/strong> se ejecutar\u00e1n en el momento (orden) en el que se ejecute el propio servicio de <strong>cron<\/strong><em>.<\/em><\/li>\n<li>es muy f\u00e1cil programar el mismo script para que se ejecute al inicio y\/o de forma peri\u00f3dica.<\/li>\n<\/ul>\n<p><strong><code>\/etc\/rc.local<\/code><\/strong> est\u00e1 desaconsejado (se considera una mala pr\u00e1ctica y se propone su desaparici\u00f3n) pero mantiene algunas caracter\u00edsticas interesantes:<\/p>\n<ul>\n<li>permite ejecutar cualquier comando o script.<\/li>\n<li>en sistemas basados en Debian con <strong>SysV<\/strong> (no systemd)\u00a0 <code>rc.local<\/code> suele ser el \u00faltimo servicio en iniciarse.<\/li>\n<li>sin embargo en sistemas con\u00a0 <strong>systemd<\/strong>: <code>rc.local<\/code> por defecto se ejecuta despu\u00e9s\u00a0 el objetivo\u00a0 <code>network.target<\/code> ( y antes de <code>network-online.target<\/code> )<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Seguro que existen soluciones m\u00e1s \u00abprofesionales\u00bb pero esta es la que mejor nos est\u00e1 funcionando en los Colegios. Se trata de garantizar la \u00abexperiencia de usuario\u00bb permitiendo al alumno que adapte y modifique a su gusto el escritorio y configuraci\u00f3n de los programas en su sesi\u00f3n (fondo de escritorio, complementos, ventanas, etc). Cuando se reinicie &hellip; <a href=\"https:\/\/diocesanos.es\/blogs\/equipotic\/2017\/01\/12\/como-congelarrestaurar-la-configuracion-de-escritorio-del-alumno-al-iniciar-el-sistema\/\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">C\u00f3mo \u00abcongelar \/ restaurar\u00bb la configuraci\u00f3n de escritorio del alumno al iniciar el sistema<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,151],"tags":[117,101],"class_list":["post-3828","post","type-post","status-publish","format-standard","hentry","category-linux-2","category-trucos-2","tag-configuracion","tag-escritorio"],"_links":{"self":[{"href":"https:\/\/diocesanos.es\/blogs\/equipotic\/wp-json\/wp\/v2\/posts\/3828","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/diocesanos.es\/blogs\/equipotic\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/diocesanos.es\/blogs\/equipotic\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/diocesanos.es\/blogs\/equipotic\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/diocesanos.es\/blogs\/equipotic\/wp-json\/wp\/v2\/comments?post=3828"}],"version-history":[{"count":1,"href":"https:\/\/diocesanos.es\/blogs\/equipotic\/wp-json\/wp\/v2\/posts\/3828\/revisions"}],"predecessor-version":[{"id":4378,"href":"https:\/\/diocesanos.es\/blogs\/equipotic\/wp-json\/wp\/v2\/posts\/3828\/revisions\/4378"}],"wp:attachment":[{"href":"https:\/\/diocesanos.es\/blogs\/equipotic\/wp-json\/wp\/v2\/media?parent=3828"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/diocesanos.es\/blogs\/equipotic\/wp-json\/wp\/v2\/categories?post=3828"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/diocesanos.es\/blogs\/equipotic\/wp-json\/wp\/v2\/tags?post=3828"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}