Realizar cambios de sistema al inicio

1

Me gustaría cambiar la configuración predeterminada de smb al inicio para eliminar los tiempos de espera. Tengo el siguiente script;

#!/bin/sh

sysctl net.smb.fs.kern_deadtimer=0
sysctl net.smb.fs.kern_hard_deadtimer=0
sysctl net.smb.fs.kern_soft_deadtimer=0

La ejecución de este script con sudo establece las opciones relevantes del kernel correctamente. Así que sé que estos comandos son los correctos.

He creado el siguiente LaunchDaemon en /Library/LaunchDaemons/ para intentar que esta secuencia de comandos se ejecute al inicio;

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.jo.sysctl</string>
    <key>Disabled</key>
    <false/>
    <key>UserName</key>
    <string>admin</string>
    <key>GroupName</key>
    <string>staff</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/admin/scripts/sysctl.sh</string>
    </array>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

He revisado el plist con plutil y verifica OK. He establecido los permisos en el script de shell en 0755 y he establecido la propiedad del archivo plist en root:wheel .

En ejecución

sudo launchctl load /Library/LaunchDaemons/com.jo.sysctl.plist

... no hace nada. Los valores predeterminados todavía están configurados incorrectamente. ¿A dónde me voy mal?

Gracias

    
pregunta Jack Westmore 06.04.2018 - 18:40

2 respuestas

3

Probablemente sea mejor abandonar el enfoque del script y usar el archivo de configuración diseñado para este propósito: sysctl.conf

Esto se aplica hasta macOS 10.12 Sierra.
como @klanomath señaló en los comentarios: "* .deadtimer son todos" sysctl: unknown oid * .deadtimer "en mi entorno de High Sierra. ¡Es decir, no existen!"
Así que parece que esa parte de la interfaz de sysctl se ha ido por completo ahora.

sudo nano  /private/etc/sysctl.conf

agrega las siguientes variables:

net.smb.fs.kern_deadtimer=0
net.smb.fs.kern_hard_deadtimer=0
net.smb.fs.kern_soft_deadtimer=0

Si luego inicia en modo detallado ( cmd + v en el inicio o sudo nvram boot-args="-v" antes de un reinicio), debería ver la configuración personalizada que se aplica. p>

Entonces deberías ver en los mensajes de arranque como estos:

net.smb.fs.kern_deadtimer: 60 -> 0
net.smb.fs.kern_hard_deadtimer: 600 -> 0
net.smb.fs.kern_soft_deadtimer: 30 -> 0

De lo contrario, consulte con

sysctl -a | grep smb

Este enfoque debería funcionar para la mayoría de las configuraciones a las que se puede acceder a través de sysctl y, por lo tanto, debe ser tan generalizada como lo indica el título de la pregunta.

    
respondido por el LangLangC 06.04.2018 - 19:29
0

Encontré otra forma de hacer esto al final.

El truco consistió en establecer un valor de tiempo de espera predeterminado más largo en /etc/nsmb.conf así:

[default]
max_resp_timeout=1000     # default is 30 which way too low!

Gracias a todos por toda su ayuda :-)

    
respondido por el Jack Westmore 21.04.2018 - 10:57

Lea otras preguntas en las etiquetas