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

OnWorks favicon

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

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

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

ໂຄງການ:

NAME


guestfs-internals - ສະຖາປັດຕະຍະກໍາແລະພາຍໃນຂອງ libguestfs

ລາຍລະອຽດ


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

ARCHITECTURE


ພາຍໃນ, libguestfs ຖືກປະຕິບັດໂດຍການແລ່ນເຄື່ອງໃຊ້ (ປະເພດພິເສດຂະຫນາດນ້ອຍ
virtual machine) ໂດຍໃຊ້ whoa(1). Qemu ດໍາເນີນການເປັນຂະບວນການເດັກນ້ອຍຂອງໂຄງການຕົ້ນຕໍ.

┌────────────────────┐
│ ໂປຣແກມຫຼັກ │
││
│ │ ຂະບວນການເດັກ / ເຄື່ອງໃຊ້
│ │ ┌───────────────────────────┐
│ │ │ qemu │
.
│ libguestfs ◀╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍ ▶ guestfsd │ │
│ │ │ ├─────────────────┤ │
└────────────────────┘ │ │ Linux kernel │ │
│ └──────────┬───────┘ │
└─────────────────│───────────┘

│ virtio-scsi
┌──────┴──────┐
│ ອຸປະກອນ ຫຼື │
│ຮູບແຜ່ນ │
└──────────────┘

ຫ້ອງສະຫມຸດ, ເຊື່ອມຕໍ່ກັບໂຄງການຕົ້ນຕໍ, ສ້າງຂະບວນການເດັກນ້ອຍແລະເພາະສະນັ້ນເຄື່ອງໃຊ້
ໃນຟັງຊັນ "guestfs_launch".

ພາຍໃນເຄື່ອງໃຊ້ແມ່ນ Linux kernel ແລະອຸປະກອນທີ່ສົມບູນຂອງ userspace (ເຊັ່ນ:
ໂຄງການ LVM ແລະ ext2) ແລະ daemon ຄວບຄຸມຂະຫນາດນ້ອຍທີ່ເອີ້ນວ່າ "guestfsd". ຫໍສະໝຸດ
ສົນທະນາກັບ "guestfsd" ໂດຍໃຊ້ຂັ້ນຕອນການໂທທາງໄກ (RPC). ສ່ວນຫຼາຍແມ່ນຫນຶ່ງຕໍ່ຫນຶ່ງ
ການຕອບຮັບລະຫວ່າງ libguestfs API calls ແລະ RPC calls to the daemon. ສຸດ​ທ້າຍ​ແຜ່ນ​
ຮູບພາບແມ່ນຕິດກັບຂະບວນການ qemu ທີ່ແປການເຂົ້າເຖິງອຸປະກອນໂດຍ
kernel Linux ຂອງເຄື່ອງໃຊ້ເຂົ້າໃນການເຂົ້າເຖິງຮູບພາບ.

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

STATE ເຄື່ອງຈັກ


libguestfs ໃຊ້ເຄື່ອງຂອງລັດເພື່ອສ້າງແບບຈໍາລອງຂະບວນການເດັກ:

|
guestfs_create / guestfs_create_flags
|
|
____V_____
/ \
| CONFIG |
\__________/
^ ^ \
| \ \ guestfs_ເປີດຕົວ
| _\__V______
| / \
| | ເປີດຕົວ |
| \___________/
| /
| guestfs_launch
| /
__|____ວ
/ \
| ພ້ອມ |
\________/

ການຫັນປ່ຽນປົກກະຕິແມ່ນ (1) CONFIG (ເມື່ອຕົວຈັບໄດ້ຖືກສ້າງຂື້ນ, ແຕ່ບໍ່ມີລູກ
ຂະ​ບວນ​ການ​)​, (2​) ການ​ເປີດ (ໃນ​ເວ​ລາ​ທີ່​ຂະ​ບວນ​ການ​ຂອງ​ເດັກ​ແມ່ນ​ໄດ້​ເລີ່ມ​ຕົ້ນ​)​, (3​) ກຽມ​ພ້ອມ​ຫມາຍ​ຄວາມ​ວ່າ​.
ເຄື່ອງໃຊ້ແມ່ນຂຶ້ນ, ການປະຕິບັດສາມາດອອກໄປຫາ, ແລະດໍາເນີນການໂດຍຂະບວນການເດັກ.

ແຂກອາດຈະຖືກຂ້າໂດຍ "guestfs_kill_subprocess", ຫຼືອາດຈະຕາຍແບບບໍ່ຊິ້ງຢູ່ບ່ອນໃດນຶ່ງ.
ທີ່​ໃຊ້​ເວ​ລາ (ເຊັ່ນ​: ເນື່ອງ​ຈາກ​ຄວາມ​ຜິດ​ພາດ​ພາຍ​ໃນ​ບາງ​) ແລະ​ທີ່​ເຮັດ​ໃຫ້​ລັດ​ທີ່​ຈະ​ຫັນ​ກັບ​ຄືນ​ໄປ​ບ່ອນ​
ຕັ້ງຄ່າ.

