只是为了更容易挂载我的 Slackware 14.2 安装,我把它放在另一个分区上(它是 32 位 100% 真正的原生)。
我可以像 root 用户一样启动 xfce4-session(但这不是我需要的):
我需要知道是否有人可以帮助我解决以下问题
1 - 将音频重定向到主机,因为
2 - 可以在 Nvidia 上使用 3D、DRI 吗?我在Gentoo论坛上看到了一些东西,但我不明白)
3 - 从我的脚本中隐藏一些命令和/或输出:这些行是:
local being added to access control list
export DISPLAY=localhost:1 2>/dev/null
exit
当我关闭 Xephyr 窗口时,这会在之后出现:
-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
因为我不在 chroot 中使用 pulseaudio,所以音频解决方案修复只是删除文件
/etc/asound.conf
访问 3D/DRI 需要两件事,第一是编辑文件
/etc/X11/xorg.conf
并添加您必须首先检查 X.Org 的“模块和扩展”文件的路径,在添加一些扩展和
+iglx
启用对 glx 的访问的参数之后,xephyr 命令现在是:这就是我从实际安装的 Slackware64 14.2 到在另一个带有音频和 3D/DRI 的分区上实际安装的 Slackware32 14.2 访问所需的全部内容。
我的整个脚本现在是:
备注:
一个。#AUDIO & #NV-GLX 部分是真的不需要它
湾。因为使用它进行测试,所以我尝试直接在 chroot 上编译 nvidia-legacy304 驱动程序,结果非常糟糕,现在我的 Slackware64 14.2 上没有 3D/DRI,因为我无法编译“nvidia-legacy304-kernel”我只是收到以下错误: