在手机上安装好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权限的。

后面就可以进入系统。

 

 

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