
# سكربت بناء صور Kali Linux الافتراضية
أداة بناء صورة الآلة الافتراضية (VM) لنظام Kali Linux، عبر debos (مع fakemachine و KVM).
هذه هي نفس build-scripts التي يستخدمها فريق Kali لإنشاء صور Kali Linux الرسمية للآلات الافتراضية، الموجودة على kali.org/get-kali/.
لمزيد من المعلومات، يرجى الاطلاع على: kali.org/docs/virtualization/.
قم ببناء نسختك من Kali اليوم!
نوصي بالبناء على مضيف يعمل بنظام Linux، ويتوافق مع البنية المطلوبة.
هناك طرق متعددة للاستعداد لاستخدام kali-vm build-script. يمكنك إما:
build.sh - البناء مباشرة من جهازكbuild-in-container.sh - البناء من داخل حاوية (مثل Docker أو Podman) لكي يعمل هذا السكربت، سيتطلب KVM. ومع ذلك، لا يُشترط الوصول بصلاحيات المستخدم الخارق (super user). سنتخطى تفعيل KVM في BIOS/UEFI.
السبب في اشتراط 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
ثم **سجّل الخروج وأعد تسجيل الدخول** ليصبح التغيير ساري المفعول. <!-- هذا لا يعني إغلاق تطبيق الطرفية وإعادة فتحه، بل تسجيل الخروج من 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. لتغيير ذلك، ضع CONTAINER=docker قبل ./build-in-container.sh:```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
VM options:
-D, --desktop DESKTOP Desktop environment installed in the image (default: xfce)
Supported: xfce e17 gnome i3 kde lxde mate none
-H, --hostname HOSTNAME Set system host name (default: kali)
-K, --keyboard KEYBOARD Set keyboard layout (default: us)
See README.md for details
-L, --locale LOCALE Set locale (default: en_US.UTF-8)
-P, --packages PKGS Install extra packages (comma/space separated list)
-s, --size SIZE Size of the disk image in GB (default: 86)
-S, --swap SWAP Swap as a partition, a file, or none (default: file)
Supported: partition file none
-T, --toolset TOOLSET The selection of tools to include in the image (default: default)
Supported: default everything headless large none
-U, --userpass USERPASS Username and password, separated by a colon (default: kali:kali)
-Z, --timezone TIMEZONE Set timezone (default: America/New_York)
Use "same" as the value for -K/-L/-Z to inherit the host's current setting.