私の問題は簡単ですが、オンラインで解決策を見つけることができません。 init.dスクリプトを含むファイルシステムがあります。システムが最初に起動したときにこのスクリプトを実行したいと思います。どうすればいいですか?可能であれば、init.dシンボリックリンクを手動で生成することを避けたいと思います。
編集:私はDebian 4.19を使用しています。 init.dスクリプトを含むファイルシステムは、最終システムのrootfsです。最初の起動とは、コンピュータの電源が入っているファイルシステムで初めて起動するときにスクリプトを実行したいということです(私が使用するカーネルも初めて起動しますが、それは重要ではないと思います)。このinit.dスクリプトを維持し、可能であれば他のサービス管理に移動したくありません。基本的に問題は簡単です。起動したいLinuxファイルシステムにアクセスでき、システム全体を起動せずにinit.dスクリプトを有効にしたいと思います。
ベストアンサー1
まず、「Debian 4.19」は存在しません。おそらく、次の Debian システムを見ているでしょう。Linuxカーネルバージョン4.19これは次のことを意味します。Debian 10(「buster」、約2週間前にDebian 11がリリースされ、「oldstable」になったバージョン)。
Debian は Debian 8 から使用してきましたが、systemd
まだ SysVinit の互換性とは異なる初期化システムを交換するオプションがありますsystemd
。 Debian 10でSysVinitを使用することが実際にどのように実用的であるかはわかりませんが、今システム統合の利点はsystemd
。systemd
たとえば、Debian 10インストールルートパーティションを含むディスクがあり、/dev/sdXN
システムが実際に起動する前にinit.dスクリプトを追加するように変更したいとします。
ディスクを他のシステムにマウントできます。
mount /dev/sdXN /mnt
次に、新しくインストールされたディレクトリにスクリプトをコピーします/etc/init.d/
。
cp /some/where/myscript /mnt/etc/init.d/
chmod a+rx /mnt/etc/init.d/myscript
注:systemd
互換性のために、スクリプトは始めにLSBスタイルのコメントブロックを含めて依存関係を文書化し、起動systemd
時に早期に実行されるのを防ぐ必要があります。このDebian Wikiの記事を参照してくださいまたはinsserv(8)
マニュアルページ詳細については。
デフォルトでは、スクリプトの先頭には次のコメントブロックが必要です。コメント以外の行の前に:
### BEGIN INIT INFO
# Provides: myscript
# Required-Start: $local_fs $syslog $network
# Required-Stop: $local_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start myscript at boot time
# Description: Enable service provided by myscript.
### END INIT INFO
Required-Start
スクリプトの要件に応じて行を調整する必要があります。Required-Stop
スクリプトの準備ができたら、chroot
新しいインストールに移動して実行できます。update-rc.d
init.d シンボリックリンクを生成するツールです。ただし、実際のchrootコマンドを実行する前にファイルシステムをマウントする必要があります。/proc
それ/sys
以外の/dev
場合は、多くの操作を実行できません。
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount -o rbind /dev /mnt/dev
chroot /mnt /bin/bash # From this point on, /mnt will be this session's root directory
これで、セッションが新しくインストールされた環境内で実行され、システムがすでに新しいインストールを実行しているかのように、そのインストールツールのほとんどを使用できるようになります。したがって、次のupdate-rc.d
コマンドを使用できます。
/usr/sbin/update-rc.d myscript defaults
その後、chrootを元に戻し、新しくマウントされたルートファイルシステムをアンマウントしてプロセスをきちんと終了できます。
exit # back to having the real root directory
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt
(非アクティブインストールのルートファイルシステムをマウントする手順は、破損したブートローダの回復や忘れたルートパスワードの変更など、多くのメンテナンスやトラブルシューティングの状況に適用されます。この場合、ルートファイルシステムをマウントする必要がない場合があります。 . 非アクティブな/proc
インストール/sys
。