tl; dr - Apakah mungkin untuk boot dari file .iso yang terletak di volume logis lmv2 yang tidak terenkripsi? Bagaimana?
Saya mencoba mengatur ini di VM VirtualBox sebelum saya melakukannya dengan laptop saya. Saya memiliki pengaturan berikut:
- 4 partisi gpt
- gpt1 - 2M ef02 booting bios
- gpt2 - 5G non-lvm tidak terenkripsi, untuk data misc, iso, dll.
- gpt3 - 5G lvm tidak terenkripsi, untuk / boot, iso, dll.
- gpt4 - tersisa, lvm, dienkripsi dengan dm-crypt / luks, untuk root, swap, home, dll.
- di gpt2, saya punya salinan Arch dan Xubuntu iso saat ini
- di gpt3, saya punya lvm2 lv dengan salinan yang sama dari iso yang sama
Saya memiliki yang berikut ini:
- di gpt4, berfungsi menginstal Arch dan Xubuntu (dan ingin menambahkan distro lain dalam volume logis lain di beberapa titik)
- grub2 diinstal dari Arch on / dev / sda
- menggunakan perintah configfile grub2, dapat berganti dan mem-boot dari menu grub2 kedua distro
- dapat mem-boot iso dari menu grub dari non-lvm gpt2
Apa yang ingin saya lakukan adalah boot dari iso di gpt3 lvm (dan akhirnya, bahkan tidak memiliki partisi gpt2 non-lvm sama sekali).
Entri grub saya adalah:
menuentry "Xubuntu ISO" {
set isofile="/xubuntu-12.04.1-desktop-amd64.iso"
# from non-lvm
loopback loop (hd0,gpt2)$isofile
# from lvm
#loopback loop (vgboot-iso)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd.lz
}
2 garis loopback menunjuk ke 2 salinan berbeda dari iso yang sama. Saya telah memverifikasi di baris perintah grub bahwa kedua jalur loopback berfungsi.
Saat mem-boot dari iso di partisi non-lvm, semuanya bekerja dengan baik.
Saat mem-boot dari iso di partisi lvm, boot akan dimulai, dan akhirnya mendapatkan kesalahan ini:
(initramfs) /scripts/casper-premount/20iso_scan: line 46: can't open /dev/sr0: No medium found
Untuk entri lengkungan:
menuentry "Arch ISO" {
set isofile="/archlinux-2012.09.07-dual.iso"
loopback loop (hd0,gpt2)$isofile
#loopback loop (vgboot-iso)$isofile
linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=ARCH_201209 img_dev=/dev/sda2 img_loop=$isofile earlymodules=loop
initrd (loop)/arch/boot/x86_64/archiso.img
}
booting dari gpt2 iso berfungsi, tapi saya tidak tahu harus mengubah apa "/ dev / sda2" menjadi untuk boot lvm.
EDIT: Bisakah ini dilakukan? Untuk file .iso resmi distro Linux apa saja saat ini? Fedora? Debian? openSUSE? CentOS?
Apakah ini tidak mungkin? Atau apakah ini sesuatu yang belum pernah dicoba sebelumnya?
EDIT2: Karunia saya telah lama berakhir, dan setelah 9 bulan, saya berasumsi ini tidak mungkin dilakukan dengan distro Linux mana pun. Saya akan membiarkan pertanyaan terbuka, tapi saya ragu akan ada solusi yang berfungsi kapan saja dalam waktu dekat.
search
adalah salah satu volume logis yang berisi file iso, kan? Untuk mendapatkannya, Anda harus melakukannyasudo blkid
.Terinspirasi oleh solusi sederhana ini untuk Ubuntu , saya menggunakan yang berikut ini, yang berfungsi untuk memuat iso Fedora 27 KDE dan iso Ubuntu 17.10.
Saya baru saja menambahkan baris berikut dalam file
/etc/grub.d/40_custom
Penjelasan
set iso_path
mendefinisikan path, di mana file iso dapat ditemukan pada volume logis. Ketika saya memulai sistem saya, itu terletak di/home/erik/Downloads/transmission/Fedora-KDE-Live-x86_64-27/Fedora-KDE-Live-x86_64-27-1.6.iso"
, tetapi/home
volume logis yang dipasang, jadi saya meninggalkan ini dan memulai jalan dengan/erik/Downloads/…
Baris yang diawali dengan
search
memiliki variabel alfanumerik yang aneh (yang disebut UUID) di akhir, yang dimulai dengan6340
. Saya mendapat nomor ini dari perintahyang memberi saya, di sepanjang yang lain, baris berikut
Kemudian, hal penting lainnya jika Anda ingin mem-boot file iso lainnya, adalah baris yang dimulai dengan
linux
daninitrd
. Saya mendapatkannya dengan membuka file iso denganfile-roller
(gui untuk mengekstrak arsip terkompresi) ataumc
(file manager konsol).Fedora dan sejenisnya: Di sana Anda pergi ke direktori
/isolinux
, di mana Anda akan menemukan file bernamaisolinux.cfg
. Di sana saya menemukan beberapa garis yang dimulai denganlabel
, dan di bawahnya ada garis-garis penting berikutyang akan Anda gunakan untuk mengisi dua baris terakhir dari grub2 saya
menuentry
.Ubuntu dan sejenisnya: Di sana Anda pergi ke direktori
/boot/grub
, di mana Anda akan menemukan file bernamagrub.cfg
. Di sini Anda akan menemukan beberapa baris yang diawali denganmenuentry
, dan di bawahnya ada beberapa baris penting berikutyang bisa Anda salin.
sumber
Saya pikir itu tidak mungkin untuk file iso resmi sebagian besar distribusi.
Kesalahan yang Anda dapatkan:
berarti saat boot, sistem live yang Anda mulai mencari cd / dvd drive dan tidak menemukan apa pun.
Live CD tidak dikonfigurasikan untuk mencari iso sumbernya di LVM; Anda mungkin dapat memodifikasi skrip boot dari gambar untuk melakukannya, tetapi saya tidak berpikir ada file .iso distro resmi saat ini yang melakukannya. Anda dapat mencoba menghubungi pengembang distro favorit Anda untuk memiliki yang terintegrasi mungkin?
sumber
Anda bisa mencoba ini:
Tambahkan ini di awal menu masuk:
Kemudian, tentukan partisi LVM Anda dengan:
Jadi entri ISO Xubuntu Anda akan seperti ini:
Harap perbaiki seperlunya.
Ini seharusnya membuat GRUB mengenali volume lvm2, sehingga memungkinkan untuk membaca file ISO di dalamnya. Namun, mungkin ISO masih tidak akan ditemukan ...
sumber
Hanya satu titik di atasnya:
ISO saat boot harus me-mount iso, jadi harus tahu cara menemukannya.
Grub2 dapat melihat perintah ISO dengan insmod ..., tetapi itu membuat tidak ada yang lain selain membiarkan Grub2 membaca di dalam ISO, loop mount, dll, tetapi begitu Linux di dalam ISO memulai LVM / LUKS / loop / etc adalah tidak ada di sana (tidak dipasang), skrip boot di dalam ISO harus tahu cara me-mount LVM / LUKS / loop; jadi jika Linux itu tidak siap untuk melakukannya, itu tidak akan mungkin untuk boot dari itu.
Contoh tanpa LVM, LUKS, dll ... jika Linux LiveCD ISO normal tidak dirancang untuk mencari dan me-mount loop ke file iso saat boot, itu tidak akan pernah mungkin untuk boot ke dalamnya dari Grub2 (dengan .iso sebagai mengajukan).
Untuk kasus seperti itu, Anda memerlukan emulator CD / DVD perangkat keras (jika menggunakan perangkat keras nyata), atau cukup pasang .iso pada unit CD / DVD Virtual mesin Virtual.
Pilihan lain, tentu saja, adalah 'mengedit' ISO tersebut untuk menggabungkan saat boot beberapa skrip untuk mencari dan me-mount LVM / LUKS / dll.
sumber