{"id":98045,"date":"2020-10-23T20:42:30","date_gmt":"2020-10-23T18:42:30","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/zavodim-gnu-linux-na-arm-plate-s-nulya-na-primere-kali-i-imx-6"},"modified":"2020-11-18T00:58:48","modified_gmt":"2020-11-17T22:58:48","slug":"zavodim-gnu-linux-na-arm-plate-s-nulya-na-primere-kali-i-imx-6","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/zavodim-gnu-linux-na-arm-plate-s-nulya-na-primere-kali-i-imx-6","title":{"rendered":"Booting GNU\/Linux on an ARM board from scratch (using Kali and iMX.6 as an example)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b>tl;dr<\/b>: I'm creating a Kali Linux image for an ARM computer in the program <code>debootstrap<\/code>, <code>linux <\/code>and <code>u-boot<\/code>.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/524532\/\"><img decoding=\"async\" alt=\"Booting GNU\/Linux on an ARM board from scratch (using Kali and iMX.6 as an example)\" src=\"\/wp-content\/uploads\/2020\/10\/70004672904f13dea41352c0f9aeb80b.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>If you purchased a lesser-known single-board computer, you might have encountered the lack of an image for your favorite distribution. The same situation happened with <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/490196\/\">the planned Flipper One<\/a><\/noindex>. There's simply no Kali Linux for IMX6 (I'm preparing it), so I have to compile it myself.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><b>The boot process is quite simple:<\/b><\/p>\n<ol>\n<li>The hardware is initialized.<\/li>\n<li>A bootloader is read and executed from a designated area on the storage device (SD card\/eMMC\/etc).<\/li>\n<li>The bootloader searches for the operating system kernel and loads it into a specific memory area and executes it.<\/li>\n<li>The kernel loads the rest of the OS.<\/li>\n<\/ol>\n<p>\nFor my task, this level of detail is sufficient; you can read the specifics <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/338806\/\">in another article<\/a><\/noindex>. The aforementioned \"certain\" areas vary from board to board, which creates some difficulties in installation. The boot process for server ARM platforms <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.arm.com\/documentation\/den0044\/12\/\">is being standardized<\/a><\/noindex> with UEFI, but since this isn't available for everyone yet, it will be necessary to assemble everything separately.<\/p>\n<h3>Building the root filesystem<\/h3>\n<p>\nFirst, you need to prepare the partitions. Das U-Boot supports various filesystems, I chose FAT32 for <code>\/boot<\/code> and ext3 for the root; this is the standard layout for Kali images under ARM. I will use GNU Parted, but you can do the same with the more familiar <code>fdisk<\/code>. You will also need <code>dosfstools<\/code> and <code>e2fsprogs<\/code> to create filesystems: <code>apt install parted dosfstools e2fsprogs<\/code>.<\/p>\n<p><b>Partitioning the SD card:<\/b><\/p>\n<ol>\n<li>Marking the SD card as using MBR partitioning: <code>parted -s \/dev\/mmcblk0 mklabel msdos<\/code><\/li>\n<li>Creating a partition for <code>\/boot<\/code> of 128 megabytes: <code>parted -s \/dev\/mmcblk0 mkpart primary fat32 1MiB 128MiB<\/code>. The first megabyte is reserved for the partitioning itself and the bootloader.<\/li>\n<li>Creating the root filesystem with the remaining storage: <code>parted -s \/dev\/mmcblk0 mkpart primary ext4 128MiB 100%<\/code><\/li>\n<li>If for some reason your partition files were not created or modified, you need to run `partprobe`, then the partition table will be re-read.<\/li>\n<li>Creating the filesystem for the boot partition labeled <code>BOOT<\/code>: <code>mkfs.vfat -n BOOT -F 32 -v \/dev\/mmcblk0p1<\/code><\/li>\n<li>Creating the root filesystem labeled <code>ROOTFS<\/code>: <code>mkfs.ext3 -L ROOTFS \/dev\/mmcblk0p2<\/code><\/li>\n<\/ol>\n<p>\nGreat, now you can fill it. Additionally, you will need <code>debootstrap<\/code>, a utility for creating root filesystems for Debian-like operating systems: <code>apt install debootstrap<\/code>.<\/p>\n<p><b>Building the filesystem:<\/b><\/p>\n<ol>\n<li>Mounting the partition in <code>\/mnt\/<\/code> (use a more convenient mount point for yourself): <code>mount \/dev\/mmcblk0p2 \/mnt<\/code><\/li>\n<li>Now, let's fill the file system: <code>debootstrap --foreign --include=qemu-user-static --arch armhf kali-rolling \/mnt\/ http:\/\/http.kali.org\/kali<\/code>. The parameter <code>--include<\/code> specifies additional packages to install; I included the statically built QEMU emulator. It allows running <code>chroot<\/code> in an ARM environment. You can find the meaning of the other options in <code>man debootstrap<\/code>. Don't forget that not every ARM board supports the <code>armhf<\/code>.<\/li>\n<li>Due to architecture differences <code>debootstrap<\/code> the process is carried out in two stages, the second is executed as follows: <code>chroot \/mnt\/ \/debootstrap\/debootstrap --second-stage<\/code><\/li>\n<li>Now we need to chroot: <code>chroot \/mnt \/bin\/bash<\/code><\/li>\n<li>Filling <code>\/etc\/hosts<\/code> and <code>\/etc\/hostname<\/code> target FS. Fill it similarly to the contents on your local computer, just make sure to change the hostname.<\/li>\n<li>You can further configure everything else. In particular, I install <code>locales<\/code> (repository keys), reconfigure locales and time zone (<code>dpkg-reconfigure locales tzdata<\/code>). Don't forget to set a password with the command <code>passwd<\/code>.<\/li>\n<li>Set a password for <code>root<\/code> with the command <code>passwd<\/code>.<\/li>\n<li>Preparing the image for me concludes with filling in <code>\/etc\/fstab<\/code> inside <code>\/mnt\/<\/code>. <\/li>\n<\/ol>\n<p>\nI will load according to the previously created labels, so the content will be as follows:<\/p>\n<blockquote><p> LABEL=ROOTFS \/ auto errors=remount-ro 0 1<br \/>\n LABEL=BOOT \/boot auto defaults 0 0<\/p><\/blockquote>\n<p>\nFinally, we can mount the boot partition, which we will need for the kernel: `mount \/dev\/mmcblk0p1 \/mnt\/boot\/`<\/p>\n<h3>Building Linux<\/h3>\n<p>\nTo build the kernel (and the bootloader later) on Debian Testing, you need to install the standard set of GCC, GNU Make, and GNU C Library header files for the target architecture (for me <code>armhf<\/code>), as well as OpenSSL headers, console calculator <code>bc<\/code>, <code>bison<\/code> and <code>flex<\/code>: <code>apt install crossbuild-essential-armhf bison flex libssl-dev bc<\/code>. Since the bootloader by default looks for the file <code>zImage<\/code> on the boot partition's file system, it's time to partition the flash drive.<\/p>\n<ol>\n<li>Cloning the kernel takes too long, so I will just download it: <code>wget https:\/\/cdn.kernel.org\/pub\/linux\/kernel\/v5.x\/linux-5.9.1.tar.xz<\/code>. Let's unpack and go to the source directory: <code>tar -xf linux-5.9.1.tar.xz &amp;&amp; cd linux-5.9.1<\/code><\/li>\n<li>Configure before compiling: <code>make ARCH=arm KBUILD_DEFCONFIG=imx_v6_v7_defconfig defconfig<\/code>. The config is located in the directory <code>arch\/arm\/configs\/<\/code>. If it is not there, you can try to find and download a ready-made one and pass the file name in that directory to the parameter <code>KBUILD_DEFCONFIG<\/code>. If all else fails, just move on to the next step.<\/li>\n<li>Optionally, you can fine-tune the settings: <code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig<\/code><\/li>\n<li>And cross-compile the image: <code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-<\/code><\/li>\n<li>Now you can copy the file with the kernel: <code>cp arch\/arm\/boot\/zImage \/mnt\/boot\/<\/code><\/li>\n<li>And the files with DeviceTree (description of the hardware on the board): <code>cp arch\/arm\/boot\/dts\/*.dtb \/mnt\/boot\/<\/code><\/li>\n<li>And install the compiled modules as separate files: <code>make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- INSTALL_MOD_PATH=\/mnt\/ modules_install<\/code><\/li>\n<\/ol>\n<p>\nThe kernel is ready. You can unmount everything now: <code>umount \/mnt\/boot\/ \/mnt\/<\/code><\/p>\n<h2>Das U-Boot<\/h2>\n<p>\nSince the bootloader is interactive, all you need for testing is the board, the storage device, and optionally a USB-to-UART device. That is, you can postpone the kernel and OS for later.<\/p>\n<p>The vast majority of manufacturers offer to use Das U-Boot for primary booting. Full support is usually provided in their own fork, but they also contribute to the upstream. <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.denx.de\/u-boot\/u-boot\">mainline<\/a><\/noindex>, therefore <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Freescale\/u-boot-fslc\">fork<\/a><\/noindex> I ignored it.<\/p>\n<p>We are building the bootloader:<\/p>\n<ol>\n<li>Clone the stable branch of the repository: <code>git clone https:\/\/gitlab.denx.de\/u-boot\/u-boot.git -b v2020.10<\/code><\/li>\n<li>Go to the directory: <code>cd u-boot<\/code><\/li>\n<li>Prepare the build configuration: <code>make mx6ull_14x14_evk_defconfig<\/code>. This only works if the configuration exists in Das U-Boot itself; otherwise, you will need to find the manufacturer's config and place it in the root of the repository in a file <code>.config<\/code>, or build it in another way recommended by the manufacturer.<\/li>\n<li>Build the bootloader image with a cross-compiler <code>armhf<\/code>: <code>make CROSS_COMPILE=arm-linux-gnueabihf- u-boot.imx<\/code><\/li>\n<\/ol>\n<p>\nAs a result, we get the file <code>u-boot.imx<\/code>, this is the ready image that can be written to a flash drive. Write to the SD card, skipping the first 1024 bytes. Why did I choose the target <code>u-boot.imx<\/code>? \u041f\u043e\u0447\u0435\u043c\u0443 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b \u0438\u043c\u0435\u043d\u043d\u043e 1024 \u0431\u0430\u0439\u0442\u0430? \u0422\u0430\u043a \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.denx.de\/u-boot\/u-boot\/-\/blob\/master\/doc\/imx\/mkimage\/imximage.txt\">the documentation<\/a><\/noindex>. For other boards, the process of building the image and writing may differ slightly.<\/p>\n<p>Done, you can boot up. The bootloader should report its own version, some information about the board, and try to find the kernel image on the partition. If it fails, it will attempt to boot over the network. Overall, the output is quite detailed, allowing you to identify errors in case of issues.<\/p>\n<h2>In conclusion<\/h2>\n<p>\nDid you know that a dolphin's forehead is not bony? It is literally a third eye, a fatty lens for echolocation!<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=morq&amp;utm_content=portiruem_gnu_linux_na_arm_platu_na_primere_kali_i_imx_6#order\"><img decoding=\"async\" alt=\"Booting GNU\/Linux on an ARM board from scratch (using Kali and iMX.6 as an example)\" src=\"\/wp-content\/uploads\/2020\/10\/6945c769380a0cba78c5407e02ef478e.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/ruvds.com\/ru-rub\/news\/read\/123?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=morq&amp;utm_content=portiruem_gnu_linux_na_arm_platu_na_primere_kali_i_imx_6\"><img decoding=\"async\" alt=\"Booting GNU\/Linux on an ARM board from scratch (using Kali and iMX.6 as an example)\" src=\"\/wp-content\/uploads\/2020\/10\/5ad9d0e14ed4724eed8b14007bae6167.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/524532\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>tl;dr: \u0441\u043e\u0431\u0438\u0440\u0430\u044e \u043e\u0431\u0440\u0430\u0437 Kali Linux \u0434\u043b\u044f ARM-\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430, \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 debootstrap, linux \u0438 u-boot. \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043a\u0443\u043f\u0430\u043b\u0438 \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043e\u0434\u043d\u043e\u043f\u043b\u0430\u0442\u043d\u0438\u043a, \u0442\u043e \u043c\u043e\u0433\u043b\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0441 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435\u043c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430 \u043b\u044e\u0431\u0438\u043c\u043e\u0433\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430. \u041f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u044b\u043c Flipper One. Kali Linux \u043f\u043e\u0434 IMX6 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0442\u0443 (\u044f \u0433\u043e\u0442\u043e\u0432\u043b\u044e), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":98046,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-98045","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"tl;dr: \u0441\u043e\u0431\u0438\u0440\u0430\u044e \u043e\u0431\u0440\u0430\u0437 Kali Linux \u0434\u043b\u044f ARM-\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430, \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 debootstrap, linux \u0438 u-boot.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/zavodim-gnu-linux-na-arm-plate-s-nulya-na-primere-kali-i-imx-6\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0417\u0430\u0432\u043e\u0434\u0438\u043c GNU\/Linux \u043d\u0430 ARM-\u043f\u043b\u0430\u0442\u0435 \u0441 \u043d\u0443\u043b\u044f (\u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Kali \u0438 iMX.6) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"tl;dr: \u0441\u043e\u0431\u0438\u0440\u0430\u044e \u043e\u0431\u0440\u0430\u0437 Kali Linux \u0434\u043b\u044f ARM-\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430, \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 debootstrap, linux \u0438 u-boot.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/zavodim-gnu-linux-na-arm-plate-s-nulya-na-primere-kali-i-imx-6\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-23T18:42:30+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-11-17T22:58:48+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Setting up GNU\/Linux on an ARM board from scratch (using Kali and iMX.6 as an example) | ProHoster","description":"tl;dr: I am building a Kali Linux image for an ARM computer using debootstrap, linux, and u-boot.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/zavodim-gnu-linux-na-arm-plate-s-nulya-na-primere-kali-i-imx-6","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0417\u0430\u0432\u043e\u0434\u0438\u043c GNU\/Linux \u043d\u0430 ARM-\u043f\u043b\u0430\u0442\u0435 \u0441 \u043d\u0443\u043b\u044f (\u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 Kali \u0438 iMX.6) | ProHoster","og:description":"tl;dr: \u0441\u043e\u0431\u0438\u0440\u0430\u044e \u043e\u0431\u0440\u0430\u0437 Kali Linux \u0434\u043b\u044f ARM-\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430, \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 debootstrap, linux \u0438 u-boot.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/zavodim-gnu-linux-na-arm-plate-s-nulya-na-primere-kali-i-imx-6","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-23T18:42:30+00:00","article:modified_time":"2020-11-17T22:58:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"98045","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:07:16","updated":"2026-08-11 12:50:04","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/98045","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=98045"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/98045\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/98046"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=98045"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=98045"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=98045"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}