スクリプトでどのインストールメディアが使用されているかを確認する方法

スクリプトでどのインストールメディアが使用されているかを確認する方法

AutoYastを使用してSUSE 11 SP4をインストールしています。 autoyast 制御ファイル内で複数のステップでスクリプトを作成できます。

私のスクリプトは、<post-scripts>次のようにステージで実行されます。

mkdir /media/usb
echo "Mounting USB to /media/usb"
mount /dev/sdb1 /media/usb
echo "Copying Contents to /root/LINUX_DVD/"
mkdir /root/LINUX_DVD/
cp -aR /media/usb/. /root/LINUX_DVD/
if [ $? -eq 0 ]
then
    echo "Copy: OK"
    cd /root/LINUX_DVD/seconet/setup/
    sed -e "s/passwd service/echo -e '******' | passwd --stdin service/" install.sh > install_tmp.sh
    mv install_tmp.sh install.sh
    chmod +x install.sh
    echo "After confirmation system will finish configuration and reboot."
    echo "After the reboot the Installation script will automatically execute."
else
    echo "Copy: Failed"
    echo "Copying DVD and installing VCIP must be done manually after reboot."
    exit
fi

可能なインストールメディアは2つ(DVDとUSB)なので、ご覧のようにコンテンツをコピーしているので、このスクリプトで何が起こっているのかを確認する方法を探したいと思います。

インストールプロセスのこの段階ではインストールメディアがないため、インストールメディアもインストールする必要があります。

最初はインストールが成功したことを確認し、そうでなければ別のメディアを試してみるかと思いましたが、/dev/*その中に何もあることを確認できるのか、そうであればそこに正しいメディアをインストールできるかどうか気になりました。

/dev/デバイスにコンテンツがあるかどうかを確認できますか?

このアプローチは実用的ですか?

これが私が今解決する方法です。

mkdir /media/install
mount /dev/sdb1 /media/install
if [ $? -ne 0 ]
then
    echo "USB not found, trying DVD"
    mount /dev/sr0 /media/install
    EXITCODE=$?
    if [ $EXITCODE -ne 0 ]
    then
        echo "No correct installation media found";
        exit $EXITCODE;
    else
        echo "Mounted DVD"
    fi
else
    echo "Mounted USB"
fi
echo "Copying Contents to /root/LINUX_DVD/"
mkdir /root/LINUX_DVD/
cp -aR /media/install/. /root/LINUX_DVD/
... rest of the script ...

ベストアンサー1

何かを混ぜているようですね。

「コンテンツがあります」とはどういう意味ですか?

「データが含まれています」と表示されたらインストールする必要があります。

ただし、「ある」または「後ろに物理メディアがあります」を意味する場合(/dev/エントリはその背後に物理デバイスがあることを認識しないため)、/devに対して/proc/partitionsをgrepすることができます。 /sdb1 または "lsblk /dev/sdb" を使用 (そして応答で sdb1 に対して再度 grep)

if grep "sdb1" /proc/partitions ; then
    echo sdb1 exists
fi

sr0の問題は、CD / DVDドライブにディスクがなくても存在することです(ドライブが存在するため、カーネルが嘘をつくわけではありません)。

~からこの問題、 "blkid /dev/sr0"が/dev/sr0に対する答えを提供する必要があるようです。

おすすめ記事