Line 1: |
Line 1: |
− | =Instalacion y configuracion de QEMU= | + | = Instalación y configuración de Qemu= |
− | {En construccion} | + | Esta sección es una compilación de Tutoriales para la instalación de fedora con arquitectura arm en qemu. |
| + | ==Primeros pasos.== |
| + | Lo primero<ref name="Qemu-install">[https://fedoraproject.org/wiki/Architectures/ARM/Versatile_Express#Versatile_Express]Tutorial ARM/Versatile Express</ref> que necesitamos es instalar Qemu. Lo podemos hacer con el gestor de paquetes. |
| + | Para fedora: |
| + | #yum install qemu |
| + | Para otras distribuciones otra alternativa es bajar la [http://wiki.qemu.org/Download ultima version] de Qemu y compilarla. |
| + | Una vez termine nos aseguramos que lo tenemos instalado |
| + | $qemu-system-arm --version |
| + | QEMU emulator version 1.4.1, Copyright (c) 2003-2008 Fabrice Bellard |
| + | |
| + | El siguiente paso es descargar una imagen de Fedora arm que podemos conseguir en su [http://fedoraproject.org/ Pagina Oficial]. |
| + | Para este tutorial usamos estas: |
| + | *[http://mirrors.kernel.org/fedora-secondary/releases/17/Images/armhfp/Fedora-17-armhfp-vexpress-mmcblk0.img.xz Img] |
| + | *[http://mirrors.kernel.org/fedora-secondary/releases/17/Images/armhfp/Fedora-17-armhfp-vexpress-mmcblk0-kernel.tar.xz Kernel] |
| + | Necesitamos la imagen .img y el kernel.tar de Versatile Express<ref name="vexpress">[http://www.arm.com/products/tools/development-boards/versatile-express/index.php]Informacion sobre Versatile Express.</ref> |
| + | Luego las descomprimimos con el comando unxz. por Ejemplo: |
| + | $unxz Fedora-17-armhfp-vexpress-mmcblk0.img.xz |
| + | $unxz Fedora-17-armhfp-vexpress-mmcblk0-kernel.tar.xz |
| + | y obtendremos los siguientes archivos: |
| + | :Fedora-17-armhfp-vexpress-mmcblk0.img |
| + | :Fedora-17-armhfp-vexpress-mmcblk0-kernel.tar |
| + | Extraemos el tar: |
| + | $tar -x Fedora-17-armhfp-vexpress-mmcblk0-kernel.tar |
| + | Accedemos a la carpeta boot del paquete del kernel |
| + | $cd armhfp-vexpress-mmcblk0/boot |
| + | y ejecutamos el script ''boot-vexpress'' o ''boot-vexpress+x'' el cual recibe 3 parametros: |
| + | #El kernel. (contenida en la carpeta boot) |
| + | #La imagen de Ram inicial. (contenida en la carpeta boot) |
| + | #La imagen de Fedora que descargamos. |
| + | Por ejemplo: |
| + | $sudo boot-vexpress vmlinuz-3.4.2-3.fc17.armv7hl initramfs-3.4.2-3.fc17.armv7hl.img /<path>/<to-image>/Fedora-17-armhfp-vexpress-mmcblk0.img |
| + | En este momento deberiamos tener la vm corriendo nuestro fedora arm. |
| + | |
| + | ==Redimensionar imagen== |
| + | Al correr la vm nos damos cuenta que la imagen que descargamos solo tiene unos 600 MB libres aproximadamente, lo que para nuestro proposito no es suficiente. |
| + | Vemos las particiones con fdisk: |
| + | $ fdisk Fedora-17-armhfp-vexpress-mmcblk0.img |
| + | Welcome to fdisk (util-linux 2.21.2). |
| + | |
| + | Changes will remain in memory only, until you decide to write them. |
| + | Be careful before using the write command. |
| + | |
| + | |
| + | Command (m for help): p |
| + | |
| + | Disk Fedora-17-armhfp-vexpress-mmcblk0.img: 1888 MB, 1888485376 bytes |
| + | 255 heads, 63 sectors/track, 229 cylinders, total 3688448 sectors |
| + | Units = sectors of 1 * 512 = 512 bytes |
| + | Sector size (logical/physical): 512 bytes / 512 bytes |
| + | I/O size (minimum/optimal): 512 bytes / 512 bytes |
| + | Disk identifier: 0x00000000 |
| + | |
| + | Device Boot Start End Blocks Id System |
| + | Fedora-17-armhfp-vexpress-mmcblk0.img1 * 63 1044224 522081 c W95 FAT32 (LBA) |
| + | Fedora-17-armhfp-vexpress-mmcblk0.img2 1044225 3688447 1322111+ 83 Linux |
| + | |
| + | Para eso tenemos varias opciones. Para este tutorial vamos a redimensionar la partición principal<ref name="resize-fs">[http://askubuntu.com/questions/107228/how-to-resize-virtual-machine-disk]How to resize virtual machine disk.</ref>. |
| + | La imagen ''Fedora-17-armhfp-vexpress-mmcblk0.img'' descomprimida ocupa aproximadamente 1.8G |
| + | Para redimensionar la imagen podemos usar el comando '''qemu-img resize <filename> [+ | -]<size>'''. (La VM no debe estar activa!) |
| + | Pero primero crearemos un backup de esta imagen, un simple cp basta. |
| + | $ cp Fedora-17-armhfp-vexpress-mmcblk0.img backup.img |
| + | Luego redimensionamos la imagen, por ejemplo si queremos agregarle 5GB escribimos ''+5G''. |
| + | $ qemu-img resize Fedora-17-armhfp-vexpress-mmcblk0.img +5G |
| + | Image resized. |
| + | Ya tenemos mas espacio, y la vm puede verlo, pero todavía tenemos las viejas particiones. |
| + | Con '''fdisk''' vamos a hacer lo siguiente: |
| + | *Escribimos ''p'' para mostrar la tabla de particiones. |
| + | $ fdisk Fedora-17-armhfp-vexpress-mmcblk0.img |
| + | Welcome to fdisk (util-linux 2.21.2). |
| + | |
| + | Changes will remain in memory only, until you decide to write them. |
| + | Be careful before using the write command. |
| + | |
| + | Command (m for help): p |
| + | |
| + | |
| + | Disk Fedora-17-armhfp-vexpress-mmcblk0.img: 7257 MB, 7257194496 bytes |
| + | 255 heads, 63 sectors/track, 882 cylinders, total 14174208 sectors |
| + | Units = sectors of 1 * 512 = 512 bytes |
| + | Sector size (logical/physical): 512 bytes / 512 bytes |
| + | I/O size (minimum/optimal): 512 bytes / 512 bytes |
| + | Disk identifier: 0x00000000 |
| + | |
| + | Device Boot Start End Blocks Id System |
| + | Fedora-17-armhfp-vexpress-mmcblk0.img1 * 63 1044224 522081 c W95 FAT32 (LBA) |
| + | Fedora-17-armhfp-vexpress-mmcblk0.img2 1044225 3688447 1322111+ 83 Linux |
| + | Vemos como la segunda partición empieza en el sector 1044225. Lo que vamos a hacer es borrar esa partición de la tabla de particiones y creamos una nueva que empieza en el mismo sector pero termina en otro mucho después. Luego la partición va contener un sistema de archivos valido. |
| + | *Escribimos ''d'' (delete) y elegimos la 2da partición |
| + | Command (m for help): d |
| + | Partition number (1-4): 2 |
| + | Partition 2 is deleted |
| + | *Escribimos ''n'' (new) y elegimos partición primaria, la partición 2, el sector de inicio y fin. (en este caso podemos dejar los valores por defecto) |
| + | Command (m for help): n |
| + | Partition type: |
| + | p primary (1 primary, 0 extended, 3 free) |
| + | e extended |
| + | Select (default p): p |
| + | Partition number (1-4, default 2): |
| + | Using default value 2 |
| + | First sector (1044225-14174207, default 1044225): |
| + | Using default value 1044225 |
| + | Last sector, +sectors or +size{K,M,G} (1044225-14174207, default 14174207): |
| + | Using default value 14174207 |
| + | Partition 2 of type Linux and of size 6.3 GiB is set |
| + | *Escribimos ''w'' para guardar los cambios al disco y salir de fdisk. |
| + | Command (m for help): w |
| + | The partition table has been altered! |
| + | |
| + | Syncing disks. |
| + | Ahora debemos redimensionar el filesystem, Para esto necesitamos la posición de la partición en el filesystem (el offset). |
| + | Para eso usamos '''parted''' con la imagen y los argumentos ''u'' ''b'' ("unit bytes") y ''p'' ("print"). |
| + | $ sudo parted Fedora-17-armhfp-vexpress-mmcblk0.img u b p |
| + | Model: (file) |
| + | Disk /<path of>/<file>/Fedora-17-armhfp-vexpress-mmcblk0.img: 7257194496B |
| + | Sector size (logical/physical): 512B/512B |
| + | Partition Table: msdos |
| + | Disk Flags: |
| + | |
| + | Number Start End Size Type File system Flags |
| + | 1 32256B 534643199B 534610944B primary boot, lba |
| + | 2 534643200B 7257194495B 6722551296B primary ext4 |
| + | Ahora que tenemos donde empieza (534643200), creamos un ''loopback block device''<ref name="lofi">[http://en.wikipedia.org/wiki/Loop_device]Loopback block devices</ref> con el comando '''losetup -f --show -o <start block> <filedisk>''' |
| + | $ sudo losetup -f --show -o 534643200 Fedora-17-armhfp-vexpress-mmcblk0.img |
| + | /dev/loop0 |
| + | ''losetup'' te informa que dispositivo eligió (en este caso /dev/loop0). |
| + | ahora podemos verificar el filesystem y luego cambiar su tamaño con '''e2fsck -f /dev/loop0''' y '''resize2fs /dev/loop0''' |
| + | |
| + | $ sudo e2fsck -f /dev/loop0 |
| + | e2fsck 1.42.3 (14-May-2012) |
| + | Pass 1: Checking inodes, blocks, and sizes |
| + | Pass 2: Checking directory structure |
| + | Pass 3: Checking directory connectivity |
| + | Pass 4: Checking reference counts |
| + | Pass 5: Checking group summary information |
| + | rootfs: 18715/82720 files (0.1% non-contiguous), 137245/330527 blocks |
| + | |
| + | $ sudo resize2fs /dev/loop0 |
| + | resize2fs 1.42.3 (14-May-2012) |
| + | Resizing the filesystem on /dev/loop0 to 1641247 (4k) blocks. |
| + | The filesystem on /dev/loop0 is now 1641247 blocks long. |
| + | |
| + | Y borramos el loopback al terminar. |
| + | $ sudo losetup -d /dev/loop0 |
| + | |
| + | ==Configurar red y ssh== |
| + | Por defecto el script que vino con el kernel que descargamos ya tiene la configuración suficiente para poder acceder a internet en modo usuario.<ref name="user-mode">[http://en.wikibooks.org/wiki/QEMU/Networking#User_mode_networking]Modo Usuario</ref>. Pero bloquea todo trafico entrante, por lo que conectarse a través de ssh, no seria posible. |
| + | La opción mas simple seria redirigir algún puerto del host, al puerto 22 de la VM <ref name="port-redirect">[http://en.wikibooks.org/wiki/QEMU/Networking#Redirecting_ports]Redireccionar Puertos</ref> con el argumento '''-redir [tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport''' |
| + | Entonces para ssh agregamos '''-redir tcp:2222::22''' al script ''boot-vexpress''. |
| + | y nos conectamos a la VM de esta forma: |
| + | $ ssh root@localhost -p 2222 |
| + | |
| + | ==Referencias== |
| + | <references /> |