Optimizaciones Personalizadas en base a mi equipo.

Spanish forum

Moderator: sivare

inukaze
Posts: 105
Joined: 24. Nov 2024, 18:42

Re: Optimizaciones Personalizadas en base a mi equipo.

Post by inukaze »

********* Configuracion de Video para mi Equipo *******

# Se me olvido agregarlo justo después de la instalación de los controladores privativos. Ademas este foro tiene una regla estúpidamente absurda de que no puedes editar tus propias publicaciones pasado 15 minutos, el limite deberían ser 24 horas. como el foro de LinuxQuestion. Bueno al rato si esta vaina me deja borro el tema completo y lo republico en como debio quedar XD. Lo peor del caso es que la porqueria esta no me deja ni recuperar lo que habia escrito y tengo que volver a escribirlo todo ¬¬

Code: Select all

sudo su

Code: Select all

cat << 'EOF' > /etc/X11/xorg.conf
# Configuración de Inukaze para tarjetas Nvidia
# En Debian, colocar en /etc/X11/xorg.conf 
# En Manjaro mwhd, colocar en /etc/X11/mhwd.d/nvidia.conf

Section "ServerLayout"
	Identifier		"Default Layout"
	Screen		 0	"Screen0"		 0	 0
	Option			"Xinerama"		"0"
EndSection

Section "Module"
	Load		"bitmap"	# Permite usar tipografías de mapas de bits dentro del servidor gráfico
#	Load		"synaptics"	# Permite utilizar dispositivos táctiles como TouchPad o pantallas, etc.
#	Load		"vbe"		# Se usa para un modo VESA muy básico
#	Load		"int10"		# Se usa para un modo VESA muy básico
#	Load		"type1"		# Soporte de fuentes Type1
#	Load		"freetype"	# Soporte de fuentes FreeType
# Ya es interno:
#	Load		"glx"		# Carga automáticamente aunque no se especifique.
#	Load		"ddc"		# Sondeo DDC del monitor
#	Load		"dbe"		# Extensión de doble búfer
#	Load		"dri2"		# Infraestructura de renderizado directo v2
#	Load		"extmod"	# Extensiones comunes
#	Load		"record"	# Extensión para grabar/probar eventos de X
EndSection

Section "ServerFlags"
	Option	"DontZap"	"False" # Permite usar Ctrl+Alt+Backspace para cerrar las X
	Option	"Xinerama"	"0"
EndSection

Section "Monitor"
	Identifier		"Monitor0"
	VendorName		"VIT (Toshiba Matsushita Display Technology Co., Ltd LCD-MONITOR)"
	ModelName		"190LM00006"
	HorizSync		30.0 - 83.0
	VertRefresh		55.0 - 75.0
	Option			"DPMS"			"TRUE"

	# --- RESOLUCIONES 16:10 (Nativas / Proporcionales) ---
		# 1400x900: La que mejor se ve según tus pruebas
			Modeline "1400x900"  103.50  1400 1480 1624 1848  900 903 913 934 -hsync +vsync
    
		# 1280x800: La viste bien
			Modeline "1280x800"   83.50  1280 1352 1480 1680  800 803 809 831 -hsync +vsync

    # --- RESOLUCIONES 4:3 (Tus favoritas y Emergencia) ---
		# 1152x864: Tu mínima deseada 4:3 (a 75Hz y 60Hz)
			Modeline "1152x864"  104.00  1152 1224 1344 1536  864 867 871 905 -hsync +vsync

		# 1024x768: Emergencia / Clásica
			Modeline "1024x768"   82.00  1024 1088 1192 1360  768 771 775 805 -hsync +vsync
EndSection

Section "Device"
	Identifier		"Device0"
	Driver			"nvidia"
	VendorName		"NVIDIA Corporation"
	BoardName		"GeForce GT 620"

	# A partir de la versión de los controladores 304.88, el sistema se vuelve muy lento
	# Aquí está el arreglo de lentitud:

	# Forzar el nivel de rendimiento máximo para evitar tirones
	Option			"RegistryDwords"					"PowerMizerEnable=0x1" 
	Option			"RegistryDwords"					"PerfLevelSrc=0x3322"
	Option			"RegistryDwords"					"PowerMizerDefaultAC=0x1"

	# Forzar a que la GPU escale la imagen 
	# Para evitar las distorsiones en la relación de aspecto
