Kit de supervivencia para trabajos prácticos
Listamos aquí un material de referencia sobre un conjunto de conocimientos previos necesarios para la parte práctica de la materia.
Sin prejuicio a talleres puntuales que se planteen sobre la cursada, se recomienda el estudio individual de aquellas herramientas con las que los estudiantes estén menos familiarizados.
Software a instalar
El software indispensable para realizar los trabajos prácticos es:
- Compiladores GCC (con soporte para 32-bits) y Clang
- glibc (biblioteca estándar de C) y archivos “include” de Linux
- gdb, make, git, clang-format
En Debian y distribuciones derivadas, se puede instalar mediante:
1
2
$ sudo apt install make git gdb clang clang-format \
libbsd-dev gcc-multilib libc6-dev linux-libc-dev
QEMU
Es un software que permite la virtualización de diferentes arquitecturas (similar a VirtualBox). Además permite configurar la imagen de un disco y se conecta fácilmente con GDB.
Es necesario únicamente para la realización del TP2: sched
Además de QEMU es necesario instalar un simulador de BIOS (seabios).
1
$ sudo apt install seabios qemu-system-x86
La versión de QEMU debe ser 2.5 o superior, y la versión de seabios 1.10 o superior.
Existe un known issue relacionado a la versión de QEMU y la distribución del SO que se esté utilizando. Una solución es descargar la versión correcta de QEMU y hacer un downgrade de la versión actual.
Para saber si es necesario hacerlo, se recomienda ejecutar los siguientes comandos y comparar su salida (en especial tener en cuenta el número final de QEMU, en este caso 7.36. La versión de su SO, puede variar):
1
2
3
4
5
6
7
8
9
10
11
$ qemu-system-i386 --version | head -1
QEMU emulator version 2.11.1(Debian 1:2.11+dfsg-1ubuntu7.36)
$ gcc --version | head -1
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
$ gdb --version | head -1
GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1
Si su salida es similar con la que se muestra, entonces es necesario realizar el downgrade de la versión. Se puede hacer de la siguiente forma:
- Bajar el binario de QEMU
1
$ wget http://launchpadlibrarian.net/508305356/qemu-system-x86_2.11+dfsg-1ubuntu7.34_amd64.deb
- Realizar el downgrade
1
$ sudo dpkg -i qemu-system-x86_2.11+dfsg-1ubuntu7.34_amd64.deb
Entorno virtual (recomendado)
Si bien la mejor alternativa es siempre correr en una distribución de Linux nativa, recomendamos a aquellos usuarios de Windows o MacOS que configuren un entorno Unix-like mediante el uso de una máquina virtual.
Proveemos un instructivo para configurar una máquina virtual de Ubuntu usando Vagrant y VirtualBox en esta página.
Manejo básico de entornos Unix (WIP)
- Referencias útiles para comenzar a investigar: The Missing Semester of Your CS Education y Linux Journey. Los temas que se incluyen son variados, entre ellos:
- shell scripting & commands
- Git
- File System
- Procesos del sistema
- SSH
- Permisos de usuario
- Dispositivos externos
- Networking
- Google-fu
- Administrador de paquetes de la distribución instalada (apt, yum, etc) para instalar software.
- Shell scripting, en bash o shell de su preferencia.
- Manejo de la línea de comandos:
- man, vi, cd, ls, mkdir, chmod, chown, grep, sudo, head, tail, ps, cat, less, kill, strace
- Guía básica de la materia
- Lenguaje C:
- Manejo de punteros y memoria dinámica.
- Uso de debugger gdb.
- Compilación con gcc
- Lenguaje Assembler intel X86
- Make: uso de la herramienta y archivos Makefile
- Recomendado instalar Linux en hardware real (no máquina virtual).