{"id":181,"date":"2026-02-22T07:02:40","date_gmt":"2026-02-22T11:02:40","guid":{"rendered":"https:\/\/juredev.com\/blog\/?p=181"},"modified":"2026-02-22T07:06:06","modified_gmt":"2026-02-22T11:06:06","slug":"como-recuperar-grub-cuando-un-vps-debian-12-o-13-no-arranca-en-hetzner","status":"publish","type":"post","link":"https:\/\/juredev.com\/blog\/2026\/02\/como-recuperar-grub-cuando-un-vps-debian-12-o-13-no-arranca-en-hetzner\/","title":{"rendered":"C\u00f3mo recuperar GRUB cuando un VPS Debian 12 o 13 no arranca en Hetzner Cloud"},"content":{"rendered":"\n<p><strong>Gu\u00eda t\u00e9cnica actualizada (2026)<\/strong><\/p>\n\n\n\n<p>Cuando un VPS deja de arrancar tras una actualizaci\u00f3n, un <code>apt full-upgrade<\/code>, un cambio de particiones o un snapshot, el problema suele ser el mismo: <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/GNU_GRUB\" data-type=\"link\" data-id=\"https:\/\/en.wikipedia.org\/wiki\/GNU_GRUB\">GRUB<\/a> no encuentra el sistema<\/strong>.<\/p>\n\n\n\n<p>En <a href=\"https:\/\/www.hetzner.com\/cloud\/\" data-type=\"link\" data-id=\"https:\/\/www.hetzner.com\/cloud\/\">Hetzner Cloud<\/a> esto suele solucionarse sin p\u00e9rdida de datos usando el <strong>Rescue System<\/strong>. Si ves mensajes t\u00edpicos::<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grub rescue>\nerror: no such device\nerror: no such partition<\/code><\/pre>\n\n\n\n<p>Esta gu\u00eda te explica c\u00f3mo recuperar GRUB en:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Debian 12 (Bookworm)<\/li>\n\n\n\n<li>Debian 13 (Trixie)<\/li>\n<\/ul>\n\n\n\n<p>El procedimiento es v\u00e1lido para Hetzner Cloud en 2026. Te puede ayudar a resolver un problema con un VPS que tengas en Hetzner.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Por qu\u00e9 falla GRUB en un VPS<\/h2>\n\n\n\n<p>GRUB es el cargador que arranca antes del kernel. Si no encuentra:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El UUID correcto<\/li>\n\n\n\n<li>La partici\u00f3n ra\u00edz<\/li>\n\n\n\n<li>El directorio <code>\/boot<\/code><\/li>\n\n\n\n<li>Un kernel v\u00e1lido<\/li>\n<\/ul>\n\n\n\n<p>el sistema no contin\u00faa.<\/p>\n\n\n\n<p>En entornos cloud, la recuperaci\u00f3n se hace desde el <strong>Rescue System<\/strong>, ya que no hay acceso f\u00edsico a la consola.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Particularidades de Hetzner Cloud<\/h2>\n\n\n\n<p>Antes de empezar, ten en cuenta:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Dispositivo principal<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Siempre aparece como <strong>\/dev\/vda<\/strong> (virtio).<\/li>\n\n\n\n<li>No uses <code>\/dev\/sda<\/code> (t\u00edpico de servidores dedicados).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Layout de particiones por defecto<\/h3>\n\n\n\n<p>Hetzner Cloud usa uno de estos esquemas:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Tipo de instalaci\u00f3n<\/th><th>Particiones<\/th><\/tr><\/thead><tbody><tr><td><strong>Est\u00e1ndar (la mayor\u00eda)<\/strong><\/td><td><code>\/dev\/vda1<\/code> \u2192 <code>\/<\/code> (una sola partici\u00f3n)<\/td><\/tr><tr><td><strong>Con LVM<\/strong><\/td><td><code>\/dev\/vda1<\/code> \u2192 PV LVM \u2192 VG \u2192 LV root<\/td><\/tr><tr><td><strong>Con EFI (raro)<\/strong><\/td><td><code>\/dev\/vda1<\/code> \u2192 ESP, <code>\/dev\/vda2<\/code> \u2192 root<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Un <code>\/boot<\/code> separado <strong>no es habitual<\/strong> salvo que lo hayas creado manualmente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Recuperar GRUB desde el Rescue System<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Activar el Rescue<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Panel de Hetzner Cloud<\/li>\n\n\n\n<li>Servidor \u2192 pesta\u00f1a <strong>Rescue<\/strong><\/li>\n\n\n\n<li>Activar (SSH key o contrase\u00f1a temporal)<\/li>\n\n\n\n<li>Reiniciar<\/li>\n\n\n\n<li>Conectarte por SSH como <code>root<\/code><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">2. Identificar particiones<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>lsblk -f\nfdisk -l \/dev\/vda\nblkid<\/code><\/pre>\n\n\n\n<p>Localiza:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>La partici\u00f3n ra\u00edz<\/li>\n\n\n\n<li><code>\/boot<\/code> si existe<\/li>\n\n\n\n<li>Vol\u00famenes LVM si aparecen como <code>LVM2_member<\/code><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. Montar el sistema instalado<\/h3>\n\n\n\n<p><strong>Caso A:<\/strong> instalaci\u00f3n est\u00e1ndar (una sola partici\u00f3n)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mount \/dev\/vda1 \/mnt<\/code><\/pre>\n\n\n\n<p><strong>Caso B:<\/strong> <code>\/boot<\/code> separado (instalaciones personalizadas)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mount \/dev\/vda2 \/mnt\nmount \/dev\/vda1 \/mnt\/boot<\/code><\/pre>\n\n\n\n<p>Bind mounts necesarios<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mount --bind \/dev  \/mnt\/dev\nmount --bind \/proc \/mnt\/proc\nmount --bind \/sys  \/mnt\/sys\nmount --bind \/run  \/mnt\/run<\/code><\/pre>\n\n\n\n<p>Caso EFI (poco com\u00fan en Cloud)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mount \/dev\/vda1 \/mnt\/boot\/efi<\/code><\/pre>\n\n\n\n<p><strong>Caso especial:<\/strong> sistemas con LVM<\/p>\n\n\n\n<p>Si <code>lsblk<\/code> muestra LVM:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Activar vol\u00famenes:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>vgchange -ay\nlvscan<\/code><\/pre>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Localizar el LV ra\u00edz (ej. <code>\/dev\/mapper\/vg0-root<\/code>)<\/li>\n\n\n\n<li>Montar:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>mount \/dev\/mapper\/vg0-root \/mnt<\/code><\/pre>\n\n\n\n<p>Luego aplicar los bind mounts igual que en el caso est\u00e1ndar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Entrar en chroot<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>chroot \/mnt<\/code><\/pre>\n\n\n\n<p>Ahora est\u00e1s dentro de tu Debian real.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Reinstalar GRUB correctamente<\/h3>\n\n\n\n<p>Instalar siempre sobre el disco completo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grub-install \/dev\/vda<\/code><\/pre>\n\n\n\n<p>Nunca sobre <code>\/dev\/vda1<\/code>.<\/p>\n\n\n\n<p>Si aparece un error por restos de otro bootloader:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grub-install --force \/dev\/vda<\/code><\/pre>\n\n\n\n<p>Regenerar configuraci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>update-grub<\/code><\/pre>\n\n\n\n<p>Debes ver que detecta los kernels instalados.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verificaciones importantes antes de salir<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Comprobar UUIDs<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>blkid\ncat \/etc\/fstab<\/code><\/pre>\n\n\n\n<p>Si un UUID no coincide, corr\u00edgelo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Confirmar que existe un kernel<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>ls \/boot\/vmlinuz*<\/code><\/pre>\n\n\n\n<p>Si no hay kernel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update\napt install linux-image-amd64\nupdate-grub<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Salir y desmontar<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>exit\numount -R \/mnt\nsync<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Reiniciar normalmente<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Desactivar Rescue en el panel<\/li>\n\n\n\n<li>Reiniciar<\/li>\n\n\n\n<li>Esperar 1\u20132 minutos<\/li>\n\n\n\n<li>Probar acceso SSH<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Comprobaciones tras recuperar GRUB<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>lsblk -f\ndf -h\njournalctl -b -p err..alert\ndmesg | grep -i error<\/code><\/pre>\n\n\n\n<p>Si vuelve a aparecer <code>grub rescue&gt;<\/code>, revisa:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>UUIDs<\/li>\n\n\n\n<li>Kernel instalado<\/li>\n\n\n\n<li>Montaje correcto de <code>\/boot<\/code><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Errores frecuentes y soluciones<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Mensaje<\/th><th>Causa<\/th><th>Soluci\u00f3n<\/th><\/tr><\/thead><tbody><tr><td>no such device<\/td><td>UUID incorrecto<\/td><td>Revisar <code>\/etc\/fstab<\/code> y regenerar GRUB<\/td><\/tr><tr><td>no such partition<\/td><td>Tabla modificada<\/td><td>Confirmar layout con <code>lsblk<\/code><\/td><\/tr><tr><td>No kernel detected<\/td><td><code>\/boot<\/code> vac\u00edo<\/td><td>Reinstalar kernel<\/td><\/tr><tr><td>grub-install falla<\/td><td>Disco equivocado<\/td><td>Usar <code>\/dev\/vda<\/code><\/td><\/tr><tr><td>Sigue sin arrancar<\/td><td>Kernel panic temprano<\/td><td>Revisar <code>journalctl -b -1<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u00daltimo recurso: reinstalar desde Rescue<\/h2>\n\n\n\n<p>l Rescue System incluye <code>installimage<\/code>, aunque en Cloud ofrece menos opciones que en servidores dedicados.<\/p>\n\n\n\n<p>Alternativamente, puedes usar Rebuild desde el panel.<\/p>\n\n\n\n<p>Reinstalar es recomendable cuando:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El sistema est\u00e1 muy da\u00f1ado<\/li>\n\n\n\n<li>Hay corrupci\u00f3n de filesystem<\/li>\n\n\n\n<li>No hay backups<\/li>\n\n\n\n<li>El tiempo de recuperaci\u00f3n es m\u00e1s costoso que reinstalar<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3mo evitar futuros problemas con GRUB<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Crear snapshot antes de <code>apt full-upgrade<\/code><\/li>\n\n\n\n<li>No interrumpir actualizaciones de kernel<\/li>\n\n\n\n<li>Guardar layout del disco:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>lsblk -f &gt; \/root\/disk-layout-$(date +%F).txt<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vigilar espacio libre en <code>\/boot<\/code><\/li>\n\n\n\n<li>Documentar tu particionado<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Si el arranque de tu VPS falla, no es el fin del mundo<\/h2>\n\n\n\n<p>Recuperar GRUB en Hetzner Cloud suele ser un proceso r\u00e1pido si se sigue un m\u00e9todo ordenado.<\/p>\n\n\n\n<p>La mayor\u00eda de incidentes se resuelven sin p\u00e9rdida de datos y en menos de 15 minutos.<\/p>\n\n\n\n<p>Los fallos m\u00e1s comunes no son t\u00e9cnicos, sino errores de montaje, UUIDs incorrectos o kernels ausentes.<\/p>\n\n\n\n<p>Sigamos administrando.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gu\u00eda t\u00e9cnica actualizada (2026) Cuando un VPS deja de arrancar tras una actualizaci\u00f3n, un apt full-upgrade, un cambio de particiones o un snapshot, el problema suele ser el mismo: GRUB no encuentra el sistema. En Hetzner Cloud esto suele solucionarse sin p\u00e9rdida de datos usando el Rescue System. Si ves mensajes t\u00edpicos:: Esta gu\u00eda te [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[24],"class_list":["post-181","post","type-post","status-publish","format-standard","hentry","category-guia","tag-linux"],"_links":{"self":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts\/181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/comments?post=181"}],"version-history":[{"count":0,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts\/181\/revisions"}],"wp:attachment":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/media?parent=181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/categories?post=181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/tags?post=181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}