ຄໍາສັ່ງການຕັ້ງຄ່າສໍາລັບ qemu ເຊັ່ນ "guestfs_set_path" ສາມາດອອກໄດ້ພຽງແຕ່ໃນເວລາທີ່ຢູ່ໃນ
ຕັ້ງຄ່າສະຖານະ.

API ສະຫນອງການໂທຫນຶ່ງທີ່ໄປຈາກ CONFIG ໂດຍຜ່ານການເປີດຕົວໄປຫາ READY.
"guestfs_launch" ຕັນຈົນກ່ວາຂະບວນການເດັກນ້ອຍແມ່ນພ້ອມທີ່ຈະຍອມຮັບຄໍາສັ່ງ (ຫຼືຈົນກ່ວາບາງ.
ຄວາມລົ້ມເຫຼວຫຼືຫມົດເວລາ). "guestfs_launch" ພາຍໃນຍ້າຍສະຖານະຈາກ CONFIG ໄປຫາ LAUNCHING
ໃນຂະນະທີ່ມັນແລ່ນ.

ຄຳສັ່ງ API ເຊັ່ນ "guestfs_mount" ສາມາດອອກໄດ້ເມື່ອຢູ່ໃນສະຖານະ READY ເທົ່ານັ້ນ. API ເຫຼົ່ານີ້
calls block ລໍຖ້າຄໍາສັ່ງທີ່ຈະດໍາເນີນການ. ບໍ່ມີການຂັດຂວາງ
ສະບັບ, ແລະບໍ່ມີວິທີທີ່ຈະອອກຫຼາຍກ່ວາຫນຶ່ງຄໍາສັ່ງຕໍ່ handle ໃນເວລາດຽວກັນ.

ສຸດທ້າຍ, ຂະບວນການເດັກສົ່ງຂໍ້ຄວາມ asynchronous ກັບຄືນໄປບ່ອນໂຄງການຕົ້ນຕໍ, ເຊັ່ນ:
ຂໍ້ຄວາມບັນທຶກ kernel. ທ່ານສາມາດລົງທະບຽນການໂທກັບເພື່ອຮັບຂໍ້ຄວາມເຫຼົ່ານີ້.

ພາຍໃນ


ປະຕິບັດ BOOT PROCESS
ຂະບວນການນີ້ໄດ້ພັດທະນາແລະສືບຕໍ່ພັດທະນາ. ຄໍາອະທິບາຍຢູ່ທີ່ນີ້ແມ່ນກົງກັນເທົ່ານັ້ນ
ສະບັບປະຈຸບັນຂອງ libguestfs ແລະຖືກສະຫນອງໃຫ້ສໍາລັບຂໍ້ມູນເທົ່ານັ້ນ.

ເພື່ອປະຕິບັດຕາມຂັ້ນຕອນທີ່ກ່ຽວຂ້ອງຂ້າງລຸ່ມນີ້, ເປີດໃຊ້ການດີບັກ libguestfs (ຕັ້ງຄ່າ
ຕົວແປສະພາບແວດລ້ອມ "LIBGUESTFS_DEBUG=1").

ສ້າງເຄື່ອງໃຊ້
"supermin --build" ຖືກເອີ້ນໃຫ້ສ້າງແກ່ນ, ເປັນ initrd ຂະຫນາດນ້ອຍແລະເຄື່ອງໃຊ້.

ອຸປະກອນຖືກເກັບໄວ້ໃນ /var/tmp/.guestfs- (ຫຼືຢູ່ໃນໄດເລກະທໍລີອື່ນຖ້າ
"LIBGUESTFS_CACHEDIR" ຫຼື "TMPDIR" ຖືກຕັ້ງ).

ສໍາລັບລາຍລະອຽດຄົບຖ້ວນສົມບູນຂອງວິທີການສ້າງເຄື່ອງໃຊ້ແລະຖານຄວາມຈໍາ, ອ່ານທີ່
ຊຸບເປີມິນ(1) ຫນ້າຜູ້ຊາຍ.

ເລີ່ມ qemu ແລະ boot kernel ໄດ້
qemu ໄດ້ຖືກເອີ້ນໃຫ້ boot kernel.

ແລ່ນ initrd
"supermin --build" ສ້າງ initrd ຂະຫນາດນ້ອຍ. initrd ບໍ່ແມ່ນເຄື່ອງໃຊ້. ໄດ້
ຈຸດປະສົງຂອງ initrd ແມ່ນເພື່ອໂຫຼດໂມດູນແກ່ນພຽງພໍເພື່ອໃຫ້ເຄື່ອງໃຊ້
ຕົວຂອງມັນເອງສາມາດຕິດຕັ້ງແລະເລີ່ມຕົ້ນ.

initrd ແມ່ນບ່ອນເກັບມ້ຽນ cpio ທີ່ເອີ້ນວ່າ /var/tmp/.guestfs- /appliance.d/initrd.

