VimまたはPID 1でVimを起動します

Vimから起動(起動ウィンドウ)

これは、Pascal Bourguignonの優れた記事への回答です。PascalBourguignon では、PID 1でEmacsを起動する方法について説明しています

誰もが知っているように、誰もEmacsを使用していません。

上記の提案は、これが別の聖戦の始まりであることを示唆しています。 始めてください。 あなたが私に何かを伝えたい場合、私の連絡先はすべて私のブログにあります。

実際、冗談はさておき。 これは素晴らしい記事だと思います。それを読んだ後、Vimで似たようなことができるかどうかを見たかったのです。 Linuxユーザーモードではなく、実際に起動するISOを作成します。 必要に応じて、「Vimで起動」と言うことができます。

本当に簡単です。 Vimを静的にコンパイルし、 init=をbootに設定して、完了です。

Tiny Core、Coreエディションの小さな(9Mb)ディストリビューションを使用し、静的にアセンブルされたVimに直接ダウンロードされるように構成します。

Vimをまとめる


静的にリンクされたVimの構築方法に関する他のガイドに従ってください。 その結果、実行可能ファイルが取得されます。このファイルは、このガイドの後半で使用します。

準備する


ISOをコンパイルするには、 cpiotargzipadvdef 、および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 


zcatcpioを使用して、 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を終了すると、再び起動します。

vimから起動

コマンドモードで:!shと入力すると、実際のシェルを呼び出すことができます。 オフにするには、コマンド:!halt使用します。

Tiny Coreのリマスタリングの詳細については、 こちらをご覧ください

Source: https://habr.com/ru/post/J237213/


All Articles