LinuxをMacbook用の1つのファイルに





TL; DR initramfsをルートファイルシステムとともにカーネルにコンパイルすると、本格的なLinux Liveディストリビューションを単一のファイルに収めることができます。 UEFIを搭載したコンピューターは、GRUBなどのブートローダーの助けを借りずに、このようなファイルを直接読み込むことができます。 aircrack-ng、reaver 、Wi-Fiカード用のドライバーのプログラムを12メガバイトのサイズのファイルに収めることができました(確かにさらに小さくすることもできます)。



主な利点





なぜこれが必要なのですか?



仮想マシンなしのネイティブLinuxが必要なすべての場合。

Linuxで仮想マシンに転送できないときにPCIeデバイスを使用するため。 たとえば、パケットインジェクション用の組み込みWi-Fiカード。 仮想マシンをインストールして配布キット付きの大きなISOファイルをダウンロードするのが面倒な場合。 USBフラッシュドライブを台無しにしたくない場合。

コピーしたファイルを使用すると、常にLinuxディストリビューションを手元に置くことができ、システムを再インストールしても存続します。



Macのインストール手順



すべてのコマンドはmacOSから実行する必要があります。



ブート構成は重要ではありません。この方法は、BootCamp、rEFInd、およびその他の非標準構成の動作に干渉しません。 2009年以前のMacコンピューターがサポートされています(パフォーマンスは古いコンピューターではテストされていませんが、動作する可能性があります)。



  1. ファイルOneFileLinux.efiのダウンロード(20メガバイト)
  2. EFIパーティションをシステムにマウントします。



    diskutil mount disk__
          
          





    diskutil listコマンドでEFIパーティション番号を見つけることができます。





    私の場合、コマンドは次のようになります。

     diskutil mount disk0s1
          
          





  3. OneFileLinux.efiをEFIセクションにコピーします



     cp ~/Downloads/OneFileLinux.efi /Volumes/EFI/
          
          





  4. NVRAMにブートオプションを追加する



     bless --mount /Volumes/EFI --setBoot --nextonly --file /Volumes/EFI/OneFileLinux.efi
          
          





    nextonlyオプションは、このダウンロードオプションが1回実行されることを意味します。 次回の再起動により、以前の設定が復元されます。 したがって、LinuxからmacOSに戻るには、再起動するだけです。



El Capitan以降のmacOSの最近のバージョンでは、 System Integrity Protection(SIP)テクノロジー、いわゆる「ルートモードなし」を使用しています。 このテクノロジーは、スーパーユーザーに対してもシステムファイルと変数の変更を禁止しています。 SIPはデフォルトで有効になっているため、最後のblessコマンドはエラーを返します。 リカバリモードから実行できます。 これを行うには、コンピューターの電源を入れてコンソールを開くときにcmd + Rを押し続けます

ユーティリティ->ターミナル 。 コンソールで、手順2と4を実行します。Recoverコンソールのコマンドは、 sudoなしで入力する必要があります。


これで、OneFileLinux.efiをダウンロードする必要があるたびに、回復コンソールの手順2と4、またはSIPがオフの場合はメインシステムから手順を実行するだけで十分です。

おそらくパーティションをマウントせずに祝福を行うことができますが、私はこれを行う方法を見つけていません。 その後、1つのチームで十分です。



PC命令



PCには多くのダウンロードオプションがあります。 マザーボードにUEFIシェルが組み込まれている場合は、OneFileLinux.efiファイルへのパスを指定するだけで、Linuxを1回起動できます。 Thinkpad X220のセットアッププロセスについて説明します。



  1. OneFileLinux.efiをダウンロードして、EFIセクションに配置します
  2. NVRAMにブートオプションを追加する



     efibootmgr --disk /dev/sda --part 2 --create --label "One File Linux" --loader /OneFileLinux.efi
          
          



  3. 起動中にF12を押して、必要なオプションを選択します。







ソースからの組立説明書



github.com/zhovner/OneFileLinuxプロジェクトのソース

ディストリビューションは、kernel.orgおよびAlpine Linux Mini Root filesystemからのクリーンな4.16-rc1カーネルでコンパイルされます

自分で簡単に組み立てることができます。



initramfsの準備



Initramfsは、カーネルの起動時にメモリにマウントされるディスクイメージです。 通常の配布では、ロードの初期段階で必要なドライバーがそこに配置されます。 そこに本格的なルートファイルシステムを配置できます。



Alpine Linuxのルートファイルシステムを使用しました。 これは、組み込みシステムおよびコンテナ用の最小限のディストリビューションです。 彼には、カーネルとプリインストールされたプログラムなしで、busyboxベースのルートファイルシステムとapkパッケージマネージャーのみの配信オプションがあります。



alpine linuxのchroot:



 chroot ./alpine-minirootfs /bin/ash
      
      





環境内にいると、必要な変更を加えることができます。 apk addでパッケージを追加し、openrcを使用してサービスを変更します。



必要な情報はすべてwikiにあります



組立



ビルドスクリプトを実行します。 カーネルモジュールをコンパイルし、initramfsに配置して、カーネルをコンパイルします。

 ./build.sh
      
      







ヘルプ!! 111









現時点では、ディストリビューションはかなり曲がっています。 Linuxを知っているなら、どんな助けでも本当に感謝します。 このプロジェクトを受け入れ可能なレベルまで仕上げることができればクールです。



既知の問題:





github.com/zhovner/OneFileLinuxの問題についてコミットし、問題を作成するよう皆に招待します。



All Articles