ເມື່ອ initrd ໄດ້ເລີ່ມຕົ້ນທ່ານຈະເຫັນຂໍ້ຄວາມສະແດງໃຫ້ເຫັນວ່າໂມດູນ kernel ແມ່ນ
ຖືກໂຫລດ, ຄ້າຍຄືກັບນີ້:

supermin: ext2 mini initrd ເລີ່ມຂຶ້ນ
supermin: ການຕິດຕັ້ງ / sys
supermin: ພາຍໃນ insmod libcrc32c.ko
supermin: ພາຍໃນ insmod crc32c-intel.ko

ຊອກຫາ ແລະຕິດຕັ້ງອຸປະກອນເຄື່ອງໃຊ້
ເຄື່ອງໃຊ້ເປັນໄຟລ໌ກະແຈກກະຈາຍທີ່ມີລະບົບໄຟລ໌ ext2 ເຊິ່ງປະກອບດ້ວຍເຄື່ອງທີ່ຄຸ້ນເຄີຍ
(ເຖິງແມ່ນວ່າຈະຫຼຸດລົງໃນຂະຫນາດ) ລະບົບປະຕິບັດການ Linux. ມັນມັກຈະຖືກເອີ້ນວ່າ
/var/tmp/.guestfs- /appliance.d/root.

ແຜ່ນປົກກະຕິທີ່ຖືກກວດກາໂດຍ libguestfs ແມ່ນອຸປະກອນທໍາອິດທີ່ເປີດເຜີຍໂດຍ qemu
(ເຊັ່ນ: /dev/vda).

ແຜ່ນສຸດທ້າຍທີ່ເພີ່ມໃສ່ qemu ແມ່ນເຄື່ອງໃຊ້ຂອງມັນເອງ (ຕົວຢ່າງ. /dev/vdb ຖ້າມີພຽງແຕ່
ແຜ່ນປົກກະຕິຫນຶ່ງ).

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

ຖ້າອັນນີ້ເຮັດວຽກສຳເລັດທ່ານຈະເຫັນຂໍ້ຄວາມເຊັ່ນ:

supermin: ເລືອກ /sys/block/vdb/dev ເປັນອຸປະກອນຮາກ
supermin: ສ້າງ /dev/root ເປັນ block ພິເສດ 252:16
supermin: ຕິດຕັ້ງຮາກໃໝ່ໃສ່ / root
supermin: chroot
ກຳລັງເລີ່ມ /init script...

ໃຫ້ສັງເກດວ່າ "Starting /init script ... " ຊີ້ໃຫ້ເຫັນວ່າເຄື່ອງໃຊ້ init script ແມ່ນ
ໃນປັດຈຸບັນແລ່ນ.

ເລີ່ມຕົ້ນເຄື່ອງໃຊ້
ປະຈຸບັນເຄື່ອງໃຊ້ເອງເລີ່ມຕົ້ນຕົວມັນເອງ. ນີ້ກ່ຽວຂ້ອງກັບການເລີ່ມຕົ້ນຂະບວນການສະເພາະໃດຫນຶ່ງ
ເຊັ່ນ "udev", ອາດຈະພິມຂໍ້ມູນດີບັກບາງຢ່າງ, ແລະສຸດທ້າຍແລ່ນ daemon
("guestfsd").

ເດມອນ
ສຸດທ້າຍ daemon ("guestfsd") ແລ່ນພາຍໃນເຄື່ອງໃຊ້. ຖ້າມັນແລ່ນທ່ານຄວນເບິ່ງ:

verbose daemon ເປີດໃຊ້ງານ

daemon ຄາດວ່າຈະເຫັນພອດ virtio-serial ທີ່ມີຊື່ເປີດເຜີຍໂດຍ qemu ແລະເຊື່ອມຕໍ່
ປາຍອື່ນໆໄປຫາຫ້ອງສະຫມຸດ.

daemon ເຊື່ອມຕໍ່ກັບພອດນີ້ (ແລະດ້ວຍເຫດນີ້ໄປທີ່ຫ້ອງສະຫມຸດ) ແລະສົ່ງສີ່ byte
ຂໍ້ຄວາມ "GUESTFS_LAUNCH_FLAG", ເຊິ່ງລິເລີ່ມໂປຣໂຕຄໍການສື່ສານ (ເບິ່ງຂ້າງລຸ່ມນີ້).

ການສື່ສານ ໂປຣແກຣມ PROTOCOL
ຢ່າອີງໃສ່ການໃຊ້ໂປຣໂຕຄໍນີ້ໂດຍກົງ. ພາກນີ້ບັນທຶກວິທີການປະຈຸບັນ
ເຮັດວຽກ, ແຕ່ມັນອາດຈະປ່ຽນແປງໄດ້ທຸກເວລາ.

ໂປຣໂຕຄໍທີ່ໃຊ້ເພື່ອສົນທະນາລະຫວ່າງຫ້ອງສະໝຸດ ແລະ daemon ທີ່ແລ່ນຢູ່ໃນ qemu
virtual machine ເປັນກົນໄກ RPC ງ່າຍດາຍທີ່ສ້າງຂຶ້ນເທິງຂອງ XDR (RFC 1014, RFC 1832, RFC
4506).

