Mac

Cositas de macos y apple

Montar un punto de montaje NFS en MacOs 12 Monterey

Introducción

A veces se me olvida que Mac tiene sus cositas. En mi caso tengo una raspberry pi 4B que es mi centro de backups, DCHP, etc. Habitualmente monto alguna unidad vía NFS con mi ordenador personal con linux, y como no quería hacer lo propio con mi Macbook Pro con chip M1 y Monterey (12.5) como versión del SO

Tras unas horas de trabajo, he comprendido que es mucho mejor instalar un servidor APF con Netatalk y permitir el uso de su formato natívo de red, que usar NFS que se le atraganta mucho al Darwin.

Metodología

Para ello lo primero me cree los directorios que queria (uno por cada endpoint NFS) y luego intente montar uno

> sudo mkdir /private/backup5t
> sudo make mount -t nfs rbp:/backup5t /private/backup5t
Password:
mount_nfs: can't mount with remote locks when server (rbp) is not running rpc.statd: RPC prog. not avail
mount: /private/backup5t failed with 74

Bueno, algo me decía que empezábamos un nuevo lío.

Verificar NFS remoto

> showmount -e rbp
Exports list on rbp:
/backup5t                           192.168.1.0/24

Verificar los demonios asociados a nfs

❯ systemctl status rpcbind.service
● rpcbind.service - RPC bind portmap service
   Loaded: loaded (/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2022-08-07 08:26:48 UTC; 42min ago
     Docs: man:rpcbind(8)
 Main PID: 279 (rpcbind)
    Tasks: 1 (limit: 4915)
   Memory: 2.1M
   CGroup: /system.slice/rpcbind.service
           └─279 /sbin/rpcbind -f -w
❯ systemctl status rpc-statd.service
● rpc-statd.service - NFS status monitor for NFSv2/3 locking.
   Loaded: loaded (/lib/systemd/system/rpc-statd.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

Aquí lo vemos. Un servicio de locking que está muerto pero es normal,ya que no tengo configurado nfs v3 o v2.

Y por aquí es donde anda el lio.

Solución

Decirle a nuestro mác que use la versión 4 o configurar el servidor para que soporte nfs v3 y nfs4, que no estoy dispuesto, por obsoleto.

❯ sudo echo ‘nfs.client.mount.options = vers=4’ >> /etc/nfs.conf
❯ sudo mount  -t nfs rbp:/backup5t /private/backup5t

Et voila…

Disco NFS montado en MacOS X Monterey

Solventar el lío a lo bruto

La literatura sobre el tema en Google, o DuckDuck es fantástica. Una vez más muchos posts, y pocas soluciones reales, amén de que muchas son similares pero no tienen la misma dinámica. Y esta es una de las propuestas, que tiene un gran handicap.

Su uso es desaconsejado porque en un entorno de múltiples accesos a un mismo fichero acabarán en una corrupción NO USAR NUNCA nolocks

> sudo mount -o nolocks,resvport,locallocks  -t nfs rbp:/backup5t /private/backup5t
Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.

Configurar un servidor APF con netatalk en una Raspberry Pi

Introducción

Tras un rato con la configuración del NFS v4 para conectarme desde mi Macbook Pro a mi raspberrypi (linux conHypriot, he visto que al final perderé el tiempo, la velocidad no es muy agraciada, y encima se me olvidó un detalle, necesito una partición en un de mis discos atados a la raspberry que tengo formato hfsplus o apfs. A este punto no encontre nada sobre APFS para linux excepto un repositorio de github Apple File System for Linux y yo soy friki pero no idiota como para perder mi tiempo, y menos cuando una de las particiones va a ser mi Time Machine o backup.

Metodología

Debemos realizar los siguientes pasos: Instalar el soporte de HPFS+ Instalar soporte netatalk para poder comunicarnos con el protocolo de red de Apple. Particionar el disco con parted ya que el disco de Time Machine debe estar formateado y montado como una unidad HPFS+ Modificar el fichero de montaje fstab para que sea permanente Editar la configuración de netatalk

Después ya podremos comprobar el trabajo realizado.

En el ejemplo vamos a usar un disco de 5TB con dos particiones, una para hpfs+ y xfs

Soporte HPFS+

Actualización del sistema de paquetes

sudo apt-get update
sudo apt-get upgrade

Instalación de paquetes para HPFS+

Sin ellos no podremos dar soporte a nuestro linux para que lea y escriba en un sistema de ficheros HPFS+

sudo apt-get install hfsplus hfsutils hfsprogs gdisk

Crear una particion HPFS+

Primero necesitamos crear una partición para usar con dicho sistema de ficheros.

En mi caso voy a formatear un disco duro de 5TB en dos particiones. Una para xfs y otra para *hpfs+

Es un disco que actualmente tenía dos particiones, una reservada que no borre y otra xfs. En el proceso voy a eliminar las dos particiones para luego crear dos particiones conforme a mis deseos, usando parted

Más información Parted mejor que fdisk

❯ sudo parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: Seagate Expansion Desk (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name                          Flags
 1      17.4kB  134MB   134MB                Microsoft reserved partition  msftres
 2      135MB   6001GB  6001GB  xfs          BACKUP5T

(parted) rm 2
(parted) rm 1
(parted) print
Model: Seagate Expansion Desk (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  File system  Name  Flags

(parted) quit
Information: You may need to update /etc/fstab.

❯ sudo parted -s /dev/sdb mkpart backupt3t 0% 50%
❯ sudo parted -s /dev/sdb mkpart timemachine 50% 100%

❯ sudo parted /dev/sdb
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: Seagate Expansion Desk (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name         Flags
 2      1049kB  3001GB  3001GB               backup3t
 1      3001GB  6001GB  3001GB               timemachine

(parted) quit

Que bien que ahora podemos formatear las dos particiones.

❯ sudo mkfs.hfsplus /dev/sdb2
Initialized /dev/sdb2 as a 2795 GB HFS Plus volume
❯ sudo mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=183141312 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=0
data     =                       bsize=4096   blocks=732565248, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=357697, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Crear las particiones de montaje

Creamos las particiones de montaje para ambos sistemas, y ya que van a aser usadas en un entorno personal le damos los permisos adecuados

❯ sudo mkdir /timemachine
❯ sudo mkdir /backup3t

Probar el montaje manual

Primero probamos manualmente el montaje, y luego pasaremos a el montaje automático en cada reinicio.

Aconsejado cuando hacemos cosas con nuevos dispositivos, y sistemas de ficheros, para liberarnos de problemas en el montaje automático.

El comando de abajo, formateara la partición con las siguientes características (disponible la ayuda man de man mkfs.hfsplus

Lo de Apple y las mayusculas y minusculas es que no me entra. Un sistema UNIX como es MacOSX basado en Darwin, en el que coexiste con otros UNIX, que por defecto te instala un sistema sin distinción de caso.

La opción J Crearía el volumen con un fichero de diario o journal en este caso de 512M (máximo). Yo lo considero necesario pues en caso de un problema con el disco en un reinicio, corte de electricidad, es una garantía muy fuerte de que se recuperara la información, y en backups basados en rsync como los es el Time Machine, es más que necesario por la cantidad tan gigante de información que se genera en el journal. Lamentablemente a la fecha no conozco soporte para instalar el journal ya que al montaje, el disco se haria indisponible por un problema de permisos sobre el journal.

❯ sudo mkfs.hfsplus -s -v timemachine /dev/sdb1
Initialized /dev/sdb1 as a 2795 GB HFS Plus volume

❯ sudo fsck.hfsplus /dev/sdb1
** /dev/sdb1
** Checking HFS Plus volume.
** Detected a case-sensitive catalog.
** Checking Extents Overflow file.
** Checking Catalog file.
** Checking Catalog hierarchy.
** Checking volume bitmap.
** Checking volume information.
** The volume timemachine appears to be OK.

Montaje hfsplus manual

Montaje automatizado de los discos

Una vez montado podemos ver las opciones del montaje que estarán disponibles en el /etc/mtab

/dev/sdb1 /timemachine hfsplus rw,relatime,umask=22,uid=0,gid=0,nls=utf8 0 0

Editamos el fichero /etc/fstab

❯ sudo cat /etc/fstab |grep time
/dev/sdb1 /timemachine hfsplus rw,relatime,umask=22,uid=0,gid=0,nls=utf8 0 1

Con ellas ya tenemos una idea de que poner en el /etc/fstab

Obtención del UUID

Suelo montar las particiones con UUID y con más razón cuando son discos externos, ya que un cambio, eliminación de dispositivo, error, en un reinicio puede cambiar las letras del dispositivo.

> sudo  blkid

Comando blkid

Edición del fstab

UUID=6bc6f79f-c74f-35a1-b226-092396e3fed1 /timemachine hfsplus rw,relatime,umask=22,uid=0,gid=0,nls=utf8 0 1
UUID=c0f66c48-3a78-4c1a-bc7f-6d4ad854f284 /backup3t xfs  rw,noquota,nofail  0  1

Configuración de netatalk

Una buen guía de netatalk es la Guia de Archlinux | Netatalk aunque es bueno darse una leída al propio proyecto Netatalk

Abajo mi configuración

❯ cat /etc/netatalk/afp.conf
;
; Netatalk 3.x configuration file
;

[Global]
; Global server settings
; mimic model = TimeCapsule6,106
 log level = default:warn
 log file = /var/log/afpd.log
 hosts allow = 192.168.1.0/24
 spotlight = yes

; [Homes]
; basedir regex = /home

[Pirate]
path = /home/pirate
valid users = pirate

[Backup10t]
path = /backup10t
valid users = pirate

[Backup3t]
path = /backup3t
valid users = pirate

[My Time Machine Volume]
path = /timemachine
time machine = yes

Reiniciar netatatalk con sudo systemctl restart netatalk ya tendremos disponibles nuestras particiones en el mac a través de las unidades de red.

Nota: El reinicio de netatalk tras algún cambio o el inicio por primera vez, tardará dependiendo de la cantidad de contenidos de las unidades compartidas configuradas.

Montaje de las particiones

Ya está, ya solo tenemos conectarnos al servidor y montar nuestras particiones.

Desde el Finder > Ir > Conectarse a un servidor (⌘)

Conectarse a un servidor APF Conectarse  un volumen de un servidor APF

NOTA: La primera vez que se conecta a un servidor APF tardará un buen rato en terminar la conexión. Sé paciente, sobre todo si tus discos o particiones APF tiene un gran volumen de ficheros y enlaces, ya que este sistema de red, tiene una especie de journal, que tiene que completar. No te desesperes, en mi caso la primera vez tardó casi 10 minutos, ya que el disco backup10t tiene casi 8TB de backups con rsync de más de 2 años, lo que hace que su número de inodos usados en enlaces duros sea muy elevado.

Configurar Time Machine

Ahora ya podemos configurar nuestro Time Machine Preferencias > Time Machine y disfrutar delo aprendido.

Configurar Time Machine

Disclaimer o descargo de responsabilidad

Esto es un documento tipo “Yo lo hice así y me funciono”. Eso supone que cuando menos tienes conocimientos, gustas de leer la documentación y tratar de entenderla. Que eres un forofo de las copias de seguridad y que por supuesto, eres consciente de que si haces algo mal la puedes liar. No me vengas luego con llantos. Si te pasa algo yo no soy el culpable. ¿Entendido? Que los disfrutes.

Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.

Cómo acceder a una máquina Linux con RDP en un Mac

Introducción

Aunque he vuelto a la casa Apple con mi nuevo max, sigo teniendo un montón de máquinas y dispositivos basados en Linux, en mi oficina profesional. Tenía oxidado el RDP y como no, tras leer un par de artículos me encuentro lo de siempre: incompletos al menos para un escenario como el mio, con dos pantallas en el ordenador al que quiero conectar, mi antiguo ordenador de sobremesa, ahora en manos de otra persona, pero en el que aún tengo cosas que todavía no puedo trasladar operativamente a mi mac. (Cosas de Docker y otras hierbas)

Tras seguir los pasos de How to RDP to Linux from a Mac computer me encontre con un desagradable logout inmediato tras el login.

Una cosa importante. A estas altura salvo que uno esté con un equipo antiguo, con pocos recursos, (cosa rara o cosa de una raspberry por ejemplo) lo de instalar el xfce, alterar tu ordenador y más si hay otros usuarios usandolo, es para poner un aviso grande en los blogs de expertos.

Instalación

Descargar el cliente RDP de la App Store. En mi caso, por conocerlo de hace ya 20 años, uso Microsoft. Gratuito. Instalar RDP en linux (Ubuntu 22.04 en este caso) Configurar la conexión en el cliente y si falla configurar RDP en linux

Instalar RDP

sudo apt update && sudo apt upgrade -y && sudo apt install xrdp && sudo systemctl enable xrdp

Conceder accesos a certificados

En la instalación tipo que nos indican los expertos.

[20220924-09:33:09] [INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem
[20220924-09:33:09] [INFO ] Using default X.509 key file: /etc/xrdp/key.pem
[20220924-09:33:09] [ERROR] xrdp_iso_send: trans_write_copy_s failed
[20220924-09:33:09] [ERROR] Cannot read private key file /etc/xrdp/key.pem: Permission denied

Luego algo falla, y son permisos

sudo adduser xrdp ssl-cert

Ajustes en el fichero de configuración

cp  /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.back

Editar

<editor> /etc/xrdp/xrdp.ini
# Uso en una red local segura, sin acceso remoto por internet. De lo contrario **high**
crypt_level=low
# Compresión
bitmap_cache=true
bitmap_compression=true
bulk_compression=true
max_bpp=32  # En mi caso local con fibra, me gusta trabajar cómodo, pero puedes reducir en otros casos

Configurar el cliente Remote Desktop

Con las configuraciones de más abajo (para un pc con dos pantallas y un mac con una pantalla QHDC 3440 × 1440, me conectaron, pero me escupio del log en cuanto entre. .

Configuracion RDP-Cliente :: General

Configuracion RDP-Cliente :: Display

Disfrutar del Escritorio Remoto

RDP-Cliente :: Conexion Mac a Linux Ubuntu 22.04

Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.