Aprende a crear tu propio sistema operativo

De Documentacion NexuN

Vamos a crear un Sistema Operativo (SO) para nuestro instituto, lo haremos a partir de la distribución GNU/Linux Ubuntu.

Primero instalamos los programas necesarios:

  sudo aptitude install squashfs-tools genisoimage


Vamos a nuestro HOME:

  cd

Creamos la carpeta livecdtmp

  mkdir livecdtmp
  cd livecdtmp

Dentro creamos la carpeta mnt donde vamos a montar la iso de Ubuntu (que previamente nos hemos bajado de la web oficial de Ubuntu)

  mkdir mnt
  sudo mount -o loop ubuntu-10.04.1-desktop-i386.iso mnt


Después descomprimimos los programas. (puede tardar un poco)

  rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd
  sudo unsquashfs mnt/casper/filesystem.squashfs
  sudo mv squashfs-root edit

Copiamos la configuración de la red de nuestro sistema dentro del liveCD virtual que estamos creando (en edit)

  sudo cp /etc/resolv.conf edit/etc/
  sudo cp /etc/hosts edit/etc/ 
  sudo mount --bind /dev/ edit/dev


Bajamos la imagen warty-final-ubuntu.png y la colocamos dentro de ~/livecdtmp. Finalmente la copiamos dentro de nuestro liveCD virtual


  sudo cp warty-final-ubuntu.png edit/usr/share/backgrounds/warty-final-ubuntu.png
 

Hacemos una jaula dentro del liveCD virtual

  sudo chroot edit

Asegúrate de que ya no estas en tu ordenador, ahora tienes que estar en la jaula de root, ¿Cómo lo haces? si ejecutas el comando ls /home ya no tiene que aparecer tu home :-)

Montamos el sistema virtual:

  mount -t proc none /proc
  mount -t sysfs none /sys
  mount -t devpts none /dev/pts
  export HOME=/root
  export LC_ALL=C
  dbus-uuidgen > /var/lib/dbus/machine-id
  dpkg-divert --local --rename --add /sbin/initctl
  ln -s /bin/true /sbin/initctl


Comprobamos que tenemos red y que el servidor de nombres funciona

  ping www.google.com

Abrimos el gestor de programas synaptic

  synaptic

Añadimos los repositorios Universe par ello:

Setting - Software Sources - Community-maintained Open source sofware (universe)

no olvidemos hacer (Reload) e instalamos los siguientes programas desde el synaptic o utlizando la linea de comandos como mostramos a continuación:


  apt-get install tree
  apt-get install vim
  apt-get install gparted
  apt-get install openssh-server
  apt-get install gimp
  apt-get install italc-client


Para tener espacio en nuestro liveCD, desinstalamos los siguientes programas:

  apt-get purge evolution
  apt-get purge aisleriot
  apt-get purge quadrapassel
  apt-get purge gnome-sudoku
  apt-get purge gbrainy
  apt-get purge pitivi
  apt-get purge gwibber
  apt-get purge empathy
  apt-get purge totem
  apt-get purge rhythmbox
  apt-get purge gnome-mahjongg
  apt-get purge gnomine
  apt-get gnome-games-common


Si queremos cambiar la configuración por defecto que tiene cualquier usuario tendremos que modificar los archivo de : /etc/skel/

Para ver los paquetes instalados y lo que ocupan:

  dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | less

Limpiamos los restos de la instalación y los archivos de configuración

  aptitude clean
  rm -rf /tmp/* ~/.bash_history
  rm /etc/hosts
  rm /etc/resolv.conf
  rm /var/lib/dbus/machine-id
  rm /sbin/initctl
  dpkg-divert --rename --remove /sbin/initctl
  umount /proc || umount -lf /proc
  umount /sys
  umount /dev/pts

Nos salimos del liveCD virtual (jaula) y desmontamos edit/dev

  exit
  sudo umount edit/dev

Volvemos a comprimir los programas: (puede tardar un poco)

  chmod +w extract-cd/casper/filesystem.manifest
  sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
  sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
  sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
  sudo sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop
  sudo rm extract-cd/casper/filesystem.squashfs
  sudo mksquashfs edit extract-cd/casper/filesystem.squashfs

Cambiamos deskdefines:

  printf $(sudo du -sx --block-size=1 edit | cut -f1) > extract-cd/casper/filesystem.size
  chmod u+rw extract-cd/README.diskdefines
  sudo vim extract-cd/README.diskdefines

Cuando se abra con el editor vim cambiamos:

 #define DISKNAME  Ubuntu 10.04.1 LTS "Lucid Lynx" - Release i386
 por
 #define DISKNAME  Distribución de IES Fco. de Quevedo i386

Generamos la nueva suma md5 (puede tardar un poco)

  cd extract-cd
  sudo rm md5sum.txt
  find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt

Creamos la nueva imagen (iso) con nuestra distribución [seguimos dentro de extract-cd]

  sudo mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-LTS-Quevedo.iso .

Finalmente podemos probar la imagen creada con una maquina virtual.


Imagen:Ubuntu-quevedo.png


Este tutorial esta basado en:


https://help.ubuntu.com/community/LiveCDCustomization


Dependiendo de uso que vayamos hacer del sistema operativo podemos instalar diferentes programas.


http://observatorio.ofset.org/soft_educativo.html


--Dani 12:41 13 feb 2011 (UTC)

Herramientas personales