En esta oportunidad veremos como instalar Ubuntu
noble 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.
- La partición se encuentra en
/dev/sdb2
- La partición se montará en
$PWD/ubuntu
(debe ser/root/ubuntu
) - El nombre de nuestro equipo será
pcsito
y el dominiossd
- El super usuario se llamará
lsaavedr
Accedemos como root y configuramos este sistema:
foo@bar:~$ sudo su -
foo@bar:~# mkfs.ext4 /dev/sdb2 -L noble
foo@bar:~# mkdir -p $PWD/ubuntu
foo@bar:~# mount /dev/sdb2 $PWD/ubuntu
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 Noble
. Para instalarlo utilizamos:
foo@bar:~# aptitude 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 noble $PWD/ubuntu http://cl.archive.ubuntu.com/ubuntu
si aparece un error como este:
E: No such script: /usr/share/debootstrap/scripts/noble
tan sólo nos falta un enlace simbólico:
foo@bar:~# ln -s gutsy /usr/share/debootstrap/scripts/noble
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
noble
- 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 noble
), pero también algunos querrán cambiar la arquitectura de la máquina, por ejemplo con --arch=i386
o --arch=arm64
.
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 --bind /dev $PWD/ubuntu/dev
foo@bar:~# mount --bind /dev/pts $PWD/ubuntu/dev/pts
foo@bar:~# mount --bind /proc $PWD/ubuntu/proc
foo@bar:~# mount --bind /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.
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 utiliza apt-get
que es una herramienta bastante popular pero de bajo nivel, por esta razón instalaremos con aptitude
que por un lado reemplaza en bastantes tareas a apt-get
y por el otro nos ofrece un sistema de instalación de alto nivel, o por lo menos lo suficiente para no complicarnos demasiado resolviendo dependencias. También a modo de subir el nivel de abstracción más adelante instalaremos tasksel
, que es una herramienta que se encarga de instalar una serie de aplicaciones necesarias p, algo así como instalara un ambiente de trabajo (servidor o escritorio por ejemplo):''metapackete'' pero con la esperanza de que el nombre no cambiará en el futuro.ar un
foo@bar:~# apt-get update
foo@bar:~# apt-get install -y aptitude command-not-found locate nano
command-not-found
nos va a servir para ver recomendaciones de paquetes (según qué comando intentemos ejecutar en el terminal) y nano
es un editor de texto que se puede usar desde el terminal.
Debemos verificar que los repositorios oficiales estén más o menos completos, para eso debemos modificar el archivo /etc/apt/sources.list
y dejarlo con lo siguiente:
deb http://cl.archive.ubuntu.com/ubuntu noble main restricted universe multiverse
deb http://cl.archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse
deb http://cl.archive.ubuntu.com/ubuntu noble-security main restricted universe multiverse
luego actualizamos la lista de repositorios y los paquetes:
foo@bar:~# aptitude update && aptitude full-upgrade -y
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 servidor:
foo@bar:~# aptitude install -y ubuntu-server
o bien, la instalación tipo escritorio:
foo@bar:~# aptitude install -y ubuntu-desktop
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:
Para configurar el teclado:
foo@bar:~# dpkg-reconfigure keyboard-configuration
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:~# aptitude install -y util-linux-extra
foo@bar:~# hwclock --systohc --local
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
Ojo con el nombre del usuario lsaavedr
, quizá te gustaría otro nombre.
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
Desde hace un buen rato que podemos instalar packetes con nuestras aplicaciones favoritas, incluso utilizar algunos de ellos, por ejemplo:
Para acceder a nuestra máquina remotamente:
foo@bar:~# aptitude install -y ssh fail2ban net-tools
Un poco de cosmética
foo@bar:~# aptitude install -y gnome-tweaks ubuntu-artwork dmz-cursor-theme lightdm dbus-x11
foo@bar:~# su - lsaavedr
lsaavedr@bar:~$ export DISPLAY=:0
lsaavedr@bar:~$ dbus-launch --exit-with-session bash
lsaavedr@bar:~$ gsettings set org.gnome.desktop.interface cursor-theme 'Yaru'
lsaavedr@bar:~$ gsettings set org.gnome.desktop.interface icon-theme 'ubuntu-mono-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.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.desktop.interface clock-show-seconds true
lsaavedr@bar:~$ gsettings set com.canonical.indicator.datetime show-seconds true
lsaavedr@bar:~$ gsettings set com.canonical.indicator.keyboard visible false
lsaavedr@bar:~$ gsettings set org.gnome.system.locale region 'es_CL.UTF-8'
lsaavedr@bar:~$ gsettings set com.canonical.indicator.datetime timezone-name 'America/Santiago Santiago'
lsaavedr@bar:~$ exit
lsaavedr@bar:~$ killall dbus-launch
lsaavedr@bar:~$ exit
Si instalamos el escritorio GNOME
, instalaremos la posibilidad de acceder a una sesión más simple:
foo@bar:~# aptitude install -y gnome-session-flashback
Para poder ejecutar videos o audios en formatos privativos:
foo@bar:~# aptitude install -y libavcodec-extra
foo@bar:~# aptitude install -y ubuntu-restricted-extras
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 aptitude
:
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:~# aptitude install -y language-selector-common
foo@bar:~# aptitude install -y $(check-language-support -l es)
Para finalizar instalamos el kernel
:
foo@bar:~# aptitude install -y linux-image-generic
Para saber qué tipo de arranque tenemos en nuestra máquina ejecutamos:
foo@bar:~# [ -d /sys/firmware/efi ] && echo "EFI boot" || echo "Legacy 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:~# aptitude purge -y grub-gfxpayload-lists grub-pc grub-pc-bin
foo@bar:~# aptitude 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-grub2
foo@bar:~# update-initramfs -u
Si aparece Legacy boot
entonces hacemos lo siguiente:
foo@bar:~# aptitude install -y grub-pc
foo@bar:~# grub-install --removable --target=i386-pc --boot-directory=/boot --bootloader-id=grub --recheck /dev/sdb
foo@bar:~# update-grub2
foo@bar:~# update-initramfs -u
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/
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 $PWD/ubuntu/sys
foo@bar:~# umount $PWD/ubuntu/dev/pts
foo@bar:~# umount $PWD/ubuntu/dev
foo@bar:~# umount $PWD/ubuntu/proc
foo@bar:~# umount $PWD/ubuntu
Esto lo he utilizado por años pero lo tenía en stackedit.io y ese sitio envejeció mal :P