Difference between revisions of "JukyParaguay/trabajos2013/xoos/qemu tutorial"
m |
m |
||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | = | + | = Instalación y configuración de Qemu= |
− | { | + | 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 /> |
Latest revision as of 20:51, 25 April 2013
Instalación y configuración de Qemu
Esta sección es una compilación de Tutoriales para la instalación de fedora con arquitectura arm en qemu.
Primeros pasos.
Lo primero[1] 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 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 Pagina Oficial. Para este tutorial usamos estas:
Necesitamos la imagen .img y el kernel.tar de Versatile Express[2] 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[3]. 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[4] 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.[5]. 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 [6] 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