%2014.2%20%2B%20chroot%20%2B%20xfce4-session%20%2B%20%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA%20%2B%20(NV-)GLX%3F.png)
Slackware 14.2のインストールを簡単にマウントするために別のパーティションにインストールしました(32ビット100%プライマリパーティション)。
xfce4-sessionをrootで始めることができます(しかしこれは必要ではありません):
次の問題について役立つ人がいるかどうかを知りたいです。
1 - オーディオをホストにリダイレクトします。
2 - Nvidiaで3D、DRIを使用できますか? Gentooフォーラムで何かを見ましたが、理解できませんでした)
3 - スクリプトからいくつかのコマンドおよび/または出力を非表示にします。次の行は次のとおりです。
local being added to access control list
export DISPLAY=localhost:1 2>/dev/null
exit
Xepyrウィンドウを閉じると、次のようになります。
-su: línea 3: $'\E[01mHP': no se encontró la orden
私のスクリプト「slack32-chroot」の内容:
#!/usr/bin/env bash
echo '
Autor ----------------> Inukaze ( Venezuela )
Sitio ----------------> https://goo.gl/ij6WqW
Correo-E -------------> [email protected]
Licencia -------------> GPL 2
'
#Establecer mediante la variable "$OBJETIVO"
#La particion con una distribucion a la cual se accedera mediante chroot
export OBJETIVO="/media/Slack32"
#Prevenir que se autoejecuten las funciones que se definiran despues
unset montar
unset desmontar
unset MensajeBase
#Establecer y definir funciones :
function MensajeBase()
{
echo -e "\nLa forma correcta de utilizar este guion es :\n$0 «montar» , «montar_xephyr» ó «desmontar», Por ejemplo : \n"
echo -e "$0 montar"
echo -e "$0 montar_xephyr"
echo -e "$0 desmontar\n"
}
function montar(){
#Preparar acceso para programas de entorno grafico :
export DISPLAY=:0.0 2>/dev/null
xhost + local 2>/dev/null
#Montar todo de una vez para una distro de 32 Bits (En este caso Slackware32 14.2) :
mount --rbind /proc "$OBJETIVO/proc" ; \
mount --make-rslave "$OBJETIVO/proc" ; \
mount --rbind /sys "$OBJETIVO/sys" ; \
mount --make-rslave "$OBJETIVO/sys" ; \
mount --rbind /dev "$OBJETIVO/dev" ; \
mount --make-rslave "$OBJETIVO/dev" ; \
mount --rbind /run "$OBJETIVO/run" ; \
mount --make-rslave "$OBJETIVO/run" ; \
mount --rbind /tmp "$OBJETIVO/tmp" ; \
mount --make-rslave "$OBJETIVO/tmp" ; \
mount --bind /etc/fstab "$OBJETIVO/etc/fstab" ; \
mount --bind /etc/hostname "$OBJETIVO/etc/hostname" ; \
mount --bind /etc/hosts "$OBJETIVO/etc/hosts" ; \
mount --bind /etc/resolv.conf "$OBJETIVO/etc/resolv.conf" ; \
cat << EOF | linux32 chroot "$OBJETIVO"
export DISPLAY=localhost:1 2>/dev/null
EOF
linux32 chroot "$OBJETIVO" /bin/bash -l ; \
umount -l "$OBJETIVO" ; \
mount -a 2>/dev/null
}
function xephyr(){
#Copiar archivo de autorizacion X.Org :
rm -f "$OBJETIVO/home/inukaze/.Xauthority"
rm -f "$OBJETIVO/root/.Xauthority"
cp -f "/home/inukaze/.Xauthority" "$OBJETIVO/root/.Xauthority"
cp -f "/home/inukaze/.Xauthority" "$OBJETIVO/home/inukaze/.Xauthority"
chown inukaze:users "$OBJETIVO/home/inukaze/.Xauthority"
if [ ! -f "$OBJETIVO/etc/X11/Xwrapper.config" ] ; then
# Prevenir el error « /usr/libexec/Xorg.wrap: Only console users are allowed to run the X server »
echo '# Xwrapper.config (Debian X Window System server wrapper configuration file)
#
# This file was generated by the post-installation script of the x11-common
# package using values from the debconf database.
#
# See the Xwrapper.config(5) manual page for more information.
#
# This file is automatically updated on upgrades of the x11-common package
# *only* if it has not been modified since the last upgrade of that package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command as root:
# dpkg-reconfigure x11-common
#allowed_users=console
allowed_users=anybody' | tee "$OBJETIVO/etc/X11/Xwrapper.config"
fi
#Preparar acceso para programas de entorno grafico :
export DISPLAY=:0.0 2>/dev/null
xhost + local 2>/dev/null
#Montar todo de una vez para una distro de 32 Bits (En este caso Slackware32 14.2) :
mount --rbind /proc "$OBJETIVO/proc" ; \
mount --make-rslave "$OBJETIVO/proc" ; \
mount --rbind /sys "$OBJETIVO/sys" ; \
mount --make-rslave "$OBJETIVO/sys" ; \
mount --rbind /dev "$OBJETIVO/dev" ; \
mount --make-rslave "$OBJETIVO/dev" ; \
mount --rbind /run "$OBJETIVO/run" ; \
mount --make-rslave "$OBJETIVO/run" ; \
mount --rbind /tmp "$OBJETIVO/tmp" ; \
mount --make-rslave "$OBJETIVO/tmp" ; \
mount --bind /etc/fstab "$OBJETIVO/etc/fstab" ; \
mount --bind /etc/hostname "$OBJETIVO/etc/hostname" ; \
mount --bind /etc/hosts "$OBJETIVO/etc/hosts" ; \
mount --bind /etc/resolv.conf "$OBJETIVO/etc/resolv.conf" ; \
cat << EOF | linux32 chroot "$OBJETIVO"
export DISPLAY=localhost:1 2>/dev/null
EOF
linux32 chroot "$OBJETIVO" /bin/bash -l <<"EOT"
#Primero Detectar Particiones, Crear Directorios dentro de /media y finalmente montarlas
#Nombre De Particion :
# NPD1="1SlackIni" # Esta es la particion /boot de la particion que estoy usando en chroot
NPD2="72GB"
NPD3="Compartido"
NPD4="2SlackIni"
# NPD5="Slack64" #Esta es la particion Anfrition, asi que realmente no la necesito para esto.
# NPD6="Slack32" #Esta es la que estoy usando en chroot
NPD7="2Compartir"
#Parte de la Particion
# PPD1=$(blkid | grep "$NPD1" | cut -c01-09)
PPD2=$(blkid | grep "$NPD2" | cut -c01-09)
PPD3=$(blkid | grep "$NPD3" | cut -c01-09)
PPD4=$(blkid | grep "$NPD4" | cut -c01-09)
# PPD5=$(blkid | grep "$NPD5" | cut -c01-09)
# PPD6=$(blkid | grep "$NPD6" | cut -c01-09)
PPD7=$(blkid | grep "$NPD7" | cut -c01-09)
$(mkdir -p /media/"$NPD2" ; mount "$PPD2" /media/"$NPD2" )
$(mkdir -p /media/"$NPD3" ; mount "$PPD3" /media/"$NPD3" )
$(mkdir -p /media/"$NPD4" ; mount "$PPD4" /media/"$NPD4" )
$(mkdir -p /media/"$NPD7" ; mount "$PPD7" /media/"$NPD7" )
$(su - inukaze)
$(Xephyr -ac -screen 1070x888 -br -reset -terminate :1.0 2>/dev/null &)
$(export DISPLAY=:1.0)
$(DISPLAY=:1 /usr/bin/xfce4-session -- :1 2>/dev/null)
EOT
umount -l "$OBJETIVO" ; \
mount -a 2>/dev/null
}
function desmontar(){
# Desmontar
umount -l "$OBJETIVO" ; \
mount -a 2>/dev/null
}
#Este guión necesita ser ejecutado como SuperUsuario
#o en su defecto con permisos administrativos suficientes
#Para montar / desmontar particiones.
if [ "$(whoami)" != root ]; then
echo
echo
echo 'Por favor ejecuta este guion como SuperUsuario (root)'
echo
echo 'Utilize este guión bajo su Propio Riesgro'
echo 'El Autor , o sea yo , no me hago responsable'
echo 'de las consecuencias imprevistas que puedan'
echo 'acontecer en tu sistema operativo'
echo
else
# Proceder en caso de tener los permisos suficientes para montar/desmontar particiones :
#Si el usuario no pasa ningun parametro indicar como se usa este guion
if [ -z "$1" ]; then
MensajeBase
fi
#Guion : Aqui se ha definido como se utilizara este guion correctamente para montar o desmontar la particion Objetivo
#Entrada : Cualquier palabra pasada por el parametro $1 sera convertida en minusculas
Entrada=$(echo "$1" | tr -s '[:upper:]' '[:lower:]')
if [ "$Entrada" == "montar" ]; then
montar
fi
if [ "$Entrada" == "xephyr" ]; then
xephyr
fi
if [ "$Entrada" == "desmontar" ]; then
desmontar
fi
#Finalizar la condicion globar de requerir usar el SuperUsuario o en su defectos persmisos administrativos
#Para poder (des)montar particiones :
fi
#Finalizar este guion sin problemas :
exit 0 2>/dev/null
これは次のコピーです。LinuxQuestions.org
答え1
chrootでpulseaudioを使用していないため、オーディオソリューションの変更はファイルを削除するだけです。
/etc/asound.conf
rm -rf /usr/asound.conf
3D/DRIにアクセスするには2つの方法が必要です。まず、ファイルを編集し
/etc/X11/xorg.conf
て追加することです。Section "Files" # ModulePath "/usr/lib64/nvidia-304.137/xorg" ModulePath "/usr/lib/xorg/modules" EndSection
まず、X.Orgの「モジュールと拡張」ファイルパスを確認する必要があります。
+iglx
glxにアクセスできるようにいくつかの拡張とパラメータを追加した後、xephyrコマンドは次のようになります。$(Xephyr -ac -screen 1070x888 -br -reset -terminate -render :1.0 \ +extension Composite \ +extension DAMAGE \ +extension DOUBLE-BUFFER \ +extension DPMS \ +extension GLX \ +extension NV-GLX \ +extension RANDR \ +extension RENDER \ +extension X-Resource \ +extension XFIXES \ +xinerama \ +iglx \ 2>/dev/null &)
これは、Slackware64 14.2の実際のインストールからオーディオと3D / DRIがある別のパーティションにあるSlackware32 14.2の実際のインストールまでアクセスするために必要なすべてです。
私のスクリプト全体は次のようになります。
#!/usr/bin/env bash
echo '
Autor ----------------> Inukaze ( Venezuela )
Sitio ----------------> https://goo.gl/ij6WqW
Correo-E -------------> [email protected]
Licencia -------------> GPL 2
'
#Establecer mediante la variable "$OBJETIVO"
#La particion con una distribucion a la cual se accedera mediante chroot
export OBJETIVO="/media/Slack32"
#Prevenir que se autoejecuten las funciones que se definiran despues
unset montar
unset desmontar
unset MensajeBase
#Establecer y definir funciones :
function MensajeBase()
{
echo -e "\nLa forma correcta de utilizar este guion es :\n$0 «montar» , «montar_xephyr» ó «desmontar», Por ejemplo : \n"
echo -e "$0 montar"
echo -e "$0 montar_xephyr"
echo -e "$0 desmontar\n"
}
function montar(){
#Preparar acceso para programas de entorno grafico :
export DISPLAY=:0.0 2>/dev/null
xhost + local 2>/dev/null
#Montar todo de una vez para una distro de 32 Bits (En este caso Slackware32 14.2) :
mount --rbind /proc "$OBJETIVO/proc" ; \
mount --make-rslave "$OBJETIVO/proc" ; \
mount --rbind /sys "$OBJETIVO/sys" ; \
mount --make-rslave "$OBJETIVO/sys" ; \
mount --rbind /dev "$OBJETIVO/dev" ; \
mount --make-rslave "$OBJETIVO/dev" ; \
mount --rbind /run "$OBJETIVO/run" ; \
mount --make-rslave "$OBJETIVO/run" ; \
mount --rbind /tmp "$OBJETIVO/tmp" ; \
mount --make-rslave "$OBJETIVO/tmp" ; \
mount --bind /etc/fstab "$OBJETIVO/etc/fstab" ; \
mount --bind /etc/hostname "$OBJETIVO/etc/hostname" ; \
mount --bind /etc/hosts "$OBJETIVO/etc/hosts" ; \
mount --bind /etc/resolv.conf "$OBJETIVO/etc/resolv.conf" ; \
cat << EOF | linux32 chroot "$OBJETIVO"
export DISPLAY=localhost:1 2>/dev/null
EOF
linux32 chroot "$OBJETIVO" /bin/bash -l ; \
umount -l "$OBJETIVO" ; \
mount -a 2>/dev/null
}
function xephyr(){
#Copiar archivo de autorizacion X.Org :
rm -f "$OBJETIVO/home/inukaze/.Xauthority"
rm -f "$OBJETIVO/root/.Xauthority"
cp -f "/home/inukaze/.Xauthority" "$OBJETIVO/root/.Xauthority"
cp -f "/home/inukaze/.Xauthority" "$OBJETIVO/home/inukaze/.Xauthority"
#Audio :
#rm -rf "$OBJETIVO/etc/asound.conf"
#cp -f "/etc/asound.state" "$OBJETIVO/etc/asound.state"
#Video :
#cp -f /usr/lib/libGL.so.304.137-nvidia "$OBJETIVO/usr/lib/libGL.so.304.137-nvidia"
#cp -f /usr/lib/libGL.so.304.137-nvidia "$OBJETIVO/usr/lib/libGL.so.304.137"
#cp -f /usr/lib/libGL.so.1.2.0 "$OBJETIVO/usr/lib/libGL.so.1.2.0"
#cp -f /usr/lib/libGL.so "$OBJETIVO/usr/lib/libGL.so"
#cp -f /usr/lib/libGL.la-nvidia "$OBJETIVO/usr/lib/libGL.la-nvidia"
chown inukaze:users "$OBJETIVO/home/inukaze/.Xauthority"
if [ ! -f "$OBJETIVO/etc/X11/Xwrapper.config" ] ; then
# Prevenir el error « /usr/libexec/Xorg.wrap: Only console users are allowed to run the X server »
echo '# Xwrapper.config (Debian X Window System server wrapper configuration file)
#
# This file was generated by the post-installation script of the x11-common
# package using values from the debconf database.
#
# See the Xwrapper.config(5) manual page for more information.
#
# This file is automatically updated on upgrades of the x11-common package
# *only* if it has not been modified since the last upgrade of that package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command as root:
# dpkg-reconfigure x11-common
#allowed_users=console
allowed_users=anybody' | tee "$OBJETIVO/etc/X11/Xwrapper.config"
fi
#Preparar acceso para programas de entorno grafico :
$(export DISPLAY=:1.0)
$(xhost + local 2>/dev/null)
#Montar todo de una vez para una distro de 32 Bits (En este caso Slackware32 14.2) :
mount --rbind /proc "$OBJETIVO/proc" ; \
mount --make-rslave "$OBJETIVO/proc" ; \
mount --rbind /sys "$OBJETIVO/sys" ; \
mount --make-rslave "$OBJETIVO/sys" ; \
mount --rbind /dev "$OBJETIVO/dev" ; \
mount --make-rslave "$OBJETIVO/dev" ; \
mount --rbind /run "$OBJETIVO/run" ; \
mount --make-rslave "$OBJETIVO/run" ; \
mount --rbind /tmp "$OBJETIVO/tmp" ; \
mount --make-rslave "$OBJETIVO/tmp" ; \
mount --rbind /var/run/dbus "$OBJETIVO/var/run/dbus" ; \
mount --make-rslave "$OBJETIVO/var/run/dbus" ; \
mount --rbind /var/lib/dbus "$OBJETIVO/var/lib/dbus" ; \
mount --make-rslave "$OBJETIVO/var/lib/dbus" ; \
mount --rbind /etc/X11 "$OBJETIVO/etc/X11" ; \
mount --make-rslave "$OBJETIVO/etc/X11" ; \
mount --rbind /usr/X11R6 "$OBJETIVO/usr/X11R6" ; \
mount --make-rslave "$OBJETIVO/usr/X11R6" ; \
mount --rbind /lib/modules "$OBJETIVO/lib/modules" ; \
mount --make-rslave "$OBJETIVO/lib/modules" ; \
mount --bind /etc/fstab "$OBJETIVO/etc/fstab" ; \
mount --bind /etc/hostname "$OBJETIVO/etc/hostname" ; \
mount --bind /etc/hosts "$OBJETIVO/etc/hosts" ; \
mount --bind /etc/resolv.conf "$OBJETIVO/etc/resolv.conf" ; \
#NV_GLX#mount --bind /usr/lib/libnvidia-glcore.so.304.137 "$OBJETIVO/usr/lib/libnvidia-glcore.so.304.137" ; \
#NV_GLX#mount --bind /usr/lib/tls/libnvidia-tls.so.304.137 "$OBJETIVO/usr/lib/tls/libnvidia-tls.so.304.137" ; \
#NV_GLX#mount --bind /usr/lib/libGLEW.so.1.13.0 "$OBJETIVO/usr/lib/libGLEW.so.1.13.0" ; \
#NV_GLX#mount --bind /usr/lib/libGLEW.so.1.13 "$OBJETIVO/usr/lib/libGLEW.so.1.13" ; \
#NV_GLX#mount --bind /usr/lib/libGLEW.so "$OBJETIVO/usr/lib/libGLEW.so" ; \
#NV_GLX#mount --bind /usr/lib/libGLU.so.1.3.1 "$OBJETIVO/usr/lib/libGLU.so.1.3.1" ; \
#NV_GLX#mount --bind /usr/lib/libGLU.so.1 "$OBJETIVO/usr/lib/libGLU.so.1" ; \
#NV_GLX#mount --bind /usr/lib/libGLU.so "$OBJETIVO/usr/lib/libGLU.so" ; \
#NV_GLX#mount --bind /usr/lib/libGLU.la "$OBJETIVO/usr/lib/libGLU.la" ; \
#NV_GLX#mount --bind /usr/lib/libGL.so.304.137-nvidia "$OBJETIVO/usr/lib/libGL.so.304.137-nvidia" ; \
#NV_GLX#mount --bind /usr/lib/libGL.so.1.2.0 "$OBJETIVO/usr/lib/libGL.so.1.2.0" ; \
#NV_GLX#mount --bind /usr/lib/libGL.so.1 "$OBJETIVO/usr/lib/libGL.so.1" ; \
#NV_GLX#mount --bind /usr/lib/libGL.so "$OBJETIVO/usr/lib/libGL.so" ; \
#NV_GLX#mount --bind /usr/lib/libGL.la-nvidia "$OBJETIVO/usr/lib/libGL.la-nvidia" ; \
#NV_GLX#mount --bind /usr/lib/libGL.la "$OBJETIVO/usr/lib/libGL.la" ; \
#AUDIO#mount --bind /usr/lib/libasound.so.2.0.0 "$OBJETIVO/usr/lib/libasound.so.2.0.0" ; \
#AUDIO#mount --bind /usr/lib/libasound.so.2 "$OBJETIVO/usr/lib/libasound.so.2" ; \
#AUDIO#mount --bind /usr/lib/libasound.so "$OBJETIVO/usr/lib/libasound.so" ; \
#AUDIO#mount --bind /usr/lib/libasound.la "$OBJETIVO/usr/lib/libasound.la" ; \
cat << EOF | linux32 chroot "$OBJETIVO"
$(export DISPLAY=:1.0 2>/dev/null)
EOF
linux32 chroot "$OBJETIVO" /bin/bash -l <<"EOT"
#Primero Detectar Particiones, Crear Directorios dentro de /media y finalmente montarlas
#Nombre De Particion :
# NPD1="1SlackIni" # Esta es la particion /boot de la particion que estoy usando en chroot
NPD2="72GB"
NPD3="Compartido"
NPD4="2SlackIni"
# NPD5="Slack64" #Esta es la particion Anfrition, asi que realmente no la necesito para esto.
# NPD6="Slack32" #Esta es la que estoy usando en chroot
NPD7="2Compartir"
#Parte de la Particion
# PPD1=$(blkid | grep "$NPD1" | cut -c01-09)
PPD2=$(blkid | grep "$NPD2" | cut -c01-09)
PPD3=$(blkid | grep "$NPD3" | cut -c01-09)
PPD4=$(blkid | grep "$NPD4" | cut -c01-09)
# PPD5=$(blkid | grep "$NPD5" | cut -c01-09)
# PPD6=$(blkid | grep "$NPD6" | cut -c01-09)
PPD7=$(blkid | grep "$NPD7" | cut -c01-09)
$(mkdir -p /media/"$NPD2" ; mount "$PPD2" /media/"$NPD2" )
$(mkdir -p /media/"$NPD3" ; mount "$PPD3" /media/"$NPD3" )
$(mkdir -p /media/"$NPD4" ; mount "$PPD4" /media/"$NPD4" )
$(mkdir -p /media/"$NPD7" ; mount "$PPD7" /media/"$NPD7" )
$(su - inukaze)
$(Xephyr -ac -screen 1070x888 -br -reset -terminate -render :1.0 \
+extension Composite \
+extension DAMAGE \
+extension DOUBLE-BUFFER \
+extension DPMS \
+extension GLX \
+extension NV-GLX \
+extension RANDR \
+extension RENDER \
+extension X-Resource \
+extension XFIXES \
+xinerama \
+iglx \
2>/dev/null &)
$(export DISPLAY=:1.0)
$(DISPLAY=:1 /usr/bin/xfce4-session -- :1 2>/dev/null)
##DESACTIVADO##$(DISPLAY=:1 /usr/bin/startx -- :1 2>/dev/null) #Inicia en otra tty con (NV-)GLX a pantalla completa
EOT
umount -l "$OBJETIVO" ; \
mount -a 2>/dev/null
}
function desmontar(){
# Desmontar
umount -l "$OBJETIVO" ; \
mount -a 2>/dev/null
}
#Este guión necesita ser ejecutado como SuperUsuario
#o en su defecto con permisos administrativos suficientes
#Para montar / desmontar particiones.
if [ "$(whoami)" != root ]; then
echo
echo
echo 'Por favor ejecuta este guion como SuperUsuario (root)'
echo
echo 'Utilice este guión bajo su Propio Riesgo'
echo 'El Autor , o sea yo , no me hago responsable'
echo 'de las consecuencias imprevistas que puedan'
echo 'acontecer en tu sistema operativo'
echo
else
# Proceder en caso de tener los permisos suficientes para montar/desmontar particiones :
#Si el usuario no pasa ningún parámetro indicar como se usa este guion
if [ -z "$1" ]; then
MensajeBase
fi
#Guion : Aquí se ha definido como se utilizara este guion correctamente para montar o desmontar la partición Objetivo
#Entrada : Cualquier palabra pasada por el parámetro $1 sera convertida en minúsculas
Entrada=$(echo "$1" | tr -s '[:upper:]' '[:lower:]')
if [ "$Entrada" == "montar" ]; then
montar
fi
if [ "$Entrada" == "xephyr" ]; then
xephyr
fi
if [ "$Entrada" == "desmontar" ]; then
desmontar
fi
#Finalizar la condición global de requerir usar el SuperUsuario o en su defectos permisos administrativos
#Para poder (des)montar particiones :
fi
#Finalizar este guion sin problemas :
$(exit 0)
指示:
ㅏ。 #AUDIOと#NV-GLXの部分には実際には必要ありません。
b。私はテストしていたので、chrootからnvidia-legacy304ドライバを直接コンパイルしようとしましたが、結果が非常に悪かったです。 「nvidia-legacy304-kernelをコンパイルできないため、Slackware64 14.2に3D / DRIがありません」と、次のエラーが発生します。
Creating directory NVIDIA-Linux-x86_64-304.137
Verifying archive integrity... OK
Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64
304.137................................................................................................................................................................
If you are using a Linux 2.4 kernel, please make sure
you either have configured kernel sources matching your
kernel or the correct set of kernel headers installed
on your system.
If you are using a Linux 2.6 kernel, please make sure
you have configured kernel sources matching your kernel
installed on your system. If you specified a separate
output directory using either the "KBUILD_OUTPUT" or
the "O" KBUILD parameter, make sure to specify this
directory with the SYSOUT environment variable or with
the equivalent nvidia-installer command line option.
Depending on where and how the kernel sources (or the
kernel headers) were installed, you may need to specify
their location with the SYSSRC environment variable or
the equivalent nvidia-installer command line option.
*** Unable to determine the target kernel version. ***
makefile:53: fallo en las instrucciones para el objetivo 'select_makefile'