#	Option			"ConnectToDevice"					"VGA-0"				# Ignorada por el controlador (determinación automática)
#	Option			"FlatPanelProperties"				"Scaling = Aspect-scaled"	# Solo para conexiones digitales (DVI/HDMI)
EndSection

Section "Screen"
	Identifier		"Screen0"
	Device			"Device0"
	Monitor			"Monitor0"
	DefaultDepth	 24

	# --- Configuración de Resoluciones ---
	# Prioridad: 1400x900 (mejor visualización), seguida de 16:10 y 4:3 de emergencia.
	Option			"AllowIndirectGLXProtocol"	"Off"

	# Prueba de la resolución 1400x900 y esas propiedades con ForceFullCompositionPipeline
	Option			"metamodes"	"VGA-0: 1400x900 +0+0 {ForceFullCompositionPipeline=On, ViewPortOut=1400x900+0+0, ResamplingMethod=Bilinear}, 1280x800 +0+0, 1152x864 +0+0, 1024x768 +0+0; 800x600 +0+0, 640x480 +0+0"
	Option			"TwinViewXineramaInfoOrder"	"VGA-0"

	# --- Rendimiento y Calidad Visual ---
	Option			"AllowSHMPixmaps"					"True"
	Option			"AllowUnofficialGLXProtocol"		"True"
	Option			"DamageEvents"						"True"
#	Option			"ForceCompositionPipeline"			"On"		# Elimina el lagrimeo (Tearing) en los videos
#	Option			"ForceFullCompositionPipeline"		"On"		# Elimina el lagrimeo (Tearing) en los videos
	Option			"RenderAccel"						"True"
	Option			"TripleBuffer"						"False"
#	Option			"VideoRAM"							"2097152"	# Especifica la memoria de video, pero se determina automáticamente

	# --- Opciones Especiales --- (Mantenidas por compatibilidad con GPUs antiguas)
#	Option			"CIOverlay"							"True"
#	Option			"ConstrainCursor"					"True"
#	Option			"Interactive"						"True"
#	Option			"MultisampleCompatibility"			"True"
#	Option			"OverlayDefaultVisual"				"True"
#	Option			"TransparentIndex"					"25"
	Option			"UseHotplugEvents"					"True"
#	Option			"Overlay"							"True"	# Puede causar conflictos con compositores modernos

	# --- Opciones Legadas / Compatibilidad ---
	Option			"AddARGBGLXVisuals"					"True"
	Option			"AllowGLXWithComposite"				"True"
	Option			"backingstore"						"True"
	Option			"DPMS"								"True"
	Option			"HWCursor"						"True"
	Option			"NoPowerConnectorCheck"				"True"
#	Option			"UseEdidFreqs"						"True"
	Option			"DPI"								"96 x 96"

# Cuando se actualizan los controladores privativos:
	Option			"BaseMosaic"						"Off"
	Option			"Dac8Bit"							"True"
	Option			"GLShaderDiskCache"					"True"
	Option			"MultiGPU"							"Off"
	Option			"nvidiaXineramaInfo"				"True"
	Option			"SLI"								"Off"
	Option			"Stereo"							"0"
	Option			"UBB"								"True"

# Nvidia 390.157 > Opciones no utilizadas o legadas
#	Option			"AddARGBVisuals"					"True"
#	Option			"CursorShadow"						"True"
#	Option			"DRI"								"True"
#	Option			"NoLogo"							"True"
#	Option			"NvAGP"								"3"
#	Option			"TwinView"							"0"
#	Option			"XAANoOffscreenPixmaps"				"True"
#	Option			"InitializeWindowBackingPixmaps"	"True"
#	Option			"UseEvents"							"True"

	SubSection		"Display"
		Depth		 24
		Modes		"1400x900" "1280x800" "1152x720" "1152x864" "1024x768" "800x600"
	EndSubSection
EndSection

Section "Extensions"
	Option			"Composite"	"Enable"
#	Option			"DRI"		"Enable"	# Opción no reconocida en nvidia 390.157
	Option			"RandR"		"Enable"
	Option			"RENDER"	"Enable"
EndSection

Section "DRI"
	Mode	0660
#	Group	"vglusers"	# Solo para VirtualGL (incompatible con Nvidia oficial)
EndSection
EOF

Lo siguiente es completamente opcional : como yo uso la tty6 para usar guiones personalizados para lanzar videojuegos de antaño de windows usando wine 9.0.1, pero como eso suele implicar el reescalado forzado a 640x480 y/o dejar la pantalla completamente en negro, prefiero lanzar eso en la tty6 pero para que esto funcione debo hacer los siguientes cambios en mi sistema

