如何在一个磁盘中用另一个linux系统更新一个linux系统?

时间:2015-12-16 09:43:42

标签: linux

我的情况是: 我在一个磁盘上安装了两个linux。 我在/ dev / sda1中安装第一个,然后在/ dev / sda2中安装第二个 然后我运行fisrt系统,我写了一个脚本来运行时更新第一个系统。

    cd /
    mkdir newroot
    mount /dev/sda2 /newroot
    mount --bind /proc /newroot/proc/
    mount --bind /sys /newroot/sys/
    mount --bind /dev /newroot/dev/
    mount --bind /run /newroot/run/
    chroot /newroot /bin/bash --login 

    mkdir oldroot
    mount /dev/sda1 oldroot
    mount -o remount,rw /oldroot
    rm -rf /oldroot/*
    #but i can't rm the dev proc sys run
    tar -xzpvf /newroot/update/sda1.tar.gz  -C /oldroot/*

我的问题是我无法自动运行脚本,它会在

之后停止

运行chroot / newroot / bin / bash --login

1 个答案:

答案 0 :(得分:0)

要在chroot中执行的命令不能放在其他命令之后。您正在执行不同的bash,因此您必须为其提供新脚本。试试这个:

cd /
mkdir newroot
mount /dev/sda2 /newroot
mount --bind /proc /newroot/proc/
mount --bind /sys /newroot/sys/
mount --bind /dev /newroot/dev/
mount --bind /run /newroot/run/
chroot /newroot /bin/bash --login <<EOF

mkdir oldroot
mount /dev/sda1 oldroot
mount -o remount,rw /oldroot
rm -rf /oldroot/*
#but i can't rm the dev proc sys run
tar -xzpvf /newroot/update/sda1.tar.gz  -C /oldroot/*
EOF

有关<<EOF

的说明,请参阅http://www.cs.mun.ca/java-api-1.5/guide/security/jgss/tutorials/BasicClientServer.html