
काली लिनक्स वीएम इमेज बिल्ड स्क्रिप्ट
Kali Linux वर्चुअल मशीन (VM) इमेज बिल्डर, debos (जिसमें fakemachine और KVM शामिल हैं) के माध्यम से।
ये वही बिल्ड-स्क्रिप्ट्स हैं जिनका उपयोग Kali टीम आधिकारिक Kali Linux VM इमेज बनाने के लिए करती है, जो kali.org/get-kali/ पर उपलब्ध हैं।
अधिक जानकारी के लिए, कृपया देखें: kali.org/docs/virtualization/।
आज ही अपना Kali बनाएं!
हम Linux-आधारित होस्ट पर बिल्ड करने की सलाह देते हैं, जो वांछित आर्किटेक्चर से मेल खाता हो।
kali-vm बिल्ड-स्क्रिप्ट का उपयोग करने के लिए तैयार होने के विभिन्न तरीके हैं। आप या तो:
build.sh - सीधे अपनी मशीन से बिल्ड करेंbuild-in-container.sh - कंटेनर के भीतर से बिल्ड करें (जैसे Docker या Podman) इस स्क्रिप्ट के काम करने के लिए, इसे KVM की आवश्यकता होगी। हालाँकि, सुपर यूज़र एक्सेस की आवश्यकता नहीं है। हम BIOS/UEFI में KVM को सक्षम करने को छोड़ देंगे।
KVM की आवश्यकता का कारण यह है कि बिल्ड वास्तव में एक वर्चुअल मशीन (VM) के भीतर से होता है, जो बिल्ड टूल debos द्वारा ऑन-द-फ्लाई बनाई जाती है। Debos अंदर ही अंदर fakemachine का उपयोग करता है, जो बदले में QEMU+KVM पर निर्भर करता है।
पहले git इंस्टॉल करें, और सुनिश्चित करें कि रिपॉज़िटरी स्थानीय रूप से क्लोन की गई है:```console
$ sudo apt-get install --no-install-recommends
git ca-certificates
$ git clone https://gitlab.com/kalilinux/build-scripts/kali-vm.git
$ cd ./kali-vm/
- - -
QEMU/KVM की आवश्यकताओं के कारण, आपको `kvm` समूह का सदस्य होना चाहिए।
आप इसकी जाँच इस प्रकार कर सकते हैं:```console
$ # Not a part of the group
$ grep kvm /etc/group
kvm:x:104:
$
$ # In the group
$ grep kvm /etc/group
kvm:x:104:kali
$
यदि आपका उपयोगकर्ता नाम लौटाई गई पंक्ति में नहीं दिखाई देता है (उदा. kali), तो इसका मतलब है कि आप समूह में नहीं हैं, और आपको स्वयं को kvm समूह में जोड़ना होगा।
आप यह इस प्रकार कर सकते हैं:```console
$ sudo adduser $USER kvm
फिर परिवर्तन प्रभावी होने के लिए **लॉग आउट करें और फिर से लॉग इन करें**। <!-- That's not closing down the terminal app and re-opening it, but rather logging out of Xfce! -->
...या```console
$ newgrp kvm
build.sh के साथ सीधे अपने होस्ट पर बिल्ड करने के लिए, बिल्ड निर्भरताएँ इंस्टॉल करें:```console
$ sudo apt-get install --no-install-recommends
debos
linux-image-amd64
parted
dosfstools e2fsprogs
zerofree
7zip bmap-tools qemu-utils xz-utils
xkb-data
<!-- This should match what is in: [Dockerfile](https://gitlab.com/kalilinux/build-scripts/kali-vm/-/blob/main/Dockerfile) & [kali.org/docs/virtualization/](https://www.kali.org/docs/virtualization/)
Alt: $ sudo apt-get install 7zip debos dosfstools qemu-utils zerofree
xkb-data is optional, just helps to validate settings - doesn't take up that much space
-->
- - -
अब आप `./build.sh` का उपयोग कर सकते हैं, जो सीधे आपकी मशीन पर एक Kali VM इमेज बनाएगा।
### कंटेनर के भीतर से बिल्ड करें
_हम किसी भी कंटेनर सॉफ़्टवेयर को सेट करने को छोड़ देंगे।_
यदि आप कंटेनर के भीतर से बिल्ड करना पसंद करते हैं, तो आपको अपनी मशीन पर `docker` या `podman` में से किसी एक को इंस्टॉल और कॉन्फ़िगर करना होगा।
- `docker` के लिए उपयोगकर्ता को Docker समूह में जोड़ा जाना चाहिए, या root खाते का उपयोग करना चाहिए (जैसे `$ sudo ./build-in-container.sh`)।
- `podman` का परीक्षण rootful (जैसे `$ sudo ./build-in-container.sh`) और rootless (जैसे `$ ./build-in-container.sh`) दोनों के रूप में किया गया है। Rootless के लिए अतिरिक्त रूप से `crun` की आवश्यकता होती है (जैसे `$ sudo apt install crun`), क्योंकि `runc` उपयोगकर्ता नेमस्पेस से `/dev/kvm` तक नहीं पहुँच सकता।
- - -
`build-in-container.sh` `build.sh` के ऊपर एक रैपर है। यह पता लगाता है कि किस OCI-अनुरूप कंटेनर इंजन का उपयोग करना है, यदि अनुपस्थित हो तो [कंटेनर इमेज](https://gitlab.com/kalilinux/build-scripts/kali-vm/-/blob/main/Dockerfile) बनाने का ध्यान रखता है, और फिर यह बिल्ड को भीतर से करने के लिए कंटेनर शुरू करता है।
कंटेनर इमेज प्रदान करने के आपके पास तीन तरीके हैं:```console
$ # Option #1 - Automated build (recommended)
$ ./build-in-container.sh
$ ./build-in-container.sh --force # If you need to rebuild the image from scratch
$
$
$
$ # Option #2 - Manual build
$ docker build -t kali-build/kali-vm .
$ # ...OR...
$ podman build -t kali-build/kali-vm .
$
$
$
$ # Option #3 - Use the pre-generated
$ docker pull registry.gitlab.com/kalilinux/build-scripts/kali-vm:latest
$ docker tag registry.gitlab.com/kalilinux/build-scripts/kali-vm:latest kali-build/kali-vm
$ # ...OR...
$ podman pull registry.gitlab.com/kalilinux/build-scripts/kali-vm:latest
$ podman tag registry.gitlab.com/kalilinux/build-scripts/kali-vm:latest kali-build/kali-vm
$
$ # ...then point the build at it:
$ ./build-in-container.sh # Locally built (automated or manual)
$ IMAGE=registry.gitlab.com/kalilinux/build-scripts/kali-vm:latest ./build-in-container.sh # Pre-generated
यदि आपके पास docker और podman दोनों इंस्टॉल हैं, तो build-in-container.sh डिफ़ॉल्ट रूप से podman का उपयोग करेगा। इसे बदलने के लिए, ./build-in-container.sh से पहले CONTAINER=docker लगाएं:```console
$ CONTAINER=docker ./build-in-container.sh [...]
- - -
अब आप एक इमेज बनाने के लिए `./build-in-container.sh` (न कि `./build.sh`) का उपयोग कर सकते हैं।
## सहायता```console
$ ./build.sh --help
Usage: build.sh [OPTIONS] [-- <debos options>]
Build a Kali Linux VM image.
Build options:
-a, --arch ARCH Build an image for this architecture (default: amd64)
Supported: amd64
-b, --branch BRANCH Kali branch used to build the image (default: kali-rolling)
Supported: kali-rolling kali-dev kali-last-snapshot
-f, --format FORMAT Format to export the image to (default: ...depends on --variant)
Supported: hyperv ova ovf qemu raw vagrant virtualbox vmware
-k, --keep Keep intermediary build artifacts
-m, --mirror URL Mirror used to build the image (default: http://http.kali.org/kali)
-o, --output DIR Output directory (default: /home/kali/kali-vm/output)
-r, --rootfs ROOTFS Rootfs to use to build the image (default: none)
-v, --variant VARIANT Variant of image to build, see below for details (default: generic)
Supported: generic hyperv qemu rootfs virtualbox vmware
-x, --version VERSION What to name the image release as (default: rolling)
-z, --zip Compress image and metadata files after the build
-h, --help Show this help and exit