<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fabian Ampalio</title>
	<atom:link href="http://www.fabianampalio.com.ar/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.fabianampalio.com.ar</link>
	<description>LinuxCollege - AcademiasLinux</description>
	<lastBuildDate>Fri, 13 Aug 2010 17:11:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Seguridad en el directorio tmp</title>
		<link>http://www.fabianampalio.com.ar/?p=306</link>
		<comments>http://www.fabianampalio.com.ar/?p=306#comments</comments>
		<pubDate>Fri, 13 Aug 2010 17:10:51 +0000</pubDate>
		<dc:creator>Fabian</dc:creator>
				<category><![CDATA[Comandos]]></category>

		<guid isPermaLink="false">http://www.fabianampalio.com.ar/?p=306</guid>
		<description><![CDATA[La mayoría de los ataques mediante protocolo web se apoya en la ejecución de código maligno desde el directorio /tmp de nuestro server, una buena solución de seguridad es quitar los permisos de ejecución a nuestro directorio /tmp y asi evitar muchos problemas. A continuación veremos paso a paso lo que tenemos que hacer en [...]]]></description>
			<content:encoded><![CDATA[<p>La mayoría de los ataques mediante protocolo web se apoya en la ejecución de código maligno desde el directorio /tmp de nuestro server, una buena solución de seguridad es quitar los permisos de ejecución a nuestro directorio /tmp y asi evitar muchos problemas. A continuación veremos paso a paso lo que tenemos que hacer en nuestro server para evitar problemas potenciales:</p>
<p>Lo primero de haremos será crear un fichero que emulará la partición /tmp, por ejemplo de 500 MB.<br />
<code><br />
#dd if=/dev/zero of=/dev/tmpTL bs=1024 count=500000<br />
</code></p>
<p>A continuación lo formateamos con nuestro sistema de archivos en mi caso etx3.<br />
<code><br />
#/bin/mke2fs -j /dev/tmpTL<br />
</code><br />
Luego hacemos un backup de nuestro actual /tmp, por si tuviésemos algún dato importante ahí (aunque no deberiamos tener gran cosa):<br />
<code><br />
#mkdir /backup &#038;&#038; cp -R /tmp /backup<br />
</code><br />
Luego montamos nuestro nuevo archivo /tmp:<br />
<code><br />
#mount -o loop,noexec,nosuid,rw /dev/tmpTL /tmp<br />
</code></p>
<p>Y lo agregamos en el /etc/fstab para que la proxima vez que reiniciemos todo siga funcionando.<br />
<code><br />
/dev/tmpTL /tmp ext2 loop,noexec,nosuid,rw 0 0<br />
</code></p>
<p>Luego de montarlo y que todo este bien vamos a otorgar los permisos  adecuados al archivo recien creado  /tmp creado:<br />
<code><br />
#chmod 1777 /tmp<br />
</code></p>
<p>Copiamos el contenido que teniamos en el antiguo /tmp<br />
<code><br />
#cp -R /backup/*   /tmp/<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabianampalio.com.ar/?feed=rss2&amp;p=306</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crear una particion y transformarla en LVM usando fdisk</title>
		<link>http://www.fabianampalio.com.ar/?p=300</link>
		<comments>http://www.fabianampalio.com.ar/?p=300#comments</comments>
		<pubDate>Thu, 08 Jul 2010 21:35:52 +0000</pubDate>
		<dc:creator>Fabian</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.fabianampalio.com.ar/?p=300</guid>
		<description><![CDATA[Crear una particion LVM usando fdisk ¿Que es particionar? Las particiones de un disco duro son &#8220;trozos&#8221; del mismo cuyo principal fin debiera ser la de albergar distintos sistemas de archivos, incompatibles entre sí, que no pueden convivir en la misma partición. Particionar un disco duro consiste en dividir al mismo en distintos &#8220;trozos&#8221;. Existen [...]]]></description>
			<content:encoded><![CDATA[<p><stronf>Crear una particion LVM usando fdisk</strong></p>
<p>¿Que es particionar?</p>
<p>Las particiones de un disco duro son &#8220;trozos&#8221; del mismo cuyo principal fin debiera ser la de albergar distintos sistemas de archivos, incompatibles entre sí, que no pueden convivir en la misma partición.<br />
Particionar un disco duro consiste en dividir al mismo en distintos &#8220;trozos&#8221;. Existen dos tipos de particiones, particiones primarias y particiones extendidas. Las particiones primarias sirven para albergar sistemas operativos y datos de programa, todo disco duro tiene al menos una partición primaria para contener datos y la mayor parte de los usuarios disponen de una única partición con el tamaño total del disco duro. El número máximo de particiones primarias es 4. Fué este número tan pequeño el que originó la aparición de las particiones extendidas, las cuales se utilizan para alargar el número máximo de particiones hasta el infinito (en la práctica no se aconseja un número de particiones superior a 12), puesto que una partición extendida puede contener tantas particiones primarias (denominadas en esta caso unidades lógicas) como se quiera.<br />
 Aveces aún poseyendo un único sistema operativo, si el disco duro tiene una gran capacidad, entonces, bien por antiguas exigencias del propio sistema operativo incapaz de crear particiones primarias tan grandes tales como la capacidad total de un disco duro grande, bien por razones de optimización (se obtiene mayor rendimiento de un disco duro particionado en varios trozos, tanto por velocidad de acceso como por un mejor aprovechamiento del espacio disponible).<br />
En nuestro ejemplo vamos a ver cuales son los pasos para crear una particion primaria y darle el formato de LVM</p>
<p>1.- Nos conectamos a fdisk y observamos las particiones del dispositivo sda.<br />
<code><br />
xendom0:/home/xen# fdisk /dev/sda<br />
</code><code><br />
El número de cilindros para este disco está establecido en 19457.<br />
No hay nada malo en ello, pero es mayor que 1024, y en algunos casos<br />
podría causar problemas con:<br />
1) software que funciona en el inicio (p.ej. versiones antiguas de LILO)<br />
2) software de arranque o particionamiento de otros sistemas operativos<br />
   (p.ej. FDISK de DOS, FDISK de OS/2)<br />
</code><code><br />
Orden (m para obtener ayuda): p<br />
</code><code><br />
Disco /dev/sda: 160.0 GB, 160041885696 bytes<br />
255 heads, 63 sectors/track, 19457 cylinders<br />
Units = cilindros of 16065 * 512 = 8225280 bytes<br />
Disk identifier: 0x4bf771ed<br />
</code><code><br />
Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema<br />
/dev/sda1               1        2432    19535008+  83  Linux<br />
/dev/sda2            2433        2675     1951897+  82  Linux swap / Solaris<br />
</code></p>
<p>2.- Vamos a crear una nueva particion para eso presionamos la letra n que nos pregunta si es una particion primaria o extendida en este caso use particion primaria despues nos pregunta cual es el numero de particion en este caso la tres el tamaño de la particion es de 5G.</p>
<p><code><br />
Orden (m para obtener ayuda): n<br />
Acción de la orden<br />
e   Partición extendida<br />
   p   Partición primaria (1-4)<br />
p<br />
Número de partición (1-4): 3<br />
Primer cilindro (2676-19457, valor predeterminado 2676):<br />
Se está utilizando el valor predeterminado 2676<br />
Último cilindro o +tamaño o +tamañoM o +tamañoK (2676-19457, valor predeterminado 19457): +5G<br />
</code></p>
<p>4.- Ahora vamos a darle el tipo de particion. Antes de seguir presionamos la letra p para ver como esta el dispositivo.<br />
Observemos que el disco tiene 160G y vemos tambien que el nuevo dispositivo creado es sda3 formateado en ext3.</p>
<p><code><br />
Orden (m para obtener ayuda): p<br />
</code><code><br />
Disco /dev/sda: 160.0 GB, 160041885696 bytes<br />
255 heads, 63 sectors/track, 19457 cylinders<br />
Units = cilindros of 16065 * 512 = 8225280 bytes<br />
Disk identifier: 0x4bf771ed<br />
</code><code><br />
Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema<br />
/dev/sda1               1        2432    19535008+  83  Linux<br />
/dev/sda2            2433        2675     1951897+  82  Linux swap / Solaris<br />
/dev/sda3            2676        3284     4891792+  83  Linux<br />
</code></p>
<p>5.- Vamos a cambiar el tipo de particion antes ext3 ahora lvm (e8).<br />
<code><br />
Orden (m para obtener ayuda): t<br />
Número de partición (1-4): 3<br />
Código hexadecimal (escriba L para ver los códigos): L<br />
</code><code><br />
 0  Vacía          1e  Hidden W95 FAT1 80  Old Minix       be  arranque de Sol<br />
 1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris<br />
 2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-<br />
 3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-<br />
 4  FAT16 <32M      40  Venix 80286     84  Unidad C: ocult c6  DRDOS/sec (FAT-<br />
 5  Extendida       41  PPC PReP Boot   85  Linux extendida c7  Syrinx<br />
 6  FAT16           42  SFS             86  Conjunto de vol da  Datos sin SF<br />
 7  HPFS/NTFS       4d  QNX4.x          87  Conjunto de vol db  CP/M / CTOS / .<br />
 8  AIX             4e  QNX4.x segunda  88  Linux plaintext de  Utilidad Dell<br />
 9  AIX bootable    4f  QNX4.x tercera  8e  Linux LVM       df  BootIt<br />
 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access<br />
 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O<br />
 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor<br />
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  Hibernación de eb  BeOS fs<br />
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT<br />
10  OPUS            55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/<br />
11  FAT12 oculta    56  Golden Bow      a7  NeXTSTEP        f0  inicio Linux/PA<br />
12  Compaq diagnost 5c  Priam Edisk     a8  UFS de Darwin   f1  SpeedStor<br />
14  FAT16 oculta <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor<br />
16  FAT16 oculta    63  GNU HURD o SysV ab  arranque de Dar f2  DOS secondary<br />
17  HPFS/NTFS ocult 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto<br />
18  SmartSleep de A 65  Novell Netware  b8  BSDI swap       fe  LANstep<br />
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT<br />
1c  Hidden W95 FAT3 75  PC/IX<br />
Código hexadecimal (escriba L para ver los códigos): 8e<br />
Se ha cambiado el tipo de sistema de la partición 3 por 8e (Linux LVM)<br />
</code><code><br />
Orden (m para obtener ayuda): p<br />
</code><code><br />
Disco /dev/sda: 160.0 GB, 160041885696 bytes<br />
255 heads, 63 sectors/track, 19457 cylinders<br />
Units = cilindros of 16065 * 512 = 8225280 bytes<br />
Disk identifier: 0x4bf771ed<br />
</code><code><br />
Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema<br />
/dev/sda1               1        2432    19535008+  83  Linux<br />
/dev/sda2            2433        2675     1951897+  82  Linux swap / Solaris<br />
/dev/sda3            2676        3284     4891792+  8e  Linux LVM<br />
</code><code><br />
Orden (m para obtener ayuda):<br />
</code><code></p>
<p>6.- Ya tenemos una particion lvm para usar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabianampalio.com.ar/?feed=rss2&amp;p=300</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalacion de maquinas virtuales con XEN (debian lenny) Parte 2</title>
		<link>http://www.fabianampalio.com.ar/?p=295</link>
		<comments>http://www.fabianampalio.com.ar/?p=295#comments</comments>
		<pubDate>Wed, 07 Jul 2010 23:14:12 +0000</pubDate>
		<dc:creator>Fabian</dc:creator>
				<category><![CDATA[Configuraciones y Documentacion]]></category>

		<guid isPermaLink="false">http://www.fabianampalio.com.ar/?p=295</guid>
		<description><![CDATA[sigue de la parte 1 Tambien podemos obtener informacion del bridge con el comando ifconfig: Vamos a notar que se crea una nueva interface pth0 que hara de bridge. xendom0:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:19:66:f0:71:db inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::219:66ff:fef0:71db/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:747 errors:0 dropped:0 overruns:0 [...]]]></description>
			<content:encoded><![CDATA[<p><strong> sigue de la parte 1 </strong></p>
<p>Tambien podemos obtener informacion del bridge con el comando ifconfig:</p>
<p>Vamos a notar que se crea una nueva interface pth0 que hara de bridge.<br />
<code><br />
xendom0:~# ifconfig<br />
eth0      Link encap:Ethernet  HWaddr 00:19:66:f0:71:db<br />
          inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0<br />
          inet6 addr: fe80::219:66ff:fef0:71db/64 Scope:Link<br />
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1<br />
          RX packets:747 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:497 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:0<br />
          RX bytes:89852 (87.7 KiB)  TX bytes:87676 (85.6 KiB)<br />
</code><br />
<code><br />
lo        Link encap:Local Loopback<br />
          inet addr:127.0.0.1  Mask:255.0.0.0<br />
          inet6 addr: ::1/128 Scope:Host<br />
          UP LOOPBACK RUNNING  MTU:16436  Metric:1<br />
          RX packets:50 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:50 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:<br />
</code><br />
<code><br />
peth0     Link encap:Ethernet  HWaddr 00:19:66:f0:71:db<br />
          inet6 addr: fe80::219:66ff:fef0:71db/64 Scope:Link<br />
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1<br />
          RX packets:29439 errors:0 dropped:0 overruns:0 frame:0<br />
          TX packets:20716 errors:0 dropped:0 overruns:0 carrier:0<br />
          collisions:0 txqueuelen:1000<br />
          RX bytes:40756396 (38.8 MiB)  TX bytes:1785957 (1.7 MiB)<br />
          Interrupt:21 Base address:0xe000<br />
</code></p>
<p>Tambien podemos listar los dispositivos de loop que se crearon durante el arranque para esto simplemente<br />
vamos a usar el comando </p>
<p><code><br />
xendom0:/etc/xen# ls /dev/loo*<br />
/dev/loop0   /dev/loop16  /dev/loop23  /dev/loop30  /dev/loop38  /dev/loop45  /dev/loop52  /dev/loop6<br />
/dev/loop1   /dev/loop17  /dev/loop24  /dev/loop31  /dev/loop39  /dev/loop46  /dev/loop53  /dev/loop60<br />
/dev/loop10  /dev/loop18  /dev/loop25  /dev/loop32  /dev/loop4   /dev/loop47  /dev/loop54  /dev/loop61<br />
/dev/loop11  /dev/loop19  /dev/loop26  /dev/loop33  /dev/loop40  /dev/loop48  /dev/loop55  /dev/loop62<br />
/dev/loop12  /dev/loop2   /dev/loop27  /dev/loop34  /dev/loop41  /dev/loop49  /dev/loop56  /dev/loop63<br />
/dev/loop13  /dev/loop20  /dev/loop28  /dev/loop35  /dev/loop42  /dev/loop5   /dev/loop57  /dev/loop7<br />
/dev/loop14  /dev/loop21  /dev/loop29  /dev/loop36  /dev/loop43  /dev/loop50  /dev/loop58  /dev/loop8<br />
/dev/loop15  /dev/loop22  /dev/loop3   /dev/loop37  /dev/loop44  /dev/loop51  /dev/loop59  /dev/loop9<br />
</code></p>
<p><strong> 9.- Crear maquina virtual (domU)</strong></p>
<p>Este es el momento mas importante es el momento de crear la maquina virtual.<br />
En el ejemplo vamos a crear una maquina virtual llamada: <strong> alumno1 </strong>, esta maquina virtual va a terner<br />
una particion de <strong>4GB</strong> para el punto de montaje &#8220;/&#8221; formateado en ext3, una swap de <strong> 256M </strong>, la memoria de la<br />
maquina virtual va a ser de <strong>92MB</strong>, el sistema operativo a instalar va a ser <strong> lenny </strong>, el directorio<br />
donde van a estar las imagenes va a ser el /home/xen.<br />
Tenemos que tener en cuenta que: Para cada maquina virtual creada se va a crear un subdirectorio en este casos llamando <strong> alumno1</strong><br />
dentro de este directorio vamos a tener dos archivos: disk1.img y swap.img. Con los tamaños que nosotros configuremos.<br />
<code><br />
xendom0:~# xen-create-image --hostname alumno1 --size 4GB --fs ext3 --swap 256Mb --dhcp --force --memory 92Mb --dist=lenny --dir /home/xen<br />
</code><code><br />
General Information<br />
--------------------<br />
Hostname       :  alumno1<br />
Distribution   :  lenny<br />
Partitions     :  swap            256Mb (swap)<br />
                  /               4GB   (ext3)<br />
Image type     :  sparse<br />
Memory size    :  92Mb<br />
Kernel path    :  /boot/vmlinuz-2.6.26-2-xen-amd64<br />
Initrd path    :  /boot/initrd.img-2.6.26-2-xen-amd64<br />
</code><code><br />
Networking Information<br />
----------------------<br />
IP Address     : DHCP [MAC: 00:16:3E:85:B6:74]<br />
</code><br />
<code><br />
Creating partition image: /home/xen/domains/alumno1/swap.img<br />
Done<br />
</code><code><br />
Creating swap on /home/xen/domains/alumno1/swap.img<br />
Done<br />
</code><code><br />
Creating partition image: /home/xen/domains/alumno1/disk.img<br />
Done<br />
</code><code><br />
Creating ext3 filesystem on /home/xen/domains/alumno1/disk.img<br />
Done<br />
Installation method: debootstrap<br />
</code></p>
<p><code><br />
Running hooks<br />
</code><code><br />
Done<br />
</code><code><br />
No role scripts were specified.  Skipping<br />
</code><code><br />
Creating Xen configuration file<br />
Done<br />
All done<br />
</code>t<br />
<code><br />
Logfile produced at:<br />
	 /var/log/xen-tools/alumno1.log<br />
</code></p>
<p>10.- Verificacion sencilla.</p>
<p>Para hacer una verificacion rapida de los archivos basta con un ls.</p>
<p>xendom0:~# ls -lh /home/xen/domains/alumno1/<br />
total 905M<br />
-rw-r&#8211;r&#8211; 1 root root 4,0G jul  7 17:00 disk.img<br />
-rw-r&#8211;r&#8211; 1 root root 256M jul  7 17:00 swap.img</p>
<p>Podemos ver los dos archivos un de 4G que corresponde a la maquina virtual y el otro de 256M que corresponde a la swap.</p>
<p>Tambien podemos ver el archivo de configuracion que usa xen para levantar la vm.<br />
Este archivo es leido cuando se levanta la vm. </p>
<p><code><br />
xendom0:~# cat /etc/xen/alumno1.cfg<br />
#<br />
# Configuration file for the Xen instance alumno1, created<br />
# by xen-tools 3.9 on Wed Jul  7 17:09:49 2010.<br />
#<br />
#<br />
#  Kernel + memory size<br />
#<br />
kernel      = '/boot/vmlinuz-2.6.26-2-xen-amd64'<br />
ramdisk     = '/boot/initrd.img-2.6.26-2-xen-amd64'<br />
memory      = '92'<br />
#<br />
#  Disk device(s).<br />
#<br />
root        = '/dev/sda2 ro'<br />
disk        = [<br />
                  'file:/home/xen/domains/alumno1/swap.img,sda1,w',<br />
                  'file:/home/xen/domains/alumno1/disk.img,sda2,w',<br />
              ]<br />
#<br />
#  Hostname<br />
#<br />
name        = 'alumno1'<br />
#<br />
#  Networking<br />
#<br />
dhcp        = 'dhcp'<br />
vif         = [ 'mac=00:16:3E:85:B6:74' ]<br />
#<br />
#  Behaviour<br />
#<br />
on_poweroff = 'destroy'<br />
on_reboot   = 'restart'<br />
on_crash    = 'restart'<br />
</code></p>
<p><strong>11.- Tunning</strong></p>
<p>Ahora vamos a tener que retocar la maquina virtual para que levante desde el dom0</p>
<p>Montaje de la maquina virtual.<br />
<code><br />
xendom0:~# mount -o loop /home/xen/domains/alumno1/disk.img /mnt<br />
</code></p>
<p>Este comando lo que hace es montar la maquina virtual en el directorio /mnt.</p>
<p>Modificacion de la terminal tty por una terminal virtual<br />
Para que podamos trabajar con la maquina virtual tenemos que cambiar el dispositivo tty por un dispositivo de tipo virtual.<br />
Si no ejecutamos este paso no vamos a poder acceder a la terminal de la vm asi como tampoco vamos a poder iniciar correctamente el arranque<br />
del domU.</p>
<p>Una vez montada la particion accedemos al archivo inittab. Y lo modificamos de la siguiente manera.<br />
Editar el archivo /mnt/etc/inittab, comentar la linea de tty1 por hvc0<br />
<code><br />
#1:2345:respawn:/sbin/getty 38400 tty1<br />
1:2345:respawn:/sbin/getty 38400 hvc0<br />
</code></p>
<p>Esto es todo ahora desmontamos.<br />
<code><br />
xendom0:~# umount /mnt<br />
</code></p>
<p><strong>12.- Ahora estamos en condiciones de levantar la vm y seguir con el tunning. </strong></p>
<p>Para levantar la vm desde el dom0 usamos el comando:<br />
<code><br />
xendom0:~# xm create /etc/xen/alumno1.cfg<br />
Using config file "/etc/xen/alumno1.cfg".<br />
Started domain alumno1<br />
</code></p>
<p>Vamos a ver cuales son las maquinas virtuales que estan levantadas hasta este momento.</p>
<p><code><br />
xendom0:~# xm list<br />
Name                                        ID   Mem VCPUs      State   Time(s)<br />
Domain-0                                     0   773     1     r-----    130.6<br />
alumno1                                      1    92     1     -b----      1.5<br />
</code></p>
<p>13.- Conectandonos desde el dom0 (hypervisor)  al domU (vm).</p>
<p>En este ejemplo vemos como conectarnos a la maquina virtual. Vamos a acceder con un usuario root sin password!!!!!<br />
De mas esta decir que hay que colocarle un password a root.</p>
<p><code><br />
xendom0:~# xm console alumno1<br />
</code></p>
<p>Para salir tenemos que presionar <ctrl + ]></p>
<p>14.- Para poder conectarnos por via ssh.</p>
<p>Tenemos que seguir tuneando la maquina virtual ahora para poder conectarnos por ssh.</p>
<p>Veamos lo que pasa si no lo hacemos.</p>
<p>Me voy a parar en una tercera maquina y voy a hacer ssh a la maquina virtual cuya ip es 192.168.1.101.<br />
<code><br />
usuario@server2:~$ ssh -l root 192.168.1.101<br />
root@192.168.1.101's password:<br />
PTY allocation request failed on channel 0<br />
stdin: is not a tty<br />
</code></p>
<p>Se quedo ahi muerto se frizo no podemos hacer nada.</p>
<p>Por esto es que tenemos que seguir tocando la maquina virtual para que no ocurran estas cosas raras</p>
<p>Primero nos conectamos desde el dom0</p>
<p><code><br />
xendom0:~# xm console alumno1<br />
</code></p>
<p>Una vez adentro usamos nuestro querido apt-get update.</p>
<p><code><br />
alumno1:~# apt-get update<br />
</code><br />
<code><br />
alumno1:~# apt-get install udev<br />
Reading package lists... Done<br />
Building dependency tree<br />
Reading state information... Done<br />
The following extra packages will be installed:<br />
  libvolume-id0<br />
The following NEW packages will be installed:<br />
  libvolume-id0 udev<br />
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.<br />
Need to get 345kB of archives.<br />
After this operation, 864kB of additional disk space will be used.<br />
Do you want to continue [Y/n]?<br />
</code><br />
<code><br />
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.<br />
Need to get 345kB of archives.<br />
After this operation, 864kB of additional disk space will be used.<br />
Do you want to continue [Y/n]? Y<br />
Get:1 http://ftp.us.debian.org lenny/main libvolume-id0 0.125-7+lenny3 [78.2kB]<br />
Get:2 http://ftp.us.debian.org lenny/main udev 0.125-7+lenny3 [267kB]<br />
Fetched 345kB in 31s (10.9kB/s)<br />
Preconfiguring packages ...<br />
Can not write log, openpty() failed (/dev/pts not mounted?)<br />
Selecting previously deselected package libvolume-id0.<br />
(Reading database ... 11287 files and directories currently installed.)<br />
Unpacking libvolume-id0 (from .../libvolume-id0_0.125-7+lenny3_amd64.deb) ...<br />
Selecting previously deselected package udev.<br />
Unpacking udev (from .../udev_0.125-7+lenny3_amd64.deb) ...<br />
Processing triggers for man-db ...<br />
Can not write log, openpty() failed (/dev/pts not mounted?)<br />
Setting up libvolume-id0 (0.125-7+lenny3) ...<br />
Setting up udev (0.125-7+lenny3) ...<br />
[ 1069.801276] udevd version 125 started<br />
Populating the new /dev filesystem temporarily mounted on /tmp/udev.2lwMgt/...<br />
[ 1070.118587] udevd version 125 started<br />
rmdir: failed to remove `/tmp/udev.2lwMgt': Directory not empty<br />
WARNING: /tmp/udev.2lwMgt is not empty!<br />
/tmp/udev.2lwMgt:<br />
total 12<br />
drwxr-xr-x 3 root root 4096 Jul  7 22:44 .<br />
drwxrwxrwt 5 root root 4096 Jul  7 22:44 ..<br />
drwxr-xr-x 3 root root 4096 Jul  7 22:44 .udev<br />
</code><br />
/tmp/udev.2lwMgt/.udev:<br />
total 12<br />
drwxr-xr-x 3 root root 4096 Jul  7 22:44 .<br />
drwxr-xr-x 3 root root 4096 Jul  7 22:44 ..<br />
drwxr-xr-x 2 root root 4096 Jul  7 22:44 rules.d<br />
</code><code><br />
/tmp/udev.2lwMgt/.udev/rules.d:<br />
total 8<br />
drwxr-xr-x 2 root root 4096 Jul  7 22:44 .<br />
drwxr-xr-x 3 root root 4096 Jul  7 22:44 ..<br />
Stopping enhanced syslogd: rsyslogd.<br />
Starting enhanced syslogd: rsyslogd<br />
</code></p>
<p>Despues de esto tenemos que modificar el archivo /etc/fstab agregandole la siguientes linea:</p>
<p><code><br />
none /dev/pts devpts defaults 0 0<br />
none /dev/shm tmpfs defaults 0 0<br />
</code></p>
<p>Bueno eso es todo ahora podemos disfrutar de la maquina virtual al full.</p>
<p>Despues de esto salimos de la vm y probamos que nos podamos conectar via ssh.</p>
<p>Y despues de esto lo mas importante instalar el paquete udev sin esto es imposible conectarse por ssh.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabianampalio.com.ar/?feed=rss2&amp;p=295</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalacion de maquinas virtuales con XEN (debian lenny) Parte 1</title>
		<link>http://www.fabianampalio.com.ar/?p=275</link>
		<comments>http://www.fabianampalio.com.ar/?p=275#comments</comments>
		<pubDate>Wed, 07 Jul 2010 16:29:15 +0000</pubDate>
		<dc:creator>Fabian</dc:creator>
				<category><![CDATA[Configuraciones y Documentacion]]></category>

		<guid isPermaLink="false">http://www.fabianampalio.com.ar/?p=275</guid>
		<description><![CDATA[Instalando maquinas virtuales debian en un sevidor xen Aclaracion: El hostname del hypervisor es: xendom0 1.- Instalando los paquetes necesarios. xendom0:~# apt-get install linux-image-2.6.26-2-xen-amd64 Cuando hayamos instalado estos paquetes vamos a tener una nueva entrada en el archivo /boot/grub/menu.lst title Debian GNU/Linux, kernel 2.6.26-2-xen-amd64 root (hd0,0) kernel /boot/vmlinuz-2.6.26-2-xen-amd64 root=/dev/sda1 ro quiet initrd /boot/initrd.img-2.6.26-2-xen-amd64 title Debian [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Instalando maquinas virtuales debian en un sevidor xen</strong></p>
<p>Aclaracion: El hostname del hypervisor es: xendom0 </p>
<p><strong>1.-  Instalando los paquetes necesarios.</strong></p>
<p><code><br />
xendom0:~# apt-get install linux-image-2.6.26-2-xen-amd64<br />
</code></p>
<p>Cuando hayamos instalado estos paquetes vamos a tener una nueva entrada en el archivo /boot/grub/menu.lst<br />
<code><br />
title		Debian GNU/Linux, kernel 2.6.26-2-xen-amd64<br />
root		(hd0,0)<br />
kernel		/boot/vmlinuz-2.6.26-2-xen-amd64 root=/dev/sda1 ro quiet<br />
initrd		/boot/initrd.img-2.6.26-2-xen-amd64<br />
</code><br />
<code><br />
title		Debian GNU/Linux, kernel 2.6.26-2-xen-amd64 (single-user mode)<br />
root		(hd0,0)<br />
kernel		/boot/vmlinuz-2.6.26-2-xen-amd64 root=/dev/sda1 ro single<br />
initrd		/boot/initrd.img-2.6.26-2-xen-amd64<br />
</code></p>
<p><strong>2.- Instalacion de las herramientas  xen.</strong></p>
<p>Esto va a tardar un rato dependiendo del ancho de banda de internet. Quisiera mensionar como interesante que se van a instalar como dependencias las bridge-tools estas herramientas van a permitir que el dom0 (hypervisor), sea bridge de las domU (maquinas virtuales).</p>
<p><code><br />
xendom0:~# apt-get install xen-tools<br />
</code></p>
<p><strong>3.-  Aumentar el numero de loops del equipo </strong><br />
Dado que el número máximo de dispositivos loop que existen en el sistema es por defecto 8 y que cada máquina virtual usa 2, para arrancar más de 4 máquinas virtuales tenemos que incrementar este valor. Para hacer esto vamos a modificar el archivo /etc/modules modificando la linea que dice loop, observar que comente con varios &#8220;#&#8221; la linea original del archivo.<br />
<code><br />
xendom0:~# cat /etc/modules<br />
# /etc/modules: kernel modules to load at boot time.<br />
#<br />
# This file contains the names of kernel modules that should be loaded<br />
# at boot time, one per line. Lines beginning with "#" are ignored.<br />
# Parameters can be specified after the module name.<br />
</code><code><br />
### loop max_loop=64<br />
</code></p>
<p><strong>4.-  Reiniciar el equipo.</strong></p>
<p>Simplemente<br />
<code><br />
xendom0:~# reboot<br />
</code></p>
<p>4.- Verificamos si el kernel con el que arranco el equipo es el adecuado.</p>
<p><code><br />
xendom0:~# uname -r<br />
2.6.26-2-xen-amd64<br />
</code></p>
<p><strong> 5.- Configurando la red Bridge en XEN </strong></p>
<p># Configurar la red: para que dom0 funcione en modo puente (paquete bridge-utils) editaremos<br />
/etc/xen/xend-config.sxp, comentaremos la línea:</p>
<p><code># (network-script network-dummy) </code></p>
<p>y verificar que las siguientes líneas esten descomentadas:<br />
<code><br />
(network-script network-bridge)<br />
(vif-script vif-bridge)<br />
(dom0-min-mem 196)<br />
(dom0-cpus 0)<br />
</code></p>
<p><strong>6.- Reiniciar el servicio de xen: </strong></p>
<p>xendom0:~# /etc/init.d/xend stop<br />
xendom0:~# /etc/init.d/xend start</p>
<p><strong>7.- Verificar que el servicio de xen este corriendo.</strong></p>
<p><code><br />
xendom0:~# xm list<br />
Name                                        ID   Mem VCPUs      State   Time(s)<br />
Domain-0                                     0   811     1     r-----     15.4<br />
</code></p>
<p>Vamos a verificar ahora el kernel del dom0</p>
<p><code><br />
xendom0:~# xm dmesg<br />
(XEN) Xen version 3.2-1 (Debian 3.2.1-2) (waldi@debian.org) (gcc version 4.3.1 (Debian 4.3.1-2) ) Sat Jun 28 09:32:18 UTC 2008<br />
(XEN) Command line:<br />
(XEN) Video information:<br />
(XEN)  VGA is text mode 80x25, font 8x16<br />
(XEN)  VBE/DDC methods: none; EDID transfer time: 0 seconds<br />
(XEN)  EDID info not retrieved because no DDC retrieval method detected<br />
(XEN) Disc information:<br />
(XEN)  Found 1 MBR signatures<br />
(XEN)  Found 1 EDD information structures<br />
(XEN) Xen-e820 RAM map:<br />
(XEN)  0000000000000000 - 000000000009f800 (usable)<br />
(XEN)  000000000009f800 - 00000000000a0000 (reserved)<br />
(XEN)  00000000000e7000 - 0000000000100000 (reserved)<br />
(XEN)  0000000000100000 - 0000000037fb0000 (usable)<br />
(XEN)  0000000037fb0000 - 0000000037fc0000 (ACPI data)<br />
(XEN)  0000000037fc0000 - 0000000037ff0000 (ACPI NVS)<br />
(XEN)  0000000037ff0000 - 0000000038000000 (reserved)<br />
(XEN)  00000000fec00000 - 00000000fec01000 (reserved)<br />
(XEN)  00000000fee00000 - 00000000fef00000 (reserved)<br />
(XEN)  00000000fff80000 - 0000000100000000 (reserved)<br />
(XEN) System RAM: 895MB (916796kB)<br />
(XEN) Xen heap: 14MB (15048kB)<br />
(XEN) Domain heap initialised: DMA width 32 bits<br />
(XEN) Processor #0 0:6 APIC version 16<br />
(XEN) IOAPIC[0]: apic_id 1, version 17, address 0xfec00000, GSI 0-23<br />
(XEN) Enabling APIC mode:  Flat.  Using 1 I/O APICs<br />
(XEN) Using scheduler: SMP Credit Scheduler (credit)<br />
(XEN) Detected 2712.343 MHz processor.<br />
(XEN) AMD SVM: ASIDs enabled.<br />
(XEN) HVM: SVM enabled<br />
(XEN) HVM: Hardware Assisted Paging detected and enabled.<br />
(XEN) CPU0: AMD Sempron(tm) Processor 140 Processor stepping 02<br />
(XEN) Total of 1 processors activated.<br />
(XEN) ENABLING IO-APIC IRQs<br />
(XEN)  -> Using new ACK method<br />
(XEN) ..MP-BIOS bug: 8254 timer not connected to IO-APIC<br />
(XEN)  works.<br />
(XEN) Platform timer overflows in 234 jiffies.<br />
(XEN) Platform timer is 3.579MHz ACPI PM Timer<br />
(XEN) Brought up 1 CPUs<br />
(XEN) AMD IOMMU: Disabled<br />
(XEN) *** LOADING DOMAIN 0 ***<br />
(XEN)  Xen  kernel: 64-bit, lsb, compat32<br />
(XEN)  Dom0 kernel: 64-bit, lsb, paddr 0x200000 -> 0x631918<br />
(XEN) PHYSICAL MEMORY ARRANGEMENT:<br />
(XEN)  Dom0 alloc.:   0000000032000000->0000000034000000 (199618 pages to be allocated)<br />
(XEN) VIRTUAL MEMORY ARRANGEMENT:<br />
(XEN)  Loaded kernel: ffffffff80200000->ffffffff80631918<br />
(XEN)  Init. ramdisk: ffffffff80632000->ffffffff81bd2200<br />
(XEN)  Phys-Mach map: ffffffff81bd3000->ffffffff81d68e10<br />
(XEN)  Start info:    ffffffff81d69000->ffffffff81d694a4<br />
(XEN)  Page tables:   ffffffff81d6a000->ffffffff81d7d000<br />
(XEN)  Boot stack:    ffffffff81d7d000->ffffffff81d7e000<br />
(XEN)  TOTAL:         ffffffff80000000->ffffffff82000000<br />
(XEN)  ENTRY ADDRESS: ffffffff80200000<br />
(XEN) Dom0 has maximum 1 VCPUs<br />
(XEN) Initrd len 0x15a0200, start at 0xffffffff80632000<br />
(XEN) Scrubbing Free RAM: done.<br />
(XEN) Xen trace buffers: disabled<br />
(XEN) Std. Loglevel: Errors and warnings<br />
(XEN) Guest Loglevel: Nothing (Rate-limited: Errors and warnings)<br />
(XEN) Xen is relinquishing VGA console.<br />
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to Xen)<br />
(XEN) Freed 104kB init memory.<br />
(XEN) ioapic_guest_write: apic=0, pin=2, old_irq=-1, new_irq=0<br />
(XEN) ioapic_guest_write: old_entry=00010000, new_entry=000009f0<br />
(XEN) ioapic_guest_write: Installing bogus unmasked IO-APIC entry!<br />
</code></p>
<p>Tambien podemos seguir obteniendo informacion de xen con el comando:</p>
<p><code><br />
xendom0:~# xm info<br />
host                   : xendom0<br />
release                : 2.6.26-2-xen-amd64<br />
version                : #1 SMP Wed May 12 18:37:58 UTC 2010<br />
machine                : x86_64<br />
nr_cpus                : 1<br />
nr_nodes               : 1<br />
cores_per_socket       : 1<br />
threads_per_core       : 1<br />
cpu_mhz                : 2712<br />
hw_caps                : 078bf3ff:efd3fbff:00000000:00000110:00802001:000037fd:000037fd<br />
total_memory           : 895<br />
free_memory            : 54<br />
node_to_cpu            : node0:0<br />
xen_major              : 3<br />
xen_minor              : 2<br />
xen_extra              : -1<br />
xen_caps               : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64<br />
xen_scheduler          : credit<br />
xen_pagesize           : 4096<br />
platform_params        : virt_start=0xffff800000000000<br />
xen_changeset          : unavailable<br />
cc_compiler            : gcc version 4.3.1 (Debian 4.3.1-2)<br />
cc_compile_by          : waldi<br />
cc_compile_domain      : debian.org<br />
cc_compile_date        : Sat Jun 28 09:32:18 UTC 2008<br />
xend_config_format     : 4<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabianampalio.com.ar/?feed=rss2&amp;p=275</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ejemplo de LVM</title>
		<link>http://www.fabianampalio.com.ar/?p=272</link>
		<comments>http://www.fabianampalio.com.ar/?p=272#comments</comments>
		<pubDate>Thu, 01 Jul 2010 23:46:57 +0000</pubDate>
		<dc:creator>Fabian</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.fabianampalio.com.ar/?p=272</guid>
		<description><![CDATA[Resumen de creacion de LVM paso a paso 1.- crear los volumenes fisicos: [root@rh ~]# pvcreate /dev/hda8 Physical volume "/dev/hda8" successfully created [root@rh ~]# pvcreate /dev/hda9 Physical volume "/dev/hda9" successfully created [root@rh ~]# pvcreate /dev/hda10 Physical volume "/dev/hda10" successfully created 2.- Juntar los volumenes fisicos en un Grupo de Volumenes Todos forman una misma unidad. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Resumen de creacion de LVM paso a paso</strong></p>
<p><strong>1.-  crear los volumenes fisicos:</strong><br />
<code><br />
[root@rh ~]# pvcreate /dev/hda8<br />
  Physical volume "/dev/hda8" successfully created<br />
[root@rh ~]# pvcreate /dev/hda9<br />
  Physical volume "/dev/hda9" successfully created<br />
[root@rh ~]# pvcreate /dev/hda10<br />
  Physical volume "/dev/hda10" successfully created<br />
</code></p>
<p><strong>2.- Juntar los volumenes fisicos en un Grupo de Volumenes<br />
</strong></p>
<p>Todos forman una misma unidad.<br />
<code><br />
[root@rh ~]# vgcreate VG0 /dev/hda8 /dev/hda9 /dev/hda10<br />
  Volume group "VG0" successfully created<br />
</code></p>
<p>3.-  Vamos a verificar cual es el tamaño del VG podemos observar que es de 1.49G<br />
Tambien vemos que esta compuesto por tres volumenes fisicos /dev/hda8, /dev/hda9 y /dev/hda10<br />
<code><br />
[root@rh ~]# vgdisplay -v VG0<br />
  --- Volume group ---<br />
  VG Name               VG0<br />
  System ID<br />
  Format                lvm2<br />
  Metadata Areas        3<br />
  Metadata Sequence No  1<br />
  VG Access             read/write<br />
  VG Status             resizable<br />
  MAX LV                0<br />
  Cur LV                0<br />
  Open LV               0<br />
  Max PV                0<br />
  Cur PV                3<br />
  Act PV                3<br />
  VG Size               1,49 GB<br />
  PE Size               4,00 MB<br />
  Total PE              381<br />
  Alloc PE / Size       0 / 0<br />
  Free  PE / Size       381 / 1,49 GB<br />
  VG UUID               iNSlQR-Oc5t-fLE3-PwbP-eQcE-89tc-tuDin2<br />
 --- Physical volumes ---<br />
  PV Name               /dev/hda8<br />
  PV UUID               H8j2q7-1vIl-NsYO-FS6f-QiII-eM4a-I2lFY0<br />
  PV Status             allocatable<br />
  Total PE / Free PE    127 / 63</p>
<p>  PV Name               /dev/hda9<br />
  PV UUID               QIH2Ac-2Kk0-rf9Q-TZkZ-aLEp-TTV0-jS8m7n<br />
  PV Status             allocatable<br />
  Total PE / Free PE    127 / 127</p>
<p>  PV Name               /dev/hda10<br />
  PV UUID               gvqsCV-hwLH-2Vn8-wCkE-4ngv-Cvmw-ktHHHv<br />
  PV Status             allocatable<br />
  Total PE / Free PE    127 / 127<br />
</code></p>
<p>4.-  Vamos a tomar una porcion de 256M y le vamos a llamar datos.<br />
<code><br />
[root@rh ~]# lvcreate -L 256M VG0 -n datos<br />
  Logical volume "datos" created<br />
</code></p>
<p>5.- vamos a ver como se creo este volumen lògico.<br />
<code><br />
[root@rh ~]# vgdisplay VG0 -v<br />
    Using volume group(s) on command line<br />
    Finding volume group "VG0"<br />
  --- Volume group ---<br />
  VG Name               VG0<br />
  System ID<br />
  Format                lvm2<br />
  Metadata Areas        3<br />
  Metadata Sequence No  6<br />
  VG Access             read/write<br />
  VG Status             resizable<br />
  MAX LV                0<br />
  Cur LV                1<br />
  Open LV               0<br />
  Max PV                0<br />
  Cur PV                3<br />
  Act PV                3<br />
  VG Size               1,49 GB<br />
  PE Size               4,00 MB<br />
  Total PE              381<br />
  Alloc PE / Size       64 / 256,00 MB<br />
  Free  PE / Size       317 / 1,24 GB<br />
  VG UUID               iNSlQR-Oc5t-fLE3-PwbP-eQcE-89tc-tuDin2</p>
<p>  --- Logical volume ---<br />
  LV Name                /dev/VG0/datos<br />
  VG Name                VG0<br />
  LV UUID                0wvyAZ-42J0-Q8TY-oye0-h6uv-2Zap-DG1SNU<br />
  LV Write Access        read/write<br />
  LV Status              available<br />
  # open                 0<br />
  LV Size                256,00 MB<br />
  Current LE             64<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto<br />
  - currently set to     256<br />
  Block device           253:0</p>
<p>  --- Physical volumes ---<br />
  PV Name               /dev/hda8<br />
  PV UUID               H8j2q7-1vIl-NsYO-FS6f-QiII-eM4a-I2lFY0<br />
  PV Status             allocatable<br />
  Total PE / Free PE    127 / 63</p>
<p>  PV Name               /dev/hda9<br />
  PV UUID               QIH2Ac-2Kk0-rf9Q-TZkZ-aLEp-TTV0-jS8m7n<br />
  PV Status             allocatable<br />
  Total PE / Free PE    127 / 127</p>
<p>  PV Name               /dev/hda10<br />
  PV UUID               gvqsCV-hwLH-2Vn8-wCkE-4ngv-Cvmw-ktHHHv<br />
  PV Status             allocatable<br />
  Total PE / Free PE    127 / 127<br />
</code></p>
<p>6.- Vamos a formatear ese volumen de datos<br />
<code><br />
[root@rh ~]#  mkfs.ext3 /dev/VG0/datos<br />
mke2fs 1.39 (29-May-2006)<br />
Etiqueta del sistema de ficheros=<br />
Tipo de SO: Linux<br />
Tamaño del bloque=1024 (bitácora=0)<br />
Tamaño del fragmento=1024 (bitácora=0)<br />
65536 nodos i, 262144 bloques<br />
13107 bloques (5.00%) reservados para el súper usuario<br />
Primer bloque de datos=1<br />
Maximum filesystem blocks=67371008<br />
32 bloque de grupos<br />
8192 bloques por grupo, 8192 fragmentos por grupo<br />
2048 nodos i por grupo<br />
Respaldo del súper bloque guardado en los bloques:<br />
        8193, 24577, 40961, 57345, 73729, 204801, 221185<br />
Mientras se escribían las tablas de nodos i: terminado<br />
Creando el fichero de transacciones (8192 bloques): hecho<br />
Escribiendo superbloques y la información contable del sistema de ficheros:<br />
hecho<br />
Este sistema de ficheros se revisará automáticamente cada 39 meses o<br />
180 dias, lo que suceda primero.  Utilice tune2fs -c o -i para cambiarlo.<br />
</code></p>
<p>7.- Crear el punto de montaje.<br />
<code><br />
mkdir /mnt/datos<br />
</code></p>
<p>8.- Montar el Volumen Logico.<br />
<code><br />
mount -t ext3 /dev/VG0/datos /mnt/datos<br />
</code></p>
<p>9.- Crear la entrada en /etc/fstab</p>
<p>En debian vamos a usar esta sintaxis:<br />
<code><br />
/dev/VG0/datos 	/mnt/datos 	ext3	defaults 0 0<br />
</code><br />
En rh vamos a usar el Label de la particion en vez del dispositivo.<br />
<code><br />
LABEL=DATOS	/mnt/datos 	ext3	defaults 0 0<br />
</code></p>
<p>11.- Supongamos ahora que queremos extender el volumen logico en 512M.</p>
<p><code><br />
[root@rh ~]# lvextend -L +500M /dev/VG0/datos<br />
  Extending logical volume datos to 756,00 MB<br />
  Logical volume datos successfully resized<br />
</code></p>
<p>12.-  Todavia no terminamos tenemos que ejecutar el comando que cambia el<br />
tamaño del LV.<br />
<code><br />
[root@rh ~]# resize2fs -p /dev/VG0/datos<br />
resize2fs 1.39 (29-May-2006)<br />
Filesystem at /dev/VG0/datos is mounted on /mnt/datos; on-line resizing<br />
required<br />
Performing an on-line resize of /dev/VG0/datos to 774144 (1k) blocks.<br />
The filesystem on /dev/VG0/datos is now 774144 blocks long.<br />
</code></p>
<p>13.- Verificamos los cambios.<br />
<code><br />
[root@rh ~]# vgdisplay VG0 -v<br />
    Using volume group(s) on command line<br />
    Finding volume group "VG0"<br />
  --- Volume group ---<br />
  VG Name               VG0<br />
  System ID<br />
  Format                lvm2<br />
  Metadata Areas        3<br />
  Metadata Sequence No  7<br />
  VG Access             read/write<br />
  VG Status             resizable<br />
  MAX LV                0<br />
  Cur LV                1<br />
  Open LV               1<br />
  Max PV                0<br />
  Cur PV                3<br />
  Act PV                3<br />
  VG Size               1,49 GB<br />
  PE Size               4,00 MB<br />
  Total PE              381<br />
  Alloc PE / Size       189 / 756,00 MB<br />
  Free  PE / Size       192 / 768,00 MB<br />
  VG UUID               iNSlQR-Oc5t-fLE3-PwbP-eQcE-89tc-tuDin2</p>
<p>  --- Logical volume ---<br />
  LV Name                /dev/VG0/datos<br />
  VG Name                VG0<br />
  LV UUID                0wvyAZ-42J0-Q8TY-oye0-h6uv-2Zap-DG1SNU<br />
  LV Write Access        read/write<br />
  LV Status              available<br />
  # open                 1<br />
  LV Size                756,00 MB<br />
  Current LE             189<br />
  Segments               2<br />
  Allocation             inherit<br />
  Read ahead sectors     auto<br />
  - currently set to     256<br />
  Block device           253:0</p>
<p>  --- Physical volumes ---<br />
  PV Name               /dev/hda8<br />
  PV UUID               H8j2q7-1vIl-NsYO-FS6f-QiII-eM4a-I2lFY0<br />
  PV Status             allocatable<br />
  Total PE / Free PE    127 / 0</p>
<p>  PV Name               /dev/hda9<br />
  PV UUID               QIH2Ac-2Kk0-rf9Q-TZkZ-aLEp-TTV0-jS8m7n<br />
  PV Status             allocatable<br />
  Total PE / Free PE    127 / 65</p>
<p>  PV Name               /dev/hda10<br />
  PV UUID               gvqsCV-hwLH-2Vn8-wCkE-4ngv-Cvmw-ktHHHv<br />
  PV Status             allocatable<br />
  Total PE / Free PE    127 / 127<br />
</code></p>
<p>14.- Reducir el tamaño de una particion en este ejemplo la reducciòn va a ser<br />
de 56M.</p>
<p>Antes que nada desmontar<br />
<code><br />
[root@rh ~]# umount /mnt/datos<br />
</code><br />
<code><br />
[root@rh ~]# resize2fs /dev/VG0/datos 700M<br />
resize2fs 1.39 (29-May-2006)<br />
Por favor corra primero 'e2fsck -f /dev/VG0/datos'.<br />
</code><br />
<code><br />
[root@rh ~]# e2fsck -f /dev/VG0/datos<br />
e2fsck 1.39 (29-May-2006)<br />
Pass 1: Checking inodes, blocks, and sizes<br />
Pass 2: Checking directory structure<br />
Pass 3: Checking directory connectivity<br />
Pass 4: Checking reference counts<br />
Pass 5: Checking group summary information<br />
DATOS: 11/194560 files (9.1% non-contiguous), 35331/774144 blocks<br />
</code></p>
<p>Ahora si podemos reducir</p>
<p><code><br />
[root@rh ~]# resize2fs /dev/VG0/datos 700M<br />
resize2fs 1.39 (29-May-2006)<br />
Resizing the filesystem on /dev/VG0/datos to 716800 (1k) blocks.<br />
The filesystem on /dev/VG0/datos is now 716800 blocks long.<br />
</code></p>
<p>Tambien podemos usar el comando:<br />
<code><br />
[root@rh ~]# lvreduce -L 56M /dev/VG0/datos<br />
  WARNING: Reducing active logical volume to 56,00 MB<br />
  THIS MAY DESTROY YOUR DATA (filesystem etc.)<br />
Do you really want to reduce datos? [y/n]: y<br />
  Reducing logical volume datos to 56,00 MB<br />
  Logical volume datos successfully resized<br />
</code></p>
<p>15.- Tambien podemos ahora quitar un volumen fisico del grupo de volumenes.</p>
<p><code><br />
[root@rh ~]# pvmove  /dev/hda10<br />
  No data to move for VG0<br />
[root@rh ~]# vgreduce VG0 /dev/hda10<br />
  Removed "/dev/hda10" from volume group "VG0"<br />
</code></p>
<p>Esto es todo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabianampalio.com.ar/?feed=rss2&amp;p=272</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalación de OOo (openoffice.org) en debian Lenny</title>
		<link>http://www.fabianampalio.com.ar/?p=264</link>
		<comments>http://www.fabianampalio.com.ar/?p=264#comments</comments>
		<pubDate>Wed, 12 May 2010 23:38:43 +0000</pubDate>
		<dc:creator>Fabian</dc:creator>
				<category><![CDATA[Configuraciones y Documentacion]]></category>

		<guid isPermaLink="false">http://www.fabianampalio.com.ar/?p=264</guid>
		<description><![CDATA[Como instalar OOo en debian Lenny Aclaración: tenemos que instalar OOo en modo gráfico. 1. Descargar el paquete de openoffice teniendo en cuenta que es una paquete (archivo tar.gz) dentro de este se encuentran los archivos .deb para instalar todo el OOo Vamos a trabajar en el modo gráfico para poder instalar OOo 2. Tenemos [...]]]></description>
			<content:encoded><![CDATA[<p>Como instalar OOo en debian Lenny</p>
<p>Aclaración: tenemos que instalar OOo en modo gráfico.</p>
<p>1. Descargar el paquete de openoffice teniendo en cuenta que es una paquete (archivo tar.gz) dentro de este se encuentran los archivos .deb para instalar todo el OOo<br />
Vamos a trabajar en el modo gráfico para poder instalar OOo</p>
<p>2. Tenemos que loguearnos como root en una terminal de texto gráfica.<br />
Teniendo en cuenta que debian no nos deja loguearnos con el usuario root en el modo gráfico tenemos que ejecutar los siguientes comandos. </p>
<p>Con el usuario de trabajo levantamos una terminal de texto. En esta terminal de texto ejecutar el comando<br />
<code><br />
$ xhost + (este comando permite que desde cualquier otro equipo o usuario se pueda usar el entorno gráfico)<br />
</code><br />
El siguiente comando nos permite transformarnos en root sin las variables de entorno.<br />
<code><br />
$ su<br />
</code><br />
Tipear la clave de root. Muy bien ahora podemos seguir con la instalacion de OpenOffice.org</p>
<p>3. Si tenemos instalada la versión 2.4  la desinstalamos usando el siguiente comando:<br />
<code><br />
apt-get –purge remove -y openoffice.org openoffice.org-base openoffice.org-base-core openoffice.org-common openoffice.org-core lp-solve openoffice.org-impress openoffice.org-filter-mobiledev openoffice.org-draw libgfortran3 openoffice.org-report-builder-bin libsuitesparse-3.1.0 ttf-liberation openoffice.org-math libblas3gf openoffice.org-officebean liblapack3gf openoffice.org-calc<br />
</code></p>
<p>4. Descomprimir el archivo descargado en el directorio /opt (ahi es donde va a quedar instalado OOo)<br />
<code><br />
cd /opt<br />
tar xzvf OOo.....tar.gz<br />
</code></p>
<p>5. Ahora vamos a instalar OOo con el siguiente comando:</p>
<p><code><br />
cd OOO300_m9_native_packed-1_es.9358/DEBS/ &#038;&#038; dpkg -i *.deb<br />
</code></p>
<p>6. Ahora vamos a instalar la integracion con el escritorio para esto ejecutamos:</p>
<p><code><br />
cd desktop-integration<br />
</code></p>
<p>5. Instalamos el paquete que hay en ese directorio con el siguiente comando:<br />
<code><br />
dpkg -i openoffice.org3.0-debian-menus_3.0-9354_all.deb<br />
</code></p>
<p>Todo esta ahora instalado</p>
<p>Saludos</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabianampalio.com.ar/?feed=rss2&amp;p=264</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Actualizaciones y descargas usando apt-proxy</title>
		<link>http://www.fabianampalio.com.ar/?p=257</link>
		<comments>http://www.fabianampalio.com.ar/?p=257#comments</comments>
		<pubDate>Fri, 23 Apr 2010 22:14:23 +0000</pubDate>
		<dc:creator>Fabian</dc:creator>
				<category><![CDATA[Configuraciones y Documentacion]]></category>

		<guid isPermaLink="false">http://www.fabianampalio.com.ar/?p=257</guid>
		<description><![CDATA[Como instalar las actualizaciones y nuevos programas sin recargar la red. En distintos ambientes oportunidades tenemos muchos equipos con el sistema GNU/debian instalados ya sea en casa o en nuestro trabajo y sabemos que debian tiene actualizaciónes constantes, si conectamos todas las maquinas a la vez para actualizar o descargar un software vamos a notar [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Como instalar las actualizaciones y nuevos programas sin recargar la red.</strong></p>
<p>En distintos ambientes oportunidades tenemos muchos equipos con el sistema GNU/debian instalados ya sea en casa o en nuestro trabajo y sabemos que debian tiene actualizaciónes constantes, si conectamos todas las maquinas a la vez para actualizar o descargar un software vamos a notar que el ancho de banda de nuestra red decae de manara alarmante. Es por eso es que quiero presentarles a apt-proxy.</p>
<p>apt-proxy es un proxy de paquetes, más sencillo imposible. Con él, cada vez que nos descargamos un paquete, se queda almacenado en su repositorio local, así cuando una máquina pide ese paquete, se lo entregará directamente sin necesidad de descargarlo desde el repositorio original (repositorio debian en internet).</p>
<p><strong>Instalación:</strong><br />
<code><br />
# apt-get install apt-proxy<br />
</code></p>
<p>Una vez que está instalado, tenemos que modificar ver el archivo de configuración, ubicado en /etc/apt-proxy con el nombre apt-proxy-v2.conf. Este se divide en secciones, la sección [DEFAULT] proporciona la configuración de apt-proxy (puerto de escucha, timeouts, tiempo máximo de vida de un paquete,&#8230;) Aquí poco nada habrá que tocar, como verémos está todo muy bien comentado y sobra explicar esta sección.</p>
<p>Las secciones que vienen a continuación son las más interesantes. Definen los repositorios. Por ejemplo, vemos que hay una sección que se llama [debian].</p>
<p><code><br />
[debian]<br />
;; The main Debian archive<br />
;; You can override the default timeout like this:<br />
;timeout = 30<br />
;; Rsync server used to rsync the Packages file (NOT YET IMPLEMENTED)<br />
;;rsyncpackages = rsync://ftp.de.debian.org/debian<br />
;; Backend servers, in order of preference<br />
backends =</p>
<p>http://ftp.us.debian.org/debian</p>
<p>http://ftp.de.debian.org/debian</p>
<p>http://ftp2.de.debian.org/debian</p>
<p>ftp://ftp.uk.debian.org/debian<br />
</code></p>
<p>En esta sección tenemos que poner los repositorios donde apt-proxy buscará los paquetes que las demás máquinas (clientes) le piden al servidor bajo el directorio debian. Para entenderlo mejor un ejemplo de sources.list:</p>
<p>deb http://192.168.1.1:9999/debian stable main non-free contrib</p>
<p>Como vemos, esta ip pertenece a mi servidor de apt-proxy y la raíz que pido es la de debian. Entonces apt-proxy buscará una sección que se llame así y mirará qué repositorios puede usar para descargar esos paquetes. Ahora solo nos queda ir máquina por máquina cambiando las sources.list y poniendo nuestro servidor de apt-proxy como fuente única. También es una muy buena idea que nuestro propio servidor tuviera en sus sources.list la dirección del proxy, así cualquier actualización de cualquier máquina pasará por el proxy.</p>
<p><strong>Otra aplicación que se puede usar y que es muy útil se llama apt-move.<br />
</strong><br />
Sirve para generar repositorios locales moviendo y generando la estructura de un repositorio.<br />
Lo bueno de esta es que podemos crear un repositorio local en equipos que no tienen internet.</p>
<p>Podemos encontrar un articulo en:<br />
<a href="http://www.bulma.net/body.phtml?nIdNoticia=667">apt-move</a></p>
<p>Espero que sea de utilidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabianampalio.com.ar/?feed=rss2&amp;p=257</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Listas de Control de acceso</title>
		<link>http://www.fabianampalio.com.ar/?p=244</link>
		<comments>http://www.fabianampalio.com.ar/?p=244#comments</comments>
		<pubDate>Mon, 19 Apr 2010 14:48:47 +0000</pubDate>
		<dc:creator>Fabian</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.fabianampalio.com.ar/?p=244</guid>
		<description><![CDATA[Cuando por razones organizativas tenemos que trabajar solo con los permisos que nos ofrece linux y necesitamos generar recursos accesibles a distintos grupos nuestro trabajo comienza a complicarse, de tal manera que empezamos a tener muchos grupos y muchos directorios y un lio barbaro para administrar. La solucion que linux nos ofece es ACL, listas [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando por razones organizativas tenemos que trabajar solo con los permisos que nos ofrece linux y necesitamos generar recursos accesibles a distintos grupos nuestro trabajo comienza a complicarse, de tal manera que empezamos a tener muchos grupos y muchos directorios y un lio barbaro para administrar.</p>
<p>La solucion que linux nos ofece es <strong>ACL</strong>, listas de control de acceso. Veamos de que se trata.</p>
<p>¿Qué es una ACL?</p>
<p>Es una ACL es una lista de usuarios o grupos Linux que tienen derecho a usar un directorio o un archivo.</p>
<p><strong>1.- Instalando y activando las ACL:</strong></p>
<p>Para garantizar que el sistema acepte acls tenemos que tener en cuenta las siguientes premisas:</p>
<ol>
<li> El nucleo debe soportar y estar compilado para soportar atributos extendidos y ACL.</li>
<li>Debemos montar el file system (partición) con atributos extendidos y ACL.</li>
<li>Tenemos que  instalar las utilidades de espacio de usuario (chacl,getfacl y setfacl) para establecer ACL.</li>
</ol>
<p><strong>2.- Activación de las ACL.</strong></p>
<p>Soporte ACL del núcleo de sistema:</p>
<p>La gran mayoría de distros actuales ya soportan ACL podemos  comprobarlo ejecutando el siguiente comando.<br />
<code><br />
# grep POSIX_ACL /boot/config-`uname -r`<br />
CONFIG_EXT2_FS_POSIX_ACL=y<br />
CONFIG_EXT3_FS_POSIX_ACL=y<br />
CONFIG_REISERFS_FS_POSIX_ACL=y<br />
CONFIG_JFS_POSIX_ACL=y<br />
CONFIG_FS_POSIX_ACL=y<br />
CONFIG_XFS_POSIX_ACL=y<br />
# CONFIG_TMPFS_POSIX_ACL is not set<br />
</code></p>
<p>Como vemos tenemos el soporte de ACLs activado en el kernel. De  lo contrario tenemos que recompilarlo teniendo el cuenta marcando estas opciones.<br />
Las ACL pueden aplicarse  sobre sistemas de archivos ReiserFS, XFS, Ext3 y otros.</p>
<p><strong>3.- Soporte ACL en /etc/fstab:</strong></p>
<p>Una vez que tenemos soporte ACL necesitamos configurar el archivio /etc/fstab. Los sistemas de archivos montados con acl tienen la palabra clave &#8220;acl&#8221; en las opciones de montaje de sus entradas en el archivo.<br />
<code><br />
/dev/hda1 /opt  ext3     defaults               0 0<br />
</code></p>
<p>Como vemos el dispositivo /dev/hda1 no tiene  soporte acl en el punto de montaje , si queremos activarlo cambiamos el archivo como sigue:<br />
<code><br />
/dev/hda1 /opt  ext3     defaults,acl           0 0<br />
</code></p>
<p>Una vez que hemos actualizado el archivo /etc/fstab tenemos que  remontar el file system .</p>
<p>Ejemplo para hda1:<br />
<code><br />
# mount -o remount    /dev/hda1<br />
</code></p>
<p><strong>4.- Soporte ACL en el espacio de usuario:</strong></p>
<p>El último paso para usar ACL es asegurarse de que las aplicaciones de espacio de usuario estén presentes en el sistema. En Debian podemos comprobarlo de esta manera:</p>
<p><code><br />
# dpkg -l |grep  acl<br />
ii  acl                                        2.2.42-1ubuntu1<br />
Access control list utilities<br />
ii  libacl1                                    2.2.42-1ubuntu1<br />
</code></p>
<p>También podemos comprobarlo  buscando las herramientas:<br />
<code><br />
# type -a getfacl<br />
getfacl is /usr/bin/getfacl<br />
</code></p>
<p>Si el control de ACLs no esta instalado podemos  instalarlo con el comando apt ejecutando:<br />
<code><br />
# apt-get install acl<br />
</code></p>
<p><strong>5.- Formato ACL:</strong></p>
<p>Linux soporta 2 tipos básicos de ACL:</p>
<ul>
<li>ACL de control de directorios y archivos.</li>
<li> ACL de directorio (máscaras) ACL que toman por defecto los archivos creados en ese directorio.</li>
</ul>
<p>La ACL se representa por tres campos separados por &#8220;:&#8221;.</p>
<p>Campo 1:<br />
Entrada</p>
<ul>
<li> &#8220;u&#8221; Usuario</li>
<li>&#8220;g&#8221; Grupo</li>
<li>&#8220;o&#8221; Otro</li>
<li> &#8220;m&#8221; Máscara</li>
</ul>
<p>Campo 2:</p>
<ul>
<li>UID (ID numérico de usuario)</li>
<li>GID (ID numérico de grupo)</li>
<li>Vacío (Asume UID,GID del Creador)</li>
</ul>
<p>Campo 3:</p>
<p>El tercer campo es el de acceso y puede ser representado de 2 maneras.</p>
<ul>
<li>Cadena estandar RWX (las cadenas se pueden remplazar por &#8220;-&#8221; si no queremos dar acceso de ese tipo)</li>
<li>Cadena simbólica + ^</li>
</ul>
<p><strong>6.- Herramientas:<br />
</strong></p>
<ul>
<li> chacl: Permite cambiar, examinar o eliminar ACL.</li>
<li>getfacl: Permite examinar acl para encontrar archivos o directorios.</li>
<li>setfacl: Establece ACL a fichero o directorio.</li>
</ul>
<p><strong>7.- Mostrar ACL:</strong></p>
<p>Para el ejemplo usaremos un directorio con archivos que hemos creado usando el comando touch.<br />
<code><br />
$ ls -l<br />
total 0<br />
-rw-r--r-- 1 prueba prueba 0 2008-01-26 03:03 archivo.txt<br />
-rw-r--r-- 1 root  root  0 2008-01-26 03:03 pass<br />
-rw-r--r-- 1 root  root  0 2008-01-26 03:02 user<br />
</code></p>
<p>La acl para el directorio siguiente es:<br />
<code><br />
$ getfacl .<br />
# file: .<br />
# owner: root<br />
# group: root<br />
user::rwx<br />
group::rwx<br />
other::rwx<br />
</code></p>
<p>La acl por defecto para el archivo <strong>archivo.txt</strong> es esta:<br />
<code><br />
$ getfacl archivo.txt<br />
# file: archivo.txt<br />
# owner: prueba<br />
# group: prueba<br />
user::rw-<br />
group::r--<br />
other::r--<br />
</code></p>
<p>La acl para el directorio el cual no se le ha asignado toma los valores de umask.</p>
<p><strong>8.- Establecer ACL:</strong></p>
<p>Tenemos varias maneras de establecer un ACL:</p>
<ol>
<li> Usando el comando setfacl el cual sobrescribe cualquier ACL anterior.</li>
<li>Usando el comando setfacl con la opción -m (Modifica ACL).</li>
<li>Usando chacl para modificar una ACL existente.</li>
</ol>
<p>Veamos entonces como podemos las acl con <strong>chacl</strong>, este comando  sobrescribe la existente, y además proporciona algo más de información acerca del funcionamiento de las listas de acceso.</p>
<p>Ejemplo:</p>
<p>Añadiremos al usuario fab como alguien que puede leer el archivo  archivo.txt, y usaremos chacl (cambiar la ACL) ejecutando:<br />
<code><br />
$ chacl u::rw-,g::r--,o::---,u:fab:r--,m::rw- archivo.txt<br />
</code></p>
<p>Esta es la forma en la que colocamos una acl en la vida real, el hecho de que este sea un comando demasiado largo es que se debemos  definir en los puntos ya nombrados anteriormente el propietario de archivo, grupo propietario y otros.</p>
<p>Para que podamos entender mejor, la porción u::rw,g::r&#8211;,o::&#8212; es la ACL existente y la porción u:fab:r&#8211;,m::rw- especifica el nuevo usuario que quiero añadir a dicha acl y la máscara de permisos cuando sea añadida dicha acl.</p>
<p>La máscara de permisos nos muestra la unión de todos los permisos ya existentes de User,Group,Others para un archivo o directorio.</p>
<p>Podemos hacer la siguiente comprobación:<br />
<code><br />
$ getfacl archivo.txt<br />
# file: archivo.txt<br />
# owner: prueba<br />
# group: prueba<br />
user::rwx group::r-- other::--- user:fab:r-- mask::rw-<br />
</code></p>
<p>Ahora que ya sabemos como funciona acl podriamos poner que fab tenga permisos de lectura y escritura a archivo.txt:<br />
<code><br />
$ chacl u::rw-,g::r--,o::---,u:fab:rr-,m::rw- archivo.txt<br />
</code></p>
<p>Como vemos en el ejemplo hemos agregado permisos de escritura:<br />
<code><br />
$ getfacl archivo.txt<br />
# file: archivo.txt<br />
# owner: prueba<br />
# group: prueba<br />
user::rwx group::r-- other::---user:fab:rw-<br />
</code></p>
<p>A trabajar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabianampalio.com.ar/?feed=rss2&amp;p=244</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ejemplos del comando cpio</title>
		<link>http://www.fabianampalio.com.ar/?p=239</link>
		<comments>http://www.fabianampalio.com.ar/?p=239#comments</comments>
		<pubDate>Sat, 17 Apr 2010 14:16:53 +0000</pubDate>
		<dc:creator>Fabian</dc:creator>
				<category><![CDATA[Comandos]]></category>

		<guid isPermaLink="false">http://www.fabianampalio.com.ar/?p=239</guid>
		<description><![CDATA[1.- Para copiar archivos en un diskette: $cpio -ov < archivos.txt > /dev/fd0 Esto copia los archivos que estan en el archivo llamado archivos.txt en un dkt. El parámetro v hace que el comando muestre el nombre de cada archivo copiado. Este comando es muy util para hacer backups copiado los archivos. El diskette debe [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1.-  Para copiar archivos en un diskette: </strong></p>
<p><code><br />
$cpio -ov < archivos.txt > /dev/fd0<br />
</code></p>
<p>Esto copia los archivos que estan en el archivo llamado archivos.txt  en un dkt.<br />
El parámetro v hace que el comando muestre el nombre  de  cada archivo copiado. Este comando es muy util para hacer backups copiado los archivos. El diskette debe estar formateado pero no debe estar montado.</p>
<p><strong>2.-  Para copiar archivos del directorio actual a un diskette ejecutar: </strong></p>
<p><code><br />
$ls *.c cpio -ov > /dev/fd0<br />
</code></p>
<p>Este comando copia los archivos que terminan en .c al dispositivo /dev/fd0.</p>
<p><strong>3.-  Para copiar los directorios y subdirectorios a un diskette</strong></p>
<p><code><br />
find . -print cpio -ov > /dev/rfd0<br />
</code></p>
<p>Este comando guarda el arbol de directorios incluidos en &#8220;.&#8221; directorio actual incluyendo los archivos en el dispositivo /dev/fd0.</p>
<p>Para hacer esto mas rápido ejecutar:<br />
<code><br />
find . -cpio /dev/fd0 -print<br />
</code></p>
<p>El parámetro print muestra el nombre de cada uno de los archivos copiados.</p>
<p><strong>4.- Para listar los archivos que han sido copiados al diskette con el comando cpio ejecutar: </strong><br />
<code><br />
cpio -itv </dev/fd0<br />
</code></p>
<p>Este comando muestra el contenido de los  datos guardados previamente en el dispositivo /dev/fd0 usando el comando cpio. El listado es parecido al que se muestra al ejecutar el comando ls -l en un directorio.</p>
<p><strong> 5.-  Para restaurar los archivos previamente guardados con cpio en un diskette, ejecutar: </strong></p>
<p><code><br />
cpio -idmv < /dev/fd0<br />
</code></p>
<p>Este comando restaura los archivos previamente guardados en  /dev/fd0 por medio del comando cpio en el  directorio actual (parámetro -i). El parámetro  d  activa al comando cpio para que cree los directorios que estan en el dispositivo. El parámetro m mantiene fecha de actualización. El parámetro v nos muestra los archivos que se estan restaurando.</p>
<p><strong>6.-  Para restaurar algunos archivos seleccionados, ejecutar: </strong></p>
<p><code><br />
$cpio -i "*.c" "*.o" < /dev/fd0<br />
</code></p>
<p>Este parámetro restaura los archivos que terminan en ".c" ó ".o" desde el dispositivo la doble comilla hace que el asterisco solo sea visible dentro de las mismas de lo contrario se aplicaría a todo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabianampalio.com.ar/?feed=rss2&amp;p=239</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Metodos de compresión y descompresión</title>
		<link>http://www.fabianampalio.com.ar/?p=236</link>
		<comments>http://www.fabianampalio.com.ar/?p=236#comments</comments>
		<pubDate>Fri, 09 Apr 2010 23:40:47 +0000</pubDate>
		<dc:creator>Fabian</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.fabianampalio.com.ar/?p=236</guid>
		<description><![CDATA[Comandos utilizados para la compresión y descompresión de archivos Comando tar El comando tar es utilizado normalmente para empaquetar archivos. El comando tar no comprime automáticamente los archivos mientras los empaqueta. El formato del comando tar es: tar ... donde es la lista de comandos y opciones para tar, y hasta es la lista de [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Comandos utilizados para la compresión y descompresión de archivos</strong></p>
<p><strong>Comando tar</strong></p>
<p>El comando tar es utilizado normalmente para empaquetar archivos. El comando tar no comprime<br />
automáticamente los archivos mientras los empaqueta. El formato del comando tar es:<br />
<code><br />
tar <opciones> <archivo1> <archivo2> ...<archivoN><br />
</code></p>
<p>donde <opciones> es la lista de comandos y opciones para tar, y <archivo1> hasta <archivoN> es<br />
la lista de archivos a añadir o extraer del archivo empaquetado. Por ejemplo, el comando<br />
<code><br />
# tar cvf backup.tar /etc<br />
</code></p>
<p>empaquetará todos los archivos de /etc en el archivo backup.tar.</p>
<p>En el primer argumento de tar (&#8220;cvf&#8221;), la opción &#8220;c&#8221; le dice a tar que cree un nuevo archivo<br />
(create). La opción &#8220;v&#8221; fuerza a tar en el modo verbose, imprimiendo los nombres de los archivos<br />
según se empaquetan. La opción &#8220;f&#8221; le dice a tar que el siguiente argumento (backup.tar) es el<br />
nombre del archivo a crear. El resto de los argumentos de tar son los nombres de archivos y<br />
directorios a añadir al archivo empaquetado.</p>
<p><strong>Descomprimir archivos con tar</strong><br />
<code><br />
# tar xvf backup.tar<br />
</code></p>
<p>Esto, extraerá el archivo backup.tar en el directorio actual. Esto puede ser peligroso, porque si el<br />
archivo ya existía se sobrescribirá. Por otra parte, antes de extraer archivos tar es importante<br />
conocer donde se deben desempaquetar.</p>
<p>Por ejemplo, digamos que se empaquetaron los siguientes archivos: /etc/hosts, /etc/group, y<br />
/etc/passwd. Si se usó:</p>
<p><code><br />
# tar cvf backup.tar /etc/hosts /etc/group /etc/passwd<br />
</code></p>
<p>el nombre de directorio /etc se añadió al principio de cada nombre de archivo. Para poder extraer<br />
los archivos en el directorio correcto, se necesitará utilizar los siguientes comandos:<br />
<code><br />
# cd /<br />
# tar xvf backup.tar<br />
</code></p>
<p>Ya que los archivos se extraen con el nombre de camino almacenado. Sin embargo, si se<br />
empaquetaron los archivos con los comandos:<br />
<code><br />
# cd /etc<br />
# tar cvf hosts group passwd<br />
</code></p>
<p>Los nombres de directorio no se salvaron en el archivo empaquetado. Por esto se necesitara hacer<br />
&#8220;cd /etc&#8221; antes de extraer los archivos. Como se puede ver, el cómo haya sido creado un archivo<br />
tar marca una gran diferencia en como se extrae. Se puede usar el comando:<br />
<code><br />
# tar tvf backup.tar<br />
</code><br />
para mostrar un &#8220;índice&#8221; del archivo tar antes de desempaquetarlo. De esta forma se puede ver que<br />
directorio se utilizó como origen de los nombres de los archivos, y se puede extraer el archivo<br />
desde la localización correcta.<br />
Además agregando el switch ’z’ utiliza el gzip y el gunzip para comprimir / descomprimir.</p>
<p><strong>Comando gzip</strong></p>
<p>El comando gzip se utiliza para comprimir un archivo. El formato del comando gzip es:<br />
gzip archivo</p>
<p>(archivo se convierte en archivo.gz comprimido)<br />
<code><br />
gzip −c archivo > archivo.gz<br />
</code></p>
<p>(Se crea archivo.gz, archivo no se modifica)</p>
<p>Por ejemplo:<br />
<code><br />
# gzip −9 backup.tar<br />
</code><br />
Comprimirá backup.tar y lo dejará como backup.tar.gz, que es la versión comprimida del archivo<br />
tar. La opción −9 le dice a gzip que utilice el mayor factor de compresión.</p>
<p><strong>Descomprimir archivos con gunzip o con gzip<br />
</strong><br />
El comando gunzip se utiliza para descomprimir un archivo comprimido con gzip.</p>
<p>Equivalentemente, se puede utilizar &#8220;gzip −d&#8221;.</p>
<p>El formato del comando gunzip es:</p>
<p><code><br />
gunzip archivo.gz                                   (descomprime archivo.gz)<br />
gunzip −c archivo.gz > nuevo               (descomprime archivo.gz y se redirecciona la salida al archivo nuevo).</p>
<p><strong>Comprimir y empaquetar</strong></p>
<p>Por lo tanto, para empaquetar un grupo de archivos y comprimir el resultado, se pueden utilizar los</p>
<p>comandos:<br />
<code><br />
# tar cvf backup.tar /etc<br />
# gzip −9 backup.tar<br />
</code></p>
<p>El resultado será backup.tar.gz.</p>
<p>Para desempaquetar este archivo, se usan los comandos contrarios:<br />
<code><br />
# gunzip backup.tar.gz<br />
# tar xvf backup.tar<br />
</code></p>
<p><strong>Comando zcat </strong></p>
<p>Es similar al cat, pero pasando el archivo a través del gunzip. Con zcat podemos, ver el contenido<br />
de una archivo comprimido sin descomprimirlo, similar al cat. El formato del comando zcat es:<br />
<code><br />
# zcat <archivo−de−texto−comprimido><br />
</code></p>
<p><strong>Comandos zip y unzip</strong></p>
<p>Este comando es una utilidad para empaquetar y comprimir archivos. Para una descripción de los<br />
parámetros de zip o unzip se puede ejecutarlos sin parámetros en el shell.</p>
<p><strong>El formato del comando zip es:</strong></p>
<p># zip <nombre_archivo_comprimido> <archivos_a_comprimir></p>
<p>Si se quieren comprimir todos los archivos de un directorio se debe usar * en<br />
<archivos_a_comprimir>.</p>
<p>Para descomprimirlos se debe usar el comando unzip. El formato del comando unzip es:</p>
<p># unzip <nombre_archivo_comprimido></p>
<p>Algunas opciones útiles de estos comandos:</p>
<p>−r: comprime todos los subdirectorios y archivos bajo el directorio donde estamos, o<br />
donde le indicamos.<br />
−i: Incluye solo los archivos que especificamos, por ejemplo:<br />
# zip todo * −i \*.txt (solo comprimiría los archivos que finalicen con .txt).<br />
−f: Si ya hemos creado un .zip de nuestros archivos, pero periódicamente modificamos<br />
estos, con este argumento no hace falta crear el .zip de nuevo, este agrega los cambios de<br />
nuestros archivos en el zip, basándose en la fecha de creación de estos. Esta<br />
opción no funciona como −u, no agrega archivos nuevos a nuestro zip, solo actualiza los<br />
que ya están.<br />
−q: Trabaja en modo silencioso, es decir, elimina todos los mensajes informativos.<br />
−u: Actualiza los archivos que hemos modificado, y también agrega archivos a nuestro<br />
.zip.<br />
# zip −u <nombre_archivo_comprimido> <archivo_a_agregar><br />
−x: Esta opción sirve para excluir uno o varios archivos en nuestro .zip.<br />
Taller de GNU/Linux 2002− TP9 − hoja 4/6<br />
# zip <nombre_archivo> * −x \*.Z (se excluyen los archivos Z de nuestro .zip)<br />
−y : Esta opción sirve para guardar los links en el zip como links en vez de guardar el<br />
archivo al que apunta el link.</p>
<p><strong>Comandos bzip2/bunzip2/bzcap/bzip2recover</strong></p>
<p>El comando bzip2 comprime archivos usando el algoritmo Burrows−Wheeler block−sorting text<br />
compression y Huffman coding. La línea de comandos es similar al GNU gzip pero no es idéntica.<br />
Tiene un poco mas de capacidad de compresión que otros compresores mas convencionales<br />
basados en LZ77/LZ78. Este genera archivos de la forma archivo_original.bz2.<br />
El comando bunzip2 se utiliza para descomprimir los archivos generados con bzip2.</p>
<p>Con bzcat se puede consultar el contenido de un archivo de texto comprimido con bzip2.<br />
El comando bzip2 comprime los archivos en bloques de 900kbytes aproximadamente y cada<br />
bloque se maneja de manera independiente lo que posibilita que si un bloque está corrupto se<br />
puedan recuperar los datos de los bloques que están correctos. El programa bzip2recover se utiliza<br />
para buscar bloques correctos dentro de un archivo bzip2 dañado, el único argumento que<br />
necesita este es el nombre del archivo dañado, generando un salida similar a "rec0001fichero.bz2",<br />
"rec0002fichero.bz2", etc. bzip2recover es de mas provecho cuanto mas bloques tiene el archivo<br />
bz2. Es inútil utilizarlo con archivos de un solo bloque pues este no repara bloques sino que extrae<br />
los bloques correctos. Si se desea minimizar la perdida de información por un error del medio<br />
físico o de la transmisión se debería achicar el tamaño de los bloques en el momento de la<br />
compresión.</p>
<p><strong>Comando cpio</strong></p>
<p>Si bien cpio no sirve para comprimir, nos ayudará a empaquetar todos nuestros archivos en uno<br />
solo para después comprimirlo con alguna utilidad. Con cpio se puede empaquetar archivos y<br />
mandarlos al estándar output, a un archivo, o a un dispositivo.</p>
<p><strong>El comando cpio tiene tres modos de operación. </strong></p>
<p>El modo copia−afuera, cpio copia varios archivos de entrada hacia otro único de salida. Este modo<br />
funciona leyendo una lista de archivos, uno por línea de la entrada estándar, escribiendo el archivo<br />
en la salida estándar, este modo se representa utilizando el argumento −o.</p>
<p>El modo copia−adentro cpio copia archivos desde un archivo de entrada. Lee el archivo desde la<br />
entrada estándar, este modo se representa utilizando el argumento −i.</p>
<p>El modo copia−de−paso cpio copia archivos desde un árbol de directorio a otro, sin utilizar utilizar<br />
ningún archivo, este modo se representa utilizando el argumento −p.</p>
<p>Nota: El comando ls genera la lista que es mandada a través de un pipe para que cpio la reciba, y<br />
empaquete los archivos.</p>
<p>Cuando queremos sacar los archivos ejecutamos el siguiente comando:</p>
<p># cpio −iv < archivo.cpio</p>
<p>Si ya hubiese archivos con el mismo nombre y quisiéramos sobreescribirlos utilizaríamos el<br />
argumento u.</p>
<p># cpio −iuv < archivo.cpio</p>
<p>Para ver solamente el contenido del archivo cpio el comando será:</p>
<p># cpio −tv < archivo.cpio</p>
<p><strong>Comando unrar</strong></p>
<p>El comando unrar permite descomprimir archivos comprimidos con la aplicación rar. El<br />
mecanismo de compresión del rar es propietario, razón por la cual no existen compresores tipo rar<br />
de libre uso.</p>
<p>El texto anterior es una adaptacion de:</p>
<p>http://lucas.hispalinux.es/Manuales−LuCAS/LIPP/lipp−1.1−html−2/lipp.htm</p>
<p>Ejercicios</p>
<p>1)Buscar algún archivo de texto comprimido con gzip (*.gz);<br />
Ayuda: para buscar archivos, utilizar el comando "locate" Archivo elegido o find:<br />
2) Utilizar cat para ver el contenido. (Si la terminal queda mal configurada, comando “reset”)<br />
3)Utilizar zcat para ver el contenido. Si es muy largo el texto pasarlo a través de less o more.<br />
4)descomprimir el archivo ( en /tmp)<br />
5)Verificar que esté sin compresión y comprimirlo nuevamente en el mismo formato .<br />
6)Hacer un .tar.gz de todos los archivos en /bin. Utilizar los comandos tar y gzip unidos con un<br />
pipe.<br />
7)descomprimirlos en /tmp<br />
 <img src='http://www.fabianampalio.com.ar/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> Obtener una salida equivalente a la que se obtendría realizando:<br />
# tar cvf backup.tar /etc<br />
# gzip backup.tar<br />
pero en una sóla línea y utilizando sólo el comando tar.<br />
9) comprimir todos los archivos de /etc en un archivo llamado backup_etc utilizando el comando<br />
zip. Descomprimirlo en ~/etc usando el comando unzip<br />
10)Generar un archivo cpio que contenga todos los archivos del directorio /sbin.<br />
11) Extraer los archivos desde el archivo cpio creado en el punto anterior en el directorio ~/sbin.<br />
12) Generar un archivo bzip2 que contenga todos los archivos del directorio /sbin.<br />
Generar un archivo zip que contenga todos los archivos del directorio /sbin.<br />
Generar un archivo tar.gz que contenga todos los archivos del directorio /sbin.<br />
Anotar los tamaños de los archivos resultantes<br />
Nota: Si los tamaños difieren demasiado, puede deberse a la inclusión o no de "links" en la<br />
compresión. Para que la comparación sea válida, incluir los archivos apuntados con links dentro de<br />
los archivos comprimidos. (El significado de links o enlaces se verá mas adelante en el curso)<br />
Sbin.cpio Sbin.zip<br />
Sbin.bz2 Sbin.tar.gz</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fabianampalio.com.ar/?feed=rss2&amp;p=236</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