ຮູບແບບລາຍລະອຽດຂອງໂຄງສ້າງແມ່ນຢູ່ໃນ src/guestfs_protocol.x (ໝາຍເຫດ: ໄຟລ໌ນີ້ແມ່ນ
ສ້າງ​ອັດ​ຕະ​ໂນ​ມັດ​)​.

ມີສອງກໍລະນີກວ້າງ, ຫນ້າທີ່ທໍາມະດາທີ່ບໍ່ມີ "FileIn" ແລະ "FileOut" ໃດໆ.
ຕົວກໍານົດການ, ເຊິ່ງຖືກຈັດການດ້ວຍຂໍ້ຄວາມການຮ້ອງຂໍ / ຕອບກັບທີ່ງ່າຍດາຍຫຼາຍ. ຫຼັງຈາກນັ້ນ, ມີ
ຟັງຊັນທີ່ມີຕົວກໍານົດ "FileIn" ຫຼື "FileOut", ເຊິ່ງໃຊ້ຄໍາຮ້ອງຂໍດຽວກັນແລະ
ຕອບກັບຂໍ້ຄວາມ, ແຕ່ພວກມັນອາດຈະຖືກຕິດຕາມດ້ວຍໄຟລ໌ທີ່ສົ່ງໂດຍໃຊ້ການເຂົ້າລະຫັດແບບ chunked.

ທຳ ມະດາ FUNCTIONS (NO FILEIN/FILEOUT PARAMS)

ສໍາລັບຫນ້າທີ່ທໍາມະດາ, ຂໍ້ຄວາມຮ້ອງຂໍແມ່ນ:

ຄວາມ​ຍາວ​ທັງ​ຫມົດ (header + arguments​,
ແຕ່​ບໍ່​ລວມ​ທັງ​ຄໍາ​ທີ່​ຍາວ​ຂອງ​ຕົນ​ເອງ​)
ໂຄງສ້າງ guestfs_message_header (ເຂົ້າລະຫັດເປັນ XDR)
ໂຄງສ້າງ guestfs_ _args (ເຂົ້າລະຫັດເປັນ XDR)

ພາກສະຫນາມຄວາມຍາວທັງຫມົດອະນຸຍາດໃຫ້ daemon ຈັດສັນ buffer ຂະຫນາດຄົງທີ່ເຂົ້າໄປໃນມັນ
slurps ສ່ວນທີ່ເຫຼືອຂອງຂໍ້ຄວາມ. ດັ່ງນັ້ນ, ຄວາມຍາວທັງຫມົດແມ່ນຈໍາກັດ
"GUESTFS_MESSAGE_MAX" ໄບຕ໌ (ປະຈຸບັນແມ່ນ 4MB), ຊຶ່ງໝາຍເຖິງຂະໜາດທີ່ມີປະສິດທິພາບຂອງການຮ້ອງຂໍໃດໆ.
ຖືກຈໍາກັດຢູ່ບ່ອນໃດບ່ອນຫນຶ່ງພາຍໃຕ້ຂະຫນາດນີ້.

ໃຫ້ສັງເກດວ່າຫຼາຍຫນ້າທີ່ບໍ່ເອົາການໂຕ້ຖຽງໃດໆ, ໃນກໍລະນີນີ້
"ແຂກ_foo_args" ຖືກລະເວັ້ນຢ່າງສົມບູນ.

ສ່ວນຫົວມີໝາຍເລກຂັ້ນຕອນ ("guestfs_proc") ເຊິ່ງເປັນວິທີທີ່ຜູ້ຮັບຮູ້
ປະເພດຂອງໂຄງສ້າງ args ທີ່ຈະຄາດຫວັງ, ຫຼືບໍ່ມີຢູ່ໃນທັງຫມົດ.

ສໍາ​ລັບ​ຫນ້າ​ທີ່​ທີ່​ໃຊ້​ເວ​ລາ​ການ​ໂຕ້​ຖຽງ​ທາງ​ເລືອກ​, arguments ທາງ​ເລືອກ​ແມ່ນ​ໄດ້​ເຂົ້າ​ລະ​ຫັດ​ໃນ​
"ແຂກ_foo_args" ໂຄງສ້າງໃນລັກສະນະດຽວກັນກັບການໂຕ້ຖຽງທົ່ວໄປ. bitmask ໃນ
header ຊີ້ບອກວ່າການໂຕ້ຖຽງທາງເລືອກໃດມີຄວາມໝາຍ. bitmask ຍັງຖືກກວດສອບ
ເບິ່ງວ່າມັນປະກອບດ້ວຍບິດທີ່ daemon ບໍ່ຮູ້ກ່ຽວກັບ (ເຊັ່ນ: ຖ້າທາງເລືອກເພີ່ມເຕີມ
arguments ໄດ້ຖືກເພີ່ມໃນສະບັບຕໍ່ມາຂອງຫ້ອງສະຫມຸດ), ແລະນີ້ເຮັດໃຫ້ການໂທເປັນ
ຖືກປະຕິເສດ.

ຂໍ້ຄວາມຕອບສໍາລັບຫນ້າທີ່ທໍາມະດາແມ່ນ:

ຄວາມຍາວທັງໝົດ (header + ret,
ແຕ່​ບໍ່​ລວມ​ທັງ​ຄໍາ​ທີ່​ຍາວ​ຂອງ​ຕົນ​ເອງ​)
ໂຄງສ້າງ guestfs_message_header (ເຂົ້າລະຫັດເປັນ XDR)
ໂຄງສ້າງ guestfs_ _ret (ເຂົ້າລະຫັດເປັນ XDR)

ດັ່ງຂ້າງເທິງ "guestfs_foo_ret" ໂຄງປະກອບການອາດຈະຖືກຍົກເວັ້ນຢ່າງສົມບູນສໍາລັບຫນ້າທີ່
return ບໍ່ມີຄ່າຜົນຕອບແທນຢ່າງເປັນທາງການ.

ດັ່ງທີ່ຂ້າງເທິງຄວາມຍາວທັງໝົດຂອງການຕອບຖືກຈຳກັດໄວ້ທີ່ "GUESTFS_MESSAGE_MAX".

ໃນ​ກໍ​ລະ​ນີ​ທີ່​ມີ​ຄວາມ​ຜິດ​ພາດ​, ທຸງ​ຕັ້ງ​ຢູ່​ໃນ​ຫົວ​ຂໍ້​, ແລະ​ຂໍ້​ຄວາມ​ຕອບ​ກັບ​ແມ່ນ​ເລັກ​ນ້ອຍ​
ປ່ຽນ:

ຄວາມຍາວທັງໝົດ (ສ່ວນຫົວ + ຂໍ້ຜິດພາດ,
ແຕ່​ບໍ່​ລວມ​ທັງ​ຄໍາ​ທີ່​ຍາວ​ຂອງ​ຕົນ​ເອງ​)
ໂຄງສ້າງ guestfs_message_header (ເຂົ້າລະຫັດເປັນ XDR)
ໂຄງສ້າງ guestfs_message_error (ເຂົ້າລະຫັດເປັນ XDR)

ໂຄງສ້າງ "guestfs_message_error" ມີຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດເປັນສະຕຣິງ.

FUNCTIONS ທີ່ ມີ FILEIN PARAMETERS

ຕົວກໍານົດການ "FileIn" ຊີ້ໃຫ້ເຫັນວ່າພວກເຮົາໂອນໄຟລ໌ ເຂົ້າໄປໃນ ແຂກ. ຄໍາ​ຮ້ອງ​ສະ​ຫມັກ​ປົກ​ກະ​ຕິ​
ຂໍ້ຄວາມຖືກສົ່ງ (ເບິ່ງຂ້າງເທິງ). ຢ່າງໃດກໍຕາມ, ນີ້ແມ່ນປະຕິບັດຕາມລໍາດັບຂອງ chunks ໄຟລ໌.

ຄວາມ​ຍາວ​ທັງ​ຫມົດ (header + arguments​,
ແຕ່​ບໍ່​ໄດ້​ລວມ​ທັງ​ຄໍາ​ຍາວ​ຕົວ​ມັນ​ເອງ​,
ແລະ​ບໍ່​ລວມ​ທັງ​ການ chunks​)
ໂຄງສ້າງ guestfs_message_header (ເຂົ້າລະຫັດເປັນ XDR)
ໂຄງສ້າງ guestfs_ _args (ເຂົ້າລະຫັດເປັນ XDR)
ລໍາດັບຂອງ chunks ສໍາລັບ FileIn param #0
ລໍາດັບຂອງ chunks ສໍາລັບ FileIn param #1 ແລະອື່ນໆ.

"ລໍາດັບຂອງ chunks" ແມ່ນ:

ຄວາມ​ຍາວ​ຂອງ chunk (ບໍ່​ລວມ​ທັງ​ຄໍາ​ຍາວ​ຕົວ​ມັນ​ເອງ​)
ໂຄງສ້າງ guestfs_chunk (ເຂົ້າລະຫັດເປັນ XDR)
ຄວາມຍາວຂອງຕ່ອນ
ໂຄງສ້າງ guestfs_chunk (ເຂົ້າລະຫັດເປັນ XDR)
...
ຄວາມຍາວຂອງຕ່ອນ
ໂຄງສ້າງ guestfs_chunk (ມີ data.data_len == 0)

ຊິ້ນສຸດທ້າຍມີຊ່ອງຂໍ້ມູນ "data_len" ຖືກຕັ້ງເປັນສູນ. ນອກຈາກນັ້ນ, ທຸງຖືກຕັ້ງຢູ່ໃນ
chunk ສຸດ​ທ້າຍ​ເພື່ອ​ຊີ້​ບອກ​ວ່າ​ທັງ​ການ​ສໍາ​ເລັດ​ສົບ​ຜົນ​ສໍາ​ເລັດ​ຫຼື​ການ​ຍົກ​ເລີກ​ໄວ​.

ໃນເວລາຂຽນບໍ່ມີຫນ້າທີ່ທີ່ມີຫຼາຍກວ່າຫນຶ່ງຕົວກໍານົດການ FileIn.
ຢ່າງໃດກໍຕາມ, ນີ້ແມ່ນສະຫນັບສະຫນູນ (ທາງທິດສະດີ), ໂດຍການສົ່ງລໍາດັບຂອງ chunks ສໍາລັບແຕ່ລະຄົນ
ຕົວກໍານົດການ FileIn ຫນຶ່ງຫຼັງຈາກອື່ນ (ຈາກຊ້າຍຫາຂວາ).

ທັງ​ຫ້ອງ​ສະ​ຫມຸດ (ຜູ້​ສົ່ງ​) ແລະ daemon (ຜູ້ຮັບ) ອາດຈະຍົກເລີກການໂອນ. ຫໍສະໝຸດ
ເຮັດນີ້ໂດຍການສົ່ງ chunk ທີ່ມີທຸງພິເສດທີ່ກໍານົດໄວ້ເພື່ອຊີ້ບອກການຍົກເລີກ. ໃນ​ເວ​ລາ​ທີ່
daemon ເຫັນນີ້, ມັນຍົກເລີກ RPC ທັງຫມົດ, ເຮັດ ບໍ່ ສົ່ງຄໍາຕອບໃດໆ, ແລະກັບຄືນໄປຫາ
ອ່ານຄໍາຮ້ອງຂໍຕໍ່ໄປ.

daemon ອາດຈະຍົກເລີກເຊັ່ນກັນ. ມັນເຮັດສິ່ງນີ້ໂດຍການຂຽນຄໍາພິເສດ "GUESTFS_CANCEL_FLAG"
ກັບເຕົ້າຮັບ. ຫ້ອງສະຫມຸດຟັງສໍາລັບການນີ້ໃນລະຫວ່າງການໂອນ, ແລະຖ້າຫາກວ່າມັນໄດ້ຮັບມັນ, ມັນ
ຈະ​ຍົກ​ເລີກ​ການ​ຍົກ​ຍ້າຍ (ມັນ​ຈະ​ສົ່ງ chunk ຍົກ​ເລີກ​ການ​)​. ຄໍາ​ທີ່​ພິ​ເສດ​ແມ່ນ​ໄດ້​ຮັບ​ການ​ຄັດ​ເລືອກ​ດັ່ງ​ນັ້ນ​
ເຖິງແມ່ນວ່າການຍົກເລີກຈະເກີດຂຶ້ນທັນທີໃນຕອນທ້າຍຂອງການໂອນ (ຫຼັງຈາກຫ້ອງສະຫມຸດມີ
ສໍາ​ເລັດ​ຮູບ​ຂຽນ​ແລະ​ໄດ້​ເລີ່ມ​ຕົ້ນ​ການ​ຟັງ​ສໍາ​ລັບ​ການ​ຕອບ​)​, "spurious​" ທຸງ​ຍົກ​ເລີກ​ຈະ​
ຢ່າສັບສົນກັບຂໍ້ຄວາມຕອບ.

ອະ​ນຸ​ສັນ​ຍາ​ນີ້​ອະ​ນຸ​ຍາດ​ໃຫ້​ການ​ໂອນ​ໄຟລ​໌​ຂະ​ຫນາດ​ຕົນ​ເອງ (ບໍ່​ມີ​ຈໍາ​ກັດ 32 bit​)​, ແລະ​ຍັງ​
ໄຟລ​໌​ທີ່​ຂະ​ຫນາດ​ບໍ່​ໄດ້​ຮູ້​ລ່ວງ​ຫນ້າ (ເຊັ່ນ​: ຈາກ​ທໍ່​ຫຼື​ເຕົ້າ​ຮັບ​)​. ແນວໃດກໍ່ຕາມ
chunks ແມ່ນຂ້ອນຂ້າງນ້ອຍ ("GUESTFS_MAX_CHUNK_SIZE"), ດັ່ງນັ້ນບໍ່ມີຫ້ອງສະຫມຸດຫຼືຫ້ອງສະຫມຸດ.
daemon ຈໍາເປັນຕ້ອງເກັບຮັກສາຫຼາຍໃນຄວາມຊົງຈໍາ.

FUNCTIONS ທີ່ ມີ ໄຟລ໌ PARAMETERS

ໂປໂຕຄອນສໍາລັບຕົວກໍານົດການ FileOut ແມ່ນຄືກັນກັບຕົວກໍານົດການ FileIn, ແຕ່ວ່າມີ
ພາລະບົດບາດຂອງ daemon ແລະຫ້ອງສະຫມຸດປີ້ນກັບກັນ.

ຄວາມຍາວທັງໝົດ (header + ret,
ແຕ່​ບໍ່​ໄດ້​ລວມ​ທັງ​ຄໍາ​ຍາວ​ຕົວ​ມັນ​ເອງ​,
ແລະ​ບໍ່​ລວມ​ທັງ​ການ chunks​)
ໂຄງສ້າງ guestfs_message_header (ເຂົ້າລະຫັດເປັນ XDR)
ໂຄງສ້າງ guestfs_ _ret (ເຂົ້າລະຫັດເປັນ XDR)
ລໍາດັບຂອງ chunks ສໍາລັບ FileOut param #0
ລໍາດັບຂອງ chunks ສໍາລັບ FileOut param #1 ແລະອື່ນໆ.

INITIAL ຂໍ້ຄວາມ

ເມື່ອ daemon ເປີດຕົວມັນຈະສົ່ງຄໍາເລີ່ມຕົ້ນ ("GUESTFS_LAUNCH_FLAG") ເຊິ່ງຊີ້ໃຫ້ເຫັນ.
ວ່າແຂກແລະ daemon ແມ່ນມີຊີວິດຢູ່. ນີ້ແມ່ນສິ່ງທີ່ "guestfs_launch" ລໍຖ້າ.

ໂຄງການ ແຈ້ງການ MESSAGES

daemon ອາດຈະສົ່ງຂໍ້ຄວາມການແຈ້ງເຕືອນຄວາມຄືບຫນ້າໄດ້ທຸກເວລາ. ເຫຼົ່າ​ນີ້​ແມ່ນ​ຈໍາ​ແນກ​
ໂດຍຄໍາທີ່ມີຄວາມຍາວປົກກະຕິຖືກແທນທີ່ດ້ວຍ "GUESTFS_PROGRESS_FLAG", ຕິດຕາມດ້ວຍການແກ້ໄຂ
ຂໍ້ຄວາມຄວາມຄືບຫນ້າຂະຫນາດ.

ຫ້ອງສະໝຸດປ່ຽນພວກມັນໃຫ້ກາຍເປັນການເອີ້ນຄືນຄວາມຄືບໜ້າ (ເບິ່ງ "GUESTFS_EVENT_PROGRESS") ຖ້າມີ
ໂທກັບທີ່ລົງທະບຽນ, ຫຼືຍົກເລີກພວກມັນຖ້າບໍ່ແມ່ນ.

daemon ຕົນເອງຈໍາກັດຄວາມຖີ່ຂອງຂໍ້ຄວາມຄວາມຄືບຫນ້າທີ່ມັນສົ່ງ (ເບິ່ງ
"daemon/proto.c:notify_progress"). ບໍ່ແມ່ນການໂທທັງໝົດຈະສ້າງຂໍ້ຄວາມຄວາມຄືບໜ້າ.

FIXED ປະຕິບັດ
ເມື່ອ libguestfs (ຫຼືເຄື່ອງມື libguestfs) ຖືກແລ່ນ, ພວກເຂົາຄົ້ນຫາເສັ້ນທາງທີ່ຊອກຫາ
ເຄື່ອງໃຊ້. ເສັ້ນທາງດັ່ງກ່າວຖືກສ້າງຂຶ້ນໃນ libguestfs, ຫຼືສາມາດຕັ້ງຄ່າໄດ້ໂດຍໃຊ້ "LIBGUESTFS_PATH"
environment variable

ປົກກະຕິແລ້ວເຄື່ອງໃຊ້ຊຸບເປີມິນຕັ້ງຢູ່ເທິງເສັ້ນທາງນີ້ (ເບິ່ງ "SUPERMIN APPLIANCE" ໃນ
ຊຸບເປີມິນ(1)). libguestfs reconstructs ນີ້ເຂົ້າໄປໃນເຄື່ອງໃຊ້ຢ່າງເຕັມທີ່ໂດຍການແລ່ນ "supermin
-- ກໍ່ສ້າງ".

ຢ່າງໃດກໍ່ຕາມ, "ເຄື່ອງໃຊ້ຄົງທີ່" ທີ່ງ່າຍກວ່າຍັງສາມາດຖືກນໍາໃຊ້. libguestfs ກວດພົບນີ້ໂດຍການເບິ່ງ
ສໍາລັບໄດເລກະທໍລີຢູ່ໃນເສັ້ນທາງທີ່ມີໄຟລ໌ຕໍ່ໄປນີ້ທັງຫມົດ:

· kernel

· ເລີ່ມຕົ້ນ

· ຮາກ

· README. ແກ້ໄຂ (ສັງເກດວ່າມັນ ຕ້ອງ ຢູ່​ເຊັ່ນ​ດຽວ​ກັນ​)

ຖ້າພົບອຸປະກອນຄົງທີ່, libguestfs ຂ້າມ supermin ທັງຫມົດແລະພຽງແຕ່ດໍາເນີນການ.
virtual machine (ໃຊ້ qemu ຫຼື backend ປະຈຸບັນ, ເບິ່ງ "BACKEND") ກັບ kernel, initrd
ແລະຮາກແຜ່ນຈາກອຸປະກອນຄົງທີ່.

ດັ່ງນັ້ນເຄື່ອງໃຊ້ຄົງທີ່ສາມາດຖືກນໍາໃຊ້ໃນເວລາທີ່ເວທີຫຼືການແຈກຢາຍ Linux ບໍ່ໄດ້
ສະ​ຫນັບ​ສະ​ຫນູນ supermin​. ທ່ານສ້າງເຄື່ອງໃຊ້ຄົງທີ່ໃນເວທີທີ່ສະຫນັບສະຫນູນ supermin
ການນໍາໃຊ້ libguestfs-make-fixed-appliance(1), ຄັດລອກມັນ, ແລະໃຊ້ມັນເພື່ອດໍາເນີນການ libguestfs.

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


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

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

  • 1
    MantisBT
    MantisBT
    Mantis ເປັນເວັບທີ່ສາມາດນຳໃຊ້ໄດ້ງ່າຍ
    bugtracker ອີງໃສ່ການຊ່ວຍເຫຼືອ bug ຜະລິດຕະພັນ
    ການຕິດຕາມ. ມັນຮຽກຮ້ອງໃຫ້ມີ PHP, MySQL ແລະ a
    ເຊີບເວີເວັບ. ກວດເບິ່ງຕົວຢ່າງຂອງພວກເຮົາ ແລະເປັນເຈົ້າພາບ
    ຂໍ້ສະເໜີ...
    ດາວໂຫລດ MantisBT
  • 2
    LAN Messenger
    LAN Messenger
    LAN Messenger ເປັນແອັບພລິເຄຊັນສົນທະນາ p2p
    ສໍາລັບການສື່ສານ intranet ແລະບໍ່
    ຕ້ອງການເຄື່ອງແມ່ຂ່າຍ. ຫຼາກຫຼາຍຂອງ handy
    ຄຸນນະສົມບັດແມ່ນສະຫນັບສະຫນູນລວມທັງ
    ແຈ້ງ​ການ...
    ດາວໂຫລດ LAN Messenger
  • 3
    DrJava
    DrJava
    DrJava ແມ່ນໂຄງການທີ່ມີນ້ໍາຫນັກເບົາ
    ສະພາບແວດລ້ອມສໍາລັບ Java ທີ່ຖືກອອກແບບເພື່ອສົ່ງເສີມ
    ການພັດທະນາຊອບແວທີ່ຂັບເຄື່ອນດ້ວຍການທົດສອບ. ມັນ
    ປະກອບມີບັນນາທິການໂຄງການອັດສະລິຍະ,
    int...
    ດາວໂຫລດ DrJava
  • 4
    .Net Framework 3.5 ຕົວຕິດຕັ້ງອອຟໄລ
    .Net Framework 3.5 ຕົວຕິດຕັ້ງອອຟໄລ
    Windows 8, ແລະຮຸ່ນຂ້າງເທິງມາພ້ອມກັບ
    ເວີຊັ່ນ 4.xx ຂອງ NET Framework. ແຕ່ຖ້າ
    ຜູ້ໃຊ້ກໍາລັງຍົກລະດັບຈາກ Windows 7 ເປັນ
    Windows 8, NET Framework 3.5 ແມ່ນສົມບູນ
    ເປີດໃຊ້...
    ດາວໂຫລດ .Net Framework 3.5 ຕົວຕິດຕັ້ງອອຟໄລ
  • 5
    NSIS: Nullsoft Scriptable Install System
    NSIS: Nullsoft Scriptable Install System
    NSIS (Nullsoft Scriptable Install
    System) ເປັນແຫຼ່ງເປີດທີ່ເປັນມືອາຊີບ
    ລະບົບເພື່ອສ້າງຕົວຕິດຕັ້ງ Windows. ມັນ
    ໄດ້ຖືກອອກແບບໃຫ້ມີຂະຫນາດນ້ອຍແລະມີຄວາມຍືດຫຍຸ່ນ
    ເປັນໄປໄດ້...
    ດາວໂຫລດ NSIS: Nullsoft Scriptable Install System
  • 6
    ການກວດສອບຄວາມຖືກຕ້ອງ
    ການກວດສອບຄວາມຖືກຕ້ອງ
    AuthPass ເປັນລະຫັດຜ່ານແຫຼ່ງເປີດ
    ຜູ້​ຈັດ​ການ​ທີ່​ມີ​ສະ​ຫນັບ​ສະ​ຫນູນ​ສໍາ​ລັບ​ການ​ທີ່​ນິ​ຍົມ​ແລະ​
    ພິສູດແລ້ວ Keepass (kdbx 3.x ແລະ kdbx 4.x ...
    ດາວໂຫຼດ authpass
  • ເພີ່ມເຕີມ »

Linux ຄຳ ສັ່ງ

Ad