GNU/Linux >> Belajar Linux >  >> Linux

Linux – Apakah Mungkin Untuk Memasang Gambar Dari Jarak Jauh, Yang Dapat Mem-boot Dan Menginstal Sendiri?

Saya memiliki server jarak jauh, yang menjalankan Linux. Saya ingin menginstal image OS dari jarak jauh, untuk berjaga-jaga jika rusak (ini sudah terjadi dua kali saat saya bereksperimen dengan OS).

Sejauh ini, satu-satunya cara yang saya miliki adalah secara fisik pergi ke lokasi mesin dan menggunakan disk USB untuk memasang OS dan BIOS melihatnya, sehingga dapat melakukan booting darinya.

Apakah pada dasarnya ada cara untuk terhubung ke mesin melalui ssh , lampirkan gambar ini dan buat itu bertindak seperti itu akan berada di drive virtual di Windows (seperti alat daemon misalnya), sehingga akan bertahan untuk reboot dan memungkinkan saya untuk menginstal OS dari jarak jauh?

Saya sedang mencari solusi di Google, tetapi saya menemukan sesuatu yang menyebutkan boot PXE….yang terdengar rumit, karena Anda memerlukan server dan semacamnya, dan itu tidak sesederhana memasang gambar dan menyelesaikannya.

Di luar itu, saya tidak menemukan apa pun yang berguna, jadi saya cukup kekurangan opsi….adakah yang tahu cara melakukannya?

Jawaban yang Diterima:

Inilah situasi hipotetis yang saya anggap masuk akal:

  1. Mesin yang ditargetkan adalah EFI.
  2. grub tidak pernah diinstal pada target atau telah dihapus total dari sistem.
    • itu hanya dapat mengganggu dan tidak memberikan nilai apa pun.

Jadi yang mungkin kita lakukan dalam kasus di atas adalah mengonfigurasi opsi boot untuk gambar instalasi/penyelamatan kecil yang kita simpan di /esp kita. atau partisi sistem EFI.

Jika ada yang salah dengan instalasi kami saat ini, maka, selama kami setidaknya dapat mengakses partisi sistem EFI dengan beberapa cara, maka kami dapat menghubungkan firmware kami dan mengatur mesin untuk boot ke gambar pemulihan kami pada reboot berikutnya . Dalam hal ini yang harus kita lakukan adalah mengubah satu atau dua file teks, silangkan jari kita dan jalankan reboot now .

Berikut adalah kumpulan perintah dasar untuk Arch Linux (karena itulah yang saya gunakan) sistem yang masih bisa melakukan seperti yang saya jelaskan.

  • Pertama, kita akan membuat direktori kerja dan mendownload beberapa file.

    • Saya menggunakan aria2c di sini. Saya merekomendasikannya, tetapi gunakan apa pun yang berhasil.
    • Saya membuka zip rEFInd dengan 7za tetapi preferensi alat
      yang sama adalah milik Anda dalam semua kasus di sini.
    • Jika Anda tidak membaca ini dalam beberapa jam/hari setelah saya mempostingnya, maka ada kemungkinan besar bahwa tautan yang digunakan di bawah tidak saat ini.

      mkdir /tmp/work && cd /tmp/work || exit
      aria2c  'magnet:?xt=urn:btih:331c7fac2e13c251d77521d2dc61976b6fc4a033&dn=archlinux-2015.06.01-dual.iso&tr=udp://tracker.archlinux.org:6969&tr=http://tracker.archlinux.org:6969/announce' 
              'http://iweb.dl.sourceforge.net/project/refind/0.8.7/refind-cd-0.8.7.zip'
      7za x ref*.zip; rm ref*zip
      
  • Selanjutnya saya akan membuat image disk.

    • Saya menggunakan file di sini dengan perangkat loop, tetapi Anda mungkin ingin menggunakan disk yang sebenarnya jika Anda ingin mem-boot file ini dari firmware.
    • Dalam kasus perangkat yang sebenarnya fallocate dan losetup hal-hal dapat diabaikan dan nama perangkat yang sebenarnya akan jauh lebih mungkin
      sesuai dengan /dev/sda[12] dari /dev/loop0p[12]

      fallocate -l4G img
      
  • Sekarang saya akan mempartisi disk itu dengan gdisk utilitas dan menetapkannya ke perangkat loop.

    • Ini adalah pintasan skrip untuk opsi yang Anda inginkan untuk memberi makan program secara interaktif. Ini akan membuat tabel partisi GUID dan partisi tipe EFI-system yang mencakup 750Mib pertama yang tersedia dari disk target dan partisi default linux lainnya yang mencakup sisa disk.
      • Partisi ini akan menjadi /dev/sda1 dan /dev/sda2 masing-masing jika Anda menggunakan disk nyata, yang akan menjadi /dev/sda daripada ./img . Biasanya diinginkan untuk menambahkan lebih dari satu partisi untuk root linux, yang dianggap sebagai tujuan dari /dev/sda2 .
    • printf script atau tidak, gdisk program ini mudah digunakan – jadi sebaiknya Anda melakukannya secara interaktif. Disk target tidak boleh dipasang saat dijalankan, dan Anda mungkin memerlukan hak root untuk w tulis perubahannya.
    • Sebagai aturan umum, Anda dapat melakukan hampir semua yang Anda inginkan dalam program itu tanpa efek apa pun sampai Anda w ritus – jadi pastikan Anda melakukannya.
    • Saya akan memasukkan $TGT my dalam variabel shell. Kecuali definisinya di sini, yang mungkin ingin Anda sesuaikan seperlunya, di mana saya menggunakannya, Anda juga bisa.

      printf %s\n o y n 1 '' +750M ef00 
                       n 2 '' '' '' '' w y |
      gdisk ./img     >/dev/null
      TGT=$(sudo losetup --show -Pf img)p
      
  • Kami juga membutuhkan sistem file di esp. Itu pasti FAT.

    • Saya memberi label fs milik saya VESP . Anda harus memanggil milik Anda apa pun yang Anda inginkan.
    • Kami akan menggunakan label nanti di /etc/fstab dan file konfigurasi lainnya – jadi buatlah sesuatu.
    • Menurut pendapat saya, Anda harus selalu melabeli semua disk.
    • Jika Anda menginstal OS ke ${TGT}2 sekarang Anda tentu saja memerlukan sistem file untuk itu juga.

      sudo mkfs.vfat -nVESP "$TGT"1
      
  • Dan kita akan membuat beberapa mount direktori dan mulai mengekstrak file yang relevan.

    set     ref     ref*iso         
            arch    arch*iso        
            efi     arch/EFI/archiso/efiboot.img
    while   [ "$#" -gt 0 ]
    do      mkdir "$1" || exit
            sudo mount "$2" "$1"
            shift 2
    done;   mkdir esp
    
  • Instal rEFInd

    • rEFInd adalah boot manager – yang kebanyakan hanya menawarkan dan mengisi menu boot.
    • rEFInd akan meletakkan file konfigurasinya di esp dan ini dapat diedit kapan saja dan sesuka Anda.

      sudo ref/install.sh --usedefault "$TGT"1 &&
      sudo umount ref  && rm -rf ref*
      
  • Sekarang kita akan mount esp kami dan dapatkan file yang diperlukan dari disk instalasi Arch untuk mendapatkan disk penyelamatan yang dapat di-boot secara langsung.

    • Kebanyakan live disk menerapkan semacam peretasan jelek untuk membuat sistem file iso yang datar dan tidak dipartisi terlihat seperti perangkat boot yang dapat diterima ke sistem UEFI sambil tetap mempertahankan kompatibilitas mundur dengan sistem BIOS.
    • Tidak terkecuali Arch Linux.
    • peretasan jelek . ini apakah itu efiboot.img saat ini dipasang di ./efi . Di situlah kita akan menemukan file gambar kernel dan initramfs kita. lainnya yang ada di disk (di ./arch/arch/boot ) akan tidak bekerja untuk sistem EFI.

      sudo sh -ec    <<CONF '
           mount    "$1" esp
           cp -ar    efi/EFI/archiso esp/EFI
           cp -ar    arch/arch/*x86* esp/EFI/archiso
           mkdir     esp/EFI/archiso/cow
           xargs   > esp/EFI/archiso/refind_linux.conf
           umount    efi arch
           rm -rf    efi arch*' -- "$TGT"1
      "arch_iso" "archisobasedir=EFI/archiso    
                     archisolabel=VESP             
                     copytoram                     
                     cow_label=VESP                
                     cow_directory=/EFI/archiso/cow
                     cow_persistence=P             
                     cow_spacesize=384M            
                     initrd=EFI/archiso/archiso.img"
      CONF
      

Pada dasarnya Anda baru saja menginstal – dari awal – lingkungan penyelamatan pra-boot dengan copy-on-write yang persisten simpan file (jadi Anda mungkin, misalnya systemctl enable sshd_socket sekarang dan pengaturan akan tetap ada di boot sistem langsung berikutnya) . Media instalasi langsung Arch Linux sekarang berada di partisi boot sistem Anda dan dapat dipanggil dari menu boot kapan saja. Tentu saja, Anda juga menginstal pengelola menu boot.

  • Beberapa hal tentang hal di atas harus Anda perhatikan:
    • Saya menggunakan *x86* karena saya memiliki mesin 64-bit dan gumpalan itu mendapatkan apa yang saya butuhkan. Untuk instalasi 32-bit (tapi kenapa?) gunakan *686* sebagai gantinya.
      • Yang saya butuhkan , omong-omong, totalnya hanya 7 file dan sekitar 300 juta.
      • Akar sistem langsung adalah gambar terjepit di esp/EFI/archiso/x86_64/airootfs.sfs .
    • Saya menentukan disk berdasarkan label. Tidak ada petunjuk atau omong kosong semacam itu – disk diberi nama sehingga mudah ditemukan. Anda harus mengganti apa pun yang Anda pilih untuk label esp alih-alih VESP .
    • copytoram parameter kernel menginstruksikan Arch Linux live init sistem untuk menyalin gambar rootfs-nya ke dalam tmpfs sebelum melakukan loopmounting – yang membebaskan Anda sebenarnya untuk mengakses esp saat bekerja di lingkungan itu. Sebagian besar sistem pemasangan langsung menawarkan konstruksi yang diatur serupa.
Terkait:Kehabisan ruang disk di /usr/ports partisi, bagaimana saya bisa membangun port?

Keunggulan EFI adalah kemampuannya untuk menangani filesystem . Pada komputer modern sama sekali tidak perlu mengemas beberapa biner mentah dan menempatkannya di antara partisi disk Anda. Saya heran bahwa orang-orang masih melakukannya, ketika, sebaliknya, mereka dapat mengelola dan mengonfigurasi lingkungan boot mereka dengan file teks sederhana yang diatur dalam pohon direktori biasa sehari-hari. Di atas saya meletakkan kernel dan initramfs di folder bernama mereka sendiri di struktur pohon pusat. EFI – yang akan mengambil isyarat dari rEFInd dalam hal ini untuk kenyamanan – akan memanggilnya saat boot dengan pathname karena terpasang khususnya

Sekarang yang tersisa untuk dilakukan adalah memastikan Anda memahami cara memilih sistem yang akan benar-benar boot saat Anda membutuhkannya. Pahami – Anda dapat mem-boot ini sekarang. Anda dapat melakukannya di mesin virtual w/ qemu (Anda membutuhkan OVMF -pflash firmware) atau Anda dapat me-reboot komputer Anda dan rEFInd akan mendeteksi kernel dan meneruskan nama pathnya ke firmware yang akan memuat dan menjalankan sistem live Arch Linux. Saat Anda menginstal sistem yang lebih permanen pada disk – atau beberapa (yang dapat Anda lakukan sekarang jika Anda memilihnya dengan me-reboot ke live disk dan melakukan penginstalan) – Anda ingin menjaga kernel dan initramfnya dalam struktur yang sama. Ini sangat mudah diatur.

  • Jika, misalnya, Anda menginstal sistem pada partisi root bernama, karena kurangnya imajinasi, root , Anda ingin mengaturnya seperti ini:

    • mount --bind folder boot khusus di atas root /boot jalur di /etc/fstab .
    • Anda membutuhkan dua baris di /etc/fstab dan untuk membuat titik mount di /esp untuk menangani ini.

      sudo sh -c          <<FSTAB     '
           [ -d /esp ]    || mkdir /esp
           findmnt   /esp || mount -L ESP /esp
           mkdir -p  /esp/EFI/root
           cp        /boot/kernel binary   
                     /boot/initramfs.img   
                     /esp/EFI/root
           mount -B  /esp/EFI/root /boot
           cat   >>  /etc/fstab
           echo "$1">/boot/refind_linux.conf
      ' -- '"new_menu_item" "root=LABEL=root"'
      LABEL=ESP       /esp    vfat    defaults        0 2
      /esp/EFI/root   /boot   none    bind,defaults   0 0
      FSTAB
      

Anda hanya perlu melakukan hal seperti itu sekali per instalasi – dan itu dengan asumsi Anda tidak mengaturnya sejak awal – yang lebih mudah karena kernel dan initramfs sudah berada di tempatnya. Setelah Anda mendapatkan baris tersebut di /etc/fstab dan file konfigurasi minimal di /boot/refind_linux.conf Anda siap untuk selamanya. Anda dapat mendukung instalasi sebanyak yang Anda suka pada sistem yang sama dengan /esp yang sama perangkat dan memusatkan semua binari yang dapat di-boot di pohon yang sama begitu saja. Sistem
yang berbeda akan melakukan hal-hal yang sedikit berbeda – Windows membutuhkan sedikit lebih banyak bujukan untuk menyesuaikannya, misalnya – tetapi mereka semuanya akan berfungsi .

  • Ok, hal terakhir yang perlu Anda ketahui, seperti yang saya katakan sebelumnya, adalah bagaimana memilih instalasi boot berikutnya dari sistem file. Ini dikonfigurasi dalam file /esp/EFI/BOOT/refind.conf .

    • Anda harus membaca file ini – mungkin 99% komentar dan akan memberi tahu Anda semua tentang apa yang mungkin Anda lakukan dengannya.
    • Tentu saja, Anda tidak perlu melakukan apa pun – secara default rEFInd akan mem-boot kernel yang paling baru diperbarui di pohon pindaiannya.
    • Tapi saya biasanya akhirnya menyetel opsi berikut:

      <<DEF sudo tee 
             /esp/EFI/BOOT/refind.conf.def
      ### refind.conf.def
      ### when renamed to refind.conf this file
      ### will cause refind to select by default
      ### the menu item called "new_menu_item"
      ### in its /boot/refind_linux.conf
      default_selection new_menu_item
      ### this file will also set the menu timeout
      ### to only 5 seconds at every boot
      timeout 5
      ### END
      DEF
      
    • Dan file penyelamatan…

      <<RES sudo tee 
             /esp/EFI/BOOT/refind.conf.res
      ### refind.conf.res
      ### this one will default to selecting
      ### the entry named "arch_iso" with a
      ### 10 second timeout
      default_selection arch_iso
      timeout 10
      ### END
      RES
      
      • Jadi sekarang Anda bisa memindahkannya.
      • Misalnya, untuk membuat rescue environment pasti boot setelah Anda melakukan reboot now
      sudo cp /esp/EFI/BOOT/refind.conf.res 
              /esp/EFI/BOOT/refind.conf
      
      • Dan gantikan .def untuk .res digunakan di atas, tentu saja, untuk kembali ke root default.
Terkait:instal Ubuntu dari file ISO di Windows?
Linux
  1. Editor Linux yang dapat menyorot semua contoh kata yang dipilih

  2. Apakah mungkin mem-boot kernel Linux tanpa membuat gambar initrd?

  3. Mungkinkah deskriptor file linux 0 1 2 bukan untuk stdin, stdout dan stderr?

  1. Bisakah saya mem-boot Linux dari VHD?

  2. Bisakah Linux me-mount direktori disk image bundel Time Machine yang jarang?

  3. Bagaimana saya bisa memasang gambar disk?

  1. Instal Linux Mint dengan Windows 8 | Dual Boot Windows 8 dan Linux Mint 12

  2. Linux – Mengkompilasi Dan Menginstal Kernel.org Kernel Ke Volume Kustom Pada Disk?

  3. Apakah mungkin mem-boot Linux dari disk GPT pada sistem BIOS?