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をコンパイルするには、 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を終了すると、再び起動します。



vimから起動



コマンドモードで:!sh



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



使用します。



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



All Articles