
これは、Pascal Bourguignonの優れた記事への回答です。PascalBourguignon では、PID 1でEmacsを起動する方法について説明しています 。
誰もが知っているように、誰もEmacsを使用していません。
上記の提案は、これが別の聖戦の始まりであることを示唆しています。 始めてください。 あなたが私に何かを伝えたい場合、私の連絡先はすべて私のブログにあります。
実際、冗談はさておき。 これは素晴らしい記事だと思います。それを読んだ後、Vimで似たようなことができるかどうかを見たかったのです。 Linuxユーザーモードではなく、実際に起動するISOを作成します。 必要に応じて、「Vimで起動」と言うことができます。
本当に簡単です。 Vimを静的にコンパイルし、
init=
をbootに設定して、完了です。
Tiny Core、Coreエディションの小さな(9Mb)ディストリビューションを使用し、静的にアセンブルされたVimに直接ダウンロードされるように構成します。
Vimをまとめる
静的にリンクされたVimの構築方法に関する他のガイドに従ってください。 その結果、実行可能ファイルが取得されます。このファイルは、このガイドの後半で使用します。
準備する
ISOをコンパイルするには、
cpio
、
tar
、
gzip
、
advdef
、および
mkisofs
といういくつかのツールが必要です。 ほとんどの場合、まだインストールされていない場合は、パッケージマネージャーを使用してインストールできます。 最初にそれをしてください。
最初に、ビルドするディレクトリを作成します。
mkdir vim-as-pid-1 cd vim-as-pid-1
ISOを構築するためのディレクトリもいくつか作成します。
mkdir /tmp/isomount mkdir extract
最新バージョンのTiny Core、Coreエディション(GUIなし)をダウンロードします。
wget http://distro.ibiblio.org/tinycorelinux/5.x/x86/release/Core-current.iso
ダウンロードしたISOからファイルをコピーします。
mount Core-current.iso /tmp/isomount/ -o loop,ro cp -a /tmp/isomount/boot /tmp/
これらのコマンドは、ブートローダーと
core.gz
ファイルで
/tmp/boot
を作成します。 アンマウントすることを忘れないでください:
umount /tmp/isomount
後ですべてをISOファイルにまとめるときに
/tmp/boot
を使用します。
ISOファイルを変更する
core.gz
が抽出されるディレクトリ(ファイルシステムのルートディレクトリ)に移動します。
cd extract
zcat
と
cpio
を使用して、
core.gz
からファイルシステムのルートを抽出します。
zcat /tmp/boot/core.gz | cpio -i -H newc -d
これで、ファイルシステムのルートディレクトリが抽出されました。
# ls bin dev etc home init lib linuxrc mnt opt proc root run sbin sys tmp usr var
前の手順でコンパイルしたVim実行可能ファイルを
bin/
ディレクトリに配置します
cp ~/vim bin/
ブートローダーのメッセージを編集するなど、他の設定を行うこともできます。 ディレクトリ
/tmp/boot/isolinux/
boot.msg
というファイルにあります:
# vim /tmp/boot/isolinux/boot.msg ^L _ ( - Boot to Vim //\ Vim as Pid 1, because Awesome! v_/_ https://raymii.org/ Press <Enter> to begin or F2, F3, or F4 to view boot options.
初期化タブの変更
Vimに直接読み込むには、初期化設定を変更する必要があります。 次のファイルを編集します。
vim etc/inittab
これらの行を変更します。
::sysinit:/etc/init.d/rcS tty1::respawn:/sbin/getty 38400 tty1
に:
::sysinit:/bin/vim tty1::respawn:/bin/vim
真新しいISOを置く
まだ
extract
というディレクトリにいることを確認してください。 次に、次のコマンドを入力して、新しい
tinycore.gz
ファイルを作成します。これは、ISOが
initramfs
として使用するものです。
find | cpio -o -H newc | gzip -2 > ../tinycore.gz
前にコピーした
/tmp/boot
core.gz
というファイルにコピーします。
cp ../tinycore.gz /tmp/boot/core.gz
新しいISOに含まれるファイル用の新しいディレクトリを作成します。
mkdir /tmp/newiso
ディレクトリ
/tmp/boot
コピーし
/tmp/boot
:
cp -a /tmp/boot /tmp/newiso/
mkisofs
を使用してISOをビルドします。
cd /tmp/ mkisofs -l -J -R -V Boot_To_Vim -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -o Boot_to_Vim.iso newiso
これで
/tmp
Boot_to_Vim.iso
というファイルがあります:
ls -la /tmp/Boot_to_Vim.iso -rw-r--r-- 1 root root 11044864 Sep 17 08:05 /tmp/Boot_to_Vim.iso
これを使用して、仮想マシンを起動したり、ディスクに書き込むことができます。 Vimを終了すると、再び起動します。

コマンドモードで
:!sh
と入力すると、実際のシェルを呼び出すことができます。 オフにするには、コマンド
:!halt
使用します。
Tiny Coreのリマスタリングの詳細については、 こちらをご覧ください 。