Skip to content

Instantly share code, notes, and snippets.

@lsaavedr
Last active September 10, 2026 20:30
Show Gist options
  • Select an option

  • Save lsaavedr/fb85e8888bad4f49a4dfb3bee983102c to your computer and use it in GitHub Desktop.

Select an option

Save lsaavedr/fb85e8888bad4f49a4dfb3bee983102c to your computer and use it in GitHub Desktop.

Ubuntu en disco externo

En esta oportunidad veremos como instalar Ubuntu resolute en una partición que tengamos libre (también podría ser un disco externo), esto lo haremos sin tener necesidad de reiniciar ni dejar de trabajar. Luego de terminar la instalación tendremos que reiniciar si queremos probar nuestro nuevo sistema.

Sistema Base

  • La partición se encuentra en /dev/sdb2
  • La partición se montará en $PWD/ubuntu (debe ser /root/ubuntu)
  • El super usuario se llamará lsaavedr

Accedemos como root y montamos el disco:

foo@bar:~$ sudo su -
foo@bar:~# mkfs.ext4 /dev/sdb2 -L resolute
foo@bar:~# mkdir -p $PWD/ubuntu
foo@bar:~# mount /dev/sdb2 $PWD/ubuntu

debootstrap

debootstrap, es un comando que nos permite volcar un sistema básico con el sistema de paquetería de Debian, en nuestro caso será Ubuntu 26.04 LTS (Resolute Raccoon). Para instalarlo utilizamos:

foo@bar:~# apt install -y debootstrap

luego de instalarlo, lo utilizamos de la siguiente forma:

foo@bar:~# debootstrap --verbose --no-resolve-deps --arch=amd64 --components=main,restricted,universe,multiverse resolute $PWD/ubuntu http://cl.archive.ubuntu.com/ubuntu

en nuestro caso hemos indicado (en orden):

  • que sea verboso con --verbose
  • que no pare si encuentra algún problema de dependencias --no-resolve-deps lo que es típico en nuevas versiones
  • también hemos indicado nuestra arquitectura --arch=amd64
  • los repositorios básicos (main, restricted, universe y multiverse) con --components=main,restricted,universe,multiverse
  • la distribución con resolute
  • donde volcar el nuevo sistema con $PWD/ubuntu/
  • y por último desde donde obtener los repositorios básicos con http://cl.archive.ubuntu.com/ubuntu/

muchas de estas configuraciones se pueden adaptar a nuestras necesidades, sobre todo la elección de la distribución (en nuestro caso resolute), pero también algunos querrán cambiar la arquitectura de la máquina, por ejemplo con --arch=i386 o --arch=arm64.

chroot

chroot, como su nombre lo sugiere, es un comando que nos permite cambiar la raíz de un sistema, en nuestro caso nos interesa ''ingresar'' a nuestro sistema recientemente volcado con debootstrap. Pero antes debemos montar algunos periféricos en el sistema volcado:

foo@bar:~# mount --rbind /dev $PWD/ubuntu/dev
foo@bar:~# mount --rbind /proc $PWD/ubuntu/proc
foo@bar:~# mount --rbind /sys $PWD/ubuntu/sys
foo@bar:~# LC_ALL=C LANGUAGE=C LANG=C.UTF-8 chroot ubuntu

con esto ya ingresamos a nuestro nuevo sistema básico y podemos configurar algunas cosas antes de instalar el sistema completo.

apt

Algo que nos puede sorprender de debootstrap es que el sistema que instala es realmente básico, pero completo, con él podemos instalar todo tipo de herramientas pero también requiere que tengamos cierto grado de especialización. Por defecto para instalar paquetes se utiliza apt que es una herramienta bastante popular, empecemos a utilizarla:

foo@bar:~# apt update
foo@bar:~# apt modernize-sources -y
foo@bar:~# apt install -y command-not-found locate nano curl

command-not-found nos va a servir para ver recomendaciones de paquetes (según qué comando intentemos ejecutar en el terminal), nano es un editor de texto que se puede usar desde el terminal y curl para descargas remotas.

Repositorios

Debemos verificar que los repositorios oficiales estén más o menos completos, para eso debemos modificar el archivo /etc/apt/sources.list.d/ubuntu.sources y dejarlo con lo siguiente:

Types: deb
URIs: http://cl.archive.ubuntu.com/ubuntu/
Suites: resolute
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://cl.archive.ubuntu.com/ubuntu/
Suites: resolute-updates
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://cl.archive.ubuntu.com/ubuntu/
Suites: resolute-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

luego actualizamos la lista de repositorios y los paquetes:

