{"id":1128,"date":"2024-11-06T19:22:35","date_gmt":"2024-11-06T22:22:35","guid":{"rendered":"https:\/\/www.marianoacciardi.com.ar\/?page_id=1128"},"modified":"2024-11-07T15:27:24","modified_gmt":"2024-11-07T18:27:24","slug":"dispositivos-principales-en-dev","status":"publish","type":"page","link":"https:\/\/www.marianoacciardi.com.ar\/?page_id=1128","title":{"rendered":"\u00bfQu\u00e9 es el directorio \/dev?"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Visi\u00f3n general<\/h2>\n\n\n\n<p id=\"yui_3_17_2_1_1730920767738_2530\">El directorio <code>\/dev<\/code> en sistemas basados en Unix (como Linux) contiene archivos especiales que representan dispositivos de hardware y otros recursos del sistema. Debemos considerar que pr\u00e1cticamente a todos los dispositivos de hardware, el sistema operativo los accede desde este directorio.&nbsp;<\/p>\n\n\n\n<p id=\"yui_3_17_2_1_1730920767738_2511\">Los subdirectorios del directorio <code>\/dev<\/code> se generan din\u00e1micamente como parte de la inicializaci\u00f3n del sistema. Este proceso ocurre despu\u00e9s de que el n\u00facleo del sistema operativo se haya cargado en la memoria durante la fase inicial del arranque, pero antes de que se complete la secuencia de arranque y el sistema est\u00e9 completamente funcional.<br \/><br \/>El proceso exacto de generaci\u00f3n de los subdirectorios en <code>\/dev<\/code> puede variar ligeramente seg\u00fan la distribuci\u00f3n de Linux y la configuraci\u00f3n espec\u00edfica del sistema. Sin embargo, generalmente implica la ejecuci\u00f3n de udev (Administrador de dispositivos del sistema) o un servicio similar. udev es responsable de administrar los dispositivos y sus nodos de dispositivo asociados en el sistema Linux. Durante el arranque, udev escanea el hardware del sistema, detecta los dispositivos presentes y crea din\u00e1micamente los nodos de dispositivo correspondientes en el directorio <code>\/dev<\/code>.<\/p>\n\n\n\n<p>El antecesor directo de udev en Linux fue el subsistema devfs (Sistema de archivos de dispositivo), que fue introducido en el kernel de Linux alrededor del a\u00f1o 2000. devfs fue un intento inicial de proporcionar un sistema de archivos virtual para dispositivos en Linux, que asignaba autom\u00e1ticamente los nodos de dispositivo en el directorio <code>\/dev<\/code> en funci\u00f3n de los dispositivos presentes en el sistema en tiempo de ejecuci\u00f3n.<\/p>\n\n\n\n<p>Sin embargo, devfs ten\u00eda algunas limitaciones y problemas de dise\u00f1o, lo que llev\u00f3 al desarrollo de udev como su reemplazo. udev se introdujo en el kernel de Linux alrededor del a\u00f1o 2003 como parte del proyecto de Linux-hotplug. A partir de Linux kernel 2.6, udev se convirti\u00f3 en el enfoque est\u00e1ndar para la gesti\u00f3n din\u00e1mica de dispositivos en sistemas Linux, reemplazando gradualmente a devfs.<\/p>\n\n\n\n<p>udev ofrece una serie de ventajas sobre devfs, incluida una mejor integraci\u00f3n con el sistema de inicio y una mayor flexibilidad para la administraci\u00f3n de dispositivos. Tambi\u00e9n proporciona reglas de configuraci\u00f3n flexibles que permiten a los administradores personalizar la asignaci\u00f3n de nombres de dispositivos y otras configuraciones relacionadas con los dispositivos. En consecuencia, udev se ha convertido en el est\u00e1ndar de facto para la administraci\u00f3n din\u00e1mica de dispositivos en sistemas Linux modernos.<\/p>\n\n\n\n<p>Los podemos agrupar seg\u00fan su tipo en:<\/p>\n\n\n\n<ol id=\"yui_3_17_2_1_1730920767738_934\" class=\"wp-block-list\">\n<li><strong>Dispositivos de bloque<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Representan dispositivos de almacenamiento de datos, como discos duros, unidades USB y particiones de disco.<\/li>\n\n\n\n<li>Cada bloque es como una cajita, o unidad m\u00ednima de almacenaje, en donde se guardan los diferentes pedacitos que constituyen un archivo. Cuando abr\u00eds ese archivo, el sistema busca todos los bloques que contienen esos pedazos de informaci\u00f3n, los une y as\u00ed reconstruye el archivo completo. <\/li>\n\n\n\n<li>Un dispositivo de bloques como un disco duro o una memoria USB es un espacio organizado en bloques en donde el sistema puede almacenar y encontrar los datos de manera ordenada y r\u00e1pida.<\/li>\n\n\n\n<li>Caracter\u00edsticas principales: Tratan los datos como bloques y admiten operaciones de lectura y escritura.<\/li>\n\n\n\n<li>Puntos importantes (ampliados m\u00e1s abajo):\n<ul class=\"wp-block-list\">\n<li>Los dispositivos de bloque SCSI  se identifican con nombres como <code>\/dev\/sda<\/code> (para discos) o <code>\/dev\/sda1<\/code>&#8230; (para particiones).<\/li>\n\n\n\n<li>Para discos de estado s\u00f3lido NVME normalmente se los identifica con <code>\/dev\/nvme0n1<\/code> &nbsp; (para discos) y&nbsp; <code>\/dev\/nvme0n1p1<\/code> &#8230; (para particiones)<\/li>\n\n\n\n<li>Los dispositivos l\u00f3gicos de bloque se identifican a trav\u00e9s de <code>\/dev\/mapper\/<\/code>&#8230;..<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Dispositivos de caracteres<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Representan dispositivos de entrada\/salida que manejan datos de forma secuencial, como puertos serie, tarjetas de sonido y ratones.<\/li>\n\n\n\n<li>Caracter\u00edsticas principales: Tratan los datos como caracteres y admiten operaciones de lectura y escritura.<\/li>\n\n\n\n<li>Puntos importantes:\n<ul class=\"wp-block-list\">\n<li>Los dispositivos de caracteres se identifican con nombres como <code>\/dev\/ttyS0<\/code> (para el primer puerto serie)<\/li>\n\n\n\n<li>Los dispositivos de audio <code>\/dev\/audio&lt;n&gt;<\/code> son gestionados por el kernel de Linux y son utilizados por aplicaciones y herramientas de software para interactuar con dispositivos de audio, permitiendo la grabaci\u00f3n de audio, o flujos de sonido para el streaming.<\/li>\n\n\n\n<li>Los dispositivos de video <code>\/dev\/video&lt;n&gt;<\/code> son gestionados por el kernel de Linux y son utilizados por aplicaciones y herramientas de software para interactuar con dispositivos de video, permitiendo la captura de video, la visualizaci\u00f3n en tiempo real y otras operaciones relacionadas con el video.Por ejemplo, aplicaciones como programas de videollamadas, software de grabaci\u00f3n de video y herramientas de edici\u00f3n de video pueden utilizar estos dispositivos para acceder a las fuentes de video disponibles en el sistema y realizar operaciones sobre ellas.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Pseudo-dispositivos<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Representan recursos virtuales del sistema, como consolas virtuales, pseudo-terminales y memorias compartidas.<\/li>\n\n\n\n<li>Caracter\u00edsticas principales: No est\u00e1n asociados directamente con hardware f\u00edsico, sino que son proporcionados por el kernel del sistema operativo.<\/li>\n\n\n\n<li>Puntos importantes:\n<ul class=\"wp-block-list\">\n<li>Los pseudo-dispositivos incluyen nombres como <code>\/dev\/ptmx<\/code> (para pseudo-terminales maestros) y <code>\/dev\/null<\/code> (para un dispositivo de descarte).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Otros dispositivos<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Adem\u00e1s de los dispositivos de bloque, de caracteres y pseudo-dispositivos, el directorio <code>\/dev<\/code> puede contener otros tipos de dispositivos, como dispositivos de red (<code>\/dev\/net<\/code>), dispositivos de control de acceso (<code>\/dev\/rtc<\/code>), y m\u00e1s.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 debo saber para una instalaci\u00f3n acerca de los dispositivos de bloques?<\/h2>\n\n\n\n<p>Es muy importante conocer este directorio para entender donde estamos instalando el sistema operativo. Cualquier dispositivo de bloques, sea permanente o temporario como un penddrive, tiene su referencia en t\u00e9rminos de \u00abbloques\u00bb en <code>\/dev<\/code> . <\/p>\n\n\n\n<p>Algunas herramientas de bajo nivel como fdisk, fsck, etc pueden acceder directamente los dispositivos desde \/dev . <\/p>\n\n\n\n<p>La gran mayor\u00eda de las aplicaciones no acceden directamente a los bloques sino que lo hacen a trav\u00e9s de un intermediario que organiza esos bloques que es un filesystem (btrfs, ext4, ntfs, fat, xfs, f2fs, reiserfs). Para hacer esto se realiza una operaci\u00f3n que es \u00abmontarlo\u00bb en un directorio o carpeta, preferentemente vac\u00edo, de la jerarqu\u00eda del filesytem de unix (hfs) <\/p>\n\n\n\n<p>Cuando realizamos una instalaci\u00f3n debemos identificar claramente qu\u00e9 es un disco y qu\u00e9 es una partici\u00f3n de ese disco.<\/p>\n\n\n\n<p>En general el sector de booteo (grub-install) se instala en un \u00abdisco\u00bb, y el resto del sistema operativo distribuido en una o m\u00e1s \u00abparticiones\u00bb.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sector de booteo<\/h2>\n\n\n\n<p>T\u00edpicamente instalaremos el sector de booteo (Master Boot Record) en un disco, en general el primero que tenemos instalado. Las BIOS de las computadoras buscan esta informaci\u00f3n en el momento en que se enciende y este c\u00f3digo es el que le indica como debe seguir el booteo. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Si nuestro equipo posee discos SCSI, este dispositivo podr\u00e1 ser: <code>\/dev\/sda<\/code>  o <code>\/dev\/sdb<\/code> . Estos discos haran referencia a primera o segunda controladora\/conexi\u00f3n SCSI<\/li>\n\n\n\n<li>Si nuestro equipo posee discos M2 de estado s\u00f3lido, este dispositivo ser\u00e1 <code>\/dev\/nvme0n1<\/code>. Este dispositivo hace referencia al primer disco del primer slot M2\/nvme para discos s\u00f3lidos<\/li>\n\n\n\n<li>Si nuestro equipo a\u00fan posee discos ide, entonces este dispositivo podr\u00e1 ser<code> \/dev\/hda<\/code>  o <code>\/dev\/hdb<\/code> haciendo referencia as\u00ed a la primera o a la segunda controladora\/conexi\u00f3n IDE<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Instalaci\u00f3n de los archivos del OS<\/h2>\n\n\n\n<p>El sistema operativo lo instalaremos en alguna de las particiones de estos discos. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>\/dev\/sda1<\/code> o <code>\/dev\/sda2<\/code> : ser\u00e1n la primera o segunda partici\u00f3n conexi\u00f3n SCSI<\/li>\n\n\n\n<li><code>\/dev\/nvme0n1p1<\/code> : Si nuestro equipo posee discos M2 de estado s\u00f3lido, este dispositivo har\u00e1 referencia a la primera partici\u00f3n del primer disco, del primer slot M2 para discos s\u00f3lidos<\/li>\n\n\n\n<li><code>\/dev\/hda1<\/code>  : Si nuestro equipo a\u00fan posee discos ide, entonces este dispositivo hace referencia   a la primera partici\u00f3n del primer disco\/conexi\u00f3n IDE<\/li>\n\n\n\n<li><code>\/dev\/vda1<\/code> : Si el disco es un disco virtual tipo qcow o similar. <\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Uso de Linux Volume Manager  (LVM) y Linux Unified Key Setup (Luks\/Crypsetup)<\/h2>\n\n\n\n<p>Cuando utilicemos particiones o discos a partir de Linux Volume Manager (LVM) o discos encriptados (crypsetup), esas particiones colgar\u00e1n t\u00edpicamente de <code>\/dev\/mapper<\/code> , lo que nos da una idea de que hay una capa m\u00e1s intermedia entre el \u00abfilesystem\u00bb y los bloques del hardware. El acceso de todo el sistema se realiza a trav\u00e9s de esa capa intermedia que mapea el FS a los sectores del disco. Ambas capas de traducci\u00f3n son muy veloces y eficientes en Linux. En una m\u00e1quina normal contempor\u00e1nea el overhead que implica cualquera de estas capas, o incluso las dos juntas,  es \u00ednfimo e imperceptible en relaci\u00f3n a los beneficios que brinda. <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>\/dev\/mapper\/LVM1-ROOT<\/code> : En este caso se trata de una partici\u00f3n creada a partir de LVM, del grupo de vol\u00famenes LVM1 que ha sido etiquetada como ROOT. <\/li>\n\n\n\n<li>\/dev\/mapper\/LVM1-HOME_crypt : en este caso este device identifica a una partici\u00f3n de LVM que pertenece al grupo de vol\u00famenes LVM1, ha sido etiquetada como HOME,  y a la cual se le ha aplicado encripci\u00f3n con crypsetup<\/li>\n\n\n\n<li><code>\/dev\/mapper\/nvme0n1p3_crypt<\/code> : Esta puede ser la referencia a la tercera partici\u00f3n del primer disco M2\/nvme que ha sido encriptada con cryptsetup<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Uso de RAIDs de software (Mdadm)<\/h2>\n\n\n\n<p>Otra opci\u00f3n que podemos utilizar en Linux muy para configurar nuestros discos para mayor performance y\/o redundancia es crear RAIDs de software. Ello se hace con el utilitario mdadm y nos permite configurar los niveles m\u00e1s comunes de RAID: 0, 1, 5, 1+0, etc. En ese caso los RAID configurados se identificar\u00e1n de la siguiente manera<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>\/dev\/md0 <\/code>: Hace referencia al primer RAID creado con mdadm<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfPara que me sirven los UUID de los dispositivos de bloque?<\/h2>\n\n\n\n<p>Cuando montamos una partici\u00f3n en un directorio, preferentemente vac\u00edo, de la jerarqu\u00eda del filesytem (HFS), estaremos haciendo accesible la informaci\u00f3n de un dispositivo de bloques a trav\u00e9s de la capa de filesytem (btrfs, ext4, xfs, f2fs) para todas las aplicaciones del sistema. <\/p>\n\n\n\n<p>Como dijimos m\u00e1s arriba, el directorio <code>\/dev<\/code> se genera din\u00e1micamente. Con lo cual tenemos que tener mucho cuidado cuando usamos estas denominaciones en archivos persistentes como <code>\/etc\/fstab<\/code> , ya que con el simple agregado de un disco o cambio en la conexi\u00f3n, los nombres con los que se identifican cambian. Un <code>\/dev\/sda1<\/code> f\u00e1cilmente puede convertirse en un <code>\/dev\/sdc1 <\/code>, etc.<\/p>\n\n\n\n<p>Para resolver ese problema existe lo que se llama el UUID del dispositivo de bloques. Este identificador \u00fanico se crea cuando formateamos la partici\u00f3n y no se modifica por m\u00e1s que agreguemos discos o los conectemos a distintas controladores. Es una pr\u00e1ctica recomendada para el archivo \/etc\/fstab utilizar estos id y no los directorios \/dev directamente. Con el  comando <code>blkid<\/code> listamos todos los bloques y a que dispositivo est\u00e1n asociados en la configuraci\u00f3n actual <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@UTNDiploMaddogTexto:~# blkid\n\/dev\/vdd: UUID=\"b3f023aa-4509-4e31-94a1-33dde2ad9220\" UUID_SUB=\"fc1e1b21-c9fc-49e4-95e1-8e4b4e0bfecf\" BLOCK_SIZE=\"4096\" TYPE=\"btrfs\"\n\/dev\/vdb: UUID=\"b3f023aa-4509-4e31-94a1-33dde2ad9220\" UUID_SUB=\"89f1e0e4-80ed-43ed-b345-d5ae080f2c4b\" BLOCK_SIZE=\"4096\"  TYPE=\"btrfs\"\n\/dev\/vde1: UUID=\"e9516914-1aa3-4d36-8397-c4cb60becb89\" BLOCK_SIZE=\"4096\" TYPE=\"ext3\" PARTUUID=\"e49bf035-01\"\n\/dev\/vde2: UUID=\"3551437e-979b-4981-a753-6d40577761e2\" BLOCK_SIZE=\"4096\" TYPE=\"ext3\" PARTUUID=\"e49bf035-02\"\n\/dev\/vdc: UUID=\"b3f023aa-4509-4e31-94a1-33dde2ad9220\" UUID_SUB=\"bca10024-d1fe-4845-b258-76898f7b9a4b\" BLOCK_SIZE=\"4096\" TYPE=\"btrfs\"\n\/dev\/vda5: UUID=\"d513206d-c4c4-47cc-a173-37d2fe15ac37\" TYPE=\"swap\" PARTUUID=\"84633245-05\"\n\/dev\/vda1: UUID=\"957e02b4-4c07-4f4d-8686-6c6631fddbec\" BLOCK_SIZE=\"4096\" TYPE=\"ext4\" PARTUUID=\"84633245-01\"\n<\/code><\/pre>\n\n\n\n<p>Para hacer referencia a estos UUID de partici\u00f3n en el montaje persistente (<code>\/etc\/fstab<\/code>) lo haremos de esta manera: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\nUUID=957e02b4-4c07-4f4d-8686-6c6631fddbec \/               ext4    errors=remount-ro 0       1\n# swap was on \/dev\/sda5 during installation\nUUID=d513206d-c4c4-47cc-a173-37d2fe15ac37 none            swap    sw              0       0\n\/dev\/sr0        \/media\/cdrom0   udf,iso9660 user,noauto     0       0\n\n# Estos son mis RAIDs:\n#\/dev\/md0 \t\t\t\t\t\/backupenmirror\t  ext4\t \nUUID=3873ec0a-0785-4682-8fa0-192fe828c2a7 \/backupenmirror ext4 defaults 0 0\ndefaults 0 0\n\n#monto btrfs\nUUID=b3f023aa-4509-4e31-94a1-33dde2ad9220   \/usr\/src btrfs defaults 0 0 \n\n# pruebas de quota\nUUID=e9516914-1aa3-4d36-8397-c4cb60becb89  \/pruebaquota_user ext3 defaults,usrjquota=aquota.user,jqfmt=vfsv0 0 0\nUUID=3551437e-979b-4981-a753-6d40577761e2  \/pruebaquota_group ext3 defaults,grpjquota=aquota.group,jqfmt=vfsv0 0 0\n<\/code><\/pre>\n\n\n\n<p>De esta manera la identificaci\u00f3n de los dispositivos de bloques para montar sobre la jerarqu\u00eda de directorios ser\u00e1 siempre un\u00edvoca y no necesitamos preocuparnos por donde est\u00e9n conectados los discos o si se agregan o quitan discos. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Visi\u00f3n general El directorio \/dev en sistemas basados en Unix (como Linux) contiene archivos especiales que representan dispositivos de hardware y otros recursos del sistema. Debemos considerar que pr\u00e1cticamente a todos los dispositivos de hardware, el sistema operativo los accede desde este directorio.&nbsp; Los subdirectorios del directorio \/dev se generan\u2026<\/p>\n<p> <a class=\"continue-reading-link\" href=\"https:\/\/www.marianoacciardi.com.ar\/?page_id=1128\"><span>Continue reading<\/span><i class=\"crycon-right-dir\"><\/i><\/a> <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_eb_attr":"","footnotes":""},"class_list":["post-1128","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.marianoacciardi.com.ar\/index.php?rest_route=\/wp\/v2\/pages\/1128","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.marianoacciardi.com.ar\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.marianoacciardi.com.ar\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.marianoacciardi.com.ar\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.marianoacciardi.com.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1128"}],"version-history":[{"count":8,"href":"https:\/\/www.marianoacciardi.com.ar\/index.php?rest_route=\/wp\/v2\/pages\/1128\/revisions"}],"predecessor-version":[{"id":1151,"href":"https:\/\/www.marianoacciardi.com.ar\/index.php?rest_route=\/wp\/v2\/pages\/1128\/revisions\/1151"}],"wp:attachment":[{"href":"https:\/\/www.marianoacciardi.com.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}