Para impacientes: en este enlace he puesto la image iso de la distribución, lista para descargar y "quemar" en un USB (ver más abajo sobre el quemado).
De momento, el ubuntu customization kit sigue siendo la manera más rápida y fácil de crear una distribución ubuntu a medida. En el artículo Cómo crear una distribución ubuntu a medida con uck está todo muy bien explicado.
Lo malo es que el proyecto está en estado de "discontinued" … además, no parece haber alternativa a día de hoy: alternativeto.net/software/uck/
Como era de esperar, por tanto, el proceso que se describe en el artículo anterior produce errores con distribuciones modernas.
Por suerte, en esta respuesta explican qué hacer:
- instalar el paquete gfxboot-theme-ubuntu
- instalar el paquete syslinux-utils si se quiere un ISO híbrido (la utilidad es "isohybrid")
- dejar en blanco las dos primeras preguntas sobre los lenguajes. En la tercera, es interesante escoger "es" para que funcione un teclado español
-
cambiar el fichero /usr/lib/uck/customization-profiles/localized_cd/customize_iso por lo que pego más abajo. Es buena idea, como de costumbre, hacer una copia de seguridad del fichero original:
sudo cp /usr/lib/uck/customization-profiles/localized_cd/customize_iso /usr/lib/uck/customization-profiles/localized_cd/customize_iso.backup
Grabación ("quemar")
El último paso es grabar el iso en un disco USB. Ellos recomiendan unetbootin tiene la opción "Space used to preserve files across reboots (Ubuntu only)". Como su nombre indica, crea un disco virtual con información que no se pierde entre distintas sesiones ("persistente"). También he probado mkusb, que parece muy completo y ofrece la opción de permanencia, además de la posibilidad de crear una partición de datos legible desde windows en el USB. También funciona el "startup disk creator", pero este no permite ya la opción que acabamos de comentar (antes, sí).
También puede grabarse desde windows, con utilidades como etcher, rufus o yumi. Por lo visto, ninguna de estas ofrece la opción de persistencia. La única que parece funcionar es lili usb. Para que ofrezca la opción de permanencia, hay que convencerle de que tenemos una distribución de tipo ubuntu; basta con cambiar el nombre al fichero iso para ello.
Por desgracia, he comprobado que un USB puede no funcionar en todos los ordenadores. De hecho, a veces funciona una primera vez, pero la segunda ya no, y además el USB se queda corrupto y no vuelve a funcionar más correctamente (se puede volver a utilizar, claro está, repitiendo con él el proceso).
El fichero corregido
#!/bin/bash
###################################################################################
# UCK – Ubuntu Customization Kit #
# Copyright (C) 2006-2010 UCK Team #
# #
# UCK is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# UCK is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with UCK. If not, see <http://www.gnu.org/licenses/>. #
#################################################################################### NAME:
# customize_iso — customize iso image outside of root FS
#
# SYNOPSIS:
# customize_iso [remaster_home] [customization_scripts_dir]
#
# DESCRIPTION:
# This procedure performs additional customization that needs to
# happen outside of the image of the root file system:
# – Configuration of the boot environment
# – isolinux configuration
# – gfxboot configuration (language/keyboard support!)
# – propagation of a new kernel/initrd
# – Simple bootmanager (directory "install" in image)
# – Configuration of additional resources outside the root FS
# – Add-Ons (like sample document/music/video files)
# – More Add-Ons (like OSS for Win / Mac)
#
# NOTES:
# Execution of the procedure may require Internet access to download
# the source of the latest version gfxboot-theme-ubuntu.
#
# If a local copy of gfxboot-theme-ubuntu is available in the remaster
# home, it will be used instead of a (possibly updated) download.SCRIPT_DIR=`dirname "$0"`
REMASTER_HOME=${1:-~/tmp}
SCRIPT_DIR=${2-$REMASTER_HOME/customization-scripts}
ISO_REMASTER_DIR="$REMASTER_HOME/remaster-iso"
REMASTER_DIR="$REMASTER_HOME/remaster-root"
BOOT_LANG=`cat "$SCRIPT_DIR/livecd_locale"`function failure()
{
echo "$@"
exit 1
}function get_latest_kernel()
{
set — $(ls "$REMASTER_DIR"/boot/vmlinuz* 2>/dev/null |
sed -e "s@$REMASTER_DIR/boot/@@" |
tr — '-.' '\t' |
sort –key=2 –key=3 –key=4 –key=5 –numeric-sort |
tail -n1 )
[ “$1” = “vmlinuz” ] && echo "$REMASTER_DIR/boot/$1-$2.$3.$4-$5-$6"
}# Create a temporary directory to assemble the gfxboot stuff in
BUILD_DIR=`mktemp -d`
if [ -d $REMASTER_HOME/gfxboot-theme-ubuntu ]
then
cp -r $REMASTER_HOME/gfxboot-theme-ubuntu "$BUILD_DIR" ||
failure "Cannot copy gfxboot-theme-ubuntu to $BUILD_DIR"
pushd "$BUILD_DIR" >/dev/null ||
failure "Cannot change directory to $BUILD_DIR"
else
pushd "$BUILD_DIR" >/dev/null ||
failure "Cannot change directory to $BUILD_DIR"
#—–HS (1)–>
#DISTRO_CODENAME=`cd "$ISO_REMASTER_DIR"/dists && find . -maxdepth 1 -type d | grep '/' | cut -d '/' -f2` ||
# failure "Unable to identify Ubuntu distro codename"
DISTRO_CODENAME="$(lsb_release -c|awk '{print $2}')"||
failure "Unable to identify Ubuntu distro codename"
#—–HS (1)–<
APT_SOURCES_TMP_DIR=`mktemp -d`
wget -c http://archive.ubuntu.com/ubuntu/ubuntu/ubuntu/dists/$DISTRO_CODENAME/main/source/Sources.gz -O "$APT_SOURCES_TMP_DIR"/Sources.gz
#—–HS (2)–>
#GFXBOOT_THEME_UBUNTU_SOURCE_PACKAGE=http://archive.ubuntu.com/ubuntu/ubuntu/ubuntu/pool/main/g/gfxboot-theme-ubuntu/$(zgrep gz "$APT_SOURCES_TMP_DIR"/Sources.gz | grep gfxboot-theme-ubuntu | sed -n 1p | awk '{ print $3 }')
GFXBOOT_THEME_UBUNTU_SOURCE_PACKAGE=http://archive.ubuntu.com/ubuntu/ubuntu/ubuntu/pool/main/g/gfxboot-theme-ubuntu/$(dpkg -l|grep gfxboot-theme-ubuntu|awk '{print $2"_"$3"_"$4".deb"}')
#—–HS (2)–<
wget $GFXBOOT_THEME_UBUNTU_SOURCE_PACKAGE ||
failure "Unable to download gfxboot-theme-ubuntu source package from $GFXBOOT_THEME_UBUNTU_SOURCE_PACKAGE"
#—–HS (3)–>
#tar xfz *.tar.gz ||
tar xfz *.tar.gz
dpkg -x *.deb . ||
failure "Unable to extract gfxboot-theme-ubuntu source package"
#—–HS (3)–<
fi# Build the gfx boot theme
#—–HS (4)–>
cd usr/share
#—–HS (4)–<
cd gfxboot-theme-ubuntu
cd po
ln -s pt.po pt_PT.po
cd ..
##if [ “$BOOT_LANG” = “pt_PT” ]; then
## make DEFAULT_LANG="pt" || failure "Failed to build gfxboot theme"
##else
make DEFAULT_LANG="$BOOT_LANG" || failure "Failed to build gfxboot theme"
##fi# Fix list of languages
pushd boot >/dev/null# Create regexp that matches all language packs on CD
langpack=""
for langpack in `cat "$SCRIPT_DIR/language_packs"`; do
if [ -z “$LANGPACKS” ]; then
LANGPACKS="$langpack"
else
LANGPACKS="$LANGPACKS|$langpack"
fi
done# Rewrite langlist
cat "$SCRIPT_DIR/livecd_locales" >langlist
popd >/dev/null# Copy to isolinux in image directory
cp -af boot/* "$ISO_REMASTER_DIR/isolinux/" ||
failure "Error while copying boot files to $ISO_REMASTER_DIR/isolinux"popd >/dev/null
# Cleanup
[ “$BUILD_DIR” != “/” ] && rm -rf "$BUILD_DIR"# Copy kernel and initrd, in case it was changed during installation
VMLINUZ=$(get_latest_kernel)
if [ “$VMLINUZ” != “” ]
then
INITRD="$REMASTER_DIR"/boot/initrd.img-$(echo `basename $VMLINUZ` | cut -d'-' -f 2-)
if [ -e “$VMLINUZ” -a -e “$INITRD” ]
then
echo "Updating kernel:"
echo " kernel=$VMLINUZ"
echo " initrd=$INITRD"
cp -f "$VMLINUZ" "$ISO_REMASTER_DIR/casper/vmlinuz"
cp -f "$INITRD" "$ISO_REMASTER_DIR/casper/initrd.gz"
else
echo "Not updating kernel as initrd not present"
fi
fi# Misc fixup for Karmic
pushd "$ISO_REMASTER_DIR"/isolinux >/dev/null# What used to be called "message" is now called "bootlogo"
if [ -f isolinux.cfg -a -n “`grep “gfxboot bootlogo” isolinux.cfg 2>/dev/null`” ]
then
if [ -f message ]
then
echo "Using bootlogo instead of message"
mv message bootlogo
fi
fi# What used to be a gzipped initrd now is a lzma compressed initrd
if [ -f text.cfg ] || [ -f txt.cfg ]
then
# At least one of the .cfg file will be missing. Drop error message.
lzused=`grep initrd.lz text.cfg txt.cfg 2>/dev/null`
lzmacmd=`which lzma`
if [ -n “$lzused” ]
then
if [ -n “$lzmacmd” ]
then
if [ -f ../casper/initrd.gz ]
then
pushd "$ISO_REMASTER_DIR"/casper >/dev/null
echo "Recompressing initrd from gzip to lzma"
rm -f initrd.lz
gunzip <initrd.gz | $lzmacmd >initrd.lz
rm -f initrd.gz
popd >/dev/null
fi
else
if [ -f ../casper/initrd.gz ]
then
echo "lzma command not installed"
echo "Switching permanently to gzipped initrd"
sed -i -e 's/initrd\.lz/initrd.gz/g' text.cfg txt.cfg
rm -f ../casper/initrd.lz
else
: do nothing – no initrd.gz
fi
fi
else
: do nothing – initrd.lz not used
fi
fi
Comentarios recientes