foo@bar:~# apt update && apt full-upgrade -y

Instalación de Escritorio

Hemos elegido instalar las aplicaciones de escritorio y al final el kernel Linux, un poco para mostrar lo elegante que es el sistema de paquetería de Debian, un poco para mostrar lo separado que está el kernel de las aplicaciones de sistema (eventualmente podríamos usar otro kernel).

Si queremos la instalación mínima de un escritorio:

foo@bar:~# apt install -y ubuntu-desktop

o bien, la instalación mínima de un servidor:

foo@bar:~# apt install -y ubuntu-server

Esta es la parte que más demora de la instalación que se realiza con el clásico CD de instalación, en nuestro caso todo depende de qué tan rápida es nuestra conexión a Internet (en la descarga de paquetes) y de qué tan rápido es nuestra máquina (en la instalación de paquetes).

Ahora pasamos a instalar o configurar algunas aplicaciones adicionales:

Teclado

Para configurar el teclado:

foo@bar:~# dpkg-reconfigure keyboard-configuration

Fecha y Hora

Para configurar el ''time-zone''

foo@bar:~# dpkg-reconfigure tzdata

y para que nuestro ''RTC'' no modifique el ''RTC'' de la máquina:

foo@bar:~# apt install -y util-linux-extra
foo@bar:~# hwclock --systohc --local

Deshabilitar Apport

Deshabilitaremos apport para no ver los molestos y eternos mensajes de advertencia cuando ocurre algún error

foo@bar:~# rm -f /var/crash/*
foo@bar:~# sed -i s,enabled=1,enabled=0,g /etc/default/apport

Acceso remoto

Para acceder a nuestra máquina remotamente:

foo@bar:~# apt install -y ssh fail2ban net-tools

Soporte Media

Para poder ejecutar videos o audios en formatos privativos:

foo@bar:~# apt install -y libavcodec-extra
foo@bar:~# apt install -y ubuntu-restricted-extras

Soporte de idioma

Algo que nos podemos dar cuenta es que hay un problema con el idioma, por esto hemos accedido al chroot con las variables de entorno LC_ALL=C LANGUAGE=C LANG=C.UTF-8, de lo contrario veríamos lo siguiente cada vez que utilicemos algo como apt:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "es_CL.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

en nuestro caso lo que no va a encontrar es la locale es_CL.UTF-8, para no arrastrar este error en el futuro lo solucionaremos instalando el soporte de lenguaje español:

foo@bar:~# apt install -y language-selector-common
foo@bar:~# apt install -y $(check-language-support -l es)
foo@bar:~# apt install -y $(check-language-support -l en)

Usuario administrador

Para finalizar con el escritorio, añadimos un super usuario (recordemos que nuestro super usuario será lsaavedr):

foo@bar:~# adduser lsaavedr
foo@bar:~# adduser lsaavedr adm
foo@bar:~# adduser lsaavedr sudo
foo@bar:~# adduser lsaavedr dialout
foo@bar:~# adduser lsaavedr lpadmin
foo@bar:~# adduser lsaavedr audio
foo@bar:~# adduser lsaavedr video

Ojo con el nombre del usuario lsaavedr, quizá te gustaría otro nombre.

Theme

Un poco de cosmética

foo@bar:~# apt install -y gnome-tweaks ubuntu-artwork dmz-cursor-theme dbus-x11
foo@bar:~# su - lsaavedr
lsaavedr@bar:~$ dbus-run-session -- bash
lsaavedr@bar:~$ gsettings set org.gnome.desktop.interface accent-color 'purple'
lsaavedr@bar:~$ gsettings set org.gnome.desktop.interface font-name 'Adwaita Sans 9'
lsaavedr@bar:~$ gsettings set org.gnome.desktop.interface gtk-enable-primary-paste true
lsaavedr@bar:~$ gsettings set org.gnome.desktop.interface cursor-theme 'Yaru'
lsaavedr@bar:~$ gsettings set org.gnome.desktop.interface icon-theme 'Yaru-magenta-dark'
lsaavedr@bar:~$ gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark'
lsaavedr@bar:~$ gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
lsaavedr@bar:~$ gsettings set org.gnome.desktop.interface clock-show-seconds true
lsaavedr@bar:~$ gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'nothing'
lsaavedr@bar:~$ gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
lsaavedr@bar:~$ gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action 'nothing'
lsaavedr@bar:~$ gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action 'nothing'
lsaavedr@bar:~$ gsettings set org.gnome.settings-daemon.plugins.power power-button-action 'nothing'
lsaavedr@bar:~$ gsettings set org.gnome.settings-daemon.plugins.power ambient-enabled false
lsaavedr@bar:~$ gsettings set org.gnome.system.locale region 'es_CL.UTF-8'
lsaavedr@bar:~$ gsettings set org.gnome.shell.extensions.dash-to-dock dock-position 'BOTTOM'
lsaavedr@bar:~$ gsettings set org.gnome.desktop.background picture-uri 'file:///usr/share/backgrounds/manuej-Vor.jpg'
lsaavedr@bar:~$ gsettings set org.gnome.desktop.background picture-uri-dark 'file:///usr/share/backgrounds/manuej-Vor.jpg'
lsaavedr@bar:~$ gsettings set org.gnome.settings-daemon.plugins.housekeeping donation-reminder-enabled false
lsaavedr@bar:~$ gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 42
lsaavedr@bar:~$ gsettings set org.gnome.shell.extensions.ding show-trash false
lsaavedr@bar:~$ gsettings set org.gnome.shell.extensions.ding show-volumes false
lsaavedr@bar:~$ gsettings set org.gnome.shell favorite-apps "['org.gnome.Nautilus.desktop', 'org.gnome.Ptyxis.desktop', 'org.gnome.Terminal.desktop', 'org.gnome.Calendar.desktop']"
lsaavedr@bar:~$ exit
lsaavedr@bar:~$ exit

