ພາສາອັງກິດພາສາຝຣັ່ງແອສປາໂຍນ

Ad


OnWorks favicon

guestfs-faq - ອອນລາຍໃນຄລາວ

ເປີດໃຊ້ guestfs-faq ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີຜ່ານ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ນີ້ແມ່ນຄໍາສັ່ງ guestfs-faq ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


guestfs-faq - libguestfs ຄຳຖາມທີ່ຖາມເລື້ອຍໆ (FAQ)

ກ່ຽວກັບ LIBGUESTFS


ແມ່ນ​ຫຍັງ is libguestfs?
libguestfs ເປັນວິທີການສ້າງ, ເຂົ້າເຖິງ ແລະແກ້ໄຂຮູບພາບແຜ່ນ. ທ່ານສາມາດເບິ່ງພາຍໃນແຜ່ນ
ຮູບ​ພາບ​, ປັບ​ປຸງ​ແກ້​ໄຂ​ໄຟລ​໌​ທີ່​ເຂົາ​ເຈົ້າ​ມີ​, ສ້າງ​ໃຫ້​ເຂົາ​ເຈົ້າ​ຈາກ scratch​, ປັບ​ຂະ​ຫນາດ​ໃຫ້​ເຂົາ​ເຈົ້າ​, ແລະ​ຫຼາຍ​
ເພີ່ມເຕີມ. ມັນເປັນປະໂຫຍດໂດຍສະເພາະຈາກສະຄິບແລະໂປຼແກຼມຕ່າງໆແລະຈາກເສັ້ນຄໍາສັ່ງ.

libguestfs ເປັນຫ້ອງສະຫມຸດ C (ເພາະສະນັ້ນ "lib-"), ແລະຊຸດຂອງເຄື່ອງມືທີ່ສ້າງຂຶ້ນໃນຫ້ອງສະຫມຸດນີ້, ແລະ
ການຜູກມັດສໍາລັບພາສາການຂຽນໂປລແກລມທົ່ວໄປຫຼາຍ.

ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບສິ່ງທີ່ libguestfs ສາມາດອ່ານບົດແນະນໍາໃນຫນ້າທໍາອິດ
(http://libguestfs.org).

ແມ່ນ​ຫຍັງ ມີ ໄດ້ ຄຸນນະ ທຳ ເຄື່ອງມື?
ເຄື່ອງມື Virt (ເວັບໄຊທ໌: http://virt-tools.org) ແມ່ນຊຸດການຈັດການ virtualization ທັງໝົດ
ເຄື່ອງມືທີ່ແນໃສ່ຜູ້ບໍລິຫານລະບົບ. ບາງສ່ວນຂອງພວກເຂົາມາຈາກ libguestfs, ບາງຄົນມາຈາກ
libvirt ແລະອື່ນໆຈໍານວນຫຼາຍຈາກໂຄງການແຫຼ່ງເປີດອື່ນໆ. ດັ່ງນັ້ນເຄື່ອງມື virt ແມ່ນ superset ຂອງ
libguestfs. ຢ່າງໃດກໍຕາມ libguestfs ມາພ້ອມກັບເຄື່ອງມືທີ່ສໍາຄັນຫຼາຍ. ເບິ່ງ
http://libguestfs.org ສໍາລັບບັນຊີລາຍຊື່ເຕັມ.

ບໍ່ libguestfs ຕ້ອງການ { ເສລີພາບ / KVM / ສີ​ແດງ ຫມວກກັນກະທົບ / Fedora }?
ບໍ່ມີ!

libvirt ບໍ່ແມ່ນຄວາມຕ້ອງການສໍາລັບ libguestfs.

libguestfs ເຮັດ​ວຽກ​ຮ່ວມ​ກັບ​ຮູບ​ພາບ​ແຜ່ນ​ໃດ​ຫນຶ່ງ​, ລວມ​ທັງ​ການ​ສ້າງ​ຕັ້ງ​ຂື້ນ​ໃນ VMware​, KVM​, qemu​,
VirtualBox, Xen, ແລະ hypervisors ອື່ນໆຈໍານວນຫຼາຍ, ແລະອັນທີ່ທ່ານໄດ້ສ້າງຕັ້ງແຕ່ເລີ່ມຕົ້ນ.

ຜູ້ສະຫນັບສະຫນູນ Red Hat (ie. ຈ່າຍສໍາລັບ) ການພັດທະນາ libguestfs ແລະຈໍານວນຂະຫນາດໃຫຍ່ຂອງການເປີດອື່ນໆ.
ໂຄງການແຫຼ່ງ. ແຕ່ທ່ານສາມາດດໍາເນີນການ libguestfs ແລະເຄື່ອງມື virt ໃນ Linux ທີ່ແຕກຕ່າງກັນຫຼາຍ
distros ແລະ Mac OS X. ພວກເຮົາພະຍາຍາມສຸດຄວາມສາມາດຂອງພວກເຮົາເພື່ອສະຫນັບສະຫນູນ Linux distros ທັງຫມົດເປັນຊັ້ນທໍາອິດ
ພົນລະເມືອງ. ບາງເຄື່ອງມື virt ໄດ້ຖືກ ported ກັບ Windows.

ວິທີການ ບໍ່ libguestfs ປຽບທຽບ to ອື່ນໆ ເຄື່ອງມື?
ທຽບ kpartx
Libguestfs ໃຊ້ວິທີທີ່ແຕກຕ່າງກັນຈາກ kpartx. kpartx ຕ້ອງການຮາກ, ແລະ mounts
ລະບົບໄຟລ໌ຢູ່ໃນໂຮດ kernel (ເຊິ່ງສາມາດບໍ່ປອດໄພ - ເບິ່ງ guestfs-ຄວາມປອດໄພ(1)).
Libguestfs ແຍກ kernel ເຈົ້າພາບຂອງເຈົ້າອອກຈາກແຂກ, ມີຄວາມຍືດຫຍຸ່ນຫຼາຍ, ສາມາດຂຽນໄດ້,
ຮອງຮັບ LVM, ບໍ່ຕ້ອງການຮາກ, ຖືກແຍກອອກຈາກຂະບວນການອື່ນໆ, ແລະເຮັດຄວາມສະອາດ
ຫຼັງຈາກຕົວມັນເອງ. Libguestfs ແມ່ນຫຼາຍກ່ວາພຽງແຕ່ການເຂົ້າເຖິງໄຟລ໌ເພາະວ່າທ່ານສາມາດນໍາໃຊ້ມັນ
ສ້າງຮູບພາບຈາກ scratch.

ທຽບ vdfuse
vdfuse ແມ່ນຄ້າຍຄື kpartx ແຕ່ສໍາລັບຮູບພາບ VirtualBox. ເບິ່ງການປຽບທຽບ kpartx ຂ້າງເທິງ.
ທ່ານສາມາດນໍາໃຊ້ libguestfs ໃນໄຟລ໌ການແບ່ງປັນທີ່ເປີດເຜີຍໂດຍ vdfuse, ເຖິງແມ່ນວ່າມັນບໍ່ແມ່ນ
ມີຄວາມຈໍາເປັນນັບຕັ້ງແຕ່ libguestfs ສາມາດເຂົ້າເຖິງຮູບພາບ VirtualBox ໂດຍກົງ.

ທຽບ qemu-nbd
NBD (Network Block Device) ເປັນໂປຣໂຕຄໍເພື່ອສົ່ງອອກອຸປະກອນບລັອກຜ່ານເຄືອຂ່າຍ.
qemu-nbd ເປັນເຊີບເວີ NBD ທີ່ສາມາດຈັດການຮູບແບບດິສກ໌ໃດນຶ່ງທີ່ຮອງຮັບໂດຍ qemu (ຕົວຢ່າງ: ດິບ,
qcow2). ທ່ານສາມາດນໍາໃຊ້ libguestfs ແລະ qemu-nbd ຫຼື nbdkit ຮ່ວມກັນເພື່ອເຂົ້າເຖິງບລັອກ
ອຸປະກອນຜ່ານເຄືອຂ່າຍ, ຕົວຢ່າງ: "guestfish -a nbd://remote"

ທຽບ ການຕິດຕັ້ງ ລະບົບໄຟລ in ໄດ້ ເຈົ້າພາບ
ການ​ຕິດ​ຕັ້ງ​ລະ​ບົບ​ໄຟລ​໌​ແຂກ​ຢູ່​ໃນ​ເຈົ້າ​ພາບ​ແມ່ນ​ບໍ່​ປອດ​ໄພ​ແລະ​ຄວນ​ຈະ​ຫຼີກ​ເວັ້ນ​ການ​ຢ່າງ​ສົມ​ບູນ​
ສໍາລັບແຂກທີ່ບໍ່ເຊື່ອຖື. ໃຊ້ libguestfs ເພື່ອສະຫນອງຊັ້ນຂອງການປົກປ້ອງຕໍ່ຕ້ານ
ການຂູດຮີດລະບົບໄຟລ໌. ເບິ່ງນຳ ແຂກ(1).

ທຽບ ພາກສ່ວນ
Libguestfs ຮອງຮັບ LVM. Libguestfs ໃຊ້ການແບ່ງສ່ວນ ແລະໃຫ້ຄຸນສົມບັດທີ່ແຍກກັນຫຼາຍທີ່ສຸດ
ຜ່ານ libguestfs API.

ກຳ ລັງໄດ້ຮັບ ຊ່ວຍ​ເຫຼືອ ແລະ ການລາຍງານ ບັກ


ວິທີການ do I ຮູ້ ແມ່ນ​ຫຍັງ ສະບັບພາສາ ຂ້ອຍ ໃຊ້?
ວິ​ທີ​ທີ່​ງ່າຍ​ທີ່​ສຸດ​ແມ່ນ​:

Guestfish -- ສະບັບ

ການພັດທະນາ Libguestfs ເກີດຂຶ້ນຕາມສາຂາທີ່ບໍ່ຫມັ້ນຄົງແລະພວກເຮົາສ້າງເປັນແຕ່ລະໄລຍະ
ສາຂາທີ່ຫມັ້ນຄົງທີ່ພວກເຮົາ backport patches ຄົງທີ່. ເພື່ອຊອກຫາເພີ່ມເຕີມ, ອ່ານ "LIBGUESTFS
VERSION NUMBERS" ໃນ ແຂກ(3).

ວິທີການ ສາມາດເຮັດໄດ້ I ໄດ້ຮັບ ຊ່ວຍເຫຼືອ?
ແມ່ນ​ຫຍັງ ທາງໄປສະນີ ລາຍການ or ສົນທະນາ ຫ້ອງ ມີ ມີບໍ?
ຖ້າທ່ານເປັນລູກຄ້າ Red Hat ທີ່ໃຊ້ Red Hat Enterprise Linux, ກະລຸນາຕິດຕໍ່
Red Hat ສະ​ຫນັບ​ສະ​ຫນູນ​: http://redhat.com/support

ມີບັນຊີລາຍຊື່ທາງໄປສະນີ, ສ່ວນໃຫຍ່ແມ່ນສໍາລັບການພັດທະນາ, ແຕ່ຜູ້ໃຊ້ຍັງຍິນດີຕ້ອນຮັບຖາມ
ຄໍາຖາມກ່ຽວກັບ libguestfs ແລະເຄື່ອງມື virt:
https://www.redhat.com/mailman/listinfo/libguestfs

ທ່ານຍັງສາມາດລົມກັບພວກເຮົາໃນຊ່ອງ IRC "#libguestfs" ໃນ FreeNode. ພວກເຮົາບໍ່ສະເຫມີໄປ
ອ້ອມຮອບ, ສະນັ້ນກະລຸນາຢູ່ໃນຊ່ອງທາງຫຼັງຈາກຖາມຄໍາຖາມຂອງເຈົ້າແລະຜູ້ໃດຜູ້ຫນຶ່ງຈະກັບຄືນມາ
ກັບທ່ານ

ສໍາລັບເຄື່ອງມື virt ອື່ນໆ (ບໍ່ແມ່ນເຄື່ອງມືທີ່ມີ libguestfs) ມີເຄື່ອງມື virt ທົ່ວໄປ.
ບັນຊີລາຍຊື່ທາງໄປສະນີ: https://www.redhat.com/mailman/listinfo/virt-tools-list

ວິທີການ do I ບົດ​ລາຍ​ງານ ແມງໄມ້?
ກະລຸນາໃຊ້ລິ້ງຕໍ່ໄປນີ້ເພື່ອໃສ່ຂໍ້ຜິດພາດໃນ Bugzilla:

https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools

ລວມເອົາລາຍລະອຽດຫຼາຍເທົ່າທີ່ເຈົ້າເຮັດໄດ້ ແລະວິທີການສ້າງບັນຫາຄືນໃໝ່.

ລວມເອົາຜົນຜະລິດອັນເຕັມທີ່ຂອງ libguestfs-test-tool(1).

COMMON ບັນຫາ


ເບິ່ງ "LIBGUESTFS GOTCHAS" ໃນ ແຂກ(3) ສໍາລັບບາງ "gotchas" ກັບການນໍາໃຊ້ libguestfs
API

"ສາມາດ ບໍ່ ຈັດສັນ ການເຄື່ອນໄຫວ ນັກແປ ບັຟເຟີ"
ຄວາມຜິດພາດທີ່ບໍ່ແນ່ນອນນີ້ແມ່ນຄວາມລົ້ມເຫຼວຂອງ SELinux. ທ່ານຕ້ອງເປີດໃຊ້ງານຕໍ່ໄປນີ້
SELinux boolean:

setsebool -P virt_use_execmem=on

ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມເບິ່ງ https://bugzilla.redhat.com/show_bug.cgi?id=806106.

"ລູກ ຂະບວນການ ເສຍຊີວິດ ໂດຍບໍ່ຄາດຄິດ"
[ຂໍ້ຄວາມຜິດພາດນີ້ຖືກປ່ຽນໃນ libguestfs 1.21.18 ເປັນບາງອັນທີ່ອະທິບາຍເພີ່ມເຕີມ.]

ຂໍ້ຜິດພາດນີ້ຊີ້ບອກວ່າ qemu ລົ້ມເຫລວຫຼື kernel ໂຮດບໍ່ສາມາດບູດໄດ້. ເພື່ອໃຫ້ໄດ້ຮັບຕື່ມອີກ
ຂໍ້ມູນກ່ຽວກັບຄວາມລົ້ມເຫຼວ, ທ່ານຕ້ອງດໍາເນີນການ:

libguestfs-test-tool

ຖ້າ​ຫາກ​ວ່າ​, ຫຼັງ​ຈາກ​ການ​ນໍາ​ໃຊ້​ນີ້​, ທ່ານ​ຍັງ​ບໍ່​ເຂົ້າ​ໃຈ​ຄວາມ​ລົ້ມ​ເຫຼວ​, ຕິດ​ຕໍ່​ພວກ​ເຮົາ (ເບິ່ງ​ທີ່​ຜ່ານ​ມາ​
ພາກ).

libguestfs: ຄວາມຜິດພາດ: ບໍ່ສາມາດເຮັດໄດ້ ຊອກຫາ ໃດ ທີ່ເຫມາະສົມ libguestfs ຊຸບເປີມິນ, ຄົງ or ແບບເກົ່າ ເຄື່ອງໃຊ້ໄຟຟ້າ
on LIBGUESTFS_PATH
febootstrap-supermin-helper: ext2: ພໍ່ແມ່ ລະບົບ ບໍ່ ພົບເຫັນ
supermin-ຜູ້ຊ່ວຍ: ext2: ພໍ່ແມ່ ລະບົບ ບໍ່ ພົບເຫັນ
[ບັນຫານີ້ຖືກແກ້ໄຂຢ່າງຖາວອນໃນ libguestfs ≥ 1.26.]

ຖ້າທ່ານເຫັນຂໍ້ຜິດພາດເຫຼົ່ານີ້ຢູ່ໃນ Debian / Ubuntu, ທ່ານຈໍາເປັນຕ້ອງດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້:

sudo update-guestfs-appliance

"ການອະນຸຍາດ ປະຕິເສດ" ໃນເວລາທີ່ ການເຮັດວຽກ libguestfs as ຮາກ
ທ່ານ​ໄດ້​ຮັບ​ການ​ອະ​ນຸ​ຍາດ​ປະ​ຕິ​ເສດ​ຄວາມ​ຜິດ​ພາດ​ໃນ​ເວ​ລາ​ທີ່​ເປີດ​ຮູບ​ພາບ​ແຜ່ນ​, ເຖິງ​ແມ່ນ​ວ່າ​ທ່ານ​ກໍາ​ລັງ​ແລ່ນ​
libguestfs ເປັນຮາກ.

ນີ້ແມ່ນເກີດມາຈາກ libvirt, ແລະດັ່ງນັ້ນພຽງແຕ່ເກີດຂຶ້ນໃນເວລາທີ່ການນໍາໃຊ້ backend libvirt. ເມື່ອແລ່ນ
ເປັນຮາກ, libvirt ຕັດສິນໃຈແລ່ນເຄື່ອງໃຊ້ qemu ເປັນຜູ້ໃຊ້ "qemu.qemu". ແຕ່ຫນ້າເສຍດາຍ
ນີ້ປົກກະຕິແລ້ວຫມາຍຄວາມວ່າ qemu ບໍ່ສາມາດເປີດຮູບພາບແຜ່ນ, ໂດຍສະເພາະຖ້າຮູບພາບແຜ່ນເຫຼົ່ານັ້ນ
ເປັນເຈົ້າຂອງໂດຍຮາກ, ຫຼືມີຢູ່ໃນໄດເລກະທໍລີທີ່ຕ້ອງການການເຂົ້າເຖິງຮາກ.

ມີ bug ເປີດຕໍ່ກັບ libvirt ເພື່ອແກ້ໄຂນີ້:
https://bugzilla.redhat.com/show_bug.cgi?id=1045069

ທ່ານສາມາດເຮັດວຽກປະມານນີ້ໂດຍຫນຶ່ງໃນວິທີການດັ່ງຕໍ່ໄປນີ້:

·ສະຫຼັບໄປຫາ backend ໂດຍກົງ:

ສົ່ງອອກ LIBGUESTFS_BACKEND=direct

· ຢ່າແລ່ນ libguestfs ເປັນຮາກ.

· Chmod ຮູບພາບແຜ່ນແລະໄດເລກະທໍລີພໍ່ແມ່ເພື່ອໃຫ້ຜູ້ໃຊ້ qemu ສາມາດເຂົ້າເຖິງພວກມັນໄດ້.

· (ຂີ້ຮ້າຍ) ແກ້ໄຂ /etc/libvirt/qemu.conf ແລະປ່ຽນການຕັ້ງຄ່າ "ຜູ້ໃຊ້".

excl: /ໃນ​ມັນ: ການອະນຸຍາດ ຖືກປະຕິເສດ
ຫມາຍ​ເຫດ​: ຖ້າຂໍ້ຜິດພາດນີ້ເກີດຂື້ນໃນເວລາທີ່ທ່ານກໍາລັງໃຊ້ຊຸດ distro ຂອງ libguestfs (ເຊັ່ນ: ຈາກ
Fedora, Debian, ແລະອື່ນໆ) ຈາກນັ້ນຍື່ນຂໍ້ບົກພ່ອງຕໍ່ກັບ distro. ນີ້ບໍ່ແມ່ນຄວາມຜິດພາດທີ່
ຜູ້ໃຊ້ປົກກະຕິຄວນເບິ່ງວ່າຊຸດ distro ໄດ້ຖືກກະກຽມຢ່າງຖືກຕ້ອງ.

ຄວາມຜິດພາດນີ້ເກີດຂຶ້ນໃນລະຫວ່າງໄລຍະບູດ supermin ຂອງການເລີ່ມຕົ້ນອຸປະກອນ:

supermin: ຕິດຕັ້ງຮາກໃໝ່ໃສ່ / root
supermin: chroot
execl: /init: ການອະນຸຍາດຖືກປະຕິເສດ
supermin: debug: listing directory /
[...ຕິດຕາມດ້ວຍຜົນດີບັ໊ກຫຼາຍອັນ...]

ນີ້ແມ່ນ bug ສັບສົນທີ່ກ່ຽວຂ້ອງກັບ ຊຸບເປີມິນ(1) ເຄື່ອງໃຊ້. ເຄື່ອງໃຊ້ແມ່ນກໍ່ສ້າງ
ໂດຍການຄັດລອກໄຟລ໌ເຊັ່ນ / bin / bash ແລະຫ້ອງສະຫມຸດຈໍານວນຫຼາຍຈາກເຈົ້າພາບ. ໄຟລ໌ "hostfiles"
ລາຍຊື່ໄຟລ໌ທີ່ຄວນຈະຖືກຄັດລອກຈາກເຈົ້າພາບເຂົ້າໄປໃນເຄື່ອງໃຊ້. ຖ້າບາງໄຟລ໌
ບໍ່ມີຢູ່ໃນເຈົ້າພາບຫຼັງຈາກນັ້ນພວກເຂົາຖືກພາດໂອກາດອອກ, ແຕ່ຖ້າໄຟລ໌ເຫຼົ່ານີ້ມີຄວາມຈໍາເປັນໃນຄໍາສັ່ງ
to (eg) ແລ່ນ / bin / bash ຫຼັງຈາກນັ້ນ, ທ່ານຈະເຫັນຂໍ້ຜິດພາດຂ້າງເທິງ.

ການວິນິດໄສບັນຫາກ່ຽວຂ້ອງກັບການສຶກສາຫ້ອງສະຫມຸດທີ່ຈໍາເປັນໂດຍ / bin / bash, ເຊັ່ນ:

ldd / bin / bash

ປຽບທຽບກັບ "hostfiles", ກັບໄຟລ໌ທີ່ມີຢູ່ໃນລະບົບໄຟລ໌ເຈົ້າພາບ,
ແລະມີຜົນດີບັກທີ່ພິມອອກມາໃນຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດ. ເມື່ອ​ທ່ານ​ໄດ້​ເຮັດ​ວຽກ​ອອກ​ທີ່​ໄຟລ​໌​
ຫາຍໄປ, ໃຫ້ຕິດຕັ້ງໄຟລ໌ນັ້ນໂດຍໃຊ້ຕົວຈັດການແພັກເກັດຂອງເຈົ້າແລ້ວລອງໃໝ່ອີກຄັ້ງ.

ທ່ານກໍ່ຄວນກວດເບິ່ງໄຟລ໌ເຊັ່ນ /ໃນ​ມັນ ແລະ / bin / bash (ໃນເຄື່ອງໃຊ້) ແມ່ນ
ປະຕິບັດໄດ້. ຜົນ​ຜະ​ລິດ debug ສະ​ແດງ​ໃຫ້​ເຫັນ​ຮູບ​ແບບ​ໄຟລ​໌​.

ກຳລັງດາວໂຫຼດ, ກຳລັງຕິດຕັ້ງ, ການລວບລວມ LIBGUESTFS


ບ່ອນທີ່ ສາມາດເຮັດໄດ້ I ໄດ້ຮັບ ໄດ້ ຫຼ້າສຸດ ຄູ່ ສໍາລັບການ ... ?
Fedora ≥ 11
ການນໍາໃຊ້:

yum ຕິດຕັ້ງ '*guestf*'

ສໍາລັບການກໍ່ສ້າງຫລ້າສຸດ, ເບິ່ງ:
http://koji.fedoraproject.org/koji/packageinfo?packageID=8391

Red Hat Enterprise Linux
ຮຮ 5
ສະບັບທີ່ສົ່ງໃນ RHEL 5 ຢ່າງເປັນທາງການແມ່ນເກົ່າຫຼາຍແລະບໍ່ຄວນໃຊ້ຍົກເວັ້ນ
ສົມທົບກັບ virt-v2v. ໃຊ້ຊຸດ libguestfs 1.20 ທີ່ທັນສະໄໝໃນ EPEL
5: https://fedoraproject.org/wiki/EPEL

ຮຮ 6
ຮຮ 7
ມັນເປັນສ່ວນຫນຶ່ງຂອງການຕິດຕັ້ງໃນຕອນຕົ້ນ. ໃນ RHEL 6 ແລະ 7 (ເທົ່ານັ້ນ) ທ່ານຕ້ອງຕິດຕັ້ງ
"libguestfs-winsupport" ເພື່ອໄດ້ຮັບການສະຫນັບສະຫນູນແຂກຂອງ Windows.

Debian ແລະ Ubuntu
ສໍາລັບ libguestfs < 1.26, ຫຼັງຈາກການຕິດຕັ້ງ libguestfs ທ່ານຕ້ອງເຮັດ:

sudo update-guestfs-appliance

(ສະຄຣິບນີ້ຖືກລຶບອອກໃນ Debian/Ubuntu ດ້ວຍ libguestfs ≥ 1.26 ແລະແທນທີ່.
ເຄື່ອງ​ໃຊ້​ໄດ້​ຖືກ​ສ້າງ​ຂຶ້ນ​ຕາມ​ຄວາມ​ຕ້ອງ​ການ​.)

ໃນ Ubuntu ເທົ່ານັ້ນ:

sudo chmod 0644 /boot/vmlinuz*

ທ່ານອາດຈະຈໍາເປັນຕ້ອງໄດ້ເພີ່ມຕົວທ່ານເອງເຂົ້າໄປໃນກຸ່ມ "kvm":

sudo usermod -a -G kvm ເຂົ້າສູ່ລະບົບຂອງທ່ານ

Squeeze Debian (6)
Hilko Bengen ໄດ້ສ້າງ libguestfs ໃນ backports ບີບ:
http://packages.debian.org/search?keywords=guestfs&searchon=names§ion=all&suite=squeeze-backports

Debian Wheezy ແລະຕໍ່ມາ (7+)
Hilko Bengen ສະຫນັບສະຫນູນ libguestfs ໃນ Debian. ແພັກເກດ Debian ທີ່ເປັນທາງການ
ມີ: http://packages.debian.org/search?keywords=libguestfs

Ubuntu
ພວກເຮົາບໍ່ມີຜູ້ຮັກສາ Ubuntu ເຕັມເວລາ, ແລະຊຸດທີ່ສະຫນອງໂດຍ
Canonical (ທີ່ຢູ່ນອກການຄວບຄຸມຂອງພວກເຮົາ) ບາງຄັ້ງກໍ່ແຕກຫັກ.

Canonical ຕັດສິນໃຈປ່ຽນແປງການອະນຸຍາດໃນແກ່ນເພື່ອວ່າມັນບໍ່ແມ່ນ
ສາມາດອ່ານໄດ້ຍົກເວັ້ນໂດຍຮາກ. ນີ້ແມ່ນໂງ່ຫມົດ, ແຕ່ພວກເຂົາຈະບໍ່ປ່ຽນແປງມັນ
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725). ດັ່ງນັ້ນຜູ້ໃຊ້ທຸກຄົນ
ຄວນ​ເຮັດ​ສິ່ງ​ນີ້​:

sudo chmod 0644 /boot/vmlinuz*

Ubuntu 12.04
libguestfs ໃນ Ubuntu ຮຸ່ນນີ້ເຮັດວຽກ, ແຕ່ທ່ານຈໍາເປັນຕ້ອງປັບປຸງ febootstrap
ແລະ seabios ກັບສະບັບຫລ້າສຸດ.

ທ່ານຕ້ອງການ febootstrap ≥ 3.14-2 ຈາກ:
http://packages.ubuntu.com/precise/febootstrap

ຫຼັງຈາກຕິດຕັ້ງ ຫຼືອັບເດດ febootstrap, ກໍ່ສ້າງອຸປະກອນຄືນໃໝ່:

sudo update-guestfs-appliance

ທ່ານຕ້ອງການ seabios ≥ 0.6.2-0ubuntu2.1 ຫຼື ≥ 0.6.2-0ubuntu3 ຈາກ:
http://packages.ubuntu.com/precise-updates/seabios or
http://packages.ubuntu.com/quantal/seabios

ນອກຈາກນັ້ນ, ທ່ານຈໍາເປັນຕ້ອງເຮັດ (ເບິ່ງຂ້າງເທິງ):

sudo chmod 0644 /boot/vmlinuz*

Gentoo
Libguestfs ຖືກເພີ່ມໃສ່ Gentoo ໃນປີ 2012-07 ໂດຍ Andreis Vinogradovs (libguestfs) ແລະ
Maxim Koltsov (ສ່ວນໃຫຍ່ແມ່ນ hivex). ເຮັດ:

ອອກມາ libguestfs

ຊູດ
Libguestfs ຖືກເພີ່ມໃສ່ SuSE ໃນປີ 2012 ໂດຍ Olaf Hering.

ArchLinux
Libguestfs ໄດ້ຖືກເພີ່ມເຂົ້າໃນ AUR ໃນປີ 2010.

Linux distro ອື່ນໆ
ລວບລວມຈາກແຫຼ່ງ (ພາກຕໍ່ໄປ).

distro ອື່ນທີ່ບໍ່ແມ່ນ Linux
ທ່ານຈະຕ້ອງລວບລວມຈາກແຫຼ່ງ, ແລະພອດມັນ.

ວິທີການ ສາມາດເຮັດໄດ້ I ລວບລວມ ແລະ ການຕິດຕັ້ງ libguestfs ຈາກ ແຫຼ່ງ?
ທ່ານສາມາດລວບລວມ libguestfs ຈາກ git ຫຼືແຫຼ່ງ tarball. ອ່ານໄຟລ໌ README ກ່ອນ
ເລີ່ມຕົ້ນ.

Git: https://github.com/libguestfs/libguestfs ແຫຼ່ງ tarballs:
http://libguestfs.org/download

ຢ່າແລ່ນ "ຕິດຕັ້ງ"! ໃຊ້ "./ ແລ່ນ" script ແທນ (ເບິ່ງ README).

ວິທີການ ສາມາດເຮັດໄດ້ I ລວບລວມ ແລະ ການຕິດຕັ້ງ libguestfs if my distro ບໍ່ ມີ ໃຫມ່ ພຽງ​ພໍ
qemu/supermin/kernel?
Libguestfs ຕ້ອງການ supermin 5. ຖ້າ supermin 5 ບໍ່ໄດ້ຖືກ ported ກັບ distro ຂອງທ່ານ, ຫຼັງຈາກນັ້ນເບິ່ງ
ຄໍາຖາມຂ້າງລຸ່ມນີ້.

ທໍາອິດລວບລວມ qemu, supermin ແລະ/ຫຼື kernel ຈາກແຫຼ່ງ. ເຈົ້າ​ເຮັດ ບໍ່ ຈໍາເປັນຕ້ອງ "ເຮັດ
ຕິດຕັ້ງ" ເຂົາເຈົ້າ.

ໃນໄດເລກະທໍລີແຫຼ່ງ libguestfs, ສ້າງສອງໄຟລ໌. "localconfigure" ຄວນປະກອບມີ:

ແຫຼ່ງ localenv
#ການສົ່ງອອກ PATH =/tmp/qemu/x86_64-softmmu:$PATH
./autogen.sh --prefix / usr "$@"

ເຮັດໃຫ້ "localconfigure" ສາມາດປະຕິບັດໄດ້.

"localenv" ຄວນປະກອບດ້ວຍ:

#ສົ່ງອອກ SUPERMIN=/tmp/supermin/src/supermin
#ສົ່ງອອກ LIBGUESTFS_HV=/tmp/qemu/x86_64-softmmu/qemu-system-x86_64
#ສົ່ງອອກ SUPERMIN_KERNEL=/tmp/linux/arch/x86/boot/bzImage
#ສົ່ງອອກ SUPERMIN_KERNEL_VERSION=4.XX.0
#ສົ່ງອອກ SUPERMIN_MODULES=/tmp/lib/modules/4.XX.0

ບໍ່ສະແດງຄວາມຄິດເຫັນແລະປັບສາຍເຫຼົ່ານີ້ຕາມຄວາມຕ້ອງການເພື່ອນໍາໃຊ້ໂຄງການທາງເລືອກທີ່ທ່ານມີ
ລວບລວມ.

ໃຊ້ "./localconfigure" ແທນ "./configure", ແຕ່ຖ້າບໍ່ດັ່ງນັ້ນທ່ານຈະລວບລວມ libguestfs ເປັນ
ປົກກະຕິ.

ຢ່າແລ່ນ "ຕິດຕັ້ງ"! ໃຊ້ "./ ແລ່ນ" script ແທນ (ເບິ່ງ README).

ວິທີການ ສາມາດເຮັດໄດ້ I ລວບລວມ ແລະ ການຕິດຕັ້ງ libguestfs ໂດຍບໍ່ມີການ ຊຸບເປີມິນ?
ຖ້າ supermin 5 ສະຫນັບສະຫນູນ distro ຂອງທ່ານ, ແຕ່ທ່ານບໍ່ມີ supermin ພຽງພໍໃຫມ່
ຕິດຕັ້ງ, ຫຼັງຈາກນັ້ນເບິ່ງຄໍາຖາມທີ່ຜ່ານມາ.

ຖ້າ supermin 5 ບໍ່ສະຫນັບສະຫນູນ distro ຂອງທ່ານທັງຫມົດ, ທ່ານຈະຕ້ອງໃຊ້ "ແກ້ໄຂ
appliance method" ບ່ອນ​ທີ່​ທ່ານ​ນໍາ​ໃຊ້​ເຄື່ອງ​ມື​ຄູ່​ສົມ​ບູນ​ລ່ວງ​ຫນ້າ​. ເພື່ອ​ສ້າງ libguestfs
ໂດຍບໍ່ມີການ supermin, ທ່ານຈໍາເປັນຕ້ອງໄດ້ຜ່ານ "--disable-appliance --disable-daemon" ທັງສອງ
/ autogensh or / configure (ຂຶ້ນກັບວ່າທ່ານກໍາລັງສ້າງຕາມລໍາດັບຈາກ git ຫຼື
ຈາກ tarballs). ຫຼັງຈາກນັ້ນ, ເມື່ອໃຊ້ libguestfs, ທ່ານ ຕ້ອງ ຕັ້ງ "LIBGUESTFS_PATH"
ສະພາບແວດລ້ອມທີ່ປ່ຽນແປງໄດ້ກັບລາຍການຂອງເຄື່ອງໃຊ້ທີ່ລວບລວມໄວ້ກ່ອນ, ດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນ
"ອຸປະກອນແກ້ໄຂ" ໃນ ແຂກ(3).

ສໍາລັບເຄື່ອງໃຊ້ທີ່ລວບລວມໄວ້ກ່ອນ, ເບິ່ງ: http://libguestfs.org/download/binaries/appliance/.

Patches ເພື່ອສົ່ງ supermin ໄປຫາ Linux distros ເພີ່ມເຕີມແມ່ນຍິນດີຕ້ອນຮັບ.

ວິທີການ ສາມາດເຮັດໄດ້ I ເພີ່ມ ສະຫນັບສະຫນູນ ສໍາລັບການ sVirt?
ຫມາຍ​ເຫດ​ ສໍາລັບການ Fedora/RHEL ຜູ້ໃຊ້: ການຕັ້ງຄ່ານີ້ແມ່ນຄ່າເລີ່ມຕົ້ນໂດຍ Fedora 18 ແລະ
RHEL 7. ຖ້າທ່ານພົບບັນຫາໃດໆ, ກະລຸນາແຈ້ງໃຫ້ພວກເຮົາຮູ້ ຫຼືສົ່ງຂໍ້ບົກພ່ອງ.

SVirt ສະຫນອງອຸປະກອນແຂງໂດຍໃຊ້ SELinux, ເຮັດໃຫ້ມັນຍາກຫຼາຍສໍາລັບແຜ່ນ rogue
ຮູບພາບທີ່ຈະ "ຫນີ" ຈາກການກັກຂັງຂອງ libguestfs ແລະສ້າງຄວາມເສຍຫາຍໃຫ້ກັບເຈົ້າພາບ (ມັນເປັນເລື່ອງຍຸດຕິທໍາທີ່ຈະເວົ້າ.
ວ່າແມ້ແຕ່ຢູ່ໃນ libguestfs ມາດຕະຖານນີ້ຈະຍາກ, ແຕ່ sVirt ສະຫນອງຊັ້ນພິເສດຂອງ
ການປົກປ້ອງເຈົ້າພາບແລະສໍາຄັນກວ່ານັ້ນແມ່ນປົກປ້ອງເຄື່ອງ virtual ຢູ່ໃນໂຮດດຽວກັນ
ຈາກ​ກັນ).

ໃນປັດຈຸບັນເພື່ອເປີດໃຊ້ sVirt ທ່ານຈະຕ້ອງ libvirt ≥ 0.10.2 (1.0 ຫຼືຫຼັງຈາກນັ້ນທີ່ຕ້ອງການ),
libguestfs ≥ 1.20, ແລະນະໂຍບາຍ SELinux ຈາກ Fedora ທີ່ຜ່ານມາ. ຖ້າທ່ານບໍ່ໄດ້ແລ່ນ
Fedora 18+, ທ່ານຈະຕ້ອງປ່ຽນແປງນະໂຍບາຍ SELinux ຂອງທ່ານ - ຕິດຕໍ່ພວກເຮົາທີ່
ບັນຊີລາຍຊື່ທາງໄປສະນີ.

ເມື່ອ​ທ່ານ​ມີ​ຄວາມ​ຕ້ອງ​ການ​, ເຮັດ​:

./configure --with-default-backend=libvirt # libguestfs >= 1.22
./configure --with-default-attach-method=libvirt # libguestfs <= 1.20
ເຮັດໃຫ້

ຕັ້ງ SELinux ເປັນໂໝດບັງຄັບ, ແລະ sVirt ຄວນຖືກໃຊ້ໂດຍອັດຕະໂນມັດ.

ທັງໝົດ, ຫຼືເກືອບທັງໝົດ, ຄຸນສົມບັດຂອງ libguestfs ຄວນເຮັດວຽກພາຍໃຕ້ sVirt. ມີຄົນຮູ້ຈັກ
ຂໍ້ບົກຜ່ອງ: virt-scue(1) ຈະບໍ່ໃຊ້ libvirt (ເພາະສະນັ້ນ sVirt), ແຕ່ຫຼຸດລົງກັບຄືນໄປບ່ອນໂດຍກົງ
ການເປີດຕົວ qemu. ດັ່ງນັ້ນໃນປັດຈຸບັນທ່ານຈະບໍ່ໄດ້ຮັບຜົນປະໂຫຍດຂອງການປົກປ້ອງ sVirt ໃນເວລາໃຊ້
virt-scue.

ທ່ານສາມາດກວດເບິ່ງວ່າ sVirt ຖືກນໍາໃຊ້ໂດຍການເປີດໃຊ້ການເຂົ້າສູ່ລະບົບ libvirtd (ເບິ່ງ
/etc/libvirt/libvirtd.log), ຂ້າແລະ restarting libvirtd, ແລະການກວດສອບໄຟລ໌ບັນທຶກ
ສໍາລັບ "ການຕັ້ງຄ່າ SELinux context on ... " ຂໍ້ຄວາມ.

ໃນທາງທິດສະດີ sVirt ຄວນສະຫນັບສະຫນູນ AppArmor, ແຕ່ພວກເຮົາບໍ່ໄດ້ພະຍາຍາມມັນ. ມັນຈະເກືອບ
ແນ່ນອນວ່າຕ້ອງການ patching libvirt ແລະຂຽນນະໂຍບາຍ AppArmor.

Libguestfs ມີ a ກໍ່ ຍາວ ບັນຊີລາຍຊື່ of ເພິ່ງພາອາໄສ!
ຫໍສະຫມຸດພື້ນຖານບໍ່ໄດ້ຂຶ້ນກັບຫຼາຍ, ແຕ່ມີສາມສາເຫດຂອງບັນຊີລາຍຊື່ຍາວ
ຂອງ​ການ​ຂຶ້ນ​ກັບ​ອື່ນໆ​:

1. Libguestfs ຈະຕ້ອງສາມາດອ່ານ ແລະແກ້ໄຂຮູບແບບດິສກ໌ທີ່ແຕກຕ່າງກັນຫຼາຍຮູບແບບ. ຍົກ​ຕົວ​ຢ່າງ,
ການຊ່ວຍເຫຼືອ XFS ຕ້ອງການເຄື່ອງມື XFS.

2. ມີການຜູກມັດພາສາສໍາລັບຫຼາຍພາສາທີ່ແຕກຕ່າງກັນ, ທັງຫມົດຮຽກຮ້ອງໃຫ້ມີຂອງຕົນເອງ
ເຄື່ອງ​ມື​ການ​ພັດ​ທະ​ນາ​. ການຜູກມັດພາສາທັງໝົດ (ຍົກເວັ້ນ C) ເປັນທາງເລືອກ.

3. ມີ​ບາງ​ຄຸນ​ນະ​ສົມ​ບັດ​ຫ້ອງ​ສະ​ຫມຸດ​ທາງ​ເລືອກ​ທີ່​ສາ​ມາດ​ປິດ​ໄດ້​.

ນັບຕັ້ງແຕ່ libguestfs ≥ 1.26 ມັນເປັນໄປໄດ້ທີ່ຈະແຍກການຂຶ້ນກັບອຸປະກອນ (ລາຍການ 1 ໃນ
ບັນຊີລາຍຊື່ຂ້າງເທິງ) ແລະດັ່ງນັ້ນຈຶ່ງມີ (eg) "libguestfs-xfs" ເປັນຊຸດຍ່ອຍແຍກຕ່າງຫາກສໍາລັບ
ກຳລັງປະມວນຜົນຮູບພາບແຜ່ນ XFS. ພວກ​ເຮົາ​ຊຸກ​ຍູ້​ໃຫ້​ຜູ້​ຫຸ້ມ​ຫໍ່​ລຸ່ມ​ນ​້​ໍ​າ​ເພື່ອ​ເລີ່ມ​ຕົ້ນ​ການ​ແຍກ​ພື້ນ​ຖານ
ຊຸດ libguestfs ເປັນແພັກເກັດຍ່ອຍນ້ອຍກວ່າ.

ຂໍ້ຜິດພາດ ໃນລະຫວ່າງການ ເປີດຕົວ on Fedora 18, RHEL 7
ໃນ Fedora ≥ 18 ແລະ RHEL ≥ 7, libguestfs ໃຊ້ libvirt ເພື່ອຈັດການເຄື່ອງໃຊ້. ກ່ອນໜ້ານີ້
(ແລະ upstream) libguestfs ແລ່ນ qemu ໂດຍກົງ:

┌───────────────────────────────────┐
│ libguestfs │
├──────────────────┬─────────────────
│ backend ໂດຍກົງ │ libvirt backend │
└───────────────────────────────────┘
↓ ↓
┌───────┐ ┌──────────┐
│ qemu │ │ libvirtd │
└───────┘ └──────────┘

┌───────┐
│ qemu │
└────────┘

ເທິງນ້ໍາ Fedora 18+
ບໍ່ແມ່ນ Fedora RHEL 7+
ບໍ່ແມ່ນ RHEL

backend libvirt ແມ່ນມີຄວາມຊັບຊ້ອນຫຼາຍ, ສະຫນັບສະຫນູນ SELinux/sVirt (ເບິ່ງຂ້າງເທິງ),
hotpluggging ແລະອື່ນໆ. ຢ່າງໃດກໍຕາມ, ມັນແມ່ນສະລັບສັບຊ້ອນຫຼາຍແລະເຂັ້ມແຂງຫນ້ອຍ.

ຖ້າທ່ານມີບັນຫາການອະນຸຍາດໂດຍໃຊ້ libvirt backend, ທ່ານສາມາດປ່ຽນໄປໂດຍກົງ
backend ໂດຍການຕັ້ງຄ່າຕົວແປສະພາບແວດລ້ອມນີ້:

ສົ່ງອອກ LIBGUESTFS_BACKEND=direct

ກ່ອນທີ່ຈະແລ່ນໂຄງການ libguestfs ຫຼືເຄື່ອງມື virt.

ວິທີການ ສາມາດເຮັດໄດ້ I ສະຫຼັບ to a ຄົງ / ສ້າງຂຶ້ນ ໃໝ່ ເຄື່ອງໃຊ້?
ນີ້ອາດຈະປັບປຸງຄວາມຫມັ້ນຄົງແລະການປະຕິບັດຂອງ libguestfs ໃນ Fedora ແລະ RHEL.

ທຸກເວລາຫຼັງຈາກການຕິດຕັ້ງ libguestfs, ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ເປັນຮາກ:

mkdir -p /usr/local/lib/guestfs/appliance
libguestfs-make-fixed-appliance /usr/local/lib/guestfs/appliance
ls -l /usr/local/lib/guestfs/appliance

ຕອນນີ້ຕັ້ງຕົວແປສະພາບແວດລ້ອມຕໍ່ໄປນີ້ກ່ອນທີ່ຈະໃຊ້ libguestfs ຫຼືເຄື່ອງມື virt ໃດ:

ສົ່ງອອກ LIBGUESTFS_PATH=/usr/local/lib/guestfs/appliance

ແນ່ນອນ, ທ່ານສາມາດປ່ຽນເສັ້ນທາງໄປຫາໄດເລກະທໍລີໃດໆທີ່ທ່ານຕ້ອງການ. ເຈົ້າສາມາດແບ່ງປັນເຄື່ອງໃຊ້ໄດ້
ໃນທົ່ວເຄື່ອງຈັກທີ່ມີສະຖາປັດຕະຍະກໍາດຽວກັນ (ຕົວຢ່າງ x86-64 ທັງຫມົດ), ແຕ່ສັງເກດວ່າ libvirt
ຈະປ້ອງກັນບໍ່ໃຫ້ທ່ານແບ່ງປັນອຸປະກອນໃນທົ່ວ NFS ເນື່ອງຈາກບັນຫາການອະນຸຍາດ (ດັ່ງນັ້ນ
ບໍ່ວ່າຈະປ່ຽນເປັນ backend ໂດຍກົງຫຼືບໍ່ໃຊ້ NFS).

ວິທີການ ສາມາດເຮັດໄດ້ I ຄວາມ​ໄວ up libguestfs ກໍ່ສ້າງ?
ມາຮອດປະຈຸ, ສິ່ງທີ່ສໍາຄັນທີ່ສຸດທີ່ທ່ານສາມາດເຮັດໄດ້ແມ່ນການຕິດຕັ້ງແລະ configure Squid ຢ່າງຖືກຕ້ອງ.
ໃຫ້ສັງເກດວ່າການຕັ້ງຄ່າເລີ່ມຕົ້ນທີ່ເຮືອກັບ Squid ແມ່ນຂີ້ເຫຍື້ອ, ສະນັ້ນການກໍາຫນົດຄ່າມັນແມ່ນ
ບໍ່ແມ່ນທາງເລືອກ.

ສະຖານທີ່ທີ່ດີຫຼາຍທີ່ຈະເລີ່ມຕົ້ນດ້ວຍການຕັ້ງຄ່າ Squid ຢູ່ທີ່ນີ້:
https://fedoraproject.org/wiki/Extras/MockTricks#Using_Squid_to_Speed_Up_Mock_package_downloads

ໃຫ້ແນ່ໃຈວ່າ Squid ເຮັດວຽກຢູ່, ແລະຕົວແປສະພາບແວດລ້ອມແມ່ນ $http_proxy ແລະ $ftp_proxy.
ກໍາລັງຊີ້ໃຫ້ເຫັນມັນ.

ດ້ວຍ Squid ແລ່ນແລະຕັ້ງຄ່າຢ່າງຖືກຕ້ອງ, ການກໍ່ສ້າງເຄື່ອງໃຊ້ຄວນຈະຖືກຫຼຸດລົງເປັນຈໍານວນຫນ້ອຍ
ນາທີ.

ວິທີການ ສາມາດເຮັດໄດ້ I ຄວາມ​ໄວ up libguestfs ສ້າງຂຶ້ນ (ເດບຽນ)?

Hilko Bengen ແນະນຳໃຫ້ໃຊ້ "ປະມານ" ເຊິ່ງເປັນຕົວແທນເກັບຂໍ້ມູນ Debian
(http://packages.debian.org/approx). ເຄື່ອງມືນີ້ແມ່ນບັນທຶກໄວ້ໃນ Debian ໃນ ປະມານ(8​)
ຫນ້າຄູ່ມື.

ຄວາມໄວ, ຈານ SPACE ນໍາໃຊ້ BY LIBGUESTFS


ຫມາຍ​ເຫດ​: ຂໍ້ມູນສ່ວນໃຫຍ່ໃນພາກນີ້ໄດ້ຖືກຍ້າຍ: guestfs-ການປະຕິບັດ(1).

Upload or ຂຽນ ເບິ່ງຄືວ່າ ຫຼາຍ ຊ້າ.
ຖ້າ​ຫາກ​ວ່າ​ແຜ່ນ​ທີ່​ຕິດ​ພັນ​ບໍ່​ໄດ້​ຖືກ​ຈັດ​ສັນ​ຢ່າງ​ເຕັມ​ທີ່ (ເຊັ່ນ​: sparse raw ຫຼື qcow2​) ຫຼັງ​ຈາກ​ນັ້ນ​ການ​ຂຽນ​ສາ​ມາດ​ເປັນ​.
ຊ້າເພາະວ່າລະບົບປະຕິບັດການໂຮດຕ້ອງເຮັດການຈັດສັນແຜ່ນທີ່ມີຄ່າໃຊ້ຈ່າຍໃນຂະນະທີ່ທ່ານຢູ່
ການ​ຂຽນ. ການແກ້ໄຂແມ່ນການນໍາໃຊ້ຮູບແບບການຈັດສັນຢ່າງເຕັມທີ່ແທນທີ່ຈະ, ie. ວັດຖຸດິບທີ່ບໍ່ກະແຈກກະຈາຍ, ຫຼື
qcow2 ດ້ວຍຕົວເລືອກ "preallocation=metadata".

Libguestfs ການນໍາໃຊ້ ເກີນໄປ ຫຼາຍ ແຜ່ນ ຊ່ອງ!
libguestfs ເກັບຮັກສາເຄື່ອງໃຊ້ຂະຫນາດໃຫຍ່ຢູ່ໃນ:

/var/tmp/.guestfs-

ຖ້າຕົວແປສະພາບແວດລ້ອມ "TMPDIR" ຖືກກໍານົດ, ຫຼັງຈາກນັ້ນ $TMPDIR/.guestfs- ຖືກນໍາໃຊ້
ແທນທີ່ຈະເປັນ.

ມັນປອດໄພທີ່ຈະລຶບໄດເລກະທໍລີນີ້ເມື່ອທ່ານບໍ່ໄດ້ໃຊ້ libguestfs.

virt-sparsify ເບິ່ງຄືວ່າ to ເຮັດໃຫ້ ໄດ້ ຮູບພາບເລັກນ້ອຍ ເຕີບໂຕ to ໄດ້ ຢ່າງເຕັມທີ່ ຂະຫນາດ of ໄດ້ virtual ແຜ່ນ
ຖ້າ​ຫາກ​ວ່າ​ການ​ນໍາ​ເຂົ້າ​ໄປ virt-sparsify(1) ເປັນວັດຖຸດິບ, ຫຼັງຈາກນັ້ນຜົນຜະລິດຈະດິບ sparse. ໃຫ້ແນ່ໃຈວ່າ
ທ່ານກໍາລັງວັດແທກຜົນຜະລິດດ້ວຍເຄື່ອງມືທີ່ເຂົ້າໃຈຄວາມຫນາແຫນ້ນເຊັ່ນ "du -sh".
ມັນສາມາດເຮັດໃຫ້ມີຄວາມແຕກຕ່າງກັນຢ່າງຫຼວງຫຼາຍ:

$ ls -lh test1.img
-rw-rw-r--. 1 rjones rjones 100M Aug 8 08:08 test1.img
$ du -sh test1.img
3.6M test1.img

(ປຽບທຽບຂະຫນາດທີ່ເຫັນໄດ້ຊັດເຈນ 100M ທຽບກັບຂະຫນາດຕົວຈິງ 3.6M)

ຖ້າທັງຫມົດນີ້ເຮັດໃຫ້ເຈົ້າສັບສົນ, ໃຫ້ໃຊ້ຮູບແບບຜົນຜະລິດທີ່ບໍ່ກະແຈກກະຈາຍໂດຍການລະບຸ --ແປງ
ທາງເລືອກ, ເຊັ່ນ:

virt-sparsify --ປ່ຽນ qcow2 disk.raw disk.qcow2

ເປັນຫຍັງ ບໍ່ virt-ປັບຂະຫນາດ ການເຮັດວຽກ on ໄດ້ ແຜ່ນ ຮູບພາບເລັກນ້ອຍ ໃນ​ສະ​ຖານ​ທີ່?
ການ​ປັບ​ຂະ​ໜາດ​ຮູບ​ດິສກ໌​ແມ່ນ​ຍາກ​ຫຼາຍ -- ໂດຍ​ສະ​ເພາະ​ການ​ເຮັດ​ໃຫ້​ແນ່​ໃຈ​ວ່າ​ທ່ານ​ບໍ່​ເສຍ​ຂໍ້​ມູນ ຫຼື
ທໍາລາຍ bootloader. ວິທີການປະຈຸບັນປະສິດທິຜົນສ້າງຮູບພາບແຜ່ນໃຫມ່ແລະສໍາເນົາ
ຂໍ້ມູນບວກກັບ bootloader ຈາກອັນເກົ່າ. ຖ້າມີບາງຢ່າງຜິດພາດ, ເຈົ້າສາມາດໄປໄດ້ສະເໝີ
ກັບໄປຕົ້ນສະບັບ.

ຖ້າ​ຫາກ​ວ່າ​ພວກ​ເຮົາ​ຈະ​ເຮັດ​ໃຫ້​ການ​ເຮັດ​ວຽກ​ປັບ​ຂະ​ຫນາດ virt ໃນ​ສະ​ຖານ​ທີ່​, ມັນ​ຈະ​ຕ້ອງ​ມີ​ຂໍ້​ຈໍາ​ກັດ​: ສໍາ​ລັບ​ການ​
ຍົກ​ຕົວ​ຢ່າງ, ທ່ານ​ຈະ​ບໍ່​ໄດ້​ຮັບ​ອະ​ນຸ​ຍາດ​ໃຫ້​ຍ້າຍ​ພາ​ທິ​ຊັນ​ທີ່​ມີ​ຢູ່​ແລ້ວ (ເນື່ອງ​ຈາກ​ວ່າ​ການ​ຍ້າຍ​ຂໍ້​ມູນ​ໃນ​ທົ່ວ
ແຜ່ນດຽວກັນມີແນວໂນ້ມທີ່ຈະທໍາລາຍຂໍ້ມູນໃນກໍລະນີທີ່ມີໄຟສາຍຫຼືຂັດ),
ແລະ LVM ຈະເປັນການຍາກຫຼາຍທີ່ຈະສະຫນັບສະຫນູນ (ເນື່ອງຈາກວ່າແຜນທີ່ເກືອບ arbitrary
ລະ​ຫວ່າງ​ເນື້ອ​ຫາ LV ແລະ​ຕັນ​ແຜ່ນ​ທີ່​ຕິດ​ພັນ​)​.

ວິທີການອື່ນທີ່ພວກເຮົາໄດ້ພິຈາລະນາແມ່ນການວາງ snapshot ໃນໄລຍະຮູບພາບແຜ່ນຕົ້ນສະບັບ, ດັ່ງນັ້ນ
ວ່າຂໍ້ມູນຕົ້ນສະບັບແມ່ນບໍ່ຖືກແຕະຕ້ອງແລະຄວາມແຕກຕ່າງພຽງແຕ່ຖືກບັນທຶກໄວ້ໃນຮູບຖ່າຍ.
ທ່ານສາມາດເຮັດໄດ້ໃນມື້ນີ້ໂດຍໃຊ້ "qemu-img create" + "virt-resize", ແຕ່ qemu ປະຈຸບັນບໍ່ແມ່ນ.
ສະຫລາດພໍທີ່ຈະຮັບຮູ້ເມື່ອບລັອກດຽວກັນຖືກຂຽນກັບຄືນໄປຫາພາບຖ່າຍທີ່ເປັນແລ້ວ
ມີຢູ່ໃນແຜ່ນຮອງ, ດັ່ງນັ້ນເຈົ້າຈະພົບວ່າອັນນີ້ບໍ່ໄດ້ປະຫຍັດພື້ນທີ່ຫຼືເວລາໃດໆ.

ສະຫຼຸບແລ້ວ, ນີ້ແມ່ນບັນຫາທີ່ຍາກ, ແລະສິ່ງທີ່ພວກເຮົາມີໃນປັດຈຸບັນສ່ວນໃຫຍ່ແມ່ນເຮັດວຽກດັ່ງນັ້ນພວກເຮົາລັງເລໃຈ
ການປ່ຽນແປງມັນ.

ເປັນຫຍັງ ບໍ່ virt-sparsify ການເຮັດວຽກ on ໄດ້ ແຜ່ນ ຮູບພາບເລັກນ້ອຍ ໃນ​ສະ​ຖານ​ທີ່?
ໃນ libguestfs ≥ 1.26, virt-sparsify ດຽວນີ້ສາມາດເຮັດວຽກຢູ່ໃນແຜ່ນດິດຢູ່ໃນສະຖານທີ່. ໃຊ້:

virt-sparsify --in-place disk.img

ແຕ່ທໍາອິດທ່ານຄວນອ່ານ "IN-PLACE SPARSIFICATION" ໃນ virt-sparsify(1).

ບັນຫາ ຫນ້າທໍາອິດ ຈານ IMAGES


ຫ່າງໄກສອກຫຼີກ ເສລີພາບ ບຸກຄົນທົ່ວໄປ ບໍ່ສາມາດເຮັດໄດ້ be ເປີດ.
ການເປີດຜູ້ເຂົ້າພັກ libvirt ໄລຍະໄກແມ່ນບໍ່ຮອງຮັບໃນເວລານີ້. ຕົວຢ່າງນີ້ຈະບໍ່ເຮັດວຽກ:

guestfish -c qemu://remote/system -d ແຂກ

ເພື່ອເປີດແຜ່ນຫ່າງໄກສອກຫຼີກ, ທ່ານຈະຕ້ອງສົ່ງອອກໃຫ້ເຂົາເຈົ້າ somehow, ຫຼັງຈາກນັ້ນເຊື່ອມຕໍ່ກັບການສົ່ງອອກ. ສໍາລັບ
ຕົວຢ່າງຖ້າທ່ານຕັດສິນໃຈໃຊ້ NBD:

remote$ qemu-nbd -t -p 10809 guest.img
local$ guestfish -a nbd://remote:10809 -i

ຄວາມເປັນໄປໄດ້ອື່ນໆລວມມີ ssh (ຖ້າ qemu ແມ່ນພຽງພໍ), NFS ຫຼື iSCSI. ເບິ່ງ "REMOTE
STORAGE" ໃນ ແຂກ(3).

ວິທີການ ສາມາດເຮັດໄດ້ I ເປີດ ນີ້ strange ແຜ່ນ ແຫຼ່ງ?
ທ່ານ​ມີ​ຮູບ​ພາບ​ແຜ່ນ​ທີ່​ຕັ້ງ​ຢູ່​ໃນ​ລະ​ບົບ​ອື່ນ​ທີ່​ຮຽກ​ຮ້ອງ​ໃຫ້​ມີ​ການ​ເຂົ້າ​ເຖິງ​ໂດຍ​ຜ່ານ​ຫ້ອງ​ສະ​ຫມຸດ /
HTTP / REST / API ທີ່ເປັນເຈົ້າຂອງ, ຫຼືຖືກບີບອັດຫຼືເກັບໄວ້ໃນບາງທາງ. (ຕົວຢ່າງຫນຶ່ງ
ຈະ​ເປັນ​ການ​ເຂົ້າ​ເຖິງ​ທາງ​ໄກ​ເພື່ອ OpenStack glance ຮູບ​ພາບ​ໂດຍ​ບໍ່​ມີ​ການ​ດາວ​ໂຫຼດ​ຕົວ​ຈິງ​ໃຫ້​ເຂົາ​ເຈົ້າ​.)

ພວກເຮົາມີໂຄງການເອື້ອຍເອີ້ນວ່າ nbdkit (https://github.com/libguestfs/nbdkit). ນີ້
ໂຄງ​ການ​ເຮັດ​ໃຫ້​ທ່ານ​ປ່ຽນ​ແຫຼ່ງ​ແຜ່ນ​ໃດ​ຫນຶ່ງ​ເປັນ​ເຄື່ອງ​ແມ່​ຂ່າຍ NBD​. Libguestfs ສາມາດເຂົ້າເຖິງ NBD
ເຊີບເວີໂດຍກົງ, ຕົວຢ່າງ:

guestfish -a nbd://remote

nbdkit ໄດ້ຮັບໃບອະນຸຍາດຢ່າງເສລີ, ດັ່ງນັ້ນທ່ານສາມາດເຊື່ອມຕໍ່ມັນກັບຫຼືລວມຢູ່ໃນຫ້ອງສະຫມຸດທີ່ເປັນເຈົ້າຂອງ.
ແລະລະຫັດ. ມັນຍັງມີ API plugin ທີ່ງ່າຍດາຍ, ຫມັ້ນຄົງ, ດັ່ງນັ້ນທ່ານສາມາດຂຽນ plugins ຕໍ່ຕ້ານ
API ທີ່ຈະສືບຕໍ່ເຮັດວຽກໃນອະນາຄົດ.

Error ເປີດ vMDK ແຜ່ນ: "ໃຊ້ a vMDK ຄຸນນະສົມບັດ ທີ່ is ບໍ່ ສະຫນັບສະຫນູນ by ນີ້ whoa ຮຸ່ນ:
vMDK ສະບັບພາສາ 3"
Qemu (ແລະເພາະສະນັ້ນ libguestfs) ຮອງຮັບສະເພາະຮູບພາບແຜ່ນ VMDK ເທົ່ານັ້ນ. ຄົນອື່ນຈະບໍ່ເຮັດວຽກ,
ໃຫ້ຄວາມຜິດພາດນີ້ຫຼືຄ້າຍຄືກັນ.

ໂດຍວິທີທາງການ, ຜູ້ໃດຜູ້ຫນຶ່ງຈະແກ້ໄຂ qemu ເພື່ອສະຫນັບສະຫນູນຄຸນສົມບັດ VMDK ຫຼ້າສຸດ, ແຕ່ໃນເວລານີ້
ທ່ານ​ມີ​ສາມ​ທາງ​ເລືອກ​:

1. ຖ້າແຂກຖືກໂຮດຢູ່ໃນເຊີບເວີ ESX ທີ່ມີຊີວິດຊີວາ, ຈາກນັ້ນຊອກຫາ ແລະດາວໂຫຼດ
ຮູບ​ພາບ disk ເອີ້ນ​ວ່າ​ somename-flat.vmdk. ເຖິງວ່າຈະມີຊື່, ນີ້ແມ່ນຮູບພາບແຜ່ນດິບ, ແລະ
ສາມາດເປີດໄດ້ໂດຍຫຍັງ.

ຖ້າທ່ານມີ qemu ແລະ libguestfs ສະບັບພຽງພໍທີ່ຜ່ານມາ, ຫຼັງຈາກນັ້ນທ່ານອາດຈະສາມາດ
ເຂົ້າເຖິງຮູບພາບແຜ່ນນີ້ຈາກໄລຍະໄກໂດຍໃຊ້ HTTPS ຫຼື ssh. ເບິ່ງ "ການເກັບຮັກສາໄລຍະໄກ" ໃນ
ແຂກ(3).

2. ໃຊ້ເຄື່ອງມື vdiskmanager ທີ່ເປັນເຈົ້າຂອງຂອງ VMware ເພື່ອປ່ຽນຮູບພາບໃຫ້ເປັນຮູບແບບດິບ.

3. ໃຊ້ nbdkit ກັບ plugin VDDK ທີ່ເປັນເຈົ້າຂອງເພື່ອສົ່ງອອກຮູບພາບແຜ່ນເປັນ NBD.
ແຫຼ່ງ. ນີ້ຄວນຈະອະນຸຍາດໃຫ້ທ່ານອ່ານແລະຂຽນໄຟລ໌ VMDK.

SFU ແຜ່ນ (ເປັນ ໃຫມ່ by BSD) ບໍ່ສາມາດເຮັດໄດ້ be ເປີດ.
ຮູບແບບລະບົບໄຟລ໌ UFS ມີຫຼາຍຕົວແປ, ແລະສິ່ງເຫຼົ່ານີ້ບໍ່ໄດ້ລະບຸຕົນເອງ. ໄດ້
Linux kernel ຕ້ອງໄດ້ຮັບການບອກວ່າຕົວແປຂອງ UFS ທີ່ມັນຕ້ອງໃຊ້, ເຊິ່ງ libguestfs ບໍ່ສາມາດ.
ຮູ້ຈັກ.

ທ່ານຕ້ອງຜ່ານທາງເລືອກ mount "ufstype" ທີ່ຖືກຕ້ອງໃນເວລາທີ່ຕິດຕັ້ງລະບົບໄຟລ໌ເຫຼົ່ານີ້.

ເບິ່ງ https://www.kernel.org/doc/Documentation/filesystems/ufs.txt

Windows ReFS
Windows ReFS ແມ່ນສຳເນົາ ZFS/Btrfs ຂອງ Microsoft. ລະບົບໄຟລ໌ນີ້ຍັງບໍ່ທັນໄດ້ກັບຄືນ
ວິສະວະກໍາແລະປະຕິບັດໃນ Linux kernel, ແລະດັ່ງນັ້ນ libguestfs ບໍ່ສະຫນັບສະຫນູນ
ມັນ. ໃນປັດຈຸບັນມັນເບິ່ງຄືວ່າ "ຢູ່ໃນປ່າທໍາມະຊາດ".

ບໍ່ແມ່ນ ASCII ລັກສະນະ ບໍ່ໄດ້ ປາກົດ on VFAT ລະບົບໄຟລ໌.
ອາການປົກກະຕິຂອງບັນຫານີ້:

· ທ່ານ​ໄດ້​ຮັບ​ຄວາມ​ຜິດ​ພາດ​ໃນ​ເວ​ລາ​ທີ່​ທ່ານ​ສ້າງ​ໄຟລ​໌​ທີ່​ຊື່​ໄຟລ​໌​ທີ່​ບໍ່​ແມ່ນ ASCII​
ຕົວ​ອັກ​ສອນ​ໂດຍ​ສະ​ເພາະ​ແມ່ນ​ຕົວ​ອັກ​ສອນ​ທີ່​ບໍ່​ແມ່ນ 8-bit ຈາກ​ພາ​ສາ​ເອ​ເຊຍ (ຈີນ​, ຍີ່​ປຸ່ນ​,
ແລະອື່ນໆ). ລະບົບໄຟລ໌ແມ່ນ VFAT.

· ເມື່ອທ່ານຂຽນລາຍຊື່ຈາກລະບົບໄຟລ໌ VFAT, ຊື່ໄຟລ໌ຈະປາກົດເປັນເຄື່ອງໝາຍຄໍາຖາມ.

ນີ້ແມ່ນຂໍ້ບົກພ່ອງການອອກແບບຂອງລະບົບ GNU/Linux.

VFAT ເກັບຮັກສາຊື່ໄຟລ໌ຍາວເປັນຕົວອັກສອນ UTF-16. ເມື່ອເປີດຫຼືກັບຄືນຊື່ໄຟລ໌, ໄດ້
Linux kernel ຕ້ອງແປເຫຼົ່ານີ້ເປັນບາງຮູບແບບຂອງ 8 bit string. UTF-8 ຈະເປັນ
ທາງເລືອກທີ່ຊັດເຈນ, ຍົກເວັ້ນສໍາລັບຜູ້ໃຊ້ Linux ທີ່ຍັງຄົງໃຊ້ສະຖານທີ່ທີ່ບໍ່ແມ່ນ UTF-8 (ຜູ້ໃຊ້
locale ບໍ່ຮູ້ຈັກກັບ kernel ເພາະວ່າມັນເປັນຫນ້າທີ່ຂອງ libc).

ດັ່ງນັ້ນ, ເຈົ້າຕ້ອງບອກ kernel ວ່າທ່ານຕ້ອງການແປຫຍັງເມື່ອທ່ານຕິດຕັ້ງ
ລະບົບໄຟລ໌. ທັງສອງວິທີການແມ່ນ "iocharset" ພາລາມິເຕີ (ທີ່ບໍ່ກ່ຽວຂ້ອງກັບ
libguestfs) ແລະທຸງ "utf8".

ດັ່ງນັ້ນເພື່ອໃຊ້ລະບົບໄຟລ໌ VFAT ທ່ານຕ້ອງເພີ່ມທຸງ "utf8" ເມື່ອຕິດຕັ້ງ. ຈາກ​ປາ​ແຂກ​,
ໃຊ້:

> mount-options utf8 /dev/sda1 /

ຫຼືຢູ່ໃນເສັ້ນຄໍາສັ່ງຂອງ guestfish:

guestfish [... ] -m /dev/sda1:/:utf8

ຫຼືຈາກ API:

guestfs_mount_options (g, "utf8", "/dev/sda1", "/");

ຫຼັງຈາກນັ້ນ, kernel ຈະແປຊື່ໄຟລ໌ເປັນແລະຈາກ UTF-8 strings.

ພວກເຮົາໄດ້ພິຈາລະນາເພີ່ມທາງເລືອກ mount ນີ້ຢ່າງໂປ່ງໃສ, ແຕ່ຫນ້າເສຍດາຍ, ມີຫຼາຍອັນ
ບັນ​ຫາ​ໃນ​ການ​ເຮັດ​ແນວ​ນັ້ນ​:

· ໃນບາງລະບົບ Linux, ທາງເລືອກ mount "utf8" ບໍ່ເຮັດວຽກ. ພວກເຮົາບໍ່ຊັດເຈນ
ເຂົ້າໃຈວ່າລະບົບໃດຫຼືເປັນຫຍັງ, ແຕ່ນີ້ໄດ້ຖືກລາຍງານຢ່າງຫນ້າເຊື່ອຖືໂດຍຜູ້ໃຊ້ຫນຶ່ງ.

· ມັນຈະປ້ອງກັນບໍ່ໃຫ້ເຈົ້າໃຊ້ພາລາມິເຕີ "iocharset" ເພາະວ່າມັນບໍ່ເຂົ້າກັນໄດ້
ດ້ວຍ "utf8". ມັນອາດຈະບໍ່ເປັນຄວາມຄິດທີ່ດີທີ່ຈະໃຊ້ພາລາມິເຕີນີ້, ແຕ່ພວກເຮົາບໍ່ຕ້ອງການ
ເພື່ອປ້ອງກັນມັນ.

ບໍ່ແມ່ນ ASCII ລັກສະນະ ປາກົດ as ຂີດກ້ອງ (_) on ISO9660 ລະບົບໄຟລ໌.
ລະບົບໄຟລ໌ບໍ່ໄດ້ຖືກກະກຽມຢ່າງຖືກຕ້ອງກັບ mkisofs ຫຼື genisoimage. ໃຫ້ແນ່ໃຈວ່າ
ລະບົບໄຟລ໌ຖືກສ້າງຂື້ນໂດຍໃຊ້ Joliet ແລະ/ຫຼື Rock Ridge extensions. libguestfs ບໍ່
ຕ້ອງການຕົວເລືອກ mount ພິເສດເພື່ອຈັດການກັບລະບົບໄຟລ໌.

ເຮັດບໍ່ໄດ້ ເປີດ Windows ບຸກຄົນທົ່ວໄປ ທີ່ ການນໍາໃຊ້ NTFS
ທ່ານ​ເຫັນ​ຄວາມ​ຜິດ​ພາດ​ເຊັ່ນ​:

mount: ລະບົບໄຟລ໌ທີ່ບໍ່ຮູ້ຈັກປະເພດ 'ntfs'

ໃນ Red Hat Enterprise Linux ຫຼື CentOS, ທ່ານຕ້ອງຕິດຕັ້ງ libguestfs-winsupport
package

ເຮັດບໍ່ໄດ້ ເປີດ or ກວດກາ RHEL 7 ແຂກ.
ເຮັດບໍ່ໄດ້ ເປີດ Linux ບຸກຄົນທົ່ວໄປ ທີ່ ການນໍາໃຊ້ XFS.
ແຂກ RHEL 7, ແລະແຂກອື່ນໆທີ່ໃຊ້ XFS, ສາມາດເປີດໄດ້ໂດຍ libguestfs, ແຕ່ທ່ານ
ຕ້ອງຕິດຕັ້ງຊຸດ "libguestfs-xfs".

ການ ນຳ ໃຊ້ LIBGUESTFS IN YOUR OWN PROGRAMS


ໄດ້ API ມີ ຮ້ອຍຄົນ of ວິທີການ, ບ່ອນທີ່ do I ເລີ່ມຕົ້ນ?
ພວກເຮົາແນະນໍາໃຫ້ທ່ານເລີ່ມຕົ້ນໂດຍການອ່ານພາບລວມ API: "API OVERVIEW" ໃນ ແຂກ(3).

ເຖິງແມ່ນວ່າພາບລວມ API ກວມເອົາ C API, ມັນຍັງມີມູນຄ່າການອ່ານເຖິງແມ່ນວ່າທ່ານ
ໄປໃຊ້ພາສາການຂຽນໂປລແກລມອື່ນ, ເພາະວ່າ API ແມ່ນຄືກັນ, ພຽງແຕ່ງ່າຍດາຍ
ການປ່ຽນແປງຢ່າງມີເຫດຜົນຕໍ່ກັບຊື່ຂອງການໂທ:

C guestfs_ln_sf (g, target, linkname);
Python g.ln_sf (ເປົ້າຫມາຍ, linkname);
OCaml g#ln_sf ເປົ້າໝາຍຊື່ເຊື່ອມຕໍ່;
Perl $g->ln_sf (ເປົ້າໝາຍ, ຊື່ເຊື່ອມຕໍ່);
Shell (guestfish) ຊື່ລິ້ງເປົ້າໝາຍ ln-sf
PHP guestfs_ln_sf ($g, $target, $linkname);

ເມື່ອທ່ານຄຸ້ນເຄີຍກັບພາບລວມ API, ທ່ານຄວນເບິ່ງບັນຊີລາຍຊື່ຂອງການເລີ່ມຕົ້ນນີ້
ຈຸດ​ສໍາ​ລັບ​ການ​ຜູກ​ມັດ​ພາ​ສາ​ອື່ນໆ​: "ການ​ນໍາ​ໃຊ້ LIBGUESTFS ກັບ​ພາ​ສາ​ໂຄງ​ການ​ອື່ນໆ​" ໃນ
ແຂກ(3).

ສາມາດເຮັດໄດ້ I ການນໍາໃຊ້ libguestfs in my ເປັນເຈົ້າຂອງ / ປິດ ແຫຼ່ງ / ການຄ້າ program?
ໂດຍທົ່ວໄປ, ແມ່ນແລ້ວ. ຢ່າງໃດກໍ່ຕາມນີ້ບໍ່ແມ່ນຄໍາແນະນໍາທາງດ້ານກົດຫມາຍ - ອ່ານໃບອະນຸຍາດທີ່ມາພ້ອມກັບ
libguestfs, ແລະຖ້າທ່ານມີຄໍາຖາມສະເພາະ, ຕິດຕໍ່ທະນາຍຄວາມ.

ໃນ​ຕົ້ນ​ສະ​ບັບ​ຕົ້ນ​ສະ​ບັບ​ໃບ​ອະ​ນຸ​ຍາດ​ແມ່ນ​ຢູ່​ໃນ​ໄຟລ​໌ "COPYING.LIB​" (LGPLv2+ ສໍາ​ລັບ​ຫ້ອງ​ສະ​ຫມຸດ​ແລະ​.
bindings) ແລະ "COPYING" (GPLv2+ ສໍາລັບໂຄງການ standalone).

ກຳ ລັງດີບັກ LIBGUESTFS


ຊ່ວຍ, ມັນ ບໍ່ ເຮັດວຽກ!
ຖ້າບໍ່ມີໂຄງການ libguestfs ເບິ່ງຄືວ່າຈະເຮັດວຽກທັງຫມົດ, ດໍາເນີນການໂຄງການຂ້າງລຸ່ມນີ້ແລະວາງ
ສົມບູນ, ບໍ່ໄດ້ແກ້ໄຂ ສົ່ງອອກເຂົ້າໄປໃນອີເມວ "libguestfs" @ "redhat.com":

libguestfs-test-tool

ຖ້າການດຳເນີນການໃດໜຶ່ງລົ້ມເຫລວ, ໃຫ້ສະໜອງຂໍ້ມູນທັງໝົດໃນລາຍການກວດນີ້, ໃນອີເມວ
ເຖິງ "libguestfs" @ "redhat.com":

1. ທ່ານ ກຳ ລັງພະຍາຍາມເຮັດຫຍັງ?

2. ເຈົ້າແລ່ນຄຳສັ່ງອັນໃດແນ່?

3. ຂໍ້ຜິດພາດທີ່ຊັດເຈນຫຼືຜົນໄດ້ຮັບຂອງຄໍາສັ່ງເຫຼົ່ານີ້ແມ່ນຫຍັງ?

4. ເປີດໃຊ້ການດີບັກ, ດໍາເນີນການຄໍາສັ່ງອີກເທື່ອຫນຶ່ງ, ແລະເກັບກໍາຂໍ້ມູນ ສົມບູນ ຜົນຜະລິດ. Do ບໍ່
ດັດແກ້ ໄດ້ ຜົນຜະລິດ.

ສົ່ງອອກ LIBGUESTFS_DEBUG=1
ສົ່ງອອກ LIBGUESTFS_TRACE=1

5. ລວມເອົາສະບັບຂອງ libguestfs, ຮຸ່ນຂອງລະບົບປະຕິບັດການ, ແລະວິທີທີ່ທ່ານຕິດຕັ້ງ
libguestfs (ເຊັ່ນ: ຈາກແຫຼ່ງ, "yum install", ແລະອື່ນໆ)

ວິທີການ do I debug ໃນເວລາທີ່ ການນໍາໃຊ້ ໃດ libguestfs ໂຄງການ or ເຄື່ອງມື (ຕົວຢ່າງ. virt-v2v or virt-df)?
ມີສອງຕົວແປສະພາບແວດລ້ອມ "LIBGUESTFS_*" ທີ່ທ່ານສາມາດຕັ້ງເພື່ອໃຫ້ໄດ້ຫຼາຍ
ຂໍ້ມູນຈາກ libguestfs.

"LIBGUESTFS_TRACE"
ຕັ້ງຄ່ານີ້ເປັນ 1 ແລະ libguestfs ຈະພິມອອກແຕ່ລະຄໍາສັ່ງ / API call ໃນຮູບແບບທີ່
ແມ່ນຄ້າຍຄືກັນກັບຄໍາສັ່ງຂອງ guestfish.

"LIBGUESTFS_DEBUG"
ຕັ້ງຄ່ານີ້ເປັນ 1 ເພື່ອເປີດໃຊ້ຂໍ້ຄວາມດີບັກຈໍານວນຫຼວງຫຼາຍ. ຖ້າເຈົ້າຄິດ
ມີບັນຫາບາງຢ່າງພາຍໃນເຄື່ອງໃຊ້ libguestfs, ຫຼັງຈາກນັ້ນທ່ານຄວນໃຊ້ມັນ
ທາງເລືອກ.

ເພື່ອຕັ້ງຄ່າເຫຼົ່ານີ້ຈາກ shell, ເຮັດແນວນີ້ກ່ອນທີ່ຈະດໍາເນີນການໂຄງການ:

ສົ່ງອອກ LIBGUESTFS_TRACE=1
ສົ່ງອອກ LIBGUESTFS_DEBUG=1

ສໍາລັບ csh/tcsh ຄໍາສັ່ງທຽບເທົ່າຈະເປັນ:

setenv LIBGUESTFS_TRACE 1
setenv LIBGUESTFS_DEBUG 1

ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ, ເບິ່ງ: "ຕົວແປສະພາບແວດລ້ອມ" ໃນ ແຂກ(3).

ວິທີການ do I debug ໃນເວລາທີ່ ການນໍາໃຊ້ ປາແຂກ?
ທ່ານສາມາດນໍາໃຊ້ຕົວແປສະພາບແວດລ້ອມດຽວກັນຂ້າງເທິງ. ທາງເລືອກໃນການໃຊ້ປາ guestfish
-x (ເພື່ອຕິດຕາມຄໍາສັ່ງ) ຫຼື -v (ເພື່ອໃຫ້ໄດ້ຜົນດີບັກເຕັມ), ຫຼືທັງສອງ.

ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມ, ເບິ່ງ: ປາແຂກ(1).

ວິທີການ do I debug ໃນເວລາທີ່ ການນໍາໃຊ້ ໄດ້ API?
ໂທຫາ "guestfs_set_trace" ໃນ ແຂກ(3) ເພື່ອເປີດໃຊ້ການຕິດຕາມຄໍາສັ່ງ, ແລະ/ຫຼື
"guestfs_set_verbose" ໃນ ແຂກ(3​) ເພື່ອ​ເປີດ​ໃຊ້​ງານ​ຂໍ້​ຄວາມ​ດີ​ບັກ​.

ສໍາລັບຜົນໄດ້ຮັບທີ່ດີທີ່ສຸດ, ໂທຫາຫນ້າທີ່ເຫຼົ່ານີ້ໄວເທົ່າທີ່ຈະໄວໄດ້, ພຽງແຕ່ຫຼັງຈາກສ້າງ
Guestfs ຈັດການຖ້າທ່ານສາມາດເຮັດໄດ້, ແລະແນ່ນອນກ່ອນທີ່ຈະໂທຫາການເປີດຕົວ.

ວິທີການ do I ຈັບ debug output ແລະ ເອົາໃຈໃສ່ it ເຂົ້າໄປໃນ my ການຕັດໄມ້ ລະບົບ?
ໃຊ້ API ເຫດການ. ຕົວຢ່າງ, ເບິ່ງ: "ຕັ້ງຄ່າການເອີ້ນຄືນເພື່ອຈັດການເຫດການ" ໃນ ແຂກ(3​)
ແລະ ຕົວຢ່າງ/debug-logging.c ໂຄງການໃນແຫຼ່ງ libguestfs.

ຂຸດ ເລິກກວ່າ ເຂົ້າໄປໃນ ໄດ້ ເຄື່ອງໃຊ້ໄຟຟ້າ ເຮືອ ຂະບວນການ.
ເປີດໃຊ້ການດີບັກ ແລະຈາກນັ້ນອ່ານເອກະສານນີ້ໃນຂະບວນການບູດເຄື່ອງ:
guestfs-ພາຍໃນ(1).

libguestfs hangs or ຂໍ້ເທັດຈິງ ໃນລະຫວ່າງການ ແລ່ນ/ເປີດ.
ເປີດໃຊ້ການດີບັກ ແລະເບິ່ງຜົນອອກເຕັມທີ່. ຖ້າ​ຫາກ​ວ່າ​ທ່ານ​ບໍ່​ສາ​ມາດ​ແກ້​ໄຂ​ສິ່ງ​ທີ່​ເກີດ​ຂຶ້ນ​,
ຍື່ນບົດລາຍງານ bug, ລວມທັງ ສົມບູນ ຜົນຜະລິດຂອງ libguestfs-test-tool(1).

Debugging ເສລີພາບ
ຖ້າທ່ານກໍາລັງໃຊ້ libvirt backend, ແລະ libvirt ລົ້ມເຫລວ, ຫຼັງຈາກນັ້ນທ່ານສາມາດເປີດໃຊ້ໄດ້
debugging ໂດຍການແກ້ໄຂ /etc/libvirt/libvirtd.conf.

ຖ້າ​ຫາກ​ວ່າ​ທ່ານ​ກໍາ​ລັງ​ແລ່ນ​ເປັນ​ບໍ່​ແມ່ນ​ຮາກ​, ຫຼັງ​ຈາກ​ນັ້ນ​ທ່ານ​ຕ້ອງ​ແກ້​ໄຂ​ໄຟລ​໌​ທີ່​ແຕກ​ຕ່າງ​ກັນ​. ສ້າງ
~/.config/libvirt/libvirtd.conf ບັນ​ຈຸ:

log_level=1
log_outputs="1:file:/tmp/libvirtd.log"

ຂ້າເຊສຊັນໃດກໍໄດ້ (ບໍ່ເປັນຮາກ) libvirtd ທີ່ກຳລັງແລ່ນຢູ່, ແລະຄັ້ງຕໍ່ໄປທີ່ທ່ານເປີດໃຊ້ libguestfs
ຄໍາສັ່ງ, ທ່ານຄວນເຫັນຈໍານວນຂະຫນາດໃຫຍ່ຂອງຂໍ້ມູນ debugging ທີ່ເປັນປະໂຫຍດຈາກ libvirtd ໃນ
/tmp/libvirtd.log

ການອອກແບບ/ພາຍໃນ OF LIBGUESTFS


ເບິ່ງ guestfs-ພາຍໃນ(1).

ເປັນຫຍັງ ບໍ່ໄດ້ ທ່ານ do ທຸກສິ່ງທຸກຢ່າງ ໂດຍຜ່ານການ ໄດ້ ຟິວ / ລະບົບໄຟລ໌ ການໂຕ້ຕອບ?
ພວກເຮົາສະເຫນີຄໍາສັ່ງທີ່ເອີ້ນວ່າ ແຂກ(1​) ທີ່​ເຮັດ​ໃຫ້​ທ່ານ​ຕິດ​ຕັ້ງ​ລະ​ບົບ​ໄຟລ​໌​ທຶກ​ຜູ້​ເຂົ້າ​ໃນ​
ເຈົ້າພາບ. ນີ້ແມ່ນປະຕິບັດເປັນໂມດູນ FUSE. ເປັນຫຍັງພວກເຮົາບໍ່ພຽງແຕ່ປະຕິບັດທັງຫມົດຂອງ
libguestfs ໃຊ້ກົນໄກນີ້, ແທນທີ່ຈະມີ API ຂະຫນາດໃຫຍ່ແລະສັບສົນຫຼາຍບໍ?

ເຫດຜົນແມ່ນສອງເທົ່າ. ທໍາອິດ, libguestfs ສະຫນອງການໂທ API ສໍາລັບການເຮັດສິ່ງຕ່າງໆເຊັ່ນ
ການ​ສ້າງ​ແລະ​ການ​ລົບ​ພາ​ທິ​ຊັນ​ແລະ​ປະ​ລິ​ມານ​ຢ່າງ​ມີ​ເຫດ​ຜົນ​, ທີ່​ບໍ່​ເຫມາະ​ກັບ​ລະ​ບົບ​ໄຟລ​໌​
ຕົວແບບຢ່າງງ່າຍດາຍ. ຫຼືແທນທີ່ຈະ, ທ່ານສາມາດໃສ່ພວກມັນໄດ້: ຕົວຢ່າງ, ການສ້າງພາທິຊັນ
ສາມາດຖືກສ້າງແຜນທີ່ເປັນ "mkdir /fs/hda1" ແຕ່ຫຼັງຈາກນັ້ນທ່ານຈະຕ້ອງກໍານົດວິທີການທີ່ຈະເລືອກເອົາ.
ຂະຫນາດຂອງພາທິຊັນ (ບາງທີ "echo 100M > /fs/hda1/.size"), ແລະປະເພດພາທິຊັນ,
ພາກສ່ວນເລີ່ມຕົ້ນແລະສິ້ນສຸດແລະອື່ນໆ, ແຕ່ເມື່ອທ່ານໄດ້ເຮັດ API ທີ່ອີງໃສ່ລະບົບໄຟລ໌ເລີ່ມຕົ້ນ
ເບິ່ງຄວາມສັບສົນຫຼາຍກ່ວາ API ການໂທທີ່ພວກເຮົາມີໃນປັດຈຸບັນ.

ເຫດຜົນທີສອງແມ່ນສໍາລັບປະສິດທິພາບ. FUSE ຕົວຂອງມັນເອງມີປະສິດທິພາບສົມເຫດສົມຜົນ, ແຕ່ມັນກໍ່ເຮັດໄດ້
ເຮັດການໂທເອກະລາດຫຼາຍອັນເຂົ້າໄປໃນໂມດູນ FUSE. ໃນ guestmount ເຫຼົ່ານີ້ຕ້ອງ
ຖືກແປເປັນຂໍ້ຄວາມໄປຫາເຄື່ອງໃຊ້ libguestfs ທີ່ມີຄ່າໃຊ້ຈ່າຍຂະຫນາດໃຫຍ່ (ໃນເວລາ
ແລະການເດີນທາງໄປມາ). ຕົວຢ່າງ, ການອ່ານໄຟລ໌ໃນ chunks 64 KB ແມ່ນບໍ່ມີປະສິດທິພາບເພາະວ່າແຕ່ລະຄົນ
chunk ຈະປ່ຽນເປັນການເດີນທາງຮອບດຽວ. ໃນ libguestfs API ມັນມີຫຼາຍ
ປະສິດທິພາບໃນການດາວໂຫຼດໄຟລ໌ທັງໝົດ ຫຼືໄດເລກະທໍລີໂດຍຜ່ານໜຶ່ງໃນສາຍໂທສະຕຣີມເຊັ່ນ
"guestfs_download" ຫຼື "guestfs_tar_out".

ເປັນຫຍັງ ບໍ່ໄດ້ ທ່ານ do ທຸກສິ່ງທຸກຢ່າງ ໂດຍຜ່ານການ GVFS?
ບັນຫາແມ່ນຄ້າຍຄືກັນກັບບັນຫາກັບ FUSE.

GVFS ເປັນຕົວຫຍໍ້ທີ່ດີກວ່າ POSIX/FUSE. ມີ backend FTP ສໍາລັບ GVFS, ເຊິ່ງແມ່ນ
ຊຸກຍູ້ເພາະວ່າ FTP ແມ່ນແນວຄວາມຄິດຄ້າຍຄືກັນກັບ libguestfs API. ຢ່າງໃດກໍຕາມ, GVFS
FTP backend ເຮັດໃຫ້ການເຊື່ອມຕໍ່ຫຼາຍຄັ້ງພ້ອມກັນເພື່ອຮັກສາການໂຕ້ຕອບ, ເຊິ່ງ
ພວກເຮົາບໍ່ສາມາດເຮັດໄດ້ຢ່າງງ່າຍດາຍກັບ libguestfs.

ເປັນຫຍັງ ສາມາດເຮັດໄດ້ I ຂຽນ to ໄດ້ ແຜ່ນ, ເຖິງແມ່ນວ່າ ເຖິງແມ່ນວ່າ I ເພີ່ມ it ອ່ານ​ຢ່າງ​ດຽວ?
ເປັນຫຍັງ ບໍ່ "--ro" ປາກົດ to ມີ no ຜົນກະທົບ?
ເມື່ອທ່ານເພີ່ມແຜ່ນອ່ານເທົ່ານັ້ນ, libguestfs ວາງທັບທີ່ຂຽນໄດ້ຢູ່ເທິງສຸດ
ແຜ່ນພື້ນຖານ. ຂຽນເຂົ້າໄປໃນການວາງຊ້ອນນີ້, ແລະຖືກຍົກເລີກເມື່ອຈັບປິດ
(ຫຼື "Gestfish" ແລະອື່ນໆອອກ).

ມີສອງເຫດຜົນສໍາລັບການເຮັດມັນດ້ວຍວິທີນີ້: ກ່ອນອື່ນ ໝົດ, ແຜ່ນທີ່ອ່ານເທົ່ານັ້ນແມ່ນບໍ່ເປັນໄປໄດ້
ຫຼາຍໆກໍລະນີ (ເຊັ່ນ: IDE ພຽງແຕ່ບໍ່ສະຫນັບສະຫນູນພວກມັນ, ດັ່ງນັ້ນທ່ານບໍ່ສາມາດມີ IDE-emulated
ແຜ່ນອ່ານເທົ່ານັ້ນ, ເຖິງແມ່ນວ່ານີ້ບໍ່ແມ່ນທົ່ວໄປໃນການຕິດຕັ້ງ libguestfs ທີ່ແທ້ຈິງ).

ອັນທີສອງແລະສໍາຄັນກວ່ານັ້ນ, ເຖິງແມ່ນວ່າແຜ່ນທີ່ອ່ານໄດ້ເທົ່ານັ້ນເປັນໄປໄດ້, ທ່ານຈະບໍ່ຕ້ອງການ
ເຂົາເຈົ້າ. ການຕິດຕັ້ງລະບົບໄຟລ໌ໃດໆທີ່ມີວາລະສານ, ເຖິງແມ່ນວ່າ "mount -o ro", ເຮັດໃຫ້ເກີດການຂຽນເຖິງ
ລະບົບໄຟລ໌ເນື່ອງຈາກວ່າວາລະສານຕ້ອງໄດ້ຮັບການຫຼິ້ນຄືນໃຫມ່ແລະ metadata ປັບປຸງ. ຖ້າແຜ່ນ
ແມ່ນອ່ານໄດ້ຢ່າງດຽວແທ້ໆ, ທ່ານຈະບໍ່ສາມາດຕິດຕັ້ງລະບົບໄຟລ໌ເປື້ອນໄດ້.

ເພື່ອເຮັດໃຫ້ມັນສາມາດໃຊ້ໄດ້, ພວກເຮົາສ້າງການວາງຊ້ອນກັນເປັນບ່ອນເກັບຮັກສາການຂຽນເຫຼົ່ານີ້ຊົ່ວຄາວ, ແລະ
ຫຼັງຈາກນັ້ນ, ພວກເຮົາຍົກເລີກມັນຫຼັງຈາກນັ້ນ. ນີ້ຮັບປະກັນວ່າແຜ່ນທີ່ຕິດພັນແມ່ນບໍ່ຖືກແຕະຕ້ອງສະເຫມີ.

ໃຫ້ສັງເກດວ່າມີການທົດສອບການຖົດຖອຍສໍາລັບການນີ້ໃນເວລາສ້າງ libguestfs (ໃນ
"tests/qemu"). ນີ້ແມ່ນເຫດຜົນຫນຶ່ງວ່າເປັນຫຍັງມັນເປັນສິ່ງສໍາຄັນສໍາລັບຜູ້ຫຸ້ມຫໍ່ທີ່ຈະດໍາເນີນການຊຸດທົດສອບ.

ບໍ່ "--ro" ເຮັດໃຫ້ ທັງຫມົດ ແຜ່ນ ອ່ານ​ຢ່າງ​ດຽວ?
ບໍ່ມີ! ຕົວເລືອກ "--ro" ມີຜົນກະທົບພຽງແຕ່ແຜ່ນທີ່ເພີ່ມຢູ່ໃນເສັ້ນຄໍາສັ່ງ, ie. ການນໍາໃຊ້ "-a" ແລະ
"-d" ທາງເລືອກ.

ໃນ guestfish, ຖ້າທ່ານໃຊ້ຄໍາສັ່ງ "add", ຫຼັງຈາກນັ້ນ, disk ຈະຖືກເພີ່ມ read-write (ເວັ້ນເສຍແຕ່ວ່າທ່ານ
ລະບຸທຸງ "readonly:true" ຢ່າງຊັດເຈນດ້ວຍຄໍາສັ່ງ).

ສາມາດເຮັດໄດ້ I ການນໍາໃຊ້ "ປາ​ແຂກ --ro" as a ວິທີການ to ສໍາຮອງຂໍ້ມູນ my virtual ເຄື່ອງຈັກ?
ປົກກະຕິແລ້ວນີ້ແມ່ນ ບໍ່ ເປັນຄວາມຄິດທີ່ດີ. ຄໍາ​ຖາມ​ແມ່ນ​ໄດ້​ຮັບ​ການ​ຕອບ​ໃນ​ລະ​ອຽດ​ເພີ່ມ​ເຕີມ​ໃນ​ທາງ​ໄປ​ສະ​ນີ​ນີ້​
ປະກາດລາຍຊື່: https://www.redhat.com/archives/libguestfs/2010-August/msg00024.html

ເບິ່ງຄຳຖາມຕໍ່ໄປ.

ເປັນຫຍັງ ບໍ່ສາມາດ I ແລ່ນ fsck on a ດໍາລົງຊີວິດ ລະບົບໄຟລ໌ ການນໍາໃຊ້ "ປາ​ແຂກ --ro"?
ຄໍາສັ່ງນີ້ຈະປົກກະຕິແລ້ວ ບໍ່ ເຮັດວຽກ:

guestfish --ro -a /dev/vg/my_root_fs ແລ່ນ : fsck /dev/sda

ເຫດຜົນສໍາລັບການນີ້ແມ່ນວ່າ qemu ສ້າງ snapshot ໃນໄລຍະລະບົບໄຟລ໌ຕົ້ນສະບັບ, ແຕ່ວ່າມັນ
ບໍ່ໄດ້ສ້າງພາບຖ່າຍຈຸດເວລາອັນເຄັ່ງຄັດ. ຕັນຂອງຂໍ້ມູນຢູ່ໃນພື້ນຖານ
ລະບົບໄຟລ໌ຖືກອ່ານໂດຍ qemu ໃນເວລາທີ່ແຕກຕ່າງກັນຍ້ອນວ່າການດໍາເນີນງານ fsck ກ້າວຫນ້າ, ກັບເຈົ້າພາບ
ຂຽນໃນລະຫວ່າງ. ຜົນໄດ້ຮັບແມ່ນວ່າ fsck ເຫັນການສໍ້ລາດບັງຫຼວງຂະຫນາດໃຫຍ່ (ຈິນຕະນາການ, ບໍ່ແມ່ນຄວາມຈິງ!)
ແລະລົ້ມເຫລວ.

ສິ່ງທີ່ທ່ານຕ້ອງເຮັດຄືການສ້າງພາບຖ່າຍຈຸດເວລາ. ຖ້າມັນເປັນປະລິມານຢ່າງມີເຫດຜົນ, ໃຫ້ໃຊ້
ພາບຖ່າຍ LVM2. ຖ້າລະບົບໄຟລ໌ຕັ້ງຢູ່ໃນບາງສິ່ງບາງຢ່າງເຊັ່ນ: ໄຟລ໌ btrfs/ZFS,
ໃຊ້ພາບຖ່າຍ btrfs/ZFS, ແລະຫຼັງຈາກນັ້ນແລ່ນ fsck ໃນພາບຖ່າຍ. ໃນ​ການ​ປະ​ຕິ​ບັດ​, ທ່ານ​ບໍ່​ໄດ້​
ຈໍາເປັນຕ້ອງໃຊ້ libguestfs ສໍາລັບການນີ້ - ພຽງແຕ່ດໍາເນີນການ /sbin/fsck ໂດຍກົງ.

ການສ້າງພາບຖ່າຍຈຸດເວລາຂອງອຸປະກອນແມ່ຂ່າຍ ແລະໄຟລ໌ແມ່ນຢູ່ນອກຂອບເຂດຂອງ
libguestfs, ເຖິງແມ່ນວ່າ libguestfs ສາມາດປະຕິບັດພວກມັນໄດ້ເມື່ອພວກມັນຖືກສ້າງຂື້ນ.

ແມ່ນຫຍັງ ໄດ້ ຄວາມແຕກຕ່າງ ລະຫວ່າງ ປາແຂກ ແລະ virt-scue?
ຫຼາຍຄົນສັບສົນໂດຍສອງເຄື່ອງມືທີ່ມີລັກສະນະຄ້າຍຄືກັນທີ່ພວກເຮົາສະໜອງໃຫ້:

$ guestfish --ro -a guest.img
> ແລ່ນ
> fsck /dev/sda1

$ virt-rescue --ro guest.img
> /sbin/fsck / dev / sda1

ແລະຄໍາຖາມທີ່ກ່ຽວຂ້ອງທີ່ເກີດຂື້ນຫຼັງຈາກນັ້ນແມ່ນວ່າເປັນຫຍັງທ່ານບໍ່ສາມາດພິມຄໍາສັ່ງເຕັມ shell
ກັບ - ທາງ​ເລືອກ​ທັງ​ຫມົດ​ໃນ guestfish (ແຕ່​ທ່ານ​ສາ​ມາດ​ເຂົ້າ​ໄປ​ໃນ virt-scue(1)).

ປາແຂກ(1​) ເປັນ​ໂຄງ​ການ​ສະ​ຫນອງ​ການ​ເຂົ້າ​ເຖິງ​ໂຄງ​ສ້າງ​ຂອງ​ ແຂກ(3) API. ມັນ​ເກີດ​ຂື້ນ
ຈະເປັນແກະໂຕ້ຕອບທີ່ດີເກີນໄປ, ແຕ່ຈຸດປະສົງຕົ້ນຕໍຂອງມັນແມ່ນການເຂົ້າເຖິງໂຄງສ້າງຈາກ
shell scripts. ຄິດວ່າມັນຄ້າຍຄືກັບການຜູກມັດພາສາ, ເຊັ່ນ Python ແລະການຜູກມັດອື່ນໆ,
ແຕ່ສໍາລັບແກະ. ປັດໄຈຄວາມແຕກຕ່າງທີ່ສໍາຄັນຂອງ guestfish (ແລະ libguestfs API ໃນ
ໂດຍທົ່ວໄປ) ແມ່ນຄວາມສາມາດໃນການປ່ຽນແປງອັດຕະໂນມັດ.

virt-scue(1​) ເປັນ​ວິ​ທີ​ການ​ຟຣີ​ສໍາ​ລັບ​ການ​ທັງ​ຫມົດ freeform ເພື່ອ​ບູດ​ເຄື່ອງ​ມື libguestfs ແລະ​ເຮັດ​ໃຫ້
ການປ່ຽນແປງໂດຍຕົນເອງຕໍ່ກັບ VM ຂອງທ່ານ. ມັນບໍ່ມີໂຄງສ້າງ, ທ່ານບໍ່ສາມາດອັດຕະໂນມັດໄດ້, ແຕ່ສໍາລັບການເຮັດ
ການ​ແກ້​ໄຂ​ດ່ວນ​ໂດຍ​ສະ​ເພາະ​ສໍາ​ລັບ​ບຸກ​ຄົນ​ທົ່ວ​ໄປ​ຂອງ​ທ່ານ​, ມັນ​ສາ​ມາດ​ເປັນ​ປະ​ໂຫຍດ​ຫຼາຍ​.

ແຕ່, libguestfs ຍັງມີ "backdoor" ເຂົ້າໄປໃນອຸປະກອນທີ່ຊ່ວຍໃຫ້ທ່ານສາມາດສົ່ງໂດຍຕົນເອງ.
ຄຳສັ່ງ shell. ມັນ​ບໍ່​ເປັນ​ການ​ປ່ຽນ​ແປງ​ໄດ້​ເປັນ​ການ​ຊ່ວຍ​ເຫຼືອ virt​, ເພາະ​ວ່າ​ທ່ານ​ບໍ່​ສາ​ມາດ​ພົວ​ພັນ​ກັບ​
ຄໍາສັ່ງ shell, ແຕ່ໃນທີ່ນີ້ມັນເປັນແນວໃດ:

> debug sh "cmd arg1 arg2 ... "

ໃຫ້ສັງເກດວ່າທ່ານຄວນ ບໍ່ ອີງໃສ່ນີ້. ມັນສາມາດຖືກໂຍກຍ້າຍອອກຫຼືປ່ຽນແປງໃນອະນາຄົດ. ຖ້າເຈົ້າ
ໂປຣແກຣມຕ້ອງການການດຳເນີນການບາງຢ່າງ, ກະລຸນາເພີ່ມມັນໃສ່ libguestfs API ແທນ.

ແມ່ນຫຍັງ ໄດ້ ການຈັດການ ກັບ "ປາ​ແຂກ -i"?
ເປັນຫຍັງ ບໍ່ virt-cat ພຽງແຕ່ ການເຮັດວຽກ on a ທີ່ແທ້ຈິງ VM ຮູບພາບ, ແຕ່ virt-df ເຮັດວຽກ on ໃດ ແຜ່ນ ຮູບ?
ແມ່ນ​ຫຍັງ ບໍ່ "ບໍ່ ຮາກ ອຸປະກອນ ພົບເຫັນ in ນີ້ ປະຕິບັດການ ລະບົບ ຮູບພາບ" ຫມາຍຄວາມວ່າ?
ຄໍາຖາມເຫຼົ່ານີ້ແມ່ນກ່ຽວຂ້ອງທັງຫມົດໃນລະດັບພື້ນຖານທີ່ອາດຈະບໍ່ທັນທີທັນໃດ
ຈະແຈ້ງ

ຢູ່​ທີ່ ແຂກ(3) ລະດັບ API, ເປັນ "ຮູບພາບແຜ່ນ" ແມ່ນພຽງແຕ່ pile ຂອງ partitions ແລະລະບົບໄຟລ໌.

ໃນທາງກົງກັນຂ້າມ, ເມື່ອເຄື່ອງ virtual boots, ມັນຕິດຕັ້ງລະບົບໄຟລ໌ເຫຼົ່ານັ້ນໃຫ້ສອດຄ່ອງ
ລຳດັບເຊັ່ນ:

/ (/dev/sda2)

/ boot (/dev/sda1)

/ ເຮືອນ (/dev/vg_external/Home)

/ usr (/dev/vg_os/lv_usr)

/ var (/dev/vg_os/lv_var)

(ຫຼື drive ຕົວອັກສອນໃນ Windows).

API ກ່ອນ​ອື່ນ​ຫມົດ​ເບິ່ງ​ຮູບ​ພາບ​ແຜ່ນ​ຢູ່​ໃນ​ລະ​ດັບ "pile ຂອງ​ລະ​ບົບ​ໄຟລ​໌​"​. ແຕ່ມັນຍັງ
ມີ​ວິ​ທີ​ການ​ກວດ​ກາ​ຮູບ​ພາບ​ແຜ່ນ​ເພື່ອ​ເບິ່ງ​ວ່າ​ມັນ​ປະ​ກອບ​ດ້ວຍ​ລະ​ບົບ​ປະ​ຕິ​ບັດ​ການ​, ແລະ​ວິ​ທີ​ການ​
ແຜ່ນຖືກຕິດຕັ້ງເມື່ອລະບົບປະຕິບັດການເລີ່ມຕົ້ນ: "INSPECTION" ໃນ ແຂກ(3).

ຜູ້ໃຊ້ຄາດຫວັງວ່າເຄື່ອງມືບາງຢ່າງ (ເຊັ່ນ: virt-cat(1)) ເພື່ອ​ເຮັດ​ວຽກ​ຮ່ວມ​ກັບ​ເສັ້ນ​ທາງ VM​:

virt-cat fedora.img /var/log/messages

virt-cat ຮູ້ໄດ້ແນວໃດ / var ເປັນພາທິຊັນແຍກຕ່າງຫາກບໍ? trick ແມ່ນ ວ່າ virt cat
ດໍາເນີນການກວດສອບຮູບພາບໃນແຜ່ນ, ແລະໃຊ້ມັນເພື່ອແປເສັ້ນທາງຢ່າງຖືກຕ້ອງ.

ເຄື່ອງມືບາງຢ່າງ (ລວມທັງ virt-cat(1) virt-edit(1) virt-ls(1)) ໃຊ້ການກວດກາເພື່ອສ້າງແຜນທີ່ VM
ເສັ້ນທາງ. ເຄື່ອງມືອື່ນໆ, ເຊັ່ນ: virt-df(1) ແລະ virt-filesystems(1​) ການ​ດໍາ​ເນີນ​ງານ​ທັງ​ຫມົດ​ທີ່​
ລະດັບ "pile ໃຫຍ່ຂອງລະບົບໄຟລ໌" ດິບຂອງ libguestfs API, ແລະຢ່າໃຊ້ການກວດສອບ.

ປາແຂກ(1) ຢູ່ໃນພື້ນທີ່ກາງທີ່ຫນ້າສົນໃຈ. ຖ້າທ່ານໃຊ້ -a ແລະ -m ເສັ້ນຄໍາສັ່ງ
ທາງ​ເລືອກ​, ຫຼັງ​ຈາກ​ນັ້ນ​ທ່ານ​ຕ້ອງ​ບອກ guestfish ຢ່າງ​ແທ້​ຈິງ​ວິ​ທີ​ການ​ເພີ່ມ​ຮູບ​ພາບ​ແຜ່ນ​ແລະ​ບ່ອນ​ທີ່​ຈະ​ຕິດ​ຕັ້ງ​
ການແບ່ງສ່ວນ. ນີ້ແມ່ນລະດັບ API ດິບ.

ຖ້າທ່ານໃຊ້ -i ທາງເລືອກ, libguestfs ດໍາເນີນການກວດກາແລະຕິດຕັ້ງລະບົບໄຟລ໌ສໍາລັບ
ທ່ານ.

ຂໍ້ຜິດພາດ "ບໍ່ພົບອຸປະກອນຮາກຢູ່ໃນຮູບພາບຂອງລະບົບປະຕິບັດການ" ແມ່ນກ່ຽວຂ້ອງກັບເລື່ອງນີ້. ມັນ
ຫມາຍຄວາມວ່າການກວດສອບບໍ່ສາມາດຊອກຫາລະບົບປະຕິບັດການພາຍໃນຮູບພາບແຜ່ນທີ່ທ່ານໃຫ້
ມັນ. ເຈົ້າອາດຈະເຫັນອັນນີ້ຈາກບັນດາໂຄງການເຊັ່ນ: virt-cat ຖ້າເຈົ້າພະຍາຍາມໃຊ້ພວກມັນໃນບາງອັນ
ເຊິ່ງເປັນຮູບພາບແຜ່ນ, ບໍ່ແມ່ນຮູບແຜ່ນ virtual machine.

ແມ່ນ​ຫຍັງ do ເຫຼົ່ານີ້ "ດີບັກ*" ແລະ "ພາຍໃນ-*" ຫນ້າທີ່ ເຮັດແນວໃດ?
ມີບາງຫນ້າທີ່ຖືກນໍາໃຊ້ສໍາລັບການ debugging ແລະຈຸດປະສົງພາຍໃນແມ່ນ ບໍ່
ສ່ວນຫນຶ່ງຂອງ API ທີ່ຫມັ້ນຄົງ.

ຟັງຊັນ "debug*" (ຫຼື "guestfs_debug*"), ຕົ້ນຕໍແມ່ນ "guestfs_debug" ໃນ ແຂກ(3) ແລະ
ມືຂອງຄົນອື່ນ, ຖືກນໍາໃຊ້ສໍາລັບການ debugging libguestfs. ເຖິງແມ່ນວ່າພວກເຂົາບໍ່ແມ່ນສ່ວນຫນຶ່ງຂອງ
API ທີ່ຫມັ້ນຄົງແລະດັ່ງນັ້ນອາດຈະມີການປ່ຽນແປງຫຼືຖືກໂຍກຍ້າຍອອກໄດ້ທຸກເວລາ, ບາງໂຄງການອາດຈະຕ້ອງການໂທຫາ
ເຫຼົ່ານີ້ໃນຂະນະທີ່ລໍຖ້າຄຸນສົມບັດທີ່ຈະຖືກເພີ່ມໃສ່ libguestfs.

ຟັງຊັນ "internal-*" (ຫຼື "guestfs_internal_*") ແມ່ນໃຊ້ຢ່າງດຽວໂດຍ libguestfs.
ຕົວຂອງມັນເອງ. ບໍ່ມີເຫດຜົນສໍາລັບໂຄງການທີ່ຈະໂທຫາພວກເຂົາ, ແລະໂຄງການບໍ່ຄວນພະຍາຍາມໃຊ້
ເຂົາເຈົ້າ. ການນໍາໃຊ້ພວກມັນມັກຈະເຮັດໃຫ້ສິ່ງທີ່ບໍ່ດີເກີດຂື້ນ, ເຊັ່ນດຽວກັນກັບບໍ່ເປັນສ່ວນຫນຶ່ງຂອງ
API ຄົງທີ່ເອກະສານ.

ນັກພັດທະນາ


ບ່ອນທີ່ do I ສົ່ງ ເພີ້ມ?
ກະລຸນາສົ່ງ patches ໄປຫາລາຍຊື່ທາງໄປສະນີ libguestfs
https://www.redhat.com/mailman/listinfo/libguestfs. You don't have to be subscribed, but
ຈະມີການຊັກຊ້າຈົນກ່ວາການປະກາດຂອງທ່ານໄດ້ຮັບການອະນຸມັດດ້ວຍຕົນເອງ.

ກະ​ລຸ​ນາ ບໍ່ໄດ້ ການນໍາໃຊ້ GitHub ດຶງ ການຮ້ອງຂໍ - ພວກເຂົາເຈົ້າ ຈະ be ບໍ່ສົນໃຈ. ເຫດຜົນແມ່ນ (a) ພວກເຮົາຕ້ອງການ
ເພື່ອປຶກສາຫາລືແລະແຍກແພັກເກັດຢູ່ໃນບັນຊີລາຍຊື່ທາງໄປສະນີ, ແລະ (b) ການຮ້ອງຂໍດຶງ github ກາຍເປັນ.
merge commits ແຕ່ພວກເຮົາຕ້ອງການທີ່ຈະມີປະຫວັດສາດ linear.

ວິທີການ do I ສະເຫນີ a ຄຸນ​ນະ​ສົມ​ບັດ?
ລັກສະນະໃຫມ່ຂະຫນາດໃຫຍ່ທີ່ທ່ານຕັ້ງໃຈຈະປະກອບສ່ວນຄວນໄດ້ຮັບການສົນທະນາໃນບັນຊີລາຍຊື່ທາງໄປສະນີ
ທໍາອິດ (https://www.redhat.com/mailman/listinfo/libguestfs). ນີ້ຫຼີກເວັ້ນຄວາມຜິດຫວັງ
ແລະການເຮັດວຽກທີ່ເສຍເງິນຖ້າພວກເຮົາບໍ່ຄິດວ່າຄຸນສົມບັດຈະເຫມາະກັບໂຄງການ libguestfs.

ຖ້າທ່ານຕ້ອງການແນະນໍາຄຸນສົມບັດທີ່ເປັນປະໂຫຍດແຕ່ບໍ່ຕ້ອງການຂຽນລະຫັດ, ທ່ານສາມາດຍື່ນຄໍາຮ້ອງຂໍ a
bug (ເບິ່ງ "ການ​ໄດ້​ຮັບ​ການ​ຊ່ວຍ​ເຫຼືອ​ແລະ​ການ​ລາຍ​ງານ​ຂໍ້​ຜິດ​ພາດ") ກັບ "RFE:" ໃນ​ຕອນ​ຕົ້ນ​ຂອງ​ບົດ​ສະ​ຫຼຸບ
ເສັ້ນ.

ຜູ້ທີ່ ສາມາດເຮັດໄດ້ ຄໍາຫມັ້ນສັນຍາ to libguestfs git?
ປະມານ 5 ຄົນມີການເຂົ້າເຖິງ github. Patches ຄວນໄດ້ຮັບການປະກາດຢູ່ໃນບັນຊີລາຍຊື່ທໍາອິດ
ແລະ ACKed. ນະ​ໂຍ​ບາຍ​ສໍາ​ລັບ​ການ ACKing ແລະ pushing patches ແມ່ນ​ໄດ້​ລະ​ບຸ​ໄວ້​ທີ່​ນີ້​:

https://www.redhat.com/archives/libguestfs/2012-January/msg00023.html

ສາມາດເຮັດໄດ້ I fork libguestfs?
ແນ່ນອນເຈົ້າສາມາດເຮັດໄດ້. Git ເຮັດໃຫ້ມັນງ່າຍທີ່ຈະ fork libguestfs. Github ເຮັດໃຫ້ມັນງ່າຍຂຶ້ນ.
ມັນດີຖ້າທ່ານບອກພວກເຮົາຢູ່ໃນບັນຊີລາຍຊື່ທາງໄປສະນີກ່ຽວກັບສ້ອມແລະເຫດຜົນສໍາລັບພວກມັນ.

MISCELLANEOUS ຄໍາຖາມ


ສາມາດເຮັດໄດ້ I ຕິດຕາມກວດກາ ໄດ້ ດໍາລົງຊີວິດ ແຜ່ນ ກິດຈະກໍາ of a virtual ເຄື່ອງ ການນໍາໃຊ້ libguestfs?
ການຮ້ອງຂໍທົ່ວໄປແມ່ນເພື່ອສາມາດນໍາໃຊ້ libguestfs ເພື່ອຕິດຕາມການເຄື່ອນໄຫວຂອງແຜ່ນສົດຂອງ a
ແຂກ, ຕົວຢ່າງ, ເພື່ອໃຫ້ໄດ້ຮັບການແຈ້ງເຕືອນທຸກຄັ້ງທີ່ແຂກສ້າງໄຟລ໌ໃຫມ່. Libguestfs
ບໍ່ ບໍ່ ເຮັດວຽກໃນແບບທີ່ບາງຄົນຈິນຕະນາການ, ດັ່ງທີ່ເຈົ້າສາມາດເຫັນໄດ້ຈາກແຜນວາດນີ້:

┌────────────────────────────────── ┐
│ໂຄງການຕິດຕາມໂດຍໃຊ້ libguestfs │
└──────────────────────────────── ┘

┌───────────── ┌──────────────────────┐
│ VM ສົດ │ │ libguestfs ເຄື່ອງໃຊ້ │
├───────────── ├──────────────────────┤
│ kernel (1)│ │ kernel ເຄື່ອງໃຊ້ (2) │
└─────────────┘ └──────────────────────┘
↓ ↓ (ການເຊື່ອມຕໍ່ r/o)
┌───────────────────────┐
| ຮູບພາບແຜ່ນ |
└───────────────────────┘

ສະຖານະການນີ້ແມ່ນປອດໄພ (ຕາບໃດທີ່ທ່ານຕັ້ງທຸງ "ອ່ານເທົ່ານັ້ນ" ເມື່ອເພີ່ມໄດຣຟ໌).
ຢ່າງໃດກໍຕາມ, libguestfs appliance kernel (2) ບໍ່ເຫັນການປ່ຽນແປງທັງຫມົດທີ່ເຮັດກັບແຜ່ນ.
ຮູບພາບ, ສໍາລັບສອງເຫດຜົນ:

i. VM kernel (1) ສາມາດ cache ຂໍ້ມູນຢູ່ໃນຫນ່ວຍຄວາມຈໍາ, ສະນັ້ນມັນບໍ່ປາກົດຢູ່ໃນຮູບຂອງແຜ່ນ.

ii. libguestfs appliance kernel (2) ບໍ່ໄດ້ຄາດຫວັງວ່າຮູບພາບຂອງແຜ່ນຈະມີການປ່ຽນແປງ
ພາຍໃຕ້ມັນ, ດັ່ງນັ້ນ cache ຂອງມັນເອງບໍ່ໄດ້ຖືກປັບປຸງ magically ເຖິງແມ່ນວ່າໃນເວລາທີ່ kernel VM (1)
ປັບປຸງຮູບພາບແຜ່ນ.

ການ​ແກ້​ໄຂ​ສະ​ຫນັບ​ສະ​ຫນູນ​ພຽງ​ແຕ່​ແມ່ນ​ການ restart ເຄື່ອງ​ໃຊ້ libguestfs ທັງ​ຫມົດ​ທຸກ​ຄັ້ງ​ທີ່​ທ່ານ​
ຕ້ອງການເບິ່ງການປ່ຽນແປງໃນຮູບພາບແຜ່ນ. ໃນລະດັບ API ທີ່ສອດຄ່ອງກັບການໂທ
"guestfs_shutdown" ຕິດຕາມດ້ວຍ "guestfs_launch", ເຊິ່ງເປັນການດໍາເນີນງານທີ່ມີນ້ໍາຫນັກເບົາ (ເບິ່ງ.
ຍັງ guestfs-ການປະຕິບັດ(3)).

ມີບາງແຮັກທີ່ບໍ່ຮອງຮັບທີ່ທ່ານສາມາດລອງໄດ້ ຖ້າການເປີດເຄື່ອງຄືນໃໝ່ກໍ່ແມ່ນຄືກັນ
ຄ່າ​ໃຊ້​ຈ່າຍ​:

·ໂທຫາ "guestfs_drop_caches (g, 3)". ອັນນີ້ເຮັດໃຫ້ຂໍ້ມູນແຄດທັງໝົດຊ່ວຍໂດຍ libguestfs
appliance kernel (2) ທີ່​ຈະ​ຖືກ​ຍົກ​ເລີກ​, ສະ​ນັ້ນ​ມັນ​ກັບ​ຄືນ​ໄປ​ບ່ອນ​ຮູບ​ພາບ​ແຜ່ນ​.

ຢ່າງໃດກໍຕາມ, ນີ້ຢູ່ໃນຕົວຂອງມັນເອງບໍ່ພຽງພໍ, ເພາະວ່າ qemu ຍັງເກັບຂໍ້ມູນບາງຢ່າງ. ເຈົ້າ
ຍັງຈະຕ້ອງໄດ້ແກ້ໄຂ libguestfs ເພື່ອ (re-)ເປີດໃຊ້ໂໝດ "cache=unsafe". ເບິ່ງ:
https://rwmj.wordpress.com/2013/09/02/new-in-libguestfs-allow-cache-mode-to-be-selected/

· ໃຊ້ເຄື່ອງມືເຊັ່ນ: virt-bmap ແທນ.

·ດໍາເນີນການຕົວແທນພາຍໃນແຂກ.

ບໍ່ມີຫຍັງຊ່ວຍໄດ້ຖ້າແຂກເຮັດການປ່ຽນແປງພື້ນຖານເພີ່ມເຕີມ (ເຊັ່ນ: ການລຶບລະບົບໄຟລ໌).
ສໍາລັບປະເພດເຫຼົ່ານັ້ນ, ທ່ານຕ້ອງເປີດເຄື່ອງໃຊ້ໃຫມ່.

(ໃຫ້ສັງເກດວ່າມີບັນຫາທີສາມທີ່ທ່ານຈໍາເປັນຕ້ອງໃຊ້ການຖ່າຍຮູບທີ່ສອດຄ່ອງກັນເພື່ອກວດສອບຢ່າງແທ້ຈິງ
ຮູບພາບແຜ່ນສົດ, ແຕ່ນັ້ນແມ່ນບັນຫາທົ່ວໄປກັບການໃຊ້ libguestfs ຕໍ່ກັບແຜ່ນທີ່ມີຊີວິດຢູ່
ຮູບ​ພາບ​.)

ໃຊ້ guestfs-faq ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net


ເຊີບເວີ ແລະສະຖານີເຮັດວຽກຟຣີ

ດາວໂຫຼດແອັບ Windows ແລະ Linux

Linux ຄຳ ສັ່ງ

Ad