ライブディスクからシステムを実行している間にisoから起動する方法はありますか?

ライブディスクからシステムを実行している間にisoから起動する方法はありますか?

これはやや複雑な質問です。何を期待すべきかを説明しましょう。

menuentryGRUBファイルとISOファイルの場所を追加し、GRUBエントリを使用してISOから起動できることを知っています。 (つまりこれ方法)

しかし、仮定しましょう:

  • マイコンピュータ(ハードドライブ)には、GNU / Linux(Trisquel 7.0など)のISOファイルが保存されています。/dev/sda3/
  • にインストールしたい/dev/sda4
  • ライブシステムをインストールまたは試すことができるUbuntu 14.04インストール(起動可能)ディスクがあります。
  • 現在、OSがインストールされていないか、インストールされているシステムがクラッシュ/破損しています(現在のブートローダには関係ありません)。

問題は、インストールディスクを使用してライブ環境を実行している場合(たとえば、Ubuntu 14.04をインストールせずにインストールする場合)、ISO(Trisquel 7.0)から起動して/dev/sda3システムをインストールできますか/dev/sda4?どうすればいいですか?

注:インストールするシステムのISOでライブディスク/ USBを作成/書き込みする方が良いことに同意します。しかし、現在利用可能なディスク/ USBがない場合は、上記の操作を実行できますか?

可能な技術があると思います。ライブ環境(Ubuntu's)でHDDにGRUBをインストールし、最終的に起動したいISO(Trisquel)のパスを指定します!どのように?

答え1

仮想マシンでテストします。 Trisquel Live ISO(ハードドライブ上)から起動するには、この方法を使用します。

必要な手順は次のとおりです。

  1. Ubuntu Liveディスクから起動したら、インストールプロセスを開始します。/dev/sda4動作し、起動可能なGRUBを取得するには、少なくともシステムを最小限にインストールする必要があります。ただし、インストール全体が簡単です(非常に高速です)。

    1.a.インストールを変更のみに制限してください/dev/sda4。これを行うには、ハードドライブの設定を求められたら、「その他」を選択する必要があります。

  2. インストールされたシステムから起動し、新しいGRUBが正常に動作していることをテストします。

    2.a.メモ:UbuntuでGRUBメニューを表示するには、システムの起動を押し続けますShiftこの問題起動するたびにGRUBメニューを表示する方法についての説明が含まれています。

  3. ここで説明されているように、必須メニュー項目を追加する必要があります。この方法あなたが言及したこと。次への適応を提供します。

    3.a.私はTrisquel ISOがルートディレクトリにあると仮定します/dev/sda3/

    ISOイメージのメニュー項目を/etc/grub.d/40_customファイルに追加する必要があります。以下でファイルを編集します。

    sudo apt-get install gksu
    gksudo gedit /etc/grub.d/40_custom
    

    そのファイルのテキストを次のテキストに置き換えます。

    #!/bin/sh
    exec tail -n +3 $0
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    
    menuentry "Trisquel ISO" {
            set isofile="/trisquel_7.0_amd64.iso"
            loopback loop (hd0,3)$isofile
            linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
            initrd (loop)/casper/initrd
    }
    

    どこ:

    • Trisquel ISO= Grub メニューに表示する名前です。
    • /trisquel_7.0_amd64.iso=ターゲットパーティションのISOイメージパス。
    • (hd0,3)= ISOイメージを含むパーティション(GRUBの場合、/dev/sda3Linuxでは「sda1」== "(hd0,1)"; "sdb2" == "(hd1,2)"; ...)と同じです。
    • 注:これはtail -n +3「grubが構成の読み取りを開始する行」です。この例の3行は最初のコメント行で、これは良いです。

    3.b.このファイルを保存して閉じてから、次のコマンドを実行します(変更を適用するには)。

    sudo update-grub
    
  4. これで、ハードドライブのISOから起動できます。
    メモ:インストール中に必要な場合は、/dev/sda3Live CD 環境で次のコマンドを使用します。

    sudo umount -l /isodevice
    

追加資料:引用するそしてはいUbuntuメニュー項目。

答え2

私はキックスタートベースのディストリビューションでこれを達成できましたが、他のディストリビューションでも機能します。 isoをマウントしてファイルを取り出します。 cat .....isolinux/initrd.img cpio -idm キックスタートファイルを修正して新しいファイルに保存します。

これでトリッキーな部分は... isoをインポートして新しいinitrdツリー(元のinitrd.imgからコピー)に配置し、dracutを使用して「losetup」を含むデバイスファイルを生成するスクリプトを挿入することです。早く始めましょう。次に、ブートパラメータ inst.repo=hd:/dev/loop9(ループ) を使用し、inst.ks=file:////(キックスタートファイル.. 利用可能な場合は iso から抽出された可能性があります) を使用します。 。

その後、kexec -lを使用して新しいinitramfsとカーネルをロードして再起動すると、isoがロード/ブートされます。

私は主にa)完了でき、b)私の経験では非常に複雑であることを確認するために、この答えをここに投稿しています。

関連情報