Semana 7

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 29

Desarrollo de sistemas operacionales

INTRODUCCION

En esta semana 3 con VirtualBox que es una de las herramientas más completas que podemos
utilizar para virtualizar todo tipo de sistemas operativos. Esta aplicación, gratuita y de código
abierto, es propiedad de Oracle y nos permite instalar cualquier sistema operativo (Windows, Linux,
macOS, etc) en una máquina virtual de manera que podamos utilizarlo sin alterar el funcionamiento
de nuestro sistema operativo principal. Este tipo de herramientas deben actualizarse
constantemente con el fin de ofrecer el mejor rendimiento y la mejor compatibilidad.

Objetivo General:

El objetivo, es que se aprenda a crear un servidor Linux y pr, enlazarlo con otro servidor Linux,
probar la interconexión las redes y desarrollar los talleres de cada entrega.

Desarrollo:

1. Diseñe el modelo de comunicaciones cliente servidor de un nodo servidor y dos


clientes en máquinas virtuales.

A efectos prácticos, la configuración de red en última instancia, será por cuenta de cada sistema
operativo en concreto. VirtualBox nos da las herramientas para realizar la conexión, pero será cada
usuario el que tenga que configurar las características de la red de cada sistema operativo para
conectarlos por ejemplo para ver una carpeta compartida o utilizar control remoto.

0
Acceder a la configuración de red de la máquina virtual

Lo primero que tendremos que saber, como es normal es saber dónde se encuentra ésta
configuración. Podremos hacerlo de dos formas distintas, bien desde la ventana de ejecución de la
máquina virtual o desde el panel principal del administrador de VirtualBox.

Desde la ventana de cada máquina virtual, tendremos que dirigirnos a la barra herramientas de la
zona superior y pulsar sobre “Dispositivos -> Red -> Preferencia de Red”.

Mediante este modo, nosotros podremos comunicar las máquinas virtuales entre ellas como si de
una red LAN se tratase, pero NO tendremos acceso ni a Internet (red exterior) ni incluso a equipos
host. Esto es especialmente útil cuando queremos hacer pruebas de red entre máquinas sin
intervenciones externas ni peligro de que haya agujeros de seguridad.

Si nos fijamos en la conexión de red del sistema operativo, veremos que no tenemos puerta de
enlace, y ni siquiera tendremos una dirección IP parecida a la de nuestro equipo host.

Y por supuesto tendremos el acceso a Internet restringido.

1
Si ahora hiciéramos ping a nuestro host obtendríamos un interesante error de conexión. Esto
demuestra que la red interna funciona solamente para las máquinas virtuales.

Modo de conexión: Adaptador Puente

Este tipo de conexión simula una conexión física a la red de la máquina virtual. Este significa que
nuestra máquina virtual estará conectada a través de un adaptador de red creado en la máquina
host al router o servidor de nuestro entorno.

2
De esta forma, cada máquina virtual obtiene una dirección IP directamente desde la puerta de
enlace a Internet, por lo que tendremos exactamente las mismas posibilidades que si estuviéramos
en un equipo físico.

Podremos tanto navegar por Internet como conectar máquinas físicas. También podremos crear
nuestros propios servidores y acceder a ellos remotamente desde el exterior de nuestra red
mediante la IP pública o dominio creado.

Vemos aquí como hemos obtenido una IP directamente desde nuestro router.

2. Monte VirtuaBox 5.2 (Software libre). Monte el sistema operacional Linux CentOS 6.8
en la máquina virtual (VM) de 40 GB de disco, un Core y 1.024 gb de memoria RAM.

Monte VirtuaBox 5.2 (Software libre).

3
Monte el sistema operacional Linux CentOS 6.8

Se instala CentOS 6.10 con una mejora en la actualización actual.

1.024 gb de memoria RAM

4
40 GB de disco

Funcionamiento del sistema operativo.

5
6
3. Actualice el sistema operacional (yum -y update) y expórtela para tener una copia de
respaldo.

4. Clone la MV con una nueva macadress y cree el servidor cliente.

Máquina server

Adaptador 1 Red Interna “intnet” MAC: 0800275D5E75

Adaptador 2 NAT MAC: 080027489D90.

Cliente 1

Adaptador 1 Red Interna “intnet” MAC: 08002719B770

Cliente 2

Adaptador 1 Red Interna “intnet” MAC: 080027B5A460

7
Desarrollo:

A. Desarrolle en la MV Server, el proceso de comandos básicos, comandos medios y


comandos avanzados.
Los comandos básicos de Linux ayudan a los usuarios a ejecutar tareas de manera fácil y efectiva. Puede
llevar un tiempo recordar algunos de los comandos básicos, pero nada es imposible con mucha práctica
veremos unos ejemplos de comando que se pueden aplicar a nuestra consola virtual

Para obtener información sobre las máquinas virtuales (VM) en su host y sus configuraciones, utilice uno o
más de los siguientes comandos.

Procedimiento: Para obtener una lista de VMs en su host:

Para obtener información básica sobre una máquina virtual específica:

8
Para obtener la configuración XML completa de una VM específica:

Para obtener información sobre los discos y otros dispositivos de bloque de una VM:

Para obtener información sobre los sistemas de archivos de una VM y sus puntos de montaje:

9
Para obtener información sobre los sistemas de archivos de una VM y sus puntos de montaje:

Para obtener más detalles sobre las vCPUs de una VM específica:

Para listar todas las interfaces de red virtuales de su host:

10
B. Monte el compilador de Java

1) Descargar Eclipse

Descargue la última versión de Eclipse (Oxygen) haciendo clic en el enlace


https://www.eclipse.org/downloads/download.php?file=/oomph/epp/oxygen/R/eclipse-inst-
linux64.tar.gz&mirror_id=1093.

2) Mover Eclipse to /opt

Utilice el siguiente comando para mover el eclipse de carpeta extraído a /opt.

11
3) Inicie la aplicación

Busque eclipse en el directorio de la aplicación y haga doble clic en el icono de eclipse para iniciar
la aplicación.

12
C. Desarrolle un programa de Paginación de memoria en Java

Al principio del programa, se simula un ambiente de instalación donde el usuario especifica el


tamaño de la memoria principal, secundaria y el tamaño de las páginas, luego, el usuario podrá ir
creando (el proceso ira a la lista de procesos activos solo si la mitad o más de sus páginas caben en
memoria principal), bloqueando, suspendiendo y eliminando procesos. Se deberá llevar un
registro de: Procesos creados, marcos de página utilizados en la actualidad, memoria disponible y
dos estadísticas más que el alumno deberá implementar. Bono: Al introducir una dirección lógica
en binario el programa deberá resolverla y devolverte la dirección física en binario.

13
import java.util.Scanner;

public class PagMemoria {

String [] memoriatotal = new String [100];.

private Scanner teclado;

public int[] vec;

private Scanner let;

private String letra;

public void cargar() {

teclado=new Scanner(System.in);

let =new Scanner (System.in);

System.out.println("Digite el nombre del proceso");

letra = let.next() ;

System.out.print("Digite el tamaño del proceso:");

int n;

n=teclado.nextInt();

vec=new int[n];

System.out.println("el proceso ocupa "+ n +" espacios de memoria");

for(int f=0;f<vec.length;f++)

System.out.println(letra);

14
public void acumularmemoriatotal();

int suma=0; //

for(int f=0;f<vec.length;f++) {

suma=suma+vec[f];

System.out.println(" Los espacios de memoria utilizados son:"+suma);

public static void main(String[] ar) {

PagMemoria m =new PagMemoria();

m.cargar();

m.acumularEnMemoriaTotal();

D. Desarrolle un programa de manejo de hilos con Java sobre Linux que corra en el server

En esta entrada vamos a ver las diferentes maneras de cómo trabajar con Threads en Java (o hilos
en español). Sino tienes muy claro el concepto de la multitarea te recomendamos que te leas
primero la entrada de Multitarea e Hilos, fácil y muchas ventajas aunque en esta entrada también
veremos (en menor detalle) los conceptos y las ventajas de la multitarea. En esencia la multitarea
nos permite ejecutar varios procesos a la vez; es decir, de forma concurrente y por tanto eso nos
permite hacer programas que se ejecuten en menor tiempo y sean más eficientes.

15
Semana 7
A. Elabore un programa para una pequeña aplicación en Java sobre la máquina virtual Linux,
con cuatro clases (main, limpiar, generar y consumir), en donde desde el main ejecute la
clase, limpie y sincronice dos hilos, uno para generar una variable llamada vacío que tenga
el valor “true”, pero que el hilo consumidor se quede esperando y, cuando cambie “false”
en el hilo generador, entonces dicha variable sea tomada por el hilo consumidor.

En esencia la multitarea nos permite ejecutar varios procesos a la vez; es decir, de forma
concurrente y por tanto eso nos permite hacer programas que se ejecuten en menor tiempo y
sean más eficientes. Evidentemente no podemos ejecutar infinitos procesos de forma
concurrente ya que el hardware tiene sus limitaciones, pero raro es a día de hoy los
ordenadores que no tengan más de un núcleo por tanto en un procesador con dos núcleos se
podrían ejecutar dos procesos a la vez y así nuestro programa utilizaría al máximo los recursos
hardware. Para que veáis la diferencia en un par de imágenes, supongamos que tenemos un
programa secuencial en el que se han de ejecutar 4 procesos; uno detrás de otro, y estos
tardan unos segundos:

Main.java

package es.iessaladillo.pedrojoya.pspro.j7cc0112.main;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Random;

import java.util.concurrent.TimeUnit;

import es.iessaladillo.pedrojoya.pspro.j7cc0112.fabrica.FabricaHilos;

import es.iessaladillo.pedrojoya.pspro.j7cc0112.tarea.Tarea;

public class Main {

public static void main(String[] args) {

// Creo la fábrica de hilos.

FabricaHilos fabrica = new FabricaHilos("Fábrica");

SimpleDateFormat formateador = new SimpleDateFormat("HH:mm:ss");

System.out.printf("%s -> Apertura de la fábrica\n",

formateador.format(new Date()));

// Creo la tarea que ejecutarán todos los hilos.

16
Tarea tarea = new Tarea();

// Creo diez hilos a través de la fábrica que ejecutan la misma tarea

// e inicio su ejecución.

Thread hilo;

Random aleatorio = new Random();

for (int i = 0; i < 10; i++) {

hilo = fabrica.newThread(tarea);

hilo.start();

// Después de iniciar un hilo duermo durante un número de segundos

// aleatorio con un máximo de 3 segundos.

try {

TimeUnit.SECONDS.sleep(aleatorio.nextInt(3));

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

// Muestro el registro (log) de la fábrica.

System.out.printf("%s\n", fabrica.getRegistro());

FabricaHilos.java

package es.iessaladillo.pedrojoya.pspro.j7cc0112.fabrica;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.Iterator;

import java.util.concurrent.ThreadFactory;

17
// Clase que crea hilos.

public class FabricaHilos implements ThreadFactory {

// Atributos de la fábrica

private int contador; // Contador de hilos creados.

private String nombreFabrica; // Nombre.

private ArrayList<String> registro; // Registro de eventos.

// Constructor.

public FabricaHilos(String nombreFabrica) {

// Inicializo los datos de la fábrica.

contador = 0;

this.nombreFabrica = nombreFabrica;

registro = new ArrayList<String>();

// Crea un nuevo hilo y retorna. Recibe el runnable que debe ejecutar.

@Override

public Thread newThread(Runnable r) {

// Creo el hilo con un nombre significativo que incluye el nombre de la

// fábrica.

Thread hilo = new Thread(r, nombreFabrica + "-Hilo-" + contador);

// Incremento el número de hilos creados por la fábrica.

contador++;

// Agrego al registro una entrada para indicar el hilo creado

SimpleDateFormat formateador = new SimpleDateFormat("HH:mm:ss");

registro.add(formateador.format(new Date()) + " -> " + hilo.getName()

+ " creado\n");

return hilo;

18
// Retorna el registro (log) de la fábrica en formato cadena.

public String getRegistro() {

// Recorro el registro y construyo una cadena con todo su contenido.

StringBuffer sRegistro = new StringBuffer();

Iterator<String> indice = registro.iterator();

while (indice.hasNext()) {

// Añado la entrada del registro a la cadena.

sRegistro.append(indice.next());

// Retorno la cadena resultante.

return sRegistro.toString();

B. Monte una red interna entre las dos máquinas virtuales.

Configuración de VirtualBox

Este es el esquema de red con el que queremos trabajar. Vamos a utilizar VirualBox para simular
las máquinas que necesitamos en nuestro esquema de trabajo, de esta forma necesitaremos 3
máquinas virtuales:

Servidor Windows Server: Donde instalaremos Windows 2008 server.

19
Las caracteristicas de esta máquina será:

RAM: 512 Mb

Disco duro:10 Gb

Dos tarjetas de red: Un modo puente y otra Red Interna.

Dos clientes: uno instalado con un sistema operativo Windows y otro con Linux.

Entrega capturas de pantalla donde se vea la pantalla principal de VirtualBox con todas las
características de las máquinas que acabas de crear.

Instalación y configuración de los sistemas operativos

Después de instalar los sistemas operativos, tienes que instalar las "Guests Additions". A
continución tenemos que configurar los siguientes parámetros:

El nombre de las máquinas: lo podemos hacer durante la instalación del sistema o después de la
instalación, para ello en el sistema Windows:

Inicio -> Botón derecho en Equipo -> Propiedades -> Cambiar configuración -> Cambiar ...

En el sistema Linux, modificamos el archivo /etc/hostname.

Para que no tengamos problemas de conectividades vamos a desconectar el cortafuego del


windows Server, para ello:

Inicio -> Herramientas administrativas -> Firewall de Windows con seguridad avanzada -> Y
desactivamos los tres perfiles (dominio, privado, público),

Configuración de las interfaces de red.

En el Windows Server:

La primera tarjeta la configuramos de forma dinámica en modo automática.

La segunda tarjeta la configuramos con estas características:

Dirección IP: 192.168.0.1

Mascara de red: 255.255.255.0

Entrega una captura de pantalla donde se vea una ventana Windows donde se este ejecutando la
máquina virtual creada y la ejecución en una ventana de comandos (cmd) del comando ipconfig
para que se vea la configuración de red.

En los clientes

La interfaz de red la configuramos de forma estática::

IP: 192.168.0.2 (Windows) - 192.168.0.3 (Linux)

Máscara: 255.255.255.0

Puerta de enlace: 192.168.0.1

20
Dns: 192.168.102.2

Entrega dos capturas de pantalla: una donde se vea el cliente Windows con una consola de
texto con el comando ipconfig ejecutado, de esta manera podremos ver la configuración de red,
otra donde se vea el cliente Linux con una consola de comando donde se vea ejecutado la
instrucción ifconfig, para ver la configuración de red.

Entrega una captura de pantalla donde se compruebe que se puede hacer ping desde los dos
clientes.

Para terminar tenemos que hacer que el servidor Windows Server tenga la función de router y
haga NAT, para que todas las peticiones que vengan por la "red Interna" sea enrutada por la tarjeta
de red "Puente" y de esta manera los clientes sean capaz de salir a internet.

Para ello hay que seguir los siguientes pasos:

Inicio -> Herramientas administrativas -> Administrador del servidor

Agregar roles -> Servicios de acceso y directiva de redes

En la pantalla servicios de rol escoge Enrutamiento -> Instalar

En administardor de servidor, en la ventana izquierda, desplegamo la pestañe de Roles, hasta


que veamos Enrutamiento y acceso

Botón derecho -> Configurar y habilitar Enrutamiento y acceso remoto -> Traducción de
direcciones de red (NAT) -> Siguiente -> Siguiente -> Configurar más adelante los servicios de
nombres y direcciones

C. Haga una transferencia de archivos entre las máquinas virtuales usando el comando scp.

El comando scp linux lo utilizamos para transferir archivos entre dos servidores. Desde el servidor
origen ejecutamos el comando y a continuación el archivo a transferir. Luego tenemos que decir el
usuario de la máquina destino y la ip o dominio. Despues de los dos puntos, el directorio destino
del fichero:

¿Qué hace el comando SCP en Linux??

Comando SCP de Linux: Copiar de forma segura & Transferir archivos. El comando SCP (Copia
segura) es un método para cifrar la transmisión de archivos entre sistemas Unix o Linux. Es una
variante más segura del comando cp (copiar). SCP incluye cifrado a través de una conexión SSH
(Secure Shell).

¿SCP copia o mueve?

21
La herramienta scp se basa en SSH (Secure Shell) para transferir archivos, por lo que todo lo que
necesita es el nombre de usuario y la contraseña para los sistemas de origen y destino. Otra
ventaja es que con SCP puedes mover archivos entre dos servidores remotos, desde tu máquina
local además de transferir datos entre máquinas locales y remotas.

¿Cómo SCP una carpeta??

Ayudar:

-r Copie de forma recursiva todos los directorios y archivos.

Utilice siempre la ubicación completa desde /, Obtenga la ubicación completa por pwd.

scp reemplazará todos los archivos existentes.

el nombre de host será el nombre de host o la dirección IP.

si se necesita un puerto personalizado (además del puerto 22) use -P número de puerto.

22
E. Monte un sistema de archivos NFS.

El protocolo NFS (del inglés Network File System) fue diseñado para permitir sistemas de archivo
distribuido en entornos de red local. Esto significa que cualquier equipo, ya sea un ordenador de
usuario o un servidor, es capaz de acceder a la información almacenada como si se tratara de
almacenamiento de un disco duro local. La primera versión fue presentada por Sun Microsystems
en 1984 y fue pensada para que fuera independiente del sistema operativo utilizado por cada
equipo y del tipo de red local que hubiera. Hay que recordar que en esa época la tecnología
TCP/IP competía con otros tipos de redes y aún no estaba claro cuál sería la red predominante.

aso 1 - Instalar el servidor

[root@server ~]# yum install nfs-utils

Paso 2 - Creación de directorios: Estos coresponden a los repositorios donde se va a compartir la


información. Los permisos se pueden ver después (por lo general es 755 o 777)

[root@server ~]# mkdir /data

[root@server ~]# chmod 777 /data

Paso 3 (Exclusivo de SELinux) - Setear banderas: Ya que Centos 7 viene con SElinux, este no
permite que NFS comparta archivos, por lo que se deben activar algunas banderas para así poder
compartir

[root@server ~]# setsebool -P nfs_export_all_ro=1 nfs_export_all_rw=1

nfs_export_all_ro Opción con la que ya podemos empezar a compartir el servicio

23
nfs_export_all_rw Opción para que todos puedan leer y escribir

Para verificar que haya sido aplicado (las banderas)

[root@server ~]# getsebool -a | grep nfs_export

nfs_export_all_ro --> on

nfs_export_all_rw --> on

Paso 4 - Configuración en Firewall

[root@server ~]# firewall-cmd --permanent --add-service nfs

[root@server ~]# firewall-cmd --reload

En caso de que se tenga deshabilitado el firewall se debe obviar ese paso 4, verificar por medio de
firewall-cmd --state

Paso 5 - Habilitación de servicios

[root@server ~]# systemctl enable rpcbind

[root@server ~]# systemctl enable nfs-server

[root@server ~]# systemctl start rpcbind

[root@server ~]# systemctl start nfs

Paso 6 - Permisos

Se debe modificar el archivo /etc/exports, ya que es ahí donde deben estar todos los directorios
que queremos que estén disponibles para NFS. Se puede poner desde uno hasta los necesarios,
este archivo es importante ya que aquí definimos algunos permisos y protocolos que podemos
usar.

[root@server ~]# vi /etc/exports

se debe agregar la siguiente línea:

/data xxx.xxx.xx.xx/24(rw,sync,no_root_squash)

24
Explicación:

-> /data -> Es el directorio a compartir

-> xxx.xxx.xx.xx/24 -> Es la ip de la maquina con la mascara de subred

-> rw -> Son permisos de escritura

-> sync -> Todos los cambios en el sistema de archivos correspondiente se vacían inmediatamente
al disco; Se esperan las respectivas operaciones de escritura

-> no_root_squash -> De forma predeterminada, cualquier solicitud de archivo realizada por el
usuario root en la máquina cliente es tratada como por el usuario nobody en el servidor. Si se
selecciona no_root_squash, el root en la máquina cliente tendrá el mismo nivel de acceso a los
archivos del sistema como root en el servidor.

Exportar los cambios y reiniciar los servicios

[root@server ~]# exportfs -avr

[root@server ~]# systemctl restart rpcbind

[root@server ~]# systemctl restart nfs

Cliente NFS

En el lado cliente se deben instalar las utilidades NFS al igual que en el Servidor

Instalar utilidades

[root@client ~]# yum install nfs-utils

Activar los servicios

[root@client ~]# systemctl enable rpcbind

[root@client ~]# systemctl start rpcbind

Crear el directorio a montar

Este directorio es el que se va a montar en nuestro Servidor

[root@client ~]# mkdir /mnt/data

Montar el directorio

[root@client ~]# mount -t nfs -o rw < IP o Servidor NFS >:/data /mnt/data

25
Verificación

[root@client ~]# df -h < IP o Servidor NFS >:/data 500G 1.7G 499G 1% /mnt/data

El siguiente es un ejemplo real de verificación (en este caso el cliente es Ubuntu, y el Servidor es
10.129.67.23)

¿Cómo Dejar persistentes los cambios?


En caso de querer que se monte el NFS cada vez que se reinicia el servidor, se debe de
modificar el fstab para que se automonte.

[root@client ~]# vi /etc/fstab


< IP o Servidor NFS >:/data/ /mnt/data nfs rw,sync,hard,intr 0 0

1. Ejemplo en donde el cliente es Ubuntu

Cuando Ubuntu es el cliente se debe de tomar en cuenta lo siguiente:

Instalar nfs-common
sudo apt install nfs-common

nfs-common es necesario para el comando de mount -t (especificar el tipo de filesystem)


Montar el directorio
sudo mount -t nfs 10.129.67.23:/data /mnt/data/

Ejemplo real (Ubuntu Client - CentOS 7 Server)


sudo mount -t 10.129.67.23:/mnt/pcrf_logs/ /mnt/pcrf_logs/

26
E. Elabore una copia de seguridad de las carpetas / etc. Envíe al tutor el log de compresión

27
CONCLUSIONES

Esta implementación, utilizando máquinas virtuales, no pretende demostrar una mayor eficiencia
frente a maquinas reales. Pero, si se pudiese virtualizar la CPU y puentear (modo bridge) las
interfaces de red, que lograría una mejor eficiencia. Una de las grandes ventajas que tiene utilizar
VirtualBox es la manejabilidad del mismo, es muy versátil y te lo puedes llevar a donde quieras,
siempre y que en el otro PC al que vayas tengas instalado VirtualBox también. Para esto tan solo
tenemos que ir a la carpeta donde seleccionamos al principio la instalación de la máquina virtual
seleccionada.

REFERENCIAS BIBLIOGRÁFICAS – INFOGRAFÍA

«Changelog-5.2» (en inglés). Oracle VM VirtualBox. 15 de enero de 2019.

«VirtualBox 5.2 builds» (en inglés). Oracle VM VirtualBox. 15 de enero de 2019.

«GPL» (en inglés).

«VirtualBox PUEL» (en inglés).

«Sun Microsystems Announces Agreement to Acquire Innotek, Expanding Sun xVM Reach to the
Developer Desktop» (en inglés).

«Oracle and Virtualization» (en inglés).

28

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy