Está en la página 1de 29

Instituto Superior de Formación Docente y Técnica 

N°210. Tecnicatura Superior en Análisis de Sistemas.

Alumno: Quevedo, Ramiro Exequiel.

Materia: Sistemas Operativos.

Profesor: Robles, Matías.


Sistemas Operativos
Trabajo Práctico Nro. 2
1.- Arranque de un Sistema Operativo
a) ¿Qué es el MBR (Master Boot Record)? ¿Qué es el MBC (Master Boot Code)?
Master Boot Record (MBR): Es un registro de arranque principal, conocido también
como registro de arranque maestro (por su nombre en inglés master boot record, MBR)
es el primer sector de un dispositivo de almacenamiento de datos, como un disco duro. A
veces, se emplea para el arranque del sistema operativo con bootstrap, otras veces es
usado para almacenar una tabla de particiones y, en ocasiones, se usa sólo para
identificar un dispositivo de disco individual, aunque en algunas máquinas esto último no
se usa y es ignorado. Actualmente los discos duros DOS se cuenta con cierta cantidad
de particiones, pudiendo ser 3 primarias y 1 extendida, de las cuales solo se posee 1
partición boot que es la encargada de "arrancar" todo el sistema operativo en el disco
duro. Según la teoría, es el sector cero del dispositivo de almacenamiento de datos.
Master Boot Code (MBC): o código de inicio maestro es una de las varias partes del
master boot record (registro de inicio maestro). Realiza el primer conjunto de funciones
importantes en el proceso de arranque. En el registro de inicio maestro genérico, el
código de master boot code consume 446 bytes del registro de inicio maestro total de los
412 bytes; el espacio restante es utilizado por la tabla de particiones (64 bytes) y la firma
de disco de 2 bytes.

b) ¿Cuál es la funcionalidad de un “Gestor de Arranque”? ¿Dónde se


instalan? Cite gestores de arranque conocidos.
Un cargador de arranque, también llamado gestor de arranque, es un pequeño
programa que carga el sistema operativo de un ordenador en la memoria. Cuando
el ordenador se enciende o se reinicia, el sistema básico de entrada y salida (BIOS)
realiza algunas pruebas iniciales y transfiere el control al registro de arranque
master (MBR) donde se aloja el cargador de arranque. Muchos equipos nuevos
están equipados con cargadores de arranques para una cierta versión de Microsoft
Windows o Mac OS. Si el equipo va a ejecutar Linux, entonces es necesario
instalar un cargador de arranque especial.
Los dos cargadores de arranque más comunes para Linux se conocen como LILO
(LInux Loader) y LOADLIN (LOAD Linux). También existe un cargador alternativo
llamado GRUB (Grand Unified Bootloader), que se usa con Red Hat Linux. LILO es
el cargador más conocido entre los usuarios que usan Linux como único, o principal
sistema operativo. La ventaja fundamental de LILO es el hecho de que permite un
arranque muy rápido. LOADLIN es más utilizado por los usuarios que tienen varios
sistemas operativos instalados y no dedican mucho tiempo al uso de Linux.
LOADLIN también suele ser utilizado como cargador de arranque de seguridad por
si acaso LILO fallase. GRUB es la opción preferida por los usuarios de Red Hat
Linux, ya que es el cargador de arranque por defecto de esta distribución.

c) ¿Cuáles son los pasos se suceden desde que se prende una


computadora hasta q ue el Sistema Operativo está cargado?
En Linux, el flujo de control durante el arranque es desde el BIOS, al gestor de
arranque y al núcleo (kernel). El núcleo inicia el planificador (para permitir la multitarea) y
ejecuta el primer espacio de usuario (es decir, fuera del espacio del núcleo) y el
programa de inicialización (que establece el entorno de usuario y permite la interacción
del usuario y el inicio de sesión), momento en el que el núcleo se inactiva hasta que sea
llamado externamente.
La etapa del cargador de arranque no es totalmente necesaria. Determinadas BIOS
pueden cargar y pasar el control a Linux sin hacer uso del cargador. Cada proceso de
arranque será diferente dependiendo de la arquitectura del procesador y el BIOS.

1. El BIOS realiza las tareas de inicio específicas de la plataforma de hardware.


2. Una vez que el hardware es reconocido y se inicia correctamente, el BIOS carga y
ejecuta el código de la partición de arranque del dispositivo de arranque
designado, que contiene la fase 1 de un gestor de arranque Linux. La fase 1 carga
la fase 2 (la mayor parte del código del gestor de arranque). Algunos cargadores
pueden utilizar una fase intermedia (conocida como la fase 1.5) para lograr esto,
ya que los modernos discos de gran tamaño no pueden ser totalmente leídos sin
código adicional.
3. El gestor de arranque a menudo presenta al usuario un menú de opciones
posibles de arranque. A continuación, carga el sistema operativo, que
descomprime en la memoria, y establece las funciones del sistema como del
hardware esencial y la paginación de memoria, antes de llamar a la
función  start_kernel() .
4. La función  start_kernel()  a continuación realiza la mayor parte de la configuración
del sistema (interrupciones, el resto de la gestión de memoria, la inicialización del
dispositivo, controladores, etc), antes de continuar por separado el proceso
inactivo y planificador, y el proceso de Init (que se ejecuta en el espacio de
usuario).
5. El planificador toma control efectivo de la gestión del sistema, y el núcleo queda
dormido (inactivo).
6. El proceso Init ejecuta secuencias de comandos (Scripts) necesarios para
configurar todos los servicios y estructuras que no sean del sistema operativo, a
fin de permitir que el entorno de usuario sea creado y pueda presentarse al
usuario con una pantalla de inicio de sesión
En el apagado, Init es llamado a cerrar toda las funcionalidades del espacio de usuario
de una manera controlada, de nuevo a través de secuencias de comandos, tras lo cual
el Init termina y el núcleo ejecuta el apagado.

d) ¿Es posible tener en una PC GNU/Linux y otro SO instalado? Justifique.


La PC debe cumplir con una serie de requisitos para poder soportar los dos SO, ya que
no todas las computadoras cuentan con los recursos y capacidades para ejecutar ambos
programas. Es importante que el equipo no tenga más de cinco años de uso, ya que de
lo contrario el funcionamiento podría llegar a ser muy lento. Los requisitos para convertir
el PC en un dualboot son:
 Es importante que tengas los archivos ISO de los dos sistemas operativos que
quieres instalar.
 Se debe tener una unidad USB con el espacio suficiente para añadir el SO, se
recomienda que sea de 8GB o mayor.
 Debes tener los conocimientos básicos para acceder a la BIOS de tu máquina,
normalmente se hace presionando “ESC, F2, F12, entre otras teclas”, esto se ejecuta
al momento de encender o reiniciar el equipo.
 Desactivar UEFI y Secure Boot, en el caso que sea necesario de lo contrario se
debe dejar activado.

Si cumplen con los requisitos ya mencionados, entonces lo siguiente es comenzar con el


procedimiento de instalación:

Lo primero será crear un disco de arranque USB, para ello puedes utilizar diferentes


herramientas, una de las más conocidas y más confiable es YUMI, la misma
permitirá crear diferentes discos de arranques USB con varios SO. En el caso que no
quieras utilizar dicha herramienta también puedes hacer uso de otras como Rufus o
Unetbootin para crear los discos de arranque.

 Lo primero será cambiar el modo de arranque “Boot mode” de tu PC


a “Legacy”. Esto te permitirá iniciar con dicho procedimiento.

 Si cuentas con la versión de W8, W8.1 o W10, lo más seguro es que tu equipo
incluya una BIOS UEFI con Secure Boot. También debes tener en cuenta que debes
desactivar esas opciones dependiendo de la distribución que se vaya a instalar, ya que
si no se desactivan no se podrá iniciar el disco de arranque USB que se ha creado
anteriormente.
 Para instalar una distro Linux sobre un Windows, el instalador te permitirá decidir
si quieres realizar la instalación junto a Windows o si quieres utilizar otro disco. En este
caso solo debes escoger el espacio que ocupa cada uno de ellos.
 En el caso que ya tengas Linux y quieras instalar Windows, entonces el instalador
del sistema de Microsoft eliminará el GRUB por completo. Esto quiere decir que te
quedarás sin opciones para el arranque, lo que evitará que puedas escoger con qué
sistema comenzar. Por lo tanto, lo más recomendable es instalar Linux en un PC que
ya tenga Windows instalado previamente.
 Para instalar Windows o Linux hoy en día se debe realizar un proceso muy
sencillo, por lo que no necesitas tener conocimiento avanzado para ello, en este solo
necesitas crear un disco de arranque USB que será insertado en tu PC, el
mismo arranca desde él y no desde el disco duro del equipo. aquí solo debes
seguir las instrucciones que se te van indicando en pantalla a través del instalador.
 Una vez hayas seguido cada una de las instrucciones y el procedimiento haya
finalizado, ya estará todo listo para que puedas comenzar a utilizar la máquina con
ambos sistemas operativos.

e) Explique particiones primarias, extendidas y lógicas.


Partición primaria
Las particiones primarias son las divisiones primarias de un disco y pueden existir entre 1
y 4 particiones primarias o hasta 3 primarias y una extendida. El número de particiones
hace referencia a un sistema de arranque MBR, con GPT podemos tener, prácticamente,
todas las particiones que queramos. Un disco duro físico completamente formateado
consiste, en realidad, en una partición primaria que ocupa todo el espacio del disco y
posee un sistema de archivos. La partición primaria puede ser reconocida como una
partición de arranque y puede contener un sistema operativo. Una de las particiones
primarias se llama la partición activa y es la de arranque. Cuando hay varios sistemas
operativos instalados la partición activa contiene un pequeño programa que se llama
gestor de arranque. Este programa presenta una lista con los sistemas operativos
instalados y permite seleccionar cual queremos instalar. Un gestor de arranque muy
popular es GRUB (GNU Grand Unified Bootloader). Las particiones primarias se pueden
convertir en la primera partición para arrancar el ordenador si la “activamos”.

Partición extendida
Las particiones extendidas son como contenedores donde podemos tener multitud de
particiones lógicas. Por ese motivo, a veces se les conoce como particiones secundarias.
Solo puede existir una partición de este tipo por disco, y solo sirve para contener
particiones lógicas. Por lo tanto, es el único tipo de partición que no soporta un sistema
de archivos directamente. Estas particiones fueron ideadas para romper la limitación de 4
particiones primarias por unidad física. Por ejemplo, imagina que quieres tener 8
particiones en una sola unidad de almacenamiento. Lo que podemos hacer es crear 3
particiones primarias y una partición extendida. A continuación, crearemos 5 particiones
lógicas dentro de la partición extendida. También podríamos crear 1 partición primaria, 1
partición extendida y 7 particiones lógicas dentro de la extendida.

Partición lógica
Las particiones lógicas son aquellas particiones que creamos dentro de las particiones
extendidas. Al igual que en las particiones primarias, las particiones lógicas pueden
utilizarse para instalar Windows y cualquier otro tipo de archivos. Se pueden tener un
máximo de 23 particiones lógicas en una partición extendida. Aunque algunos sistemas
operativos pueden ser más restrictivos, como Linux que impone un máximo de 15,
incluyendo las 4 primarias, en discos SCSI y en discos IDE 8963. Aunque podemos
instalar sistemas operativos en las unidades lógicas, no se les puede dar el
estado activo y, por lo tanto, no sirven para arrancar el ordenador desde cero por si
mismas. Eso sí, podemos utilizar un gestor de arranque en una partición primaria para
arrancar las particiones lógicas.

f) ¿Qué es la boot partition?


La partición de arranque del BIOS es una partición en un dispositivo de almacenamiento
de datos que GNU GRUB utiliza en el legado del BIOS -basado ordenadores
personales con el fin de arrancar un sistema operativo , cuando el actual dispositivo de
arranque contiene una tabla de particiones GUID (GPT). Este diseño a veces se
denomina arranque BIOS / GPT.  Se necesita una partición de arranque de BIOS en
dispositivos de almacenamiento con particiones GPT para contener las segundas etapas
de GRUB. En los dispositivos tradicionales con particiones MBR , los sectores de disco
que siguen inmediatamente al primero generalmente no se utilizan, ya que el esquema
de partición no los designa para ningún propósito especial y las herramientas de partición
los evitan con fines de alineación. En los dispositivos basados en GPT, los sectores
contienen la tabla de particiones real, lo que requiere el uso de una partición
adicional. En discos con particiones MBR, los cargadores de arranque generalmente se
implementan para que la parte de su código almacenada dentro del MBR, que no puede
contener más de 512 bytes, funcione como una primera etapa que sirve principalmente
para cargar una segunda etapa más sofisticada, que es, por ejemplo, capaz de leer y
cargar un kernel del sistema operativo desde un sistema de archivos .

g) Investigar UEFI/GPT y comparar con BIOS/MBR


UEFI (Unified Extensible Firmware Interface) es una interfaz de firmware estándar para
PC, diseñada para reemplazar el BIOS (sistema básico de entrada y salida). Es un
estándar creado por más de 140 compañías tecnológicas que forman parte del consorcio
UEFI, en el que se incluye Microsoft. Se ha diseñado ara mejorar la interoperabilidad del
software y solucionar las limitaciones del BIOS. Algunas de las ventajas que ofrece el
firmware UEFI son:
-Ayudar a proteger el proceso previo al inicio frente a ataques de bootkit
-Tiempo de inicio y reanudación desde la hibernación más rápidos.
-Compatibilidad con unidades de disco duro con particiones de más de 2,2 terabytes.
-Compatibilidad con modernos controladores de dispositivos de firmware de 64 bits.
-Capacidad para usar el BIOS con hardware UEFI.
-Capacidad para usar Secure Boot.
UEFI es el firmware que eventualmente reemplaza la BIOS de los PC comerciales. PCs
certificadas para Windows 8 exigirá el arranque UEFI por defecto.
En Bios UEFI únicamente podemos instalar los sistemas de 64 bits. Los de 32 bits nunca
se instalarán en modo UEFI.
La EFI es una BIOS mucho más amigable que la clásica con pantalla azul, que soporta
un entorno gráfico de mayor calidad, multilenguaje, precarga de aplicaciones o gestión de
LAN, entre varias cosas más. EFI son las siglas de Extensible Firmware Interface y lo
podríamos definir como una BIOS gráfica y más rápida.

2.- Distribuciones de GNU/Linux


a) ¿Qué es una distribución de GNU/Linux? Nombre las principales
distribuciones de GNU/Linux.
Una distribución GNU/Linux (coloquialmente llamada distro) es una distribución de
software basada en el núcleo Linux que incluye determinados paquetes de
software para satisfacer las necesidades de un grupo específico de usuarios, dando así
origen a ediciones domésticas, empresariales y para servidores. Por lo general están
compuestas, total o mayoritariamente, de software libre, aunque a menudo incorporan
aplicaciones o controladores propietarios. Además del núcleo Linux, las distribuciones
incluyen habitualmente las bibliotecas y herramientas del proyecto GNU y el sistema de
ventanas X Window System. Dependiendo del tipo de usuarios a los que la distribución
esté dirigida se incluye también otro tipo de software como procesadores de texto, hoja
de cálculo, reproductores multimedia, herramientas administrativas, etc. En el caso de
incluir paquetes de código del proyecto GNU, se denomina distribución GNU/Linux.
Existen distribuciones que están soportadas comercialmente, como Fedora (Red
Hat), openSUSE (Novell) y Ubuntu (Canonical Ltd.); distribuciones mantenidas por la
comunidad, como Debian y Gentoo; y distribuciones que no están relacionadas con
ninguna empresa o comunidad, como es el caso de Slackware.
b) ¿En qué se diferencia una distribución de otra?
GNU es un sistema operativo con una extensa colección de software de computadora,
mientras que Linux es una familia de software de código abierto y gratuito que se basa en
el núcleo de Linux. Por lo tanto, esta es la principal diferencia entre el software GNU y
Linux. Otra diferencia entre el software GNU y Linux es que GNU es un sistema operativo
con una colección de software desarrollado bajo el proyecto GNU, mientras que Linux es
un sistema operativo basado en GNU. La principal diferencia entre GNU y Linux es que
GNU es un sistema operativo diseñado como un reemplazo para UNIX con muchos
programas de software, mientras que Linux es un sistema operativo con una combinación
de software GNU y kernel de Linux. En resumen, la versión más popular de GNU es el
sistema GNU / Linux que utiliza el kernel de Linux.

3.- Estructura de GNU/Linux.


a) Nombre cuáles son los 3 componentes más fundamentales de GNU/Linux.
Los componentes primordiales para una distribución de Linux son:

 El kernel de Linux.Del alemán que significa núcleo y su nombre es


Linux. Es la parte fundamental del sistema operativo, desarrollado por Linus
Tovals. Puede administrar todos los dispositivos, brindar una interfaz de
usuario y contiener la lista de todos los dispositivos conectados. Un sistema
operativo con núcleo monolítico, concentra todas las funcionalidades posibles
(planificación, sistema de archivos, redes, controladores de dispositivos,
gestión de memoria, etc) dentro de un gran programa. El mismo puede tener
un tamaño considerable, y deberá ser recompilado por completo al añadir una
nueva funcionalidad. Todos los componentes funcionales del núcleo tienen
acceso a todas sus estructuras de datos internas y a sus rutinas. Un error en
una rutina puede propagarse a todo el núcleo. Todos sus componentes se
encuentran integrados en un único programa que ejecuta en un único espacio
de direcciones. En este tipo de sistemas, todas las funciones que ofrece el
sistema operativo se ejecutan en modo supervisor. El hecho de que Linux no
fuera desarrollado siguiendo el diseño de un micronúcleo (diseño que, en
aquella época, era considerado el más apropiado para un núcleo por muchos
teóricos informáticos) fue asunto de una famosa y acalorada discusión entre
Linus Torvalds y Andy Tanenbaum.

A diferencia de los núcleos monolíticos tradicionales, los micronúcleos tienen


la cualidad de que pueden carga los controladores y extensiones al núcleo de
forma más sencilla, sin importar que el sistema esté funcionando.
Actualmente Linux es un núcleo monolítico híbrido. Los controladores de
dispositivos y las extensiones del núcleo normalmente se ejecutan en un
espacio privilegiado conocido como anillo 0, con acceso no restringido al
hardware, aunque algunos se ejecutan en espacio de usuario. A diferencia de
los núcleos monolíticos tradicionales, los controladores de dispositivos y las
extensiones al sistema operativo se pueden cargar y descargar fácilmente
como módulos, mientras el sistema continúa funcionando sin interrupciones.
También, a diferencia de los núcleos monolíticos tradicionales, los
controladores pueden ser prevolcados (detenidos momentáneamente por
actividades más importantes) bajo ciertas condiciones. Esta habilidad fue
agregada para gestionar correctamente interrupciones de hardware, y para
mejorar el soporte de Multiprocesamiento Simétrico.

Aplicaciones libres genéricas, como son LibreOffice, Inkscape,  X Windows


System, Gimp.Las aplicaciones libres se reconocen por conocer el código
fuente y que puedes modificar y adaptar conforme a las licencias LGPL y GPL.

Aplicaciones propietarias, controladores para tarjetas


gráficas Nvidia o ATI, maltego, Opera Web Browser. Es todo programa al cual
no se tiene acceso al código fuente pues respeta la licencia de derecho
intelectual del autor.

Soporte a servicios para uso comercial, comunidad, domestico, empresarial,


entre otros. Ya que el uso de GNU/Linux es muy amplio por su cantidad de
programas, existen fallos por el mal uso del equipo y se puede resolver
contratando una empresa dedicada a soporte del sistema operativo o en su
defecto la gran comunidad puede ayudar usando foros.

Manuales de programas, de instrucciones, de configuración, de desarrollo, por


mencionar algunos. Todos los programas que se pueden instalar en una
distribución son agregados con manuales que ayudan a su uso adecuado y
una gran cantidad de información de configuraciones disponible por las
paginas oficiales de las distribuciones y foros de la comunidad.

Gestores de paquetes dedicados a cada distribución de Linux, entre ellas


utilerías de configuración por mencionar algunas (yum, apt, zypper). Los
gestores de paquetes se encargan de integrar al equipo el software necesario
para el usuario, pues se dedican a actualizar sus repositorios (paginas web
donde pueden descargar los paquetes), descargar los paquetes (conjunto de
archivos que además de tener programas también contienen manuales,
archivos de configuración para el gestor y dependencias) e integrar sus
dependencias (son conjunto de programas u otros paquetes necesarios para el
óptimo funcionamiento del paquete de interés).

b) Mencione y explique la estructura básica del Sistema Operativo GNU/Linux.


Estructura básica del Sistema Operativo GNU/Linux.
4.- Usando la instalación del Linux instalado, realizar las siguientes tareas y responder:
a) Crear una nueva partición primaria usando la herramienta fdisk que ocupe 2G.
Formatearla con el file system xfs y montarla en /mnt.

b) Usar los comandos mount y df para ver las particiones montadas.

c) ¿Qué sucede si reinicia el sistema? ¿Se encuentra la partición montada?

La partición quedará montada mientras el sistema esté en marcha. Cuando reiniciemos o


apaguemos el equipo, tendremos que volver a montar la partición. Si queremos que se
monte cada vez que iniciamos el sistema, necesitaremos modificar el archivo /etc/fstab

d) Montar la partición de modo que se cargue al iniciar el sistema.

e) ¿Que problemas podrían existir al montar particiones usando los nombres de


dispositivos ( /dev/sda1 , /deb/sdc2 , etc)? ¿Cómo se puede evitar esto? (ver comando
blkid )?

Aunque es posible cambiar las particiones del sistema mientras esté en ejecución, se
corre un riesgo muy alto de cometer errores que lleven a la pérdida de datos. Conviene
por tanto evitar cambiar las particiones del sistema instalado y realizar siempre una copia
de seguridad de todos los datos antes de hacerlo.
Ejecutar blkid sin ningún argumento enumerará todos los dispositivos disponibles con su
Identificador único universal (UUID), el TIPO del sistema de archivos y la ETIQUETA, si
está configurada.

f) Crear una nueva partición primaria, ¿es posible? ¿Por qué sucede esto?

Hay que tener en cuenta que en un disco solo puedes tener 4 particiones primarias y una
extendida que contenga muchas lógicas.

g) Realice los pasos necesarios para poder crear dos nuevas particiones de 1G cada
una.

5.- Kernel
a) ¿Qué es?
Es una parte fundamental del sistema operativo que se encarga de conceder el acceso al
hardware de forma segura para todo el software que lo solicita, el Kernel es una pequeña
e invisible parte del sistema operativo, pero la más importante, ya que sin esta no podría
funcionar. Todos los sistemas operativos tienen un Kernel, incluso Windows 10, pero
quizás el más famoso es el Kernel de Linux, que ahora además está integrado en
Windows 10 con sus últimas actualizaciones. Este núcleo de los sistemas operativos se
ejecuta en modo privilegiado con acceso especial a los recursos del sistema para poder
realizar las peticiones de acceso que le va pidiendo el software que lo necesita, además
como los recursos no son ilimitados, también hace de arbitro a la hora de asignarlos,
decidiendo el orden de las peticiones recibidas según la prioridad e importancia de estas.
Una gestión muy importante y fundamental que en la mayoría de las ocasiones pasa
desapercibida aún siendo un trabajo esencial para coordinar todo el hardware con el
software.
El kernel de Windows es privado y su código lo tienen a salvo en el que solamente
Microsoft puede realizar modificaciones para mejorar sus próximas versiones de
Windows 10, al igual pasa con el de MacOS, basado en UNIX pero con licencia privada
se reserva al equipo de desarrollo encargado de Apple de realizar estas modificaciones,
pero Linux tiene un Kernel público bajo licencia GPL v2 y su código (o la mayor parte)
está disponible para poder descargarlo, examinarlo o incluso realizar aportes y
modificaciones útiles para los demás usuarios.

b) ¿Cuáles son sus funciones principales?


Existen multitud de kernels diferentes, algunos diseñados como parte de una única
versión de un sistema operativo, como sucede con casi todos los de Windows, otros más
flexibles dentro de un único SO, como el caso de Linux, y otros desarrollados de forma
externa, como el caso de Mach, un kernel creado en la Universidad Carnegie
Mellon hace 30 años que acabó siendo la base para el núcleo del sistema operativo de
Mac. Cada kernel tiene sus particularidades y sus funciones varían bastante de modelo a
modelo. Sin embargo, por regla general, incluye los siguientes elementos:

 Planificador o scheduler. Un programa que se encarga de determinar cómo


repartir el tiempo y el orden de acceso al procesador.
 Supervisor del sistema operativo. Un programa que se ocupa de controlar el
desarrollo y funcionamiento de otros programas.
 Interrupt handler, rutina de servicio de interrupción o ISR (por sus siglas en inglés).
Un programa que gestiona las solicitudes de los componentes de hardware, como
el disco duro o los periféricos.
 Gestor de memoria. Un programa que controla el proceso de asignación
de memoria a los programas que lo solicitan.

En definitiva, a modo de resumen, el kernel permite la comunicación entre el software y


todo el hardware (incluyendo periféricos), gestiona la asignación de memoria de forma
eficiente y controla el acceso a la capacidad de procesamiento del dispositivo. Es decir,
es el programa que le dice al resto de componentes de un dispositivo cuándo y cómo
usar los recursos disponibles.

c) ¿Cuál es la versión actual? (www.kernel.org)


La versión actual es 5.3.2

d) ¿Es posible tener más de un kernel de GNU/Linux?


Hay sistemas operativos como GNU/Hurd cuyo kernel no es una sola aplicación
"monolítica" si no un conjunto de programas o demonios que se comunican entre sí y
se dedican a tareas específicas por separado aunque funcionan coordinadamente.
En este caso, si entendemos como kernel el conjunto de los demonios, seguimos
teniendo "un sólo kernel", pero si entendemos kernel como proceso o programa,
entonces tenemos varios.
También podemos tener en un sistema Linux por ejemplo, dos kernels instalados
cada uno de una versión distinta. Eso sí, solo ejecutaríamos uno a la vez, el otro
quedaría instalado y almacenado en el disco.
También podríamos emular varios kernels a partir de un mismo sistema operativo
base (Linux podría por ejemplo) y ejecutarlos a la vez, aunque serían kernels
virtuales y no estarían funcionando realmente a nivel sistema.
e) ¿Dónde se encuentra ubicado dentro del File System?
En los file system jerárquicos, los archivos son colocados en contenedores lógicos que
son arreglados en una estructura de árbol upside-down. Los Archivos empiezan en la raíz
del árbol. UNIX y Linux llaman al contenedor que reside en el primer nivel del árbol
"directorio -directory".

f) Explique qué es un kernel monolítico, microkernel y kernel híbrido


Kernel Monolítico:
A núcleo monolítico es una arquitectura de sistema operativo donde todo el sistema
operativo está trabajando en espacio del kernel. El modelo monolítico se diferencia de
otras arquitecturas de sistemas operativos (como el microkernel arquitectura)[1][2] porque
solo define una interfaz virtual de alto nivel sobre el hardware de la computadora. Un
conjunto de primitivas o llamadas al sistema implementar todos los servicios del sistema
operativo como proceso administración, concurrencia, y gestión de la memoria. Los
controladores de dispositivo se pueden agregar al kernel como módulos.

Microkernel:
Es la cantidad casi mínima de software que pueden proporcionar los mecanismos
necesarios para implementar un Sistema operativo (SO). Estos mecanismos
incluyen espacio de dirección administración, hilo administración y comunicación entre
procesos (IPC). Si el hardware proporciona varios anillos o Modos de CPU, el
microkernel puede ser el único software que se ejecuta en el nivel más privilegiado, que
generalmente se conoce como modo supervisor o kernel. Funciones tradicionales del
sistema operativo, como controladores de dispositivo, pilas de protocolo y sistemas de
archivos, normalmente se eliminan del propio microkernel y en su lugar se ejecutan
en espacio de usuario. En términos del tamaño del código fuente, los microkernels suelen
ser más pequeños que granos monolíticos. los MINIX 3 microkernel, por ejemplo, tiene
sólo aproximadamente 12.000 líneas de código.
Kernel híbrido:
La idea detrás de un kernel híbrido es tener una estructura de kernel similar a la de un
microkernel, pero implementar esa estructura a la manera de un kernel monolítico. A
diferencia de un microkernel, todos (o casi todos) los servicios del sistema operativo en
un kernel híbrido todavía están en espacio del kernel. No hay ninguno de los beneficios
de confiabilidad de tener servicios en espacio de usuario, como con un microkernel. Sin
embargo, al igual que con un ordinario núcleo monolítico, no hay ninguna sobrecarga de
rendimiento para el paso de mensajes y el cambio de contexto entre el kernel y el modo
de usuario que normalmente viene con un microkernel.

g) ¿El Kernel de GNU/Linux es monolítico? Justifique.

El kernel de Linux no tiene capa de usuario. Sólo tiene una, la del propio kernel, por lo
que se le considera monolítico. En cuanto a qué tipo de estructura es mejor, aquí siempre
hay debate. Los defensores del kernel monolítico siempre apuntan que son muchos más
sencillos para depurar errores.
6.- Intérprete de comandos (Shell)
a) ¿Qué es?
Una shell de Unix es el término usado en informática para referirse al intérprete de
comandos de los sistemas operativos basados en Unix y similares, como GNU/Linux, y
que es su interfaz de usuario tradicional. Mediante las instrucciones que aporta el
intérprete, el usuario puede comunicarse con el núcleo y por extensión, ejecutar dichas
órdenes, así como herramientas que le permiten controlar el funcionamiento de la
computadora. Por ello, en inglés se le denominó así, shell, que puede ser traducido como
«cáscara», porque es la envoltura visible del sistema informático. Los comandos que
aportan los intérpretes, pueden usarse a modo de guion si se escriben en ficheros
ejecutables denominados shell-scripts, de este modo, cuando el usuario necesita hacer
uso de varios comandos o combinados de comandos con herramientas, escribe en un
fichero de texto, marcado como ejecutable, las operaciones que posteriormente, línea por
línea, el intérprete traducirá al núcleo para que las realice. Sin ser un shell estrictamente
un lenguaje de programación, al proceso de crear scripts de shell se le denomina
programación shell o en inglés, shell programming o shell scripting. En el sentido más
genérico del término, shell significa cualquier intérprete que los usuarios usen para
escribir comandos. Su etimología proviene del uso natural de consolas en computadores
funcionando bajo unix antaño, cuando los usuarios conectaban al computador central, lo
hacían mediante consolas, (shells) por las cuales a través de un intérprete, hacían inicio
de sesión y manejaban la computadora principal. Posteriormente, con la proliferación de
los computadores personales y su filosofía monousuario, un computador por usuario
(entiéndase lo contrario de la filosofía inicial de Unix, un computador, muchos usuarios
conectados por terminales), se desarrolló un software que emulase las características
principales de las consolas físicas, a modo de poder seguir usándolas como clientes en
un computador o núcleo que comprendiera la convención estándar usada para configurar
y llevar a cabo tareas de administración de emergencia con servidores basados en Unix.
Los usuarios de Unix y similares, pueden elegir entre distintos shells (programa que se
debería ejecutar cuando inician la sesión, véase bash, ash, csh, Zsh, ksh, tcsh). Las
interfaces de usuario gráficas para Unix, como son GNOME, KDE y Xfce pueden ser
llamadas shells visuales o shells gráficas. Por sí mismo, el término shell es asociado
usualmente con la línea de comandos. En Unix, cualquier programa puede ser un shell
de usuario. Los usuarios que desean utilizar una sintaxis diferente para redactar
comandos, pueden especificar un intérprete diferente como su shell de usuario. El
término shell también hace referencia a un programa particular, tal como el Bourne
shell, sh. El Bourne shell fue el shell usado en las primeras versiones de Unix y se
convirtió en un estándar de facto; todos los sistemas similares a Unix tienen al menos un
shell compatible con el Bourne shell. El programa Bourne shell se encuentra dentro de la
jerarquía de archivos de Unix en /bin/sh. En algunos sistemas, tal como BSD, /bin/sh es
un Bourne shell o un equivalente, pero en otros sistemas como muchas distribuciones de
Linux, /bin/sh es un enlace simbólico a un shell compatible con más características
(como Bash). POSIX especifica su shell estándar como un subconjunto estricto del Korn
shell.

b) ¿Cuáles son sus funciones?


El SHELL es el encargado de establecer una comunicación entre el núcleo (kernel) y el
usuario del Sistema Linux ,o sea, que es una interface con nuestro Sistema Operativo.
Entonces gracias a él podremos dar las ordenes necesarias para que nuestro sistema
informático realice las tareas que necesitamos.

c) Mencione al menos 3 tipos de intérpretes de comandos que posee GNU/Linux.


Algunos interpretes de comando pueden ser: “Bash”, “Korn Shell”, “Tcsh”, “Fish”, “Z
Shell”.

d) ¿Dónde se ubican (ruta) los comandos propios y externos al Shell?


La diferencia entre estos dos tipos de comandos no es más que los internos son nativos
de la consola. Digamos que los externos el intérprete no los sabe ejecutar y para ello
requiere su localización en el disco duro. Para encontrarlos, los buscará en una serie de
directorios, en concreto en aquellos que están indicados en la variable PATH.

e) ¿Por qué considera que el shell no es parte del kernel de GNU/Linux?


La confiabilidad de la Shell y la capacidad de ser remplazada son los principales motivos
para no tener la Shell en el Kernel. El kernel es un componente “minimo” con interfaces
“minimas” (aunque en realidad muy complejas). Que pueden ser
consumidas por múltiples aplicaciones en capa de usuario.

7.- Comandos (Investigue su funcionamiento y parámetros más importantes). Ver


comando man:
A. Ispci: es un comando para los sistemas operativos Unix-like que
imprime listas con información detallada sobre todos los Buses y
dispositivos del sistema. Se basa en una biblioteca portátil, libpci que
ofrece acceso al espacio de configuración PCI en varios sistemas
operativos.
B. Cd: El comando cd (change directory) permite moverse entre directorios
del sistema. Puedes cambiar de directorio especificando la ruta absoluta
desde el directorio raíz o relativa desde tu ubicación actual, en Linux el
directorio actual se indica con el signo 
C. At: ejecuta comandos a la hora especificada.
D. Ls: se usa para ver el contenido de un directorio.
E. Touch: se usa principalmente para crear archivos vacíos y cambiar
marcas de tiempo de archivos o carpetas.
F.Pwd: sirve para encontrar la ruta del directorio (carpeta) de trabajo
actual en el que te encuentras.
G. Shutdown: Los sistemas operativos de Linux se pueden apagar,
suspender o reiniciar usando el comando shutdown.
H. Head: se usa para ver las primeras líneas de cualquier archivo de
texto. De manera predeterminada, mostrará las primeras diez líneas,
pero puedes cambiar este número a tu gusto. Por ejemplo, si solo
deseas mostrar las primeras cinco líneas, escribe head -n 5
nombredearchivo.ext.
I. Reboot: permite reiniciar el sistema.
J. Grep: permite buscar a través de todo el texto en un archivo dado.
K. Halt: permite apagar el sistema
L. Umount: permite eliminar un sistema de archivos remoto que esté
montando en la actualidad.
M. Find: Similar al comando locate, usando find también buscas
archivos y directorios. La diferencia es que usas el
comando find para ubicar archivos dentro de un directorio dado.
N. Locate: Puedes usar este comando para localizar un archivo, al igual
que el comando de búsqueda en Windows. Además, el uso del
argumento -i junto con este comando hará que no distinga entre
mayúsculas y minúsculas, por lo que puedes buscar un archivo
incluso si no recuerdas su nombre exacto. Para buscar un archivo
que contenga dos o más palabras, usa un asterisco (*). Por ejemplo,
el comando locate -i escuela*nota buscará cualquier archivo que
contenga la palabra «escuela» y «nota», ya sea en mayúsculas o
minúsculas.

O. Tail: Este tiene una función similar al comando head, pero en lugar
de mostrar las primeras líneas, el comando tail mostrará las últimas
diez líneas de un archivo de texto. Por ejemplo, tail -n
nombredearchivo.ext.
P.Uname: El comando uname, abreviatura de Nombre de Unix,
imprimirá información detallada sobre tu sistema Linux, como el
nombre de la máquina, el sistema operativo, el núcleo, etc.
Q. Mkfs: se utiliza para dar formato a un dispositivo de almacenamiento de
bloque con un determinado sistema de archivos.
R. Dmesg: herramienta exclusiva de sistemas basados en Unix con la
capacidad de listar los avisos temporales generados por el kernel.
S. Who: da información de los usuarios que están conectados al sistema y
también otras informaciones como cuándo se arrancó el sistema y cuál
es el nivel de ejecución del sistema.
T.Lsusb: permite visualizar información de los dispositivos USB
conectados a los puertos USB del sistema.
U. Ifconfig: es utilizado para arrancar la interface de la tarjeta de red,
pararla y realizar todas las configuraciones sobre dicha tarjeta en
nuestros servidores dedicados o servidores virtuales.
V.Id: muestra por el terminal los IDs (números de identificación) de usuario
y de grupo tanto reales como efectivos. Muestra los UIDs (identificador
de usuario) y GIDs (identificador de grupo) para el usuario especificado
o, cuando se omite, para el usuario actual.
W. less: es una utilidad en línea de comandos capaz de mostrarnos el
contenido de un archivo, o la salida de un comando pagina por pagina.
Es similar al comando «more» pero con alguna característica más
avanzada, además nos permite navegar hacia adelante y hacia atrás a
través del archivo.
Cat: (abreviatura de concatenate, en inglés) es uno de los comandos
más utilizados en Linux. Se utiliza para listar el contenido de un archivo
en la salida estándar (sdout). Para ejecutar este comando,
escribe cat seguido del nombre del archivo y su extensión. Por
ejemplo: cat archivo.txt.
Aquí hay otras formas de usar el comando cat:
 cat > nombredearchivo crea un nuevo archivo.

 cat nombredearchivo1 nombredearchivo2>nombredearchivo3 une dos archivos


(1 y 2) y almacena la salida de ellos en un nuevo archivo (3)

 convertir un archivo a mayúsculas o minúsculas, cat nombredearchivo | tr a-z


A-Z> salida.txt

8.- Archivos
a) ¿Cómo se identifican los archivos en GNU/Linux?
Linux no se basa en la extensión para saber qué tipo de archivo es cada uno,
si no que utiliza lo que se llama "magic numbers", este sistema determina el
tipo de archivo mediante unos test que comprueban que tipo de archivo es. El
comando para mostrar el tipo de archivo es file. Este sistema es mucho más
eficaz que el de las extensiones.
Hay que tener en cuenta que el sistema puede saber qué tipo de archivo es
pero no tener ninguna aplicación con que visualizarlo.

b) Investigue el comando more.


El comando more te permite mostrar el resultado de la ejecución de un
comando en la terminal de a una página a la vez. Esto es especialmente útil
cuando se ejecuta un comando que causa un gran desplazamiento, como el
comando ls o el comando du.

c) Cree un archivo llamado “prueba.exe” en su directorio personal usando


editor vi. El mismo debe contener su número de alumno y su nombre.
vi prueba.exe ; apreto “i” para ingresar todo lo necesario, escape y :wq.

d) Investigue el funcionamiento del comando file. Pruébelo con diferentes


archivos. ¿Qué diferencia nota?
El comando file es una utilidad que realiza una serie de pruebas (test) para
determinar el tipo y formato de un archivo. Más precisamente las pruebas son
tres, y la primera que permita alcanzar un resultado hace que el análisis
finalice.
Se detallan a continuación dichas pruebas, en el orden en que se llevan a cabo
por este comando:
 Sistema de archivos: se intenta determinar si el archivo a examinar es un archivo
del sistema por medio de la función (system call) stat. Gracias a esta prueba se
puede determinar si es un dispositivo, enlace simbólico, una tubería, etc.
 Números mágicos: Se intenta determinar el tipo, analizando determinados bytes
ubicados en específicas posiciones dentro del archivo. Estos bytes se los
denomina números mágicos, y suelen estar al comienzo de la cabecera. La
información para realizar dicho análisis figura en el
archivo /usr/share/misc/magic.mgc.
 Prueba de sintaxis: esta última prueba consiste en determinar que tipo de sintaxis
posee un archivo de texto. Esta prueba solo se realiza sobre los archivos que se
haya determinado que sean texto plano. Básicamente consiste en buscar la
presencia de determinadas palabras claves que permiten identificar la sintaxis
usada dentro de dicho archivo.
9.- Usuarios
a) ¿Qué archivos son utilizados en un sistema GNU/Linux para guardar la
información de los usuarios?
La mayor parte de la información de cuentas de usuario se almacena en el archivo
passwd. La información de contraseña se almacena como se indica a continuación: En
el archivo passwd cuando utiliza NIS. En el archivo /etc/shadow cuando utiliza
archivos /etc.

b) ¿A qué hacen referencia las siglas UID y GID? ¿Pueden coexistir UIDs
iguales en un sistema GNU/Linux? Justifique.
Los sistemas operativos Linux y Unix utilizan el UID (User ID o ID de usuario) para
identificar al usuario particular. El GID (Group ID o ID de grupo) se utiliza para identificar
a un grupo. El usuario puede pertenecer a muchos grupos secundarios y cada grupo
secundario tendrá un GID único. El comando "id" puede utilizarse para mostrar el UID y
los GID de un usuario particular. El usuario raíz (super) puede ver el UID y el GID de
cualquier usuario. Si no tienes privilegios de raíz, solamente puedes ver tu UID y GID.
Abre una ventana terminal. La aplicación terminal suele encontrarse en la sección
"Accessories" (Accesorios), "Utilities" (Utilidades) o "Tools" (Herramientas) del menú
principal "Programs" (Programas) o "Applications" (Aplicaciones). Ingresa el comando
"su" para convertirte en el usuario raíz. Saltea este paso si no tienes privilegios de
usuario raíz o si quieres el UID o el GID de tu propia cuenta. Ingresa el comando "id -u
<nombre de usuario>" para hallar el UID de un usuario particular. Reemplaza "<nombre
de usuario>" por el nombre del usuario de Unix o Linux. Ingresa el comando "id -g
<nombre de usuario>" para hallar el GID de un usuario particular. Reemplaza "<nombre
de usuario>" por el nombre del usuario de Unix o Linux. Ingresa el comando "id -G
<nombre de usuario>" para listar todos los GID de un usuario en particular. Reemplaza
"<nombre de usuario>" por el nombre del usuario de Unix o Linux. Ingresa el comando
"exit" para cerrar la sesión de usuario raíz.

Se supone que no pero hay un caso excepcional, el U ID= 0 (sería el root). Pueden
llegar a haber másde un root, y coexisten, pero son casos excepcionales, se supone
que no pueden haber varios usuarios con un mismo ID.

c) ¿Qué es el usuario root? ¿Puede existir más de un usuario con este


perfil en GNU/Linux? ¿Cuál es la UID de root?
El usuario root en GNU/Linux es el usuario que tiene acceso administrativo al sistema.
No puede existir más de un usuario con este perfil. La UID de root es 0.

d) Investigue la funcionalidad y parámetros de los siguientes


comandos:
Useradd o Adduser: crea un nuevo usuario. El segundo es full.
Usermod: cambia las opciones del usuario.
Userdel: elimina usuario.
Groupadd: crea un nuevo grupo.
Groupdel: elimina grupo.
Passwd: cambia contraseña de usuario.
10.- FileSystem
a) ¿Cómo son definidos los permisos sobre archivos en un sistema GNU/Linux?

Al ser Unix un sistema multiusuario, los archivos de cada usuario deben ser protegidos
del resto de los usuarios. Lo mismo ocurre con los archivos del sistema (programas,
configuraciones, etc.). Esto tiene que ver no sólo con la confidencialidad de la
información, sino también con la protección de errores involuntarios por parte de los
usuarios. Para ello se utiliza un sistema de “permisos de archivos”. Este mecanismo
permite que archivos y directorios “pertenezcan” a un usuario en particular. Por ejemplo,
como diego creó archivos en su directorio “home”, diego es el propietario de esos
archivos y tiene acceso total a ellos.

Unix también permite que los archivos sean compartidos entre usuarios y grupos de
usuarios. Si diego lo desea, podría restringir el acceso a sus archivos de forma que
ningún otro usuario pueda acceder a ellos.

Tipos de permisos

Cada archivo pertenece a un usuario y a un grupo en particular. Un grupo es un conjunto


de usuarios definido (cada usuario pertenece al menos a un grupo, pero puede
pertenecer a varios).

Los grupos usualmente son definidos por el tipo de usuarios que acceden al sistema. Por
ejemplo, en un sistema Unix de una universidad, los usuarios pueden ser divididos en los
grupos estudiantes, dirección, profesores e invitados. Hay también unos pocos grupos
definidos por el sistema (como bin y daemon) que son usados por el propio sistema para
controlar el acceso a los recursos. Normalmente los usuarios comunes no pertenecen a
estos grupos.

Los permisos están divididos en tres tipos: lectura, escritura y ejecución. Estos permisos
pueden ser fijados para tres clases de usuarios: el propietario del archivo o directorio, los
integrantes del grupo al que pertenece y todos los demás usuarios.

El permiso de lectura permite a un usuario leer el contenido del archivo o en el caso de


un directorio, listar el contenido del mismo (usando ls).

El permiso de escritura permite a un usuario escribir y modificar el archivo (inclusive,


eliminarlo). Para directorios, el permiso de escritura permite crear nuevos archivos o
borrar archivos ya existentes en el mismo.

Por último, el permiso de ejecución permite a un usuario ejecutar el archivo si es un


programa. Para directorios, el permiso de ejecución permite al usuario ingresar al mismo
(por ejemplo, con el comando cd).

Interpretando los permisos de archivos

Veamos un ejemplo del uso de permisos de archivos. Usando el comando ls con la


opción “-l” se mostrara un listado “largo” de los archivos, el cual incluye los permisos.

/home/diego/nuevo$ ls -l cosas
-rw-r--r-- 1 diego users 505 Mar 13 19:05 paco

/home/diego/nuevo$

El primer campo representa los permisos del archivo. El tercer campo es el propietario
del mismo (diego), el cuarto es el grupo al cual pertenece el archivo (users) y el último
campo es el nombre del archivo (paco).

La cadena “-rw-r--r-” nos informa, por orden, los permisos para el propietario, los usuarios
del grupo y el resto de los usuarios.

El primer carácter de la cadena de permisos (“-”) representa el tipo de archivo. El “-”


significa que es un archivo regular, “d” indicaría que se trata de un directorio. Los
siguientes tres caracteres (“rw-”) representan los permisos para el propietario del
archivo, diego. Éste tiene permisos para leer (r) y escribir (w) en el archivo paco.

Como ya mencionamos, además de los permisos de lectura y escritura existe el permiso


de ejecución, representado por una “x”. Como hay un “-” en lugar de la “x”, significa
que diego no tiene permiso para ejecutar ese archivo. Esto es correcto, puesto
que paco no es un programa. Por supuesto, como el archivo es de diego, él puede
cambiar los permisos, dándose a sí mismo permiso de ejecución, como veremos más
adelante.

Los siguientes tres caracteres, “r--”, representan los permisos para los miembros del
grupo al que pertenece el archivo (en este caso, users). Como sólo aparece una “r”
cualquier usuario que pertenezca al grupo users puede leer este archivo, pero no
modificarlo ni ejecutarlo.

Los últimos tres caracteres, “r--”, representan los permisos para cualquier otro usuario del
sistema (que no sea diego ni pertenezca al grupo users). Nuevamente, como sólo está
presente la “r”, los demás usuarios pueden leer el archivo, pero no escribir en él o
ejecutarlo.

Aquí tenemos otros ejemplos de permisos de grupo.

-rwxr-xr-x

El propietario del archivo puede leer, escribir y ejecutar el archivo. Los usuarios
pertenecientes al grupo del archivo y todos los demás usuarios pueden leer y ejecutar el
archivo.

-rw-------

El propietario del archivo puede leer y escribir. Nadie más puede acceder al archivo.

-rwxrwxrwx

Todos los usuarios pueden leer, escribir y ejecutar el archivo.

drwxr-xr-x
El propietario del directorio puede leer, escribir y entrar al mismo. Los usuarios
pertenecientes al grupo del directorio y todos los demás usuarios pueden leer e ingresar
al directorio.

b) Investigue la funcionalidad y parámetros de los siguientes comandos


relacionados con los permisos en GNU/Linux:
Chmod: modifica los permisos de un archivo especificado.
Chown: cambia el propietario de un fichero/directorio.
Chgrp: cambiael grupo propietario de un fichero/directorio.

c) Al utilizar el comando chmod generalmente se utiliza una notación octal


asociada para definir permisos. ¿Qué significa esto? ¿A qué hace referencia cada
valor?
R: leer: solo lectura = 4
W: write: solo escritura = 2
X: ejecutar: solo ejecución = 1
d) ¿Existe la posibilidad de que algún usuario del sistema pueda acceder a
determinado archivo para el cual no posee permisos? Nombrar uno y realice las
pruebas correspondientes.
Se puede si el usuario puede utilizar el comando su, o sudo. Sino, sin poseer los
permisos necesarios no se puede acceder al archivo. Solo el root puede.
e) Explique los conceptos de “full path name” y “relative path name”. De
ejemplos claros de cada uno de ellos.

El nombre completo de la ruta (full path name) significa la ruta completa a ese archivo
o carpeta desde el / directorio del sistema de archivos . Para comprender la ruta
completa, primero debe conocer el punto de partida. El directorio raíz / es el punto de
partida de los sistemas operativos basados en unix.

Un nombre de ruta que es "relativo" a la ubicación del directorio actual o "de trabajo".

Por ejemplo, si estamos en su directorio de inicio, al emitir el comando  mkdir uli101 se


creará el directorio uli101 en su directorio de inicio.

Reglas:

Un nombre de ruta relativo NO comienza con una barra.

Un nombre de ruta relativo puede utilizar los siguientes símbolos que se pueden utilizar al
principio:

o ..  directorio principal (hasta un nivel de directorio)


o .  directorio actual

No todos los nombres de ruta relativos comienzan con  ..


Cuando utilice un nombre de ruta relativo, asegúrese de conocer su directorio de trabajo
actual.

 # Cambie pwd a ipc144 (.. significa directorio principal de pwd)

 cd ../ipc144

 # copie el archivo sample.c (la ubicación es relativa al padre de pwd)

 # del directorio de inicio de joe.doe a su pwd (. significa pwd)

cp ../joe.doe/sample.c.

f) ¿Con qué comando puede determinar en qué directorio se encuentra


actualmente?
Pwd
¿Existe alguna forma de ingresar a su directorio personal sin necesidad de
escribir todo el path completo?
Sí, home.
¿Podría utilizar la misma idea para acceder a otros directorios? ¿Cómo?
Explique con un ejemplo
Por ejemplo /etc

g) Investigue la funcionalidad y parámetros de los siguientes comandos


relacionados con el uso del FileSystem:
Mkdir: crea
directorio
Ln: crear enlaces
duros o
simbólicos a un
archivo o
directorio
existente.
Rmdir: elimina
directorio.
Pwd: muestra el
directorio actual
de trabajo.
Cp: copia archivos
en el directorio
indicado.
Du: muestra lo
que ocupa y el
tamaño total de
los directorios
dentro del
directorio donde
me encuentro.
Mv: renombra un
conjunto.

11.- Otros comandos de Linux:


a) ¿A qué hace referencia el concepto de empaquetar archivos en GNU/Linux?

Es agrupar en un solo fichero varios ficheros y/o directorios.

Los archivos TAR no son archivos comprimidos sino empaquetados. TAR es un


empaquetador, es algo más parecido a un compresor como “arj” ó “zip” pero sin
compresión. Su función es la de incluir todos los ficheros juntos en el mismo
archivo,
conservando las estructuras de directorios y permisos de los mismos.
 Para crear un archivo .tar
tar –cvf mi_archivo.tar /directorio/a/empaquetar

 Para extraer el contenido de un archivo .tar ya creado


tar –xvf mi_archivo.tar

 Para actualizar el contenido de un archivo .tar ya existente


tar –uvf mi_archivo.tar

 Para agregar un directorio a un archivo .tar ya existente


tar –rvf archivo.tar /directorio/a/agregar

 Para empaquetar y comprimir el archivo .tar


tar –cvzf archivo.tgz /directorio/a/empaquetar/y/comprimir

 Para desempaquetar el archivo .tgz


tar –xvzf archivo.tgz

Ojo : Observa la extensión ".tgz" para el tar comprimido. Aunque también


podemos
ponerle como extensión ".tar.gz"
b) Seleccione 4 archivos dentro de algún directorio al que tenga permisos y
sume el tamaño de cada uno de estos archivos. Cree un archivo empaquetado
conteniendo estos 4 archivos y compare los tamaños de los mismos. ¿Qué
característica nota?
El tamaño del archivo empaquetado es menor al tamaño de los 4 archivos por
separado, sin empaquetar.

c) ¿Qué acciones debe llevar a cabo para comprimir 4 archivos en uno solo?
Indique la secuencia de comandos ejecutados
tar –cvzf mi_archivo_comprimido.tgz /home/req3107/archivo1o2o3o4

d) ¿Pueden comprimirse un conjunto de archivos utilizando un único comando?


No, debo comprimir de a uno, aunque sea engorroso, es así. Lo que sí puedo es
empaquetar, primero, varios archivos en uno, y a esto comprimirlo, con lo cual
estaría comprimiendo un conjunto de archivos, pero antes empaquetándolo, como
dijimos.

e) Investigue la funcionalidad de los siguientes


comandos:

Tar: El comando tar significa tape Achieve , que es el


comando de copia de seguridad de la unidad de cinta más
comúnmente utilizado por el sistema Linux / Unix. Le permite
acceder rápidamente a una colección de archivos y
colocarlos en un archivo de archivo altamente comprimido
comúnmente llamado tarball, o tar, gzip y bzip en Linux
Grep: El comando grep perteneciente a la familia Unix es
una de las herramientas más versátiles y útiles disponibles.
Este busca un patrón que definamos en un archivo de texto.
En otras palabras, con grep en Linux puedes buscar una
palabra o patrón y se imprimirá la línea o líneas que la
contengan.
Gzip: permite crear y extraer archivos
Zgrep: permite buscar el contenido de un archivo
comprimido sin necesidad de extraer el contenido en primer
lugar.
Wc: permite realizar diferentes conteos desde la entrada
estándar, ya sea de palabras, caracteres o saltos de líneas.

12.- Indicar qué acción realiza cada uno de los comandos indicados a continuación
considerando su orden. Suponga que se ejecutan desde un usuario que no es root ni
pertenece al grupo de root. (Asuma que se encuentra posicionado en el directorio de
trabajo del usuario con el que se logueo). En caso de no poder ejecutarse el comando
indique la razón:

 ls -l > prueba : Genera un archivo de nombre prueba que contiene un listado


detallado con los contenidos del directorio home del usuario. Se redirije la salida
estandar de ls mediante el carácter > hacia el archivo prueba.
 ps > PRUEBA : Genera un archivo de nombre PRUEBA que contiene un listado
de los procesos en ejecución en el directorio home del usuario. AL igual que en el
ejemplo anterior, se redirije la salida estandar mediante >.
 chmod 710 prueba
Cambia los permisos del archivo prueba a 710 para UGO (usuario, Grupo, Otros).
 chown root:root PRUEBA : Se intenta cambiar el propietario del archivo prueba
pero la operación no está permitida.
 chmod 777 PRUEBA : Cambia los permisos del archivo PRUEBA a 777. Es decir,
todos los usuarios pueden leer, escribir y ejecutar el archivo.
 chmod 700 /etc/passwd : Intenta cambiar los permisos a 700, pero la operaciòn no
está permitida para un usuario que no es root, esto por el archivo que esta
intentando cambiar.
 passwd root : passwd: No debe ver o cambiar la información de la contraseña
para root.
 rm PRUEBA : Se elimina el archivo PRUEBA.
 man /etc/shadow : Permiso denegad, porque “man” no debe recibir una ruta, si
hago “man shadow” si anda.
 find / -name *.conf : Lista todos los archivos cuyo nombres terminan con .conf,
empezando la búsqueda en el directorio raíz /.
 usermod root –d /home/newroot –L :
 cd /root : Se intenta acceder a la carpeta root, pero la operación falla porque el
usuario no
tiene los permisos.
 rm * : Borra todos los archivos del directorio donde está posicionado el usuario.
 cd /etc : Cambia el directorio a /etc, osea “se mueve” a /etc
 cp * /home –R : Intenta copiar el contenido de /etc a home, pero el usuario no
tiene los permisos necesarios para crear archivos en el directorio /home.
 shutdown : Apaga el equipo.

13.- Indicar qué comando sería necesario ejecutar para realizar cada una de las
siguientes acciones:
a) Terminar el proceso con PID 23
KILL -9 23

b) Terminar el proceso llamado init. ¿Qué resultados obtuvo?


KILL -9 1. No hace nada, porque el proceso init, no puede terminarse, así que no
responde al comando.

c) Buscar todos los archivos de usuarios en los que su nombre contiene la cadena
“.conf”
find / -name *.conf
d) Guardar una lista de procesos en ejecución el archivo /home/<su nombre de
usuario>/procesos
ps > /home/req3107/procesos

e) Cambiar los permisos del archivo /home/<su nombre de usuario>/xxxx a:


a. Usuario: Lectura, escritura, ejecución
b. Grupo: Lectura, ejecución
c. Otros: ejecución
chmod 751 /home/req3107/xxxx

f) Cambiar los permisos del archivo /home/<su nombre de usuario>/yyyy a:


a. Usuario: Lectura, escritura.
b. Grupo: Lectura, ejecución
c. Otros: Ninguno
chmod 650 /home/req3107/yyyy

g) Borrar todos los archivos del directorio /tmp


rm /tmp/* o me paro en tmp con (cd /tmp) y hago rm *

h) Cambiar el propietario del archivo /opt/isodata al usuario so2014


chown so2014 /opt/isodata

i) Guardar en el archivo /home/<su nombre de usuario>/donde el directorio donde


me encuentro en este momento, en caso de que el archivo exista no se debe eliminar su
contenido anterior.
pwd >> /home/req3107/donde

14. Indicar que comando sería necesario ejecutar para realizar cada una
de las siguientes acciones:

a) Ingrese al sistema como usuario “root”


su root

b) Cree un usuario. Elija para como nombre, por convención, la primer letra de su
nombre seguida de su apellido. Asígnele una contraseña de acceso.
adduser rquevedo

c) ¿Qué archivos fueron modificados luego de crear el usuario y qué directorios se


crearon?
Se modificaron los archivos de etc/shadow y se creó el directorio home/rquevedo

d) Crear un directorio en /tmp llamado cursada2015


mkdir /tmp/cursada2015

e) Copiar todos los archivos de /var/log al directorio antes creado.


cp /var/log/* /tmp/cursada2015
f) Para el directorio antes creado (y los archivos y subdirectorios contenidos en él)
cambiar el propietario y grupo al usuario creado y grupo users.
chown adibello:users /tmp/cursada2015

g) Agregue permiso total al dueño, de escritura al grupo y escritura y ejecución a


todos los demás usuarios para todos los archivos dentro de un directorio en forma
recursiva.
chmod 723 /directorio/ -R

h) Acceda a otra terminal virtual para loguearse con el usuario antes creado.
screen su rquevedo

i) Una vez logueado con el usuario antes creado, averigüe cual es el nombre de su
terminal.
who “root pts/0 2012-05-05 19:39 (:tty1:S.0)”

j) Verifique la cantidad de procesos activos que hay en el sistema.


ps

k) Verifiqué la cantidad de usuarios conectados al sistema.


who

l) Vuelva a la terminal del usuario root, y envíele un mensaje al usuario anteriormente


creado, avisándole que el sistema va a ser apagado.
write rquevedo
echo “El sistema será apagado, guarde sus trabajos”

m) Apague el sistema.
Shutdown

15. Indique que comando sería necesario ejecutar para realizar cada
una de las siguientes acciones:

a) Cree un directorio cuyo nombre sea su número de legajo e ingrese a él.


mkdir 2020; cd 2020

b) Cree un archivo utilizando el editor de textos nano, e introduzca su información


personal: Nombre, Apellido, Número de alumno y dirección de correo electrónico. El
archivo debe llamarse LEAME
nano LEAME; apreto “i” para ingresar todo lo necesario, escape y :wq.

c) Cambie los permisos del archivo LEAME, de manera que se puedan ver reflejados
los siguientes permisos:
 Dueño: ningún permiso
 Grupo: permiso de ejecución
 Otros: todos los permisos
chmod 017 LEAME

d) Vaya al directorio /etc y verifique su contenido. Cree un archivo dentro de su


directorio personal cuyo nombre sea leame donde el contenido del mismo sea el
listado de todos los archivos y directorios contenidos en /etc. ¿Cuál es la razón por la
cuál puede crear este archivo si ya existe un archivo llamado LEAME en este
directorio?
Se puede porque unix es case sensitive y distingue entre mayúsculas y minúsculas.

e) ¿Qué comando utilizaría y de qué manera si tuviera que localizar un archivo


dentro del file system? ¿Y si tuviera que localizar varios archivos con características
similares? Explique el concepto teórico y ejemplifique
Encontrar un archivo en el filesystem: sudo find / -name “archivo” –type f
Encontrar todas las imágenes en el filesystem: sudo find / -name “*.jpg” –type f

f) Utilizando los conceptos aprendidos en el punto e), busque todos los archivos cuya
extensión sea .so y almacene el resultado de esta búsqueda en un archivo dentro del
directorio creado en a). El archivo deberá llamarse ejercicio_f
find / -name “*.so” –type f > /home/pabloke87/2020/ejercicio_f

16. Indicar que acción realiza cada uno de los comandos indicados a
continuación considerando su orden. Suponga que se ejecutan
desde un usuario que no es root ni pertenece al grupo de root. (si no
existe el usuario deberá crearlo)
1) mkdir iso
Crea el directorio iso

2) cd ./iso; ps > f0
Cambia al directorio iso, crea una lista de los procesos de iso y lo guarda en un
archivo que se llama f0.

3) ls > f1
Lista el contenido de directorio actual (/iso) y lo guarda en el archivo f1.

4) cd /
Me voya raíz.

5) echo $HOME
Imprime el directorio home del usuario

6) ls -l > $HOME/iso/ls
Guarda el listado detallado del directorio actual en el archivo llamado ls contenido en
el directorio iso

7) cd $HOME; mkdir f2
Va a home y crea el directorio f2

8) ls –ld f2
Lista los detalles del directorio f2
9) chmod 341 f2
Cambia los permisos del directorio f2. escritura y ejecución al dueño, lectura al grupo
y ejecución a otros.

10) touch dir


Cambia (actualiza) la fecha al directorio.

11) cd f2
Se posiciona en el directorio f2

12) cd ~/iso
Cambia al directorio /home/user/iso

13) pwd >f3


Lista el directorio actual (/home/user/iso) y lo guarda en un archivo llamado f3

14) ps | grep 'ps' | wc -l >> ../f2/f3


Guarda en el archivo f3, sin sobreescritura, ubicado en el directorio f2, la cantidad de
líneas que contienen la palabra “ps” entre la lista de procesos.

15) chmod 700 ../f2; cd ..


Modifica los permisos del directorio f2: total para usuario, nada para grupo y nada
para otros. Vuelve a home.

16) find . -name etc/passwd


17) find / -name etc/passwd
Permiso denegado, no puede un usuario comun, buscar en la raíz. Sólo root.

18) mkdir ejercicio5


Crea el directorio ejercicio5 si que esta parado dentro su

También podría gustarte