Configuración de Arranque

Para saber qué tipo de arranque tenemos en nuestra máquina ejecutamos:

foo@bar:~# [ -d /sys/firmware/efi ] && echo "EFI boot" || echo "Legacy boot"

EFI boot

Si aparece EFI boot y tenemos una partición extra /dev/sdb1 de más menos 100Mb, de tipo EFI, podemos instalar grub-efi de la siguiente forma:

foo@bar:~# mkfs.vfat /dev/sdb1
foo@bar:~# mkdir -p /boot/efi
foo@bar:~# mount /dev/sdb1 /boot/efi
foo@bar:~# apt purge -y grub-gfxpayload-lists grub-pc grub-pc-bin
foo@bar:~# apt install -y grub-efi-amd64
foo@bar:~# grub-install --removable --no-uefi-secure-boot --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=grub --recheck /dev/sdb
foo@bar:~# update-grub
foo@bar:~# update-initramfs -u

Legacy boot

Si aparece Legacy boot entonces hacemos lo siguiente:

foo@bar:~# apt install -y grub-pc
foo@bar:~# grub-install --removable --target=i386-pc --boot-directory=/boot --bootloader-id=grub --recheck /dev/sdb
foo@bar:~# update-grub
foo@bar:~# update-initramfs -u

fstab

El archivo fstab es el que se encarga de darle funciones a las particiones de los discos en nuestro sistema, para configurar el fstab lo haremos de la forma más genérica posible ya que nuestra unidad puede ser externa y no sabremos a priori que nombre tendrá debemos utilizar un identificador moderno de las unidades de disco /dev/sdb1, /dev/sdb2, /dev/sdb3, /dev/sdb4, para ver estos identificadores:

foo@bar:~# blkid /dev/sdb*

luego para configurar el archivo /etc/fstab reemplazamos correctamente nuestros UUID:

# <device>                                   <dir>        <type>    <options>                           <dump>  <fsck>
UUID=95181871-646d-4917-972d-25bf81dedeb3    none         swap      defaults                            0       0
UUID=4F54-32E9                               /boot/efi    vfat      defaults                            0       1
UUID=af2b7fd9-0876-41d4-929a-91bdd391028f    /            ext4      rw,relatime,discard,data=ordered    0       2
UUID=20c22b02-d5cb-44b2-9c59-d074408edc4e    /home        ext4      rw,relatime,discard,data=ordered    0       3

por último movemos la carpeta de nuestro usuario al nuevo home:

foo@bar:~# mv /home/lsaavedr /root/
foo@bar:~# mount -a
foo@bar:~# mv /root/lsaavedr /home/

Instalación del Kernel

Para finalizar instalamos el kernel:

foo@bar:~# apt install -y linux-image-generic

o la versión oem:

foo@bar:~# apt install -y linux-image-oem-26.04

Antes de reiniciar

Antes de reiniciar podrías querer desmontar la partición:

foo@bar:~# umount /boot/efi
foo@bar:~# umount /home
foo@bar:~# exit
foo@bar:~# umount -l $PWD/ubuntu/sys
foo@bar:~# umount -l $PWD/ubuntu/dev
foo@bar:~# umount -l $PWD/ubuntu/proc
foo@bar:~# umount -l $PWD/ubuntu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment