解决turmex安装kali报错问题
在手机上安装好turmex后,都喜欢安装一个Linux系统,我当时安装的时kali,但是安装过程中,报错不断。
2019.8.24更新
1,出现问题首先看下载kali源文件是否完整
安装步骤中,会显示[解压中.....] ,可以看到解压的大小。
如图所示,完整源文件不小于81M。
如果源文件过小,则说明下载错误,而且在remove kali 这个命令下,是不会删除源文件的,下一次安装只会检测一次
然后如果有这个名字,就跳过下载了,要手动删除这个文件。
在根目录下 cd .atilo 可以看到有tmp 文件夹,里面就是已经下载的不一定完整的源文件,可以手动删除,也可以手动修改脚本
里面是一个if……else……判断, 屏蔽掉if 直接执行else的函数体就行了。
2,安装完毕后,进入kali系统的要执行如下两条指令:
proot --link2symlink 获取proot权限
startkali 进入系统
分割线
下面记录一个最常见的错误:
Upgrading ... ] proot warning: can't sanitize binding "/sdcard": No such file or directory
proot warning: can't chdir("/root/.") in the guest rootfs: No such file or directory
proot info: default working directory is now "/"
proot error: '/usr/bin/env' not found (root = /home/.atilo/kali, cwd = /, $PATH=(null)) fatal error: see `proot --help`.
proot error: trying to remove a directory outside of '/data/data/com.ter
看问题,出现的是proot警告,总之就是没有root权限。
然后我们来分析一下atilo_cn的脚本(中文的就是用CN文件夹下的该文件安装)
在152行的 select_linux()函数的作用就是选择根据第二个参数选择对应的系统,同时标明源的网址。
主要是为upgrade变量进行赋值。
function select_linux()
{
case "$1" in
fedora)
aarch64=https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/30/Container/aarch64/images/Fedora-Container-Base-30-1.2.aarch64.tar.xz
arm=https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/27/Docker/armhfp/images/Fedora-Docker-Base-27-1.6.armhfp.tar.xz
amd64=https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/30/Container/x86_64/images/Fedora-Container-Base-30-1.2.x86_64.tar.xz
if [[ ${time_arch} = "i386" ]]; then
error "Fedora 不支持x86架构"
fi
upgrade="dnf makecache"
;;
debian)
curl "https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/debian/buster/${time_arch}/default/" -o tmp.html
ttime=`sed -n '7p' tmp.html | cut -d'>' -f2 | cut -d'<' -f1`
rm tmp.html
aarch64=https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/debian/buster/arm64/default/${ttime}rootfs.tar.xz
arm=https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/debian/buster/armhf/default/${ttime}rootfs.tar.xz
amd64=https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/debian/buster/amd64/default/${ttime}rootfs.tar.xz
i386=https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/debian/buster/i386/default/${ttime}rootfs.tar.xz
zip=pJx
mirrors="deb http://mirrors.tuna.tsinghua.edu.cn/debian buster main\ndeb http://mirrors.tuna.tsinghua.edu.cn/debian-security/ buster/updates main"
mirrorspath="etc/apt/sources.list"
upgrade="apt update && apt upgrade"
;;
alpine)
aarch64=https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.10/releases/aarch64/alpine-minirootfs-3.10.0-aarch64.tar.gz
arm=https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.10/releases/armhf/alpine-minirootfs-3.10.0-armhf.tar.gz
amd64=https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.10/releases/x86_64/alpine-minirootfs-3.10.0-x86_64.tar.gz
i386=https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.10/releases/x86/alpine-minirootfs-3.10.0-x86.tar.gz
zip=pzx
sh=ash
mirrors="http://mirrors.tuna.tsinghua.edu.cn/alpine/v3.10/main\nhttp://mirrors.tuna.tsinghua.edu.cn/alpine/v3.10/community"
mirrorspath="etc/apk/repositories"
upgrade="apk update && apk upgrade"
;;
arch)
aarch64=https://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/os/ArchLinuxARM-aarch64-latest.tar.gz
arm=https://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/os/ArchLinuxARM-armv7-latest.tar.gz
if [[ ${time_arch} = "i386" || ${time_arch} = "amd64" ]];then
error "Arch 不支持 x86 及 amd64 架构"
fi
zip=pzx
mirrors="Server = http://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/\$arch/\$repo"
mirrorspath="etc/pacman.d/mirrorlist"
upgrade="pacman-key --init && pacman-key --populate archlinuxarm "
;;
ubuntults)
curl "https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/bionic/${time_arch}/default/" -o tmp.html >/dev/null 2>&1
ttime=`sed -n '7p' tmp.html | cut -d'>' -f2 | cut -d'<' -f1`
rm tmp.html
aarch64=https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/bionic/arm64/default/${ttime}rootfs.tar.xz
arm=https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/bionic/armhf/default/${ttime}rootfs.tar.xz
amd64=https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/bionic/amd64/default/${ttime}rootfs.tar.xz
i386=https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/bionic/i386/default/${ttime}rootfs.tar.xz
zip=pJx
mirrors="deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic main restricted universe multiverse\ndeb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports bionic-updates main restricted universe multiverse"
mirrorspath="etc/apt/sources.list"
upgrade="apt update "
;;
ubuntu)
curl "https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/disco/${time_arch}/default/" -o tmp.html >/dev/null 2>&1
ttime=`sed -n '7p' tmp.html | cut -d'>' -f2 | cut -d'<' -f1`
rm tmp.html
aarch64=https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/disco/arm64/default/${ttime}rootfs.tar.xz
arm=https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/disco/armhf/default/${ttime}rootfs.tar.xz
i386=https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/disco/i386/default/${ttime}rootfs.tar.xz
amd64=https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/disco/amd64/default/${ttime}rootfs.tar.xz
zip=pJx
mirrors="deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports disco main restricted universe multiverse\ndeb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports disco-updates main restricted universe multiverse"
mirrorspath="etc/apt/sources.list"
upgrade="apt update "
;;
kali)
select_linux "debian"
upgrade='apt update &&apt install gnupg gnupg1 gnupg2 -y && echo -e "deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main non-free contrib\ndeb-src http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main non-free contrib" > /etc/apt/sources.list && apt-key adv --recv ED444FF07D8D0BF6 && apt update && apt upgrade'
;;
*)
error "[ 不支持的发行版 $1 ]"
;;
esac
}
最下面是kali的选项的变量
upgrade='apt update &&apt install gnupg gnupg1 gnupg2 -y && echo -e "deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main non-free contrib\ndeb-src http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main non-free contrib" > /etc/apt/sources.list && apt-key adv --recv ED444FF07D8D0BF6 && apt update && apt upgrade'。
其中&&的意思是第一条执行成功后再执行下一条指令,所以这个变量的主要为了执行后面一连串的指令。
然后继续往下看,在install_linux()函数中有:
cat > ${PREFIX}/bin/start${release_name} <<- EOM
#!/data/data/com.termux/files/usr/bin/bash
cd \$HOME/.atilo/
unset LD_PRELOAD
command="proot"
command+=" --link2symlink"
#command+=" -0"
command+=" -S ${release_name}"
#command+=" -b /system"
command+=" -b /sdcard"
command+=" -b /dev/"
#command+=" -b /sys/"
command+=" -b /proc/"
#uncomment the following line to have access to the home directory of termux
#command+=" -b /data/data/com.termux/files/home"
command+=" -w /root"
command+=" /usr/bin/env -i"
command+=" HOME=/root"
command+=" LANG=C.UTF-8"
command+=" PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
command+=" TERM=xterm-256color"
command+=" /bin/${sh} --login"
export PROOT_NO_SECCOMP=1
com="\$@"
if [ -z "\$1" ];then
exec \$command
else
\$command -c "\$com"
fi
EOM
这又是一串指令,目的就是在proot权限下 创建了一堆目录,并且设置了环境变量。
最后是
tips "[ 升级中 ... ]"
start${release_name} ${upgrade}
tips "[ 全部完成 ]"
tips "start${release_name} 以开始"
先startkali ${upgrade} (注意这个upgrade变量)
再startkali 进入kali系统。
所以我们的问题就是出现在第一个指令的位置,更新错误。
所以我选择分步执行的。
在脚本中修改最后一项为
upgrade = 'apt update && apt install gunpg gunpg1 gunpg2 -y && apt-key adv --recv ED444FF07D8D0BF6
&& apt update && apt upgrade' (这里事先我已经把清华源添加到了sources.list中了,所以没有挂那些网址)。
然后执行
proot --link2symlink -S kali -b /sdcard -b /dev/ -b /proc/ -w /root /usr/bin/env -i HOME=/root LANG=C.UTF-8 PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:usr/local/sbin TERM=xterm-256color /bin/bash --login -c apt update
这样基本就完成了,
最后在startkali命令执行之前,要先执行 proot --link2symlink指令,是获取proot权限的。
后面就可以进入系统。
更多推荐
所有评论(0)