Code: Select all

cp /etc/inittab /etc/inittab.original

cat << 'EOF' > /etc/inittab
#
# inittab	This file describes how the INIT process should set up
#		the system in a certain run-level.
#
# Version:	@(#)inittab		2.04	17/05/93	MvS
#                                       2.10    02/10/95        PV
#                                       3.00    02/06/1999      PV
#                                       4.00    04/10/2002      PV
#
# Author:	Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
# Modified by:	Patrick J. Volkerding, <volkerdi@slackware.com>
# Modified by:  George Vlahavas <vlahavas~at~gmail~dot~com>
#

# These are the default runlevels in Slackware:
#   0 = halt
#   1 = single user mode
#   2 = unused (but configured the same as runlevel 3)
#   3 = multiuser mode (default Slackware runlevel)
#   4 = X11/Wayland with SDDM/KDM/GDM/XDM (session managers)
#   5 = unused (but configured the same as runlevel 3)
#   6 = reboot

# Default runlevel. (Do not set to 0 or 6)
#id:1:initdefault:
#id:3:initdefault:
id:4:initdefault:

# System initialization (runs when system boots).
si:S:sysinit:/etc/rc.d/rc.S

# Script to run when going single user (runlevel 1).
su:1S:wait:/etc/rc.d/rc.K

# Script to run when going multi user.
rc:2345:wait:/etc/rc.d/rc.M

# What to do at the "Three Finger Salute".
ca::ctrlaltdel:/sbin/shutdown -t5 -r now

# Runlevel 0 halts the system.
l0:0:wait:/etc/rc.d/rc.0

# Runlevel 6 reboots the system.
l6:6:wait:/etc/rc.d/rc.6

# What to do when power fails.
pf::powerfail:/sbin/genpowerfail start

# If power is back, cancel the running shutdown.
pg::powerokwait:/sbin/genpowerfail stop

# These are the standard console login getties in multiuser mode:
c1:12345:respawn:/sbin/agetty --noclear 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
#c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c5:12345:respawn:/sbin/agetty --autologin inukaze --noclear tty6 38400 linux
#c6:12345:respawn:/sbin/agetty 38400 tty6 linux
c6:12345:respawn:/sbin/agetty --autologin inukaze --noclear tty6 38400 linux

# Local serial lines:
#s1:12345:respawn:/sbin/agetty -L ttyS0 9600 vt100
#s2:12345:respawn:/sbin/agetty -L ttyS1 9600 vt100

# Dialup lines:
#d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100
#d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1 vt100

# Runlevel 4 also starts /etc/rc.d/rc.4 to run a display manager for X.
x1:4:respawn:/etc/rc.d/rc.4

# End of /etc/inittab
EOF
Luego creo el archivo /etc/X11/Xwrapper.config

Code: Select all

cat << 'EOF' > /etc/X11/Xwrapper.config
allowed_users=anybody
needs_root_rights=yes
EOF
inukaze
Posts: 105
Joined: 24. Nov 2024, 18:42

Re: Optimizaciones Personalizadas en base a mi equipo.

Post by inukaze »

****** Wine 9.0.1 *******

Prefijos de Wine de 32 Bits y 64 Bits separados

# Paso 01 - Eliminar el prefijo predeterminado (No uses esto si tienes cosas alli)

Code: Select all

rm -rf "$HOME/.wine"
# Paso 02 - Crear nuevas carpetas de Prefijo :

Code: Select all

mkdir -p "$HOME/.wine32Bits"
mkdir -p "$HOME/.wine64Bits"
# Paso 03 - Bloquear el uso de "$HOME/.wine"

Code: Select all

touch "$HOME/.wine"
chmod 000 "$HOME/.wine"
sudo chattr +i "$HOME/.wine"
=========================================================================================================================
# Paso Opcional -> En mi caso Compile Wine-9.0.1 usando el Slackbuild. Ya que mi PC es Anterior al 2010
# Y modificando el archivo de compilacion para crear un wine optimizado para mi hardware.
# Esto requiere tener instalada y activa la compatibilidad con 32 Bits -> multilib / compat32

# Puedo copiar desde el siguiente cat hasta el EOF despues de la linea fi
# y pegar directamente en una terminal para crear el guion rapidamente.

Code: Select all

cat << 'EOF' | tee ~/instalar_wine_optimizado.sh
#!/bin/bash
# Bitácora de compilación Wine 9.0.1 para Athlon 64 X2
# Fecha: 25-01-2026

# 1. Preparar directorio
cd /tmp/wine

# 2. Modificar el SlackBuild automáticamente con sed
# - Cambia la versión a 9.0.1
# - Inserta las banderas -march=native y -mtune=native en la sección x86_64
sed -i 's/VERSION=${VERSION:-11.0}/VERSION=${VERSION:-9.0.1}/' wine.SlackBuild
sed -i '/x86_64)/,/;;/ s/SLKCFLAGS="-O2"/SLKCFLAGS="-O2 -march=native -mtune=native -fPIC -pipe"/' wine.SlackBuild

# 3. Descargar el código fuente si no existe
if [ ! -f "wine-9.0.1.tar.xz" ]; then
    wget https://dl.winehq.org/wine/source/9.0/wine-9.0.1.tar.xz
fi

# 4. Lanzar la compilación (Multilib activado)
# Se usa nice 0 para mantener la usabilidad del sistema
echo "Iniciando compilación... Esto tardará varias horas."
MULTILIB=yes ./wine.SlackBuild

# 5. Instalación (Requiere root)
if [ -f "/tmp/wine-9.0.1-x86_64-1_SBo.tgz" ]; then
    echo "Compilación exitosa. Para instalar, ejecuta: su -c 'upgradepkg --install-new /tmp/wine-9.0.1-x86_64-1_SBo.tgz'"
else
    echo "Error: El paquete no se generó."
fi
EOF

chmod +x ~/instalar_wine_optimizado.sh
sudo ~/instalar_wine_optimizado.sh
# Luego de que se compile e instale el wine optimizado para mi sistema. Renombro el archivo /usr/bin/wine como /usr/bin/wine32

Code: Select all

mv /usr/bin/wine /usr/bin/wine32
# Finalmente creo un guion personalizado:

Code: Select all

cat << 'EOF' | sudo tee /usr/bin/wine
#!/usr/bin/env bash
#===============================================================================================#
#												#
# Guión		:	wine-auto								#
#												#
# Descripcion	:	Reemplazo Global de Sistema (/usr/bin/wine)				#
#												#
# Objetivo	:	Al usar este guion. debe detectar si el programa que se quiere		#
#			Ejecutar, es de 32 Bits o 64 Bits en base a eso.			#
#												#
#			En caso de que no exista crear un prefijo (sub-carpeta)			#
#			En base a la arquitectura respectivamente :				#
#			"~/.wine32Bits"	-> Para los programas de 32 Bits			#
#			"~/.wine64Bits"	-> Para los programas de 64 Bits			#
#												#
# Recomendacion	:	Si no tienes nada importante dentro de "~/.wine"			#
#			Borra la carpeta completa y luego utiliza los comandos			#
#			para impedir la creacion de la carpeta :				#
#												#
#			touch "$HOME/.wine"		# Crea un archivo vacio			#
#			chmod 000 "$HOME/.wine"		# Quitarle cualquier permiso		#
#			sudo chattr +i "$HOME/.wine"	# Asignar inmutabilidad			#
#												#
#			De esta manera ningun usuario ni programa podra hacerle ningun		#
#			cambio ni por error a "$HOME/.wine"					#
#												#
#===============================================================================================#

# 0. Control de seguridad para el usuario ROOT
FORZAR_EJECUCION=false
for arg in "$@"; do
    if [ "$arg" == "--no-me-importan-las-consecuencias" ]; then
        FORZAR_EJECUCION=true
        break
    fi
done

if [ "$EUID" -eq 0 ] && [ -z "$SUDO_USER" ] && [ "$FORZAR_EJECUCION" = false ]; then
    echo "---------------------------------------------------------------------"
    echo "ERROR DE SEGURIDAD:"
    echo "Se detiene la ejecución de este guion. Es muy peligroso ejecutar"
    echo "aplicaciones mediante Wine con permisos de superusuario real."
    echo ""
    echo "Si aun así quieres intentarlo, usa el parámetro:"
    echo "--no-me-importan-las-consecuencias"
    echo "---------------------------------------------------------------------"
    exit 1
fi

# 1. Identificación de Identidad
USUARIO_REAL=${SUDO_USER:-$USER}
CASA_REAL=$(getent passwd "$USUARIO_REAL" | cut -d: -f6)

# 2. Optimizaciones de Sistema (Solo si se detecta elevación)
if [ "$EUID" -eq 0 ]; then
    GOBERNADOR_ORIGINAL=$(cpufreq-info -p | awk '{print $3}' 2>/dev/null)
    /usr/bin/sync
    echo 3 > /proc/sys/vm/drop_caches
    /usr/bin/cpufreq-set -g ondemand 2>/dev/null
fi

# 3. Variables de Entorno de Audio y Depuración
export WINEDEBUG=-all
export WINED3D_AUDIO=alsa
export WINE_AUDIO=alsa
export ALSA_PCM_CARD=0
export ALSA_CTL_CARD=0

# 4. Detección de Arquitectura y Selección de Binario
BINARIO_WINE="/usr/bin/wine32" # Por defecto

if [ -f "$1" ]; then
    INFO_ARQ=$(file -b "$(readlink -f "$1")")
    if [[ "$INFO_ARQ" == *"PE32+"* ]]; then
        echo "Arquitectura: 64 Bits detectada."
        export WINEPREFIX="$CASA_REAL/.wine64Bits"
        unset WINEARCH
        BINARIO_WINE="/usr/bin/wine64"
    else
        echo "Arquitectura: 32 Bits detectada."
        export WINEPREFIX="$CASA_REAL/.wine32Bits"
        export WINEARCH=win32
        BINARIO_WINE="/usr/bin/wine32"
    fi
else
    # Por defecto para herramientas internas (winecfg, etc)
    export WINEPREFIX="$CASA_REAL/.wine32Bits"
    export WINEARCH=win32
fi

# Asegurar existencia del prefijo con permisos del usuario real
if [ ! -d "$WINEPREFIX" ]; then
    mkdir -p "$WINEPREFIX"
    chown "$USUARIO_REAL":"$(id -gn "$USUARIO_REAL")" "$WINEPREFIX"
fi

# 5. Ejecución con gestión de privilegios
# Limpiar el argumento de fuerza para no pasárselo a la aplicación Windows
PARAMETROS_LIMPIOS=()
for arg in "$@"; do
    [[ "$arg" != "--no-me-importan-las-consecuencias" ]] && PARAMETROS_LIMPIOS+=("$arg")
done

if [ "$EUID" -eq 0 ]; then
    # Lanzamiento con prioridad alta bajando al usuario real
    sudo -u "$USUARIO_REAL" env \
        HOME="$CASA_REAL" \
        WINEPREFIX="$WINEPREFIX" \
        WINEDEBUG=-all \
        WINED3D_AUDIO=alsa \
        WINE_AUDIO=alsa \
        ALSA_PCM_CARD=0 \
        ALSA_CTL_CARD=0 \
        WINEDLLOVERRIDES="dsound=b,n;xaudio2_7=b,n" \
        /usr/bin/nice -n -15 \
        taskset -c 0,1 \
        "$BINARIO_WINE" "${PARAMETROS_LIMPIOS[@]}"
else
    # Ejecución normal de usuario
    env \
        HOME="$CASA_REAL" \
        WINEPREFIX="$WINEPREFIX" \
        WINEDEBUG=-all \
        WINED3D_AUDIO=alsa \
        WINE_AUDIO=alsa \
        ALSA_PCM_CARD=0 \
        ALSA_CTL_CARD=0 \
        WINEDLLOVERRIDES="dsound=b,n;xaudio2_7=b,n" \
        taskset -c 0,1 \
        "$BINARIO_WINE" "${PARAMETROS_LIMPIOS[@]}"
fi

# 6. Restauración y Limpieza
if [ "$EUID" -eq 0 ] && [ -n "$GOBERNADOR_ORIGINAL" ]; then
    /usr/bin/cpufreq-set -g "$GOBERNADOR_ORIGINAL" 2>/dev/null
fi

exit 0
EOF

# Asignar permisos de ejecución
sudo chmod +x /usr/bin/wine
# Creo un archivo para optimizar el uso de mi tarjeta de video :

Code: Select all

# Definir las optimizaciones de registro
cat << 'EOF' > /tmp/optimizar_wine.reg
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Wine\Direct3D]
"DirectDrawRenderer"="opengl"
"MaxShaderModelVS"=hex(3):35,00,00,00
"MaxShaderModelPS"=hex(3):35,00,00,00
"VideoMemorySize"="1024"
"OffscreenRenderingMode"="fbo"
"StrictDrawOrdering"="disabled"
"CSMT"="enabled"

[HKEY_CURRENT_USER\Software\Wine\X11 Driver]
"UseTakeFocus"="N"
"UseXRandR"="N"
"SetGammaRamp"="N"
EOF
# Le indico al sistema que pueble las carpetas para los prefijo por arquitectura.
# Inicializar prefijo de 32 Bits y aplicar registro

Code: Select all

echo "Inicializando prefijo de 32 Bits..."
WINEARCH=win32 wine wineboot --init
wine regedit /tmp/optimizar_wine.reg
# Inicializar prefijo de 64 Bits y aplicar registro

Code: Select all

echo "Inicializando prefijo de 64 Bits..."
unset WINEARCH
wine wineboot --init
wine64 regedit /tmp/optimizar_wine.reg

# Probar por ejemplo la arquitectura de los bloc de notas que trae wine :

Code: Select all

file /usr/lib64/wine/i386-windows/notepad.exe
/usr/lib64/wine/i386-windows/notepad.exe: PE32 executable (GUI) Intel 80386, for MS Windows
La salida devuelve/muestra « PE32 executable (GUI) Intel 80386, for MS Windows » eso quiere decir que es un programa de 32 Bits nativos para Microsoft Windows.

Code: Select all

file /usr/lib64/wine/x86_64-windows/notepad.exe
/usr/lib64/wine/x86_64-windows/notepad.exe: PE32+ executable (GUI) x86-64, for MS Windows
eso quiere decir que es un programa de 64 Bits nativo para Microsoft windows.

Code: Select all

wine /usr/lib64/wine/i386-windows/notepad.exe
Arquitectura: 32 Bits detectada.

Code: Select all

wine /usr/lib64/wine/x86_64-windows/notepad.exe
Arquitectura: 64 Bits detectada.
Listo, ya mi guion personalizado para que Wine detecte si es un programa de 32 Bits o de 64 Bits funciona como espero.
inukaze
Posts: 105
Joined: 24. Nov 2024, 18:42

Re: Optimizaciones Personalizadas en base a mi equipo.

Post by inukaze »

Code: Select all

sudo su
#Renombrar los programas que necesito que funcionen bajo demanda, es decir solo active sus modulos y/o cosas cuando se vaya a ejecutar el programa y los desactive cuando se cierra el programa.

Code: Select all

mv /usr/bin/salix-update-manager /usr/bin/salix-update-manager.real
mv /usr/bin/virtualbox /usr/bin/virtualbox.real
mv /usr/bin/teamviewer /usr/bin/teamviewer.real
#Creo un directorio :

Code: Select all

mkdir -p /usr/local/bin/rc.d
# Copio los guiones originales :

Code: Select all

sudo cp /etc/rc.d/rc.vboxdrv /usr/local/bin/rc.d/
sudo cp /etc/rc.d/rc.libvirt /usr/local/bin/rc.d/
sudo cp /etc/rc.d/rc.teamviewerd /usr/local/bin/rc.d/

chmod -x /etc/rc.d/rc.vboxdrv
chmod -x /etc/rc.d/rc.libvirt
chmod -x /etc/rc.d/rc.teamviewerd

# Le doy permisos a los guiones clonados en la ruta personalizada :

Code: Select all

chmod +x /usr/local/bin/rc.d/rc.vboxdrv
chmod +x /usr/local/bin/rc.d/rc.libvirt
chmod +x /usr/local/bin/rc.d/rc.teamviewerd
# Guiones Personalizados para funcionar bajo demanda :

# Salix-Update-Manager :

Code: Select all

cat << 'EOF' > /usr/bin/salix-update-manager
#!/usr/bin/env bash

# NOTA :	Este es un guion para llamar a otro personalizado
#		Es por si alguna actualizacion reemplaza este archivo
#		se me haga muy facil volver a escribirlo.

# Verificar si existe el guion personalizado
if [ -x /usr/local/bin/salix-update-manager.geb ]; then
    /usr/local/bin/salix-update-manager.geb
fi

exit 0
EOF

chmod +x /usr/bin/salix-update-manager

Code: Select all

cat << 'EOF' > /usr/local/bin/salix-update-manager.geb
#!/usr/bin/env bash
# Guion para evitar colisiones del gestor de actualizaciones y verificar descargas

# Establecer la pantalla para que funcione correctamente
export DISPLAY=:0.0

# 1. Verificar si el binario real ya se está ejecutando
if pgrep -f "/usr/bin/salix-update-manager.real" > /dev/null; then
    echo "El gestor ya está en ejecución. Abortando."
    exit 1
