Pertanyaan: Secara tidak sengaja saya telah menonaktifkan akun 'root' di mesin Virtual CentOS yang berjalan di VMWare. Setelah itu, saya mencoba semua cara yang mungkin untuk memulihkan akun 'root' dan akhirnya memutuskan untuk me-reboot VM dalam mode pengguna tunggal. Sayangnya, VM gagal melakukan booting dalam mode pengguna tunggal dan pesan error menunjukkan bahwa proses booting mengharapkan root akun dan prosesnya terhenti tanpa batas. Di bawah ini adalah tangkapan layar yang menjelaskan skenarionya:
Untuk memperbaiki masalah ini, saya harus mengedit /etc/passwd file dan aktifkan akun root. Untuk itu, saya memerlukan gambar disk Mesin Virtual – dalam kasus saya, VM berjalan di VMWare, jadi saya memerlukan vmdk berkas.
Solusi:
Dalam tutorial ini, saya akan menunjukkan cara menggunakan alat libguestfs untuk mengakses dan mengedit file Disk Image Virtual Machine (VM). Libguestfs adalah library C dengan seperangkat alat untuk melihat dan mengedit file di dalam guest, membuat perubahan pada VM, memantau penggunaan disk, mengkloning VM, memformat disk, mengubah ukuran disk, dan banyak lagi. Alat ini mampu membaca image disk VM dari CD, disk USB, dan juga dari jarak jauh melalui SSH.
Sebelum menggunakan libguestfs alat, bersiaplah dengan file gambar disk mesin virtual Anda. Libguestfs juga mendukung sistem berpemilik seperti VMware dan Hyper-V.
Instal alat libguestfs:
Di CentOS/Fedora/RHEL:
sudo yum install libguestfs-tools
Di Debian/Ubuntu:
sudo apt-get install libguestfs-tools
Seperti yang saya katakan sebelumnya, alat libguestfs dilengkapi dengan banyak perintah seperti guestfish, guestmount, guestunmount, virt-alignment-scan, virt-builder, virt-cat, virt-copy, virt-edit, virt-diff, virt-customize, virt -filesystem, virt-format, virt-get-kernel, virt-inspector, virt-list-filesystems, virt-list-partitions, virt-log, virt-ls, virt-make-fs, virt-p2v, virt-p2v -make-disk, virt-rescue, virt-tar dan banyak lagi. Namun kami akan menggunakan perintah guestfish – yang memungkinkan Anda mengakses dan memodifikasi image mesin virtual.
ikan tamu:
ikan tamu command dapat digunakan sebagai alat shell interaktif dan command-line. Perintah tersebut memungkinkan Anda untuk membuka citra disk dalam mode baca-saja (opsi –ro) dan baca-tulis (opsi –rw).
Caution: Make sure to shutdown the VM before using guesfish to access/modify the image.
Menggunakan guestfish sebagai cangkang interaktif:
# guestfish Welcome to guestfish, the libguestfs filesystem interactive shell for editing virtual machine filesystems. Type: 'help' for help on commands 'man' to read the manual 'quit' to quit the shell
Sekarang mari kita mengakses file gambar vmdk (misalnya test-flat.vmdk ).
><fs> add-ro test-flat.vmdk
Catatan: Cari perintah add-ro yang berarti, menambahkan atau mengakses gambar dalam mode read-only. Jika Anda ingin membuat perubahan pada gambar, maka Anda perlu membuka gambar dengan hak istimewa baca-tulis (kita akan melihatnya nanti).
Selalu jalankan jalankan perintah sebelum mendaftar sistem file dalam gambar disk seperti yang ditunjukkan di bawah ini:
><fs> run â 25% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠--:-â 50% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠00:3â 75% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠00:1 100% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠00:00
Perintah di atas akan memakan waktu cukup lama untuk membaca gambar. Setelah selesai, Anda dapat membuat daftar sistem file yang tersedia di disk seperti yang ditunjukkan di bawah ini:
><fs> list-filesystems /dev/vda1: ext4 /dev/VolGroup/lv_home: ext4 /dev/VolGroup/lv_root: ext4 /dev/VolGroup/lv_swap: swap
Sekarang, saya perlu me-mount /dev/VolGroup/lv_root untuk mengakses /etc/passwd .
><fs> mount /dev/VolGroup/lv_root /
Karena saya telah membuka gambar dalam mode hanya-baca, saya hanya dapat melihat /etc/passwd .
> cat /etc/passwd ::::::::::::::::::::::
Berikut cuplikan lengkapnya:
# guestfish Welcome to guestfish, the libguestfs filesystem interactive shell for editing virtual machine filesystems. Type: 'help' for help on commands 'man' to read the manual 'quit' to quit the shell
><fs> add-ro test-flat.vmdk ><fs> run â 50% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠--:-â 75% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠00:0 100% â¦âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ⧠00:00 ><fs> mount /dev/VolGroup/lv_root / ><fs> cat /etc/passwd :::::::::::::::::::::::::::::: ><fs> exit
Menggunakan guestfish sebagai perintah dan mengedit file:
# guestfish --rw --add test-flat.vmdk -i edit /etc/passwd
Cari opsi
- –rw – untuk membuka image disk VM dalam mode baca-tulis
- –tambahkan – menambahkan gambar 'test-flat.vmdk'
- -i – secara otomatis memasang disk dari citra mesin virtual
- edit – perintah untuk mengedit file
Perintah di atas akan memungkinkan Anda untuk mengedit file langsung dari gambar dan menyimpannya juga.
Beberapa contoh lainnya:
Asumsikan, Anda ingin memperbarui /etc/resolv.conf di tamu, lalu begini cara melakukannya.
# guestfish \
add disk.vmdk : run : mount /dev/VolGroup/lv_root / : \
write /etc/resolv.conf "nameserver 8.8.8.8"
Menggunakan guestfish untuk mengakses citra diska jarak jauh menggunakan ssh:
# guestfish -a ssh://somedomain.com/path/to/disk.vmdk
guestfish dapat membantu Anda melakukan keajaiban, jadi sebaiknya lihat halaman bantuannya.
# guestfish -N help
Itu dia. Lihat libguestfs.org untuk informasi lebih lanjut.