fi

# 2. Lista de procesos que podrían bloquear la base de datos de paquetes
PROCESOS_BLOQUEO=("slapt-get" "slackpkg" "slpkg" "sbopkg")

for proceso in "${PROCESOS_BLOQUEO[@]}"; do
    if pgrep "$proceso" > /dev/null; then
        echo "El sistema está ocupado por $proceso. Cancelando."
        exit 1
    fi
done

# 3. Sincronizar la base de datos de paquetes de forma silenciosa
# Esto evita que la interfaz gráfica se quede "diske buscando" horas
sudo /usr/sbin/slapt-get --update > /dev/null 2>&1

# 4. Comprobar si hay paquetes realmente nuevos para instalar
# Usamos la simulación para contar las líneas que indican nuevas versiones
ACTUALIZACIONES=$(/usr/sbin/slapt-get --upgrade --simulate | grep -i "instalar" | wc -l)

if [ "$ACTUALIZACIONES" -gt 0 ]; then
    echo "Se encontraron $ACTUALIZACIONES paquetes. Iniciando..."
    /usr/bin/salix-update-manager.real
else
    echo "No hay actualizaciones disponibles. Cerrando."
fi

exit 0


EOF

chmod +x /usr/local/bin/salix-update-manager.geb

# VirtualBox

Code: Select all

cp /etc/rc.d/rc.vboxdrv /usr/local/bin/rc.d/

Code: Select all

cat << 'EOF' > /usr/bin/virtualbox
#!/usr/bin/env bash
# Llamada al guion personalizado .geb
if [ -x /usr/local/bin/virtualbox.geb ]; then
    /usr/local/bin/virtualbox.geb
fi
exit 0
EOF

Code: Select all

cat << 'EOF' > /usr/local/bin/virtualbox.geb 
#!/usr/bin/env bash
# Guion personalizado para gestionar VirtualBox bajo demanda

# 1. Cargar controladores del núcleo
sudo /usr/local/bin/rc.d/rc.vboxdrv start

# 2. Ejecutar la interfaz gráfica real
/usr/lib64/virtualbox/VirtualBox

# 3. Descargar controladores al cerrar para liberar recursos
sudo /usr/local/bin/rc.d/rc.vboxdrv stop

exit 0


EOF

chmod +x /usr/local/bin/virtualbox.geb /usr/bin/virtualbox
# TeamViewer :

Code: Select all

cat << 'EOF' > /usr/local/bin/teamviewer.geb
#!/usr/bin/env bash
# Guion para gestionar TeamViewer bajo demanda con limpieza de procesos

# 1. Verificar si la interfaz gráfica real ya está en ejecución
if pgrep -f "/usr/bin/teamviewer.real" > /dev/null; then
    echo "TeamViewer ya está abierto. Trayendo al frente..."
    exit 0
fi

# 2. Iniciar el demonio de fondo usando tu copia en rc.d
# Se usa sudo porque requiere privilegios de sistema
sudo /usr/local/bin/rc.d/rc.teamviewerd start

# 3. Pequeña espera para asegurar que el socket del demonio esté listo
sleep 1

# 4. Ejecutar el programa real
# El guion se detendrá aquí hasta que cierres la ventana de TeamViewer
/usr/bin/teamviewer.real

# 5. Al cerrar la interfaz, detener el demonio para liberar recursos
echo "Cerrando servicios de TeamViewer..."
sudo /usr/local/bin/rc.d/rc.teamviewerd stop

# 6. Verificación final: Matar cualquier proceso residual si quedara colgado
if pgrep -x "teamviewerd" > /dev/null; then
    sudo killall -9 teamviewerd > /dev/null 2>&1
fi

exit 0
EOF
chmod +x /usr/local/bin/teamviewer.geb

cat << 'EOF' > /usr/bin/teamviewer
#!/usr/bin/env bash
# Llamada al guion personalizado .geb
if [ -x /usr/local/bin/teamviewer.geb ]; then
    /usr/local/bin/teamviewer.geb
fi
exit 0
EOF

sed -i 's|^Exec=.*|Exec=/usr/bin/teamviewer|' /usr/share/applications/TeamViewer.desktop

chmod +x /usr/local/bin/teamviewer.geb /usr/bin/teamviewer



# Virt-Manager / QEmu / LibVirt :

Code: Select all

cat << 'EOF' > /usr/local/bin/virt-manager.geb
#!/usr/bin/env bash
# Guion personalizado para servicios de virtualización KVM/Libvirt

# 1. Iniciar demonios y redes virtuales
sudo /etc/rc.d/rc.libvirt start

# 2. Ejecutar el administrador de máquinas virtuales
/usr/bin/virt-manager.real

# 3. Limpiar y detener servicios al cerrar
sudo /etc/rc.d/rc.libvirt stop

exit 0
EOF

cat << 'EOF' > /usr/bin/virt-manager
#!/usr/bin/env bash
# Llamada al guion personalizado .geb
if [ -x /usr/local/bin/virt-manager.geb ]; then
    /usr/local/bin/virt-manager.geb
fi
exit 0
EOF

chmod +x /usr/local/bin/virt-manager.geb /usr/bin/virt-manager
inukaze
Posts: 105
Joined: 24. Nov 2024, 18:42

Re: Optimizaciones Personalizadas en base a mi equipo.

Post by inukaze »

******* /etc/fstab *******

Code: Select all

sudo su

Code: Select all

cp /etc/fstab /etc/fstab.original

Code: Select all

cat << 'EOF' > /etc/fstab
# /etc/fstab: información estática del sistema de archivos.
#
# Use 'blkid' para imprimir el identificador único universal de un
# dispositivo; esto se puede usar con UUID= como una forma más robusta de nombrar dispositivos
# que funciona incluso si se agregan y eliminan discos. Consulte fstab(5).
#
#< Sistema de Archivos >			< Punto de Montaje >		< Tipo	>	< Opciones >			   	 				 	   < Volcado >	< Pase >	
#UUID=89E6-150F					/boot/efi			  vfat		umask=0077										0	    1	
UUID=ed0886ec-93be-47dc-88c7-385d9b93fd89	/				  ext3		defaults,noatime,commit=60,errors=remount-ro						2	    2	
UUID=bad7fbb0-4d90-4489-a910-2959c13e0a27	/boot				  ext2		defaults,noatime									2	    2	
UUID=c698fec1-1da5-4764-b625-0c3c9e2e3ecf	swap				  swap		sw,pri=5										0	    0	
UUID=bef6c71c-ff3f-461e-895c-49be727933aa	/home				  ext3		defaults,noatime,commit=60								2	    2	
#UUID=a7966567-0412-4838-858c-3781279e03c2	/media/DDM1			  ext3		rw,defaults										1	    2	
#UUID=11c48836-a4ef-4342-98c9-bfbac42cc34d	/media/DDM2			  ext3		rw,defaults										1	    2	
#UUID=a5b4f652-a4a7-425c-beea-ae96d29b8fcb	/media/DDM3-4			  ext3		rw,defaults										1	    2	
#UUID=9f78f67a-c74d-4ca3-875d-390dc0541a1e	swap				  swap		defaults										0	    0	
UUID=3FE3709606BDAAF3				/media/WinXP			  ntfs		defaults,nls=utf8,errors=recover,umask=000						0	    0	
UUID=b271e981-7f10-42a2-965f-c3e7fdf04db7	/media/Android-x86		  ext3		rw,defaults										1	    2	
UUID=5F8719880FD64358				/media/Compartido		  ntfs		defaults,nls=utf8,errors=recover,umask=000						0	    0	
#UUID=E200D2E900D2C427				/media/Win10/Reservado		  ntfs		defaults,nls=utf8,errors=recover,umask=000						0	    0	
#UUID=D256688056686767				/media/Win10/Win10		  ntfs		defaults,nls=utf8,errors=recover,umask=000						0	    0	
#UUID=6AE60936E60903D3				/media/Win10/Recuperar		  ntfs		defaults,nls=utf8,errors=recover,umask=000						0	    0	
#/swapfile					none				  swap		sw											0	    0	
proc						/proc				  proc		defaults										0	    0	
sysfs						/sys				  sysfs		defaults										0	    0	
tmpfs						/dev/shm			  tmpfs		defaults										0	    0	


#Carpeta Compartida Remota, mediante Protocolo CIFS :
#EJEMPLO#//192.168.0.5/carpeta		/media/cifs/por-usuario/miusuario/carpeta	cifs username=miusuario,password=miclave,iocharset=utf8,file_mode=0777,dir_mode=0777		0	    0	
//192.168.100.36/SSD-Gaby /media/cifs/SSD-Gaby cifs credentials=/etc/samba/credencial,vers=default,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777					0	    0	
EOF
Post Reply