{"id":58036,"date":"2026-10-31T07:29:19","date_gmt":"2026-10-30T23:29:19","guid":{"rendered":"https:\/\/www.amagicsoft.com\/?p=58036"},"modified":"2026-10-30T17:31:38","modified_gmt":"2026-10-30T09:31:38","slug":"volume-boot-record","status":"publish","type":"post","link":"https:\/\/www.amagicsoft.com\/de\/kb\/disk-partition\/volume-boot-record.html","title":{"rendered":"Volume Boot Record (VBR): Aufbau, Speicherort und Startvorgang"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"58036\" class=\"elementor elementor-58036\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5hz7qld dtec-docx-root dtec-post-58036 e-flex e-con-boxed e-con e-parent\" data-id=\"5hz7qld\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7wwjiny elementor-widget elementor-widget-text-editor\" data-id=\"7wwjiny\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><div><p class=\"otl-paragraph\">A <strong>Volume Boot Record (VBR)<\/strong> is a boot-related data structure stored at the beginning of a file system volume. It contains information that describes the volume&#8217;s layout and may also include bootstrap code used during legacy startup. Although the VBR is commonly associated with the first sector of a partition, its exact structure and role depend on the file system and boot architecture.<\/p><p class=\"otl-paragraph\">This distinction matters because a VBR is not the same as an MBR, and modern UEFI-based Windows systems do not normally execute traditional VBR bootstrap code during startup.<\/p><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-gqn19nu elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents\" data-id=\"gqn19nu\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;headings_by_tags&quot;:[&quot;h2&quot;,&quot;h3&quot;],&quot;exclude_headings_by_selector&quot;:&quot;.faq-no-toc, h2:contains(Data Recovery Assessment)&quot;,&quot;marker_view&quot;:&quot;bullets&quot;,&quot;no_headings_message&quot;:&quot;No headings were found on this page.&quot;,&quot;icon&quot;:{&quot;value&quot;:&quot;fas fa-circle&quot;,&quot;library&quot;:&quot;fa-solid&quot;},&quot;minimize_box&quot;:&quot;yes&quot;,&quot;minimized_on&quot;:&quot;tablet&quot;,&quot;hierarchical_view&quot;:&quot;yes&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"table-of-contents.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__header\">\n\t\t\t\t\t\t<h4 class=\"elementor-toc__header-title\">\n\t\t\t\tTable of Contents\t\t\t<\/h4>\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--expand\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__gqn19nu\" aria-expanded=\"true\" aria-label=\"Open table of contents\"><i aria-hidden=\"true\" class=\"fas fa-chevron-down\"><\/i><\/div>\n\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--collapse\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__gqn19nu\" aria-expanded=\"true\" aria-label=\"Close table of contents\"><i aria-hidden=\"true\" class=\"fas fa-chevron-up\"><\/i><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<div id=\"elementor-toc__gqn19nu\" class=\"elementor-toc__body\">\n\t\t\t<div class=\"elementor-toc__spinner-container\">\n\t\t\t\t<i class=\"elementor-toc__spinner eicon-animation-spin eicon-loading\" aria-hidden=\"true\"><\/i>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-v1php9f elementor-widget elementor-widget-heading\" data-id=\"v1php9f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">What Is a Volume Boot Record?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-r549ghe elementor-widget elementor-widget-text-editor\" data-id=\"r549ghe\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>A <strong>Volume Boot Record<\/strong> is the initial boot-related structure of a volume. It is also commonly called a volume boot sector or, in many PC storage contexts, a partition boot record (PBR).<\/p>\n<p>The VBR serves two related purposes:<\/p>\n<ul><li><strong>Volume identification and description:<\/strong> It stores parameters that help software interpret the file system, such as sector size, cluster size, volume length, and file-system-specific metadata locations.<\/li><li><strong>Bootstrap support:<\/strong> Depending on the file system and boot environment, it may contain executable code that transfers control to the next stage of an operating system&#8217;s boot process.<\/li><\/ul>\n<p>The exact contents are not universal. A FAT32 boot sector, an NTFS boot sector, and an exFAT Main Boot Sector all describe their respective volumes differently.<\/p>\n<p>For example, a FAT32 boot sector contains a BIOS Parameter Block (BPB), while an exFAT Boot Sector uses fields such as <code class=\"dtec-inline-code\">VolumeLength<\/code>, <code class=\"dtec-inline-code\">FatOffset<\/code>, and <code class=\"dtec-inline-code\">ClusterHeapOffset<\/code>. These structures serve related purposes, but they are not interchangeable.<\/p>\n<h3>VBR, Volume Boot Sector, and Partition Boot Record<\/h3>\n<p>The terms <strong>Volume Boot Record<\/strong>, <strong>Volume Boot Sector<\/strong>, and <strong>Partition Boot Record<\/strong> are frequently used interchangeably, although terminology varies between technical sources.<\/p>\n<p>A useful distinction is:<\/p>\n<ul><li><strong>Volume Boot Sector:<\/strong> Usually refers to the first sector of a file system volume.<\/li><li><strong>Volume Boot Record:<\/strong> Often refers to the boot-related structure stored at the beginning of that volume. Some file systems define a larger boot region rather than a single-sector structure.<\/li><li><strong>Partition Boot Record:<\/strong> Usually refers to the boot sector at the beginning of a partition.<\/li><\/ul>\n<p>On a conventional basic disk where a partition directly contains a volume beginning at the same address, the PBR and VBR generally refer to the same sector.<\/p>\n<p>However, the terms describe different storage concepts. A partition defines a region of a disk, while a volume represents the storage space organized for a file system. They should not be assumed to have a one-to-one relationship in every storage configuration.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-wn31oiy elementor-widget elementor-widget-heading\" data-id=\"wn31oiy\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Where Is the Volume Boot Record Located?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-oyfnm4w elementor-widget elementor-widget-text-editor\" data-id=\"oyfnm4w\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The <strong>VBR<\/strong> is located at the beginning of its file system volume.<\/p>\n<p>On a conventional partitioned disk, the volume begins at the partition&#8217;s starting logical block address (LBA). Therefore, the VBR is normally found at the first logical sector of that partition.<\/p>\n<p>Consider an illustrative disk layout:<\/p>\n<table><tbody><tr><td><p><strong>Disk region<\/strong><\/p><\/td><td><p><strong>Starting LBA<\/strong><\/p><\/td><td><p><strong>Purpose<\/strong><\/p><\/td><\/tr><tr><td><p>MBR or Protective MBR<\/p><\/td><td><p>0<\/p><\/td><td><p>Disk-level compatibility and partition information<\/p><\/td><\/tr><tr><td><p>Primary GPT Header<\/p><\/td><td><p>1 (GPT disk)<\/p><\/td><td><p>Describes the GPT layout<\/p><\/td><\/tr><tr><td><p>Partition 1<\/p><\/td><td><p>2,048<\/p><\/td><td><p>First partition begins<\/p><\/td><\/tr><tr><td><p>Partition 1 VBR<\/p><\/td><td><p>2,048<\/p><\/td><td><p>First volume&#8217;s boot sector<\/p><\/td><\/tr><tr><td><p>Partition 2<\/p><\/td><td><p>Another partition start<\/p><\/td><td><p>Second partition begins<\/p><\/td><\/tr><tr><td><p>Partition 2 VBR<\/p><\/td><td><p>Partition 2 start<\/p><\/td><td><p>Second volume&#8217;s boot sector<\/p><\/td><\/tr><\/tbody><\/table>\n<p>The example assumes that each partition directly contains a volume and uses a logical sector size of 512 bytes. The actual starting LBA depends on the disk layout.<\/p>\n<p>For a partition beginning at LBA 2,048, the VBR is at LBA 2,048 relative to the physical disk, not at LBA 0.<\/p>\n<p>An unpartitioned device can also contain a file system volume. In that case, the volume may begin at the device&#8217;s first logical sector, so a separate MBR or GPT partition table is not necessarily present.<\/p>\n<h3>Why the VBR Is Not Always at Disk LBA 0<\/h3>\n<p>The first logical sector of a disk and the first logical sector of a volume are different address locations.<\/p>\n<ul><li>Disk LBA 0 identifies the beginning of the disk.<\/li><li>Volume-relative sector 0 identifies the beginning of the volume.<\/li><li>The partition&#8217;s starting LBA connects these two address spaces on a conventional partitioned disk.<\/li><\/ul>\n<p>Confusing these locations can cause a disk editor or diagnostic tool to inspect the wrong sector.<\/p>\n<p>For a deeper explanation of the disk-level structure, see the <a href=\"https:\/\/www.amagicsoft.com\/wiki\/mbr-partition-table.html\">MBR partition table<\/a>.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-klfz9ue elementor-widget elementor-widget-heading\" data-id=\"klfz9ue\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">VBR vs. MBR: What Is the Difference?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bj09jdc elementor-widget elementor-widget-text-editor\" data-id=\"bj09jdc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The main difference between a <strong>VBR and MBR<\/strong> is their storage level and responsibility.<\/p>\n<p>An MBR belongs to the disk-level partitioning structure. A VBR belongs to a file system volume.<\/p>\n<table><tbody><tr><td><p><strong>Feature<\/strong><\/p><\/td><td><p><strong>MBR<\/strong><\/p><\/td><td><p><strong>VBR<\/strong><\/p><\/td><\/tr><tr><td><p>Storage level<\/p><\/td><td><p>Disk level<\/p><\/td><td><p>Volume level<\/p><\/td><\/tr><tr><td><p>Typical location<\/p><\/td><td><p>Disk LBA 0<\/p><\/td><td><p>First sector of the volume<\/p><\/td><\/tr><tr><td><p>Main contents<\/p><\/td><td><p>Bootstrap code, partition entries, disk signature<\/p><\/td><td><p>File-system parameters and, depending on the format, bootstrap code<\/p><\/td><\/tr><tr><td><p>Main purpose<\/p><\/td><td><p>Describe the legacy disk partition layout and provide a boot entry point<\/p><\/td><td><p>Describe the volume and support applicable boot processes<\/p><\/td><\/tr><tr><td><p>File-system dependency<\/p><\/td><td><p>Does not define the complete layout of an individual file system<\/p><\/td><td><p>Its structure depends on the file system<\/p><\/td><\/tr><tr><td><p>Backup arrangement<\/p><\/td><td><p>No standard backup MBR<\/p><\/td><td><p>Depends on the file system<\/p><\/td><\/tr><\/tbody><\/table>\n<p>On a conventional MBR-partitioned disk, the MBR contains four partition entries, each describing a partition&#8217;s location and size. Its bootstrap code can locate the selected boot partition and transfer control to that partition&#8217;s boot sector.<\/p>\n<p>The VBR then provides volume-specific information and, in a traditional BIOS boot chain, may execute the next bootstrap stage.<\/p>\n<p>The <a href=\"https:\/\/www.amagicsoft.com\/wiki\/mbr-partition-table.html\">Amagicsoft MBR partition table guide<\/a> explains the disk-level partition entries in more detail.<\/p>\n<h3>How Does VBR Relate to GPT?<\/h3>\n<p>GPT and VBR describe different parts of the storage architecture.<\/p>\n<p>GPT defines the disk&#8217;s partition layout. It contains a primary GPT Header, a partition entry array, and corresponding backup structures. A GPT disk also normally contains a Protective MBR at LBA 0.<\/p>\n<p>A VBR, by contrast, belongs to the file system volume inside a partition.<\/p>\n<p>A simplified GPT disk layout is:<\/p>\n<ol><li>Protective MBR at LBA 0.<\/li><li>Primary GPT Header at LBA 1.<\/li><li>Primary GPT Partition Entry Array.<\/li><li>Usable disk space containing partitions.<\/li><li>Backup GPT structures near the end of the disk.<\/li><\/ol>\n<p>The file system volume begins at the start of its partition, where its boot sector or boot region is located.<\/p>\n<p>Therefore, a GPT disk can contain NTFS, FAT32, and exFAT volumes with their own volume boot structures.<\/p>\n<p>GPT does not replace the VBR. It defines where partitions begin and end, while the file system defines how data inside a volume is organized.<\/p>\n<p>See the <a href=\"https:\/\/www.amagicsoft.com\/wiki\/learn-what-gpt-is.html\">Amagicsoft GPT guide<\/a> for a deeper explanation of GPT headers and partition entries.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a5vy21x elementor-widget elementor-widget-heading\" data-id=\"a5vy21x\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">How the VBR Fits into the Windows Boot Process<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4c4f868 elementor-widget elementor-widget-html\" data-id=\"4c4f868\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"amagicsoft-vbr-boot-explorer\" class=\"vbrx\">\r\n  <div class=\"vbrx__intro\">\r\n    <p class=\"vbrx__eyebrow\">INTERACTIVE BOOT-PATH EXPLORER<\/p>\r\n    <p class=\"vbrx__lead\">Choose a firmware mode to see how Windows reaches its boot manager\u2014and whether traditional VBR bootstrap code is part of that path.<\/p>\r\n  <\/div>\r\n\r\n  <div class=\"vbrx__controls\" role=\"group\" aria-label=\"Select firmware mode\">\r\n    <button class=\"vbrx__mode\" type=\"button\" data-mode=\"bios\" aria-pressed=\"true\">Legacy BIOS<\/button>\r\n    <button class=\"vbrx__mode\" type=\"button\" data-mode=\"uefi\" aria-pressed=\"false\">UEFI<\/button>\r\n  <\/div>\r\n\r\n  <div class=\"vbrx__path\" aria-live=\"polite\" aria-atomic=\"true\">\r\n    <ol class=\"vbrx__steps\" data-flow=\"bios\">\r\n      <li class=\"vbrx__step\">\r\n        <span class=\"vbrx__number\">1<\/span>\r\n        <div class=\"vbrx__step-body\">\r\n          <span class=\"vbrx__step-label\">Firmware<\/span>\r\n          <strong>BIOS<\/strong>\r\n          <span class=\"vbrx__step-note\">Initializes the platform and selects a boot device.<\/span>\r\n        <\/div>\r\n      <\/li>\r\n      <li class=\"vbrx__step\">\r\n        <span class=\"vbrx__number\">2<\/span>\r\n        <div class=\"vbrx__step-body\">\r\n          <span class=\"vbrx__step-label\">Disk-level boot record \u00b7 LBA 0<\/span>\r\n          <strong>MBR bootstrap code<\/strong>\r\n          <span class=\"vbrx__step-note\">Uses the legacy partition information to locate the selected boot partition.<\/span>\r\n        <\/div>\r\n      <\/li>\r\n      <li class=\"vbrx__step vbrx__step--active\">\r\n        <span class=\"vbrx__number\">3<\/span>\r\n        <div class=\"vbrx__step-body\">\r\n          <span class=\"vbrx__step-label\">Volume-level boot record \u00b7 Partition start<\/span>\r\n          <strong>VBR \/ PBR bootstrap code<\/strong>\r\n          <span class=\"vbrx__step-note\">Receives control in the conventional BIOS\/MBR chain and starts the next boot stage.<\/span>\r\n          <span class=\"vbrx__tag\">TRADITIONAL VBR CODE EXECUTES<\/span>\r\n        <\/div>\r\n      <\/li>\r\n      <li class=\"vbrx__step\">\r\n        <span class=\"vbrx__number\">4<\/span>\r\n        <div class=\"vbrx__step-body\">\r\n          <span class=\"vbrx__step-label\">Windows Boot Manager<\/span>\r\n          <strong><code>bootmgr<\/code><\/strong>\r\n          <span class=\"vbrx__step-note\">Reads the boot configuration and selects the Windows loader.<\/span>\r\n        <\/div>\r\n      <\/li>\r\n      <li class=\"vbrx__step\">\r\n        <span class=\"vbrx__number\">5<\/span>\r\n        <div class=\"vbrx__step-body\">\r\n          <span class=\"vbrx__step-label\">Operating-system loader<\/span>\r\n          <strong><code>winload.exe<\/code><\/strong>\r\n          <span class=\"vbrx__step-note\">Loads the Windows kernel and required boot-start drivers.<\/span>\r\n        <\/div>\r\n      <\/li>\r\n    <\/ol>\r\n\r\n    <ol class=\"vbrx__steps\" data-flow=\"uefi\" hidden>\r\n      <li class=\"vbrx__step\">\r\n        <span class=\"vbrx__number\">1<\/span>\r\n        <div class=\"vbrx__step-body\">\r\n          <span class=\"vbrx__step-label\">Firmware<\/span>\r\n          <strong>UEFI Boot Manager<\/strong>\r\n          <span class=\"vbrx__step-note\">Uses firmware boot options to identify a device and an EFI application.<\/span>\r\n        <\/div>\r\n      <\/li>\r\n      <li class=\"vbrx__step\">\r\n        <span class=\"vbrx__number\">2<\/span>\r\n        <div class=\"vbrx__step-body\">\r\n          <span class=\"vbrx__step-label\">Disk partition layout<\/span>\r\n          <strong>GPT and the EFI System Partition<\/strong>\r\n          <span class=\"vbrx__step-note\">The firmware identifies the system partition. A Windows UEFI system disk uses GPT; its ESP is FAT32.<\/span>\r\n        <\/div>\r\n      <\/li>\r\n      <li class=\"vbrx__step vbrx__step--active\">\r\n        <span class=\"vbrx__number\">3<\/span>\r\n        <div class=\"vbrx__step-body\">\r\n          <span class=\"vbrx__step-label\">EFI application on the ESP<\/span>\r\n          <strong><code>\\EFI\\Microsoft\\Boot\\bootmgfw.efi<\/code><\/strong>\r\n          <span class=\"vbrx__step-note\">UEFI loads this file through filesystem services. It does not execute the traditional x86 bootstrap code in the MBR or VBR.<\/span>\r\n          <span class=\"vbrx__tag vbrx__tag--muted\">EFI FILE IS LOADED<\/span>\r\n        <\/div>\r\n      <\/li>\r\n      <li class=\"vbrx__step\">\r\n        <span class=\"vbrx__number\">4<\/span>\r\n        <div class=\"vbrx__step-body\">\r\n          <span class=\"vbrx__step-label\">Windows OS Loader<\/span>\r\n          <strong><code>winload.efi<\/code><\/strong>\r\n          <span class=\"vbrx__step-note\">Loads the Windows kernel and required boot-start drivers.<\/span>\r\n        <\/div>\r\n      <\/li>\r\n    <\/ol>\r\n  <\/div>\r\n\r\n  <div class=\"vbrx__explanation\" data-explanation=\"bios\">\r\n    <strong>What this means for the VBR<\/strong>\r\n    <p>In a conventional Legacy BIOS\/MBR Windows boot, the partition boot record is an executable stage in the chain. Its location is volume-level, not disk LBA 0.<\/p>\r\n  <\/div>\r\n  <div class=\"vbrx__explanation\" data-explanation=\"uefi\" hidden>\r\n    <strong>What this means for the VBR<\/strong>\r\n    <p>The ESP still has a FAT32 filesystem boot sector because it is a formatted volume. However, the normal UEFI Windows path loads an EFI application as a file; it does not run the legacy VBR bootstrap code.<\/p>\r\n  <\/div>\r\n\r\n  <p class=\"vbrx__disclaimer\">Educational model of a typical Windows boot path. Actual boot configurations can include recovery entries, additional boot managers, or vendor-specific stages. This module does not inspect a physical disk.<\/p>\r\n<\/div>\r\n\r\n<style>\r\n  #amagicsoft-vbr-boot-explorer {\r\n    --vbrx-ink: #172033;\r\n    --vbrx-muted: #5b6577;\r\n    --vbrx-line: #d8deea;\r\n    --vbrx-panel: #f6f8fb;\r\n    --vbrx-accent: #2457a7;\r\n    --vbrx-accent-soft: #eaf1fc;\r\n    --vbrx-green: #176b48;\r\n    --vbrx-green-soft: #e9f5ef;\r\n    box-sizing: border-box;\r\n    width: 100%;\r\n    max-width: 860px;\r\n    margin: 24px auto;\r\n    padding: clamp(16px, 3vw, 26px);\r\n    border: 1px solid var(--vbrx-line);\r\n    border-radius: 14px;\r\n    background: #fff;\r\n    color: var(--vbrx-ink);\r\n    font: 400 15px\/1.55 system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer *,\r\n  #amagicsoft-vbr-boot-explorer *::before,\r\n  #amagicsoft-vbr-boot-explorer *::after { box-sizing: border-box; }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__intro { margin-bottom: 18px; }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__eyebrow {\r\n    margin: 0 0 7px;\r\n    color: var(--vbrx-accent);\r\n    font-size: 11px;\r\n    font-weight: 750;\r\n    letter-spacing: .11em;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__lead {\r\n    max-width: 700px;\r\n    margin: 0;\r\n    color: var(--vbrx-muted);\r\n    font-size: 14px;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__controls {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    gap: 8px;\r\n    margin: 0 0 18px;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__mode {\r\n    appearance: none;\r\n    border: 1px solid var(--vbrx-line);\r\n    border-radius: 8px;\r\n    padding: 9px 15px;\r\n    background: #fff;\r\n    color: var(--vbrx-ink);\r\n    font: inherit;\r\n    font-size: 13px;\r\n    font-weight: 700;\r\n    cursor: pointer;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__mode[aria-pressed=\"true\"] {\r\n    border-color: var(--vbrx-accent);\r\n    background: var(--vbrx-accent);\r\n    color: #fff;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__mode:focus-visible {\r\n    outline: 3px solid #9bbcf1;\r\n    outline-offset: 2px;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__steps {\r\n    position: relative;\r\n    display: grid;\r\n    gap: 9px;\r\n    margin: 0;\r\n    padding: 0;\r\n    list-style: none;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__step {\r\n    position: relative;\r\n    display: grid;\r\n    grid-template-columns: 30px minmax(0, 1fr);\r\n    gap: 12px;\r\n    align-items: start;\r\n    padding: 13px 14px;\r\n    border: 1px solid var(--vbrx-line);\r\n    border-radius: 10px;\r\n    background: var(--vbrx-panel);\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__number {\r\n    display: grid;\r\n    width: 27px;\r\n    height: 27px;\r\n    place-items: center;\r\n    border: 1px solid #cbd3e1;\r\n    border-radius: 50%;\r\n    background: #fff;\r\n    color: var(--vbrx-muted);\r\n    font-size: 12px;\r\n    font-weight: 750;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__step-label {\r\n    display: block;\r\n    margin: 0 0 2px;\r\n    color: var(--vbrx-muted);\r\n    font-size: 11px;\r\n    font-weight: 700;\r\n    letter-spacing: .035em;\r\n    text-transform: uppercase;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__step strong {\r\n    display: block;\r\n    overflow-wrap: anywhere;\r\n    font-size: 14px;\r\n    line-height: 1.45;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__step-note {\r\n    display: block;\r\n    margin-top: 3px;\r\n    color: var(--vbrx-muted);\r\n    font-size: 12px;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__step--active {\r\n    border-color: #9db7e2;\r\n    background: var(--vbrx-accent-soft);\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__step--active .vbrx__number {\r\n    border-color: var(--vbrx-accent);\r\n    background: var(--vbrx-accent);\r\n    color: #fff;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__tag {\r\n    display: inline-block;\r\n    margin-top: 8px;\r\n    padding: 3px 7px;\r\n    border-radius: 5px;\r\n    background: var(--vbrx-green-soft);\r\n    color: var(--vbrx-green);\r\n    font-size: 10px;\r\n    font-weight: 800;\r\n    letter-spacing: .035em;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__tag--muted {\r\n    background: #edf0f5;\r\n    color: #4e5a6c;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__explanation {\r\n    margin-top: 14px;\r\n    padding: 14px 16px;\r\n    border-left: 3px solid var(--vbrx-accent);\r\n    border-radius: 7px;\r\n    background: #f7f9fc;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__explanation strong {\r\n    display: block;\r\n    margin-bottom: 3px;\r\n    font-size: 13px;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__explanation p {\r\n    margin: 0;\r\n    color: var(--vbrx-muted);\r\n    font-size: 13px;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer .vbrx__disclaimer {\r\n    margin: 14px 0 0;\r\n    color: var(--vbrx-muted);\r\n    font-size: 11px;\r\n  }\r\n  #amagicsoft-vbr-boot-explorer [hidden] { display: none !important; }\r\n  @media (max-width: 520px) {\r\n    #amagicsoft-vbr-boot-explorer { padding: 15px; border-radius: 10px; }\r\n    #amagicsoft-vbr-boot-explorer .vbrx__step { padding: 11px; gap: 9px; }\r\n    #amagicsoft-vbr-boot-explorer .vbrx__step strong { font-size: 13px; }\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n(() => {\r\n  const root = document.getElementById('amagicsoft-vbr-boot-explorer');\r\n  if (!root || root.dataset.initialized === 'true') return;\r\n  root.dataset.initialized = 'true';\r\n\r\n  const buttons = Array.from(root.querySelectorAll('.vbrx__mode'));\r\n  const flows = Array.from(root.querySelectorAll('.vbrx__steps'));\r\n  const explanations = Array.from(root.querySelectorAll('.vbrx__explanation'));\r\n\r\n  function setMode(mode) {\r\n    buttons.forEach((button) => {\r\n      button.setAttribute('aria-pressed', String(button.dataset.mode === mode));\r\n    });\r\n    flows.forEach((flow) => {\r\n      flow.hidden = flow.dataset.flow !== mode;\r\n    });\r\n    explanations.forEach((panel) => {\r\n      panel.hidden = panel.dataset.explanation !== mode;\r\n    });\r\n  }\r\n\r\n  buttons.forEach((button, index) => {\r\n    button.addEventListener('click', () => setMode(button.dataset.mode));\r\n    button.addEventListener('keydown', (event) => {\r\n      if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;\r\n      event.preventDefault();\r\n      const nextIndex = event.key === 'ArrowRight'\r\n        ? (index + 1) % buttons.length\r\n        : (index - 1 + buttons.length) % buttons.length;\r\n      buttons[nextIndex].focus();\r\n      setMode(buttons[nextIndex].dataset.mode);\r\n    });\r\n  });\r\n\r\n  setMode('bios');\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-q79dhha elementor-widget elementor-widget-text-editor\" data-id=\"q79dhha\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The role of the VBR depends on whether Windows starts through Legacy BIOS or native UEFI.<\/p><p>These environments use different mechanisms to locate and load the Windows boot manager.<\/p><h3>Legacy BIOS and MBR Boot Sequence<\/h3><p>On a conventional Legacy BIOS system using an MBR-partitioned system disk, the boot process follows this general sequence:<\/p><ol><li>BIOS initializes the computer and selects a boot device.<\/li><li>BIOS loads the MBR from disk LBA 0.<\/li><li>The MBR bootstrap code locates the selected boot partition.<\/li><li>The partition&#8217;s first sector, commonly called the VBR or PBR, receives control.<\/li><li>The VBR bootstrap code starts the next boot stage, which leads to Windows Boot Manager (<code class=\"dtec-inline-code\">bootmgr<\/code>).<\/li><li>Windows Boot Manager loads <code class=\"dtec-inline-code\">winload.exe<\/code>.<\/li><li>The Windows loader initializes the kernel and required boot-start drivers.<\/li><\/ol><p>In this configuration, the VBR is an executable stage in the traditional boot chain.<\/p><p>The partition boot sector is not responsible for defining the entire disk layout. It operates after the disk-level boot code has identified the boot partition.<\/p><h3>UEFI Boot Sequence and the EFI System Partition<\/h3><p>A native UEFI Windows installation uses a different boot process.<\/p><p>Instead of executing traditional MBR and VBR bootstrap code, UEFI firmware uses its Boot Manager to locate and load an EFI application.<\/p><p>A typical Windows UEFI boot sequence is:<\/p><ol><li>UEFI firmware initializes the platform.<\/li><li>The firmware reads its boot options and identifies the EFI System Partition (ESP).<\/li><li>The firmware accesses the ESP&#8217;s file system and loads <code class=\"dtec-inline-code\">\\EFI\\Microsoft\\Boot\\bootmgfw.efi<\/code>.<\/li><li>Windows Boot Manager loads <code class=\"dtec-inline-code\">winload.efi<\/code>.<\/li><li>The Windows loader initializes the kernel and required boot-start drivers.<\/li><\/ol><p>The <a href=\"https:\/\/learn.microsoft.com\/en-us\/troubleshoot\/windows-client\/performance\/windows-boot-issues-troubleshooting\" rel=\"nofollow\">Microsoft Windows startup troubleshooting documentation<\/a> distinguishes the BIOS and UEFI startup phases and identifies the different Windows Boot Manager and OS Loader paths.<\/p><p>The UEFI specification also explains that its Boot Manager loads UEFI applications from files rather than executing traditional legacy MBR bootstrap code. See the <a href=\"https:\/\/uefi.org\/specs\/UEFI\/2.11\/02_Overview.html\" rel=\"nofollow\">UEFI Specification: Overview<\/a> and <a href=\"https:\/\/uefi.org\/specs\/UEFI\/2.11\/05_GUID_Partition_Table_Format.html\" rel=\"nofollow\">GPT Disk Layout<\/a>.<\/p><h3>Does UEFI Still Have a VBR?<\/h3><p>Yes. A UEFI system can still contain volume boot sectors.<\/p><p>For a standard Windows UEFI\/GPT installation, the EFI System Partition is formatted with FAT32. Consequently, it has a FAT32 file system boot sector and the associated file-system structures.<\/p><p>However, the normal UEFI boot process does not execute the traditional x86 bootstrap code stored in that VBR. Instead, the firmware accesses the FAT32 file system and loads the EFI boot manager as a file.<\/p><p>This distinction is important:<\/p><ul><li>The ESP&#8217;s VBR exists as part of the FAT32 volume structure.<\/li><li>The EFI application is the executable entry point used by native UEFI startup.<\/li><li>The presence of a VBR does not mean that its traditional bootstrap code must execute.<\/li><\/ul><p>Microsoft&#8217;s <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows-hardware\/manufacture\/desktop\/configure-uefigpt-based-hard-drive-partitions?view=windows-11\" rel=\"nofollow\">UEFI\/GPT-based hard drive partition guidance<\/a> specifies the FAT32 requirement for the Windows EFI System Partition.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ua3gkix elementor-widget elementor-widget-heading\" data-id=\"ua3gkix\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Volume Boot Sector Structure: What Does a VBR Contain?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d8cocmk elementor-widget elementor-widget-text-editor\" data-id=\"d8cocmk\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>There is no single universal <strong>volume boot sector structure<\/strong> shared by every file system.<\/p>\n<p>A typical boot sector may contain several types of information:<\/p>\n<table><tbody><tr><td><p><strong>Component<\/strong><\/p><\/td><td><p><strong>Purpose<\/strong><\/p><\/td><\/tr><tr><td><p>Jump instruction<\/p><\/td><td><p>Transfers execution to bootstrap code when applicable<\/p><\/td><\/tr><tr><td><p>File-system identifier<\/p><\/td><td><p>Identifies or describes the file system format<\/p><\/td><\/tr><tr><td><p>BIOS Parameter Block (BPB) or equivalent fields<\/p><\/td><td><p>Describes sector size, cluster size, volume size, and other parameters<\/p><\/td><\/tr><tr><td><p>File-system-specific fields<\/p><\/td><td><p>Identifies important structures or their locations<\/p><\/td><\/tr><tr><td><p>Bootstrap code<\/p><\/td><td><p>Provides instructions for a compatible boot environment<\/p><\/td><\/tr><tr><td><p>Signature or checksum information<\/p><\/td><td><p>Helps identify or validate specific parts of the structure<\/p><\/td><\/tr><\/tbody><\/table>\n<p>The exact fields, byte offsets, lengths, and validation rules depend on the file system.<\/p>\n<p>For example, the FAT specification defines a BPB, while exFAT defines its own Main Boot Sector fields. Treating these formats as identical can lead to incorrect interpretation of raw disk data.<\/p>\n<h3>The BIOS Parameter Block (BPB)<\/h3>\n<p>The BIOS Parameter Block is a collection of fields describing fundamental file-system parameters.<\/p>\n<p>In FAT file systems, the BPB is located in the first sector of the volume. It provides information such as:<\/p>\n<ul><li>Bytes per sector.<\/li><li>Sectors per cluster.<\/li><li>Number of reserved sectors.<\/li><li>Number and size of FAT structures.<\/li><li>Total volume sectors.<\/li><li>Root directory information, where applicable.<\/li><\/ul>\n<p>FAT32 extends the BPB with additional fields for its root directory cluster, FSInfo sector, and backup boot sector.<\/p>\n<p>The BPB is not the entire VBR. It is one part of the boot sector&#8217;s structure.<\/p>\n<p>The <a href=\"https:\/\/www.scs.stanford.edu\/~zyedidia\/docs\/_other\/fat.pdf\" rel=\"nofollow\">Microsoft FAT Specification<\/a> provides the field definitions and byte offsets for FAT12, FAT16, and FAT32.<\/p>\n<h3>Why the 55 AA Signature Does Not Prove a VBR Is Valid<\/h3>\n<p>Many traditional boot-sector formats use the two bytes <code class=\"dtec-inline-code\">55 AA<\/code> at offsets 510\u2013511 as a boot signature.<\/p>\n<p>This marker is useful when inspecting a sector, but it is not sufficient to establish that the complete structure is valid.<\/p>\n<p>A sector may contain the expected signature while still having:<\/p>\n<ul><li>Incorrect sector or cluster parameters.<\/li><li>Invalid volume-length information.<\/li><li>File-system-specific fields outside their allowed ranges.<\/li><li>Inconsistent references to other file-system structures.<\/li><li>Damaged or incomplete bootstrap code.<\/li><\/ul>\n<p>A valid signature only confirms the presence of that particular marker. It does not prove that the volume can be mounted, that all metadata is intact, or that the boot process can complete.<\/p>\n<p>Some file systems also define additional validation mechanisms. For example, exFAT uses a Boot Checksum for its Main and Backup Boot Regions.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8wxejhk elementor-widget elementor-widget-heading\" data-id=\"8wxejhk\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">How VBR Structures Differ Across NTFS, FAT32, and exFAT<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-m67sq0i elementor-widget elementor-widget-text-editor\" data-id=\"m67sq0i\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Although NTFS, FAT32, and exFAT all have boot-related structures at the beginning of a volume, their layouts and backup mechanisms differ significantly.<\/p>\n<h3>NTFS Boot Sector<\/h3>\n<p>An NTFS volume begins with an NTFS boot sector containing file-system parameters and bootstrap-related fields.<\/p>\n<p>The common 512-byte NTFS boot-sector layout documented in the Linux-NTFS on-disk structure definition includes:<\/p>\n<table><tbody><tr><td><p><strong>Byte offset<\/strong><\/p><\/td><td><p><strong>Field<\/strong><\/p><\/td><td><p><strong>Size<\/strong><\/p><\/td><td><p><strong>Purpose<\/strong><\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">0x00<\/code><\/p><\/td><td><p>Jump instruction<\/p><\/td><td><p>3 bytes<\/p><\/td><td><p>Bootstrap entry instruction<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">0x03<\/code><\/p><\/td><td><p>OEM ID<\/p><\/td><td><p>8 bytes<\/p><\/td><td><p>Identifies NTFS using <code class=\"dtec-inline-code\">NTFS    <\/code><\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">0x0B<\/code><\/p><\/td><td><p>BPB<\/p><\/td><td><p>25 bytes<\/p><\/td><td><p>Basic volume parameters<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">0x28<\/code><\/p><\/td><td><p>Number of sectors<\/p><\/td><td><p>8 bytes<\/p><\/td><td><p>Volume sector count<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">0x30<\/code><\/p><\/td><td><p><code class=\"dtec-inline-code\">$MFT<\/code> LCN<\/p><\/td><td><p>8 bytes<\/p><\/td><td><p>Starting logical cluster number of the Master File Table<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">0x38<\/code><\/p><\/td><td><p><code class=\"dtec-inline-code\">$MFTMirr<\/code> LCN<\/p><\/td><td><p>8 bytes<\/p><\/td><td><p>Starting logical cluster number of the MFT mirror<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">0x40<\/code><\/p><\/td><td><p>Clusters per MFT record<\/p><\/td><td><p>1 byte<\/p><\/td><td><p>Defines the MFT record-size encoding<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">0x44<\/code><\/p><\/td><td><p>Clusters per index record<\/p><\/td><td><p>1 byte<\/p><\/td><td><p>Defines the index-record-size encoding<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">0x48<\/code><\/p><\/td><td><p>Volume serial number<\/p><\/td><td><p>8 bytes<\/p><\/td><td><p>Identifies the volume<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">0x50<\/code><\/p><\/td><td><p>Checksum field<\/p><\/td><td><p>4 bytes<\/p><\/td><td><p>Boot-sector checksum field<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">0x54<\/code><\/p><\/td><td><p>Bootstrap area<\/p><\/td><td><p>426 bytes<\/p><\/td><td><p>Boot-related code and reserved space<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">0x1FE<\/code><\/p><\/td><td><p>End-of-sector marker<\/p><\/td><td><p>2 bytes<\/p><\/td><td><p><code class=\"dtec-inline-code\">55 AA<\/code> in on-disk byte order<\/p><\/td><\/tr><\/tbody><\/table>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c6d412a elementor-widget elementor-widget-html\" data-id=\"c6d412a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!doctype html>\r\n<html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>NTFS VBR teaching lab<\/title><\/head><body>\r\n<!-- ELEMENTOR MODULE START -->\r\n<style>\r\n.vbr-lab { --vl-ink:#22303a; --vl-muted:#596770; --vl-line:#d1d8da; --vl-paper:#f8f9f7; --vl-green:#245e4c; --vl-blue:#315c83; --vl-amber:#805018; box-sizing:border-box; width:100%; max-width:1240px; margin:24px auto; color:var(--vl-ink); background:var(--vl-paper); border:1px solid var(--vl-line); border-top:4px solid #344b55; font:14px\/1.55 system-ui,-apple-system,\"Segoe UI\",sans-serif; text-align:left; color-scheme:light; }\r\n.vbr-lab *, .vbr-lab *::before, .vbr-lab *::after { box-sizing:border-box; }\r\n.vbr-lab [hidden] { display:none !important; }\r\n.vbr-lab p { margin:0; padding:0; font:inherit; color:inherit; }\r\n.vbr-lab button,.vbr-lab select { font:inherit; letter-spacing:normal; text-transform:none; border-radius:3px; box-shadow:none; margin:0; min-height:38px; }\r\n.vbr-lab button { appearance:none; border:1px solid var(--vl-line); background:#fff; color:var(--vl-ink); padding:7px 12px; cursor:pointer; font-weight:500; line-height:1.4; }\r\n.vbr-lab button:hover { background:#edf1ef; border-color:#81938c; }\r\n.vbr-lab :is(button,select,input,summary,a,[tabindex]):focus-visible { outline:3px solid #1b6faa; outline-offset:3px; }\r\n.vbr-lab a { color:#215e86; text-decoration:underline; }\r\n.vbr-lab .vl-head { padding:24px 26px 18px; display:flex; justify-content:space-between; gap:20px; align-items:start; }\r\n.vbr-lab .vl-title { font-size:24px; line-height:1.25; font-weight:650; letter-spacing:-.035em; }\r\n.vbr-lab .vl-tag { display:inline-block; white-space:nowrap; border:1px solid #b5c2ba; padding:4px 8px; font:11px\/1.5 ui-monospace,Consolas,monospace; color:var(--vl-green); background:#edf3ee; }\r\n.vbr-lab .vl-body { padding:20px 26px 24px; }\r\n.vbr-lab .vl-small { font-size:11px; color:var(--vl-muted); text-transform:uppercase; letter-spacing:.06em; }\r\n.vbr-lab .vl-value { font:600 15px\/1.6 ui-monospace,Consolas,monospace; }\r\n.vbr-lab .vl-sectionline { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:10px; }\r\n.vbr-lab .vl-sectiontitle { font-weight:700; font-size:13px; }\r\n.vbr-lab .vl-map { display:grid; gap:10px; margin-bottom:10px; }\r\n.vbr-lab .vl-mapgroup { display:grid; grid-template-columns:100px 1fr; align-items:stretch; gap:10px; }\r\n.vbr-lab .vl-maplabel { font:12px\/1.6 ui-monospace,Consolas,monospace; color:var(--vl-muted); align-self:center; }\r\n.vbr-lab .vl-mapcells { display:flex; flex-wrap:wrap; gap:5px; }\r\n.vbr-lab .vl-map button { text-align:left; flex:1 1 110px; border-top:3px solid #8eaaa0; padding:8px 10px; font-size:11px; }\r\n.vbr-lab .vl-map button[data-tone=\"backup\"] { border-top-color:#8d9caf; }\r\n.vbr-lab .vl-map button[aria-pressed=\"true\"] { background:#e9f0eb; outline:2px solid #426554; outline-offset:-2px; }\r\n.vbr-lab .vl-map button strong { display:block; font:600 13px\/1.6 ui-monospace,Consolas,monospace; }\r\n.vbr-lab .vl-mapnote { font-size:12px; color:var(--vl-muted); margin-bottom:16px; }\r\n.vbr-lab .vl-layoutline { padding:10px 12px; border:1px solid var(--vl-line); background:#f0f2ef; font:12px\/1.7 ui-monospace,Consolas,monospace; margin-bottom:20px; overflow-wrap:anywhere; }\r\n.vbr-lab .vl-tools { display:flex; align-items:center; flex-wrap:wrap; gap:10px 20px; padding:12px 0; border-top:1px solid var(--vl-line); }\r\n.vbr-lab .vl-control { display:flex; gap:8px; align-items:center; font-size:12px; }\r\n.vbr-lab select { background:#fff; color:var(--vl-ink); border:1px solid #a9b5b8; padding:6px 30px 6px 9px; max-width:100%; width:auto; }\r\n.vbr-lab input[type=\"checkbox\"] { appearance:auto; width:16px; height:16px; margin:0; accent-color:var(--vl-green); }\r\n.vbr-lab .vl-address { font:12px\/1.7 ui-monospace,Consolas,monospace; color:var(--vl-muted); margin-bottom:12px; overflow-wrap:anywhere; }\r\n.vbr-lab .vl-workbench { display:grid; grid-template-columns:minmax(0,1fr) 290px; border:1px solid var(--vl-line); background:#fff; }\r\n.vbr-lab .vl-bytepanel { min-width:0; background:#fbfcfa; }\r\n.vbr-lab .vl-panelbar { padding:10px 13px; border-bottom:1px solid var(--vl-line); display:flex; justify-content:space-between; gap:12px; font-size:11px; color:var(--vl-muted); }\r\n.vbr-lab .vl-hexscroll { overflow:auto; max-height:540px; padding:10px 12px 14px; }\r\n.vbr-lab .vl-hex { width:max-content; min-width:100%; font:12px\/1.8 ui-monospace,\"Cascadia Mono\",Consolas,monospace; }\r\n.vbr-lab .vl-hexrow { display:flex; align-items:center; white-space:nowrap; height:25px; }\r\n.vbr-lab .vl-offset { width:48px; flex-shrink:0; color:#697780; }\r\n.vbr-lab .vl-bytegroup { display:flex; gap:2px; }\r\n.vbr-lab .vl-byte { appearance:none; font:inherit; line-height:22px; width:22px; height:23px; min-height:0; border:0; padding:0; border-radius:0; background:transparent; font-weight:400; }\r\n.vbr-lab .vl-byte:nth-child(8) { margin-right:6px; }\r\n.vbr-lab .vl-ascii { display:inline-flex; border-left:1px solid #d6ddda; margin-left:12px; padding-left:12px; }\r\n.vbr-lab .vl-ascii span { display:inline-block; width:8px; text-align:center; }\r\n.vbr-lab .vl-id { background:#e6eef6; color:#234b6b; }\r\n.vbr-lab .vl-geo { background:#e5eee7; color:#28583e; }\r\n.vbr-lab .vl-meta { background:#f2eadb; color:#704713; }\r\n.vbr-lab .vl-sig { background:#eee5f0; color:#69436f; }\r\n.vbr-lab .vl-byte.vl-active,.vbr-lab .vl-ascii .vl-active { background:#244e42; color:#fff; box-shadow:inset 0 -2px 0 #13362b; }\r\n.vbr-lab .vl-gap { color:#66766d; padding:8px 0; font-size:11px; border-block:1px dashed #d8deda; margin:7px 0; }\r\n.vbr-lab .vl-decoder { border-left:1px solid var(--vl-line); padding:14px 16px; min-width:0; }\r\n.vbr-lab .vl-decoder label { display:block; font-size:11px; color:var(--vl-muted); margin:12px 0 5px; }\r\n.vbr-lab .vl-decoder select { width:100%; font-size:12px; }\r\n.vbr-lab .vl-fieldnav { display:flex; justify-content:space-between; gap:8px; margin:8px 0 15px; }\r\n.vbr-lab .vl-fieldnav button { font-size:11px; flex:1; padding:5px; min-height:32px; }\r\n.vbr-lab .vl-fieldname { font-weight:750; overflow-wrap:anywhere; margin-bottom:6px; }\r\n.vbr-lab .vl-decoded { font:600 21px\/1.35 ui-monospace,Consolas,monospace; color:var(--vl-green); margin:6px 0 14px; overflow-wrap:anywhere; }\r\n.vbr-lab dl { margin:12px 0; font-size:12px; display:grid; grid-template-columns:66px minmax(0,1fr); gap:7px 10px; }\r\n.vbr-lab dt { color:var(--vl-muted); font-weight:400; }\r\n.vbr-lab dd { margin:0; font:12px\/1.6 ui-monospace,Consolas,monospace; overflow-wrap:anywhere; }\r\n.vbr-lab .vl-explanation { font-size:12px; border-top:1px solid var(--vl-line); padding-top:12px; }\r\n.vbr-lab .vl-legend { display:flex; flex-wrap:wrap; gap:8px 15px; padding:12px 0; font-size:11px; color:var(--vl-muted); }\r\n.vbr-lab .vl-dot { display:inline-block; width:9px; height:9px; margin-right:5px; border:1px solid #9aaba3; }\r\n.vbr-lab .vl-footnote { font-size:12px; color:var(--vl-muted); margin:0 0 14px; }\r\n.vbr-lab details { border-top:1px solid var(--vl-line); padding-top:12px; font-size:12px; }\r\n.vbr-lab summary { cursor:pointer; color:#384d55; font-weight:600; }\r\n.vbr-lab .vl-method { padding-top:12px; display:grid; gap:10px; max-width:960px; }\r\n.vbr-lab .vl-status { margin-top:14px; font:11px\/1.6 ui-monospace,Consolas,monospace; color:var(--vl-green); }\r\n@media(max-width:1050px) { .vbr-lab .vl-workbench { grid-template-columns:minmax(0,1fr); } .vbr-lab .vl-decoder { border-left:0; border-top:1px solid var(--vl-line); } .vbr-lab .vl-decoder select { max-width:480px; } .vbr-lab .vl-fieldnav { max-width:300px; } }\r\n@media print { .vbr-lab .vl-hexscroll { max-height:none; } .vbr-lab button { color:#000; } }\r\n.vbr-lab { margin:16px auto; }\r\n.vbr-lab .vl-head { padding:12px 18px; border-bottom:1px solid var(--vl-line); align-items:center; }\r\n.vbr-lab .vl-title { font-size:16px; letter-spacing:0; }\r\n.vbr-lab .vl-body { padding:14px 18px 16px; }\r\n.vbr-lab .vl-context { font:11px\/1.6 ui-monospace,Consolas,monospace; color:var(--vl-muted); margin:0 0 12px; }\r\n.vbr-lab .vl-map { gap:6px; margin-bottom:12px; }\r\n.vbr-lab .vl-map button { min-height:44px; padding:5px 9px; }\r\n.vbr-lab .vl-mapgroup { grid-template-columns:90px 1fr; }\r\n.vbr-lab .vl-tools { padding:10px 0; }\r\n.vbr-lab .vl-decoder { padding:12px 14px; }\r\n.vbr-lab .vl-decoder label { margin-top:6px; }\r\n.vbr-lab .vl-fieldnav { margin:6px 0 10px; }\r\n.vbr-lab .vl-decoded { margin:4px 0 10px; font-size:19px; }\r\n.vbr-lab .vl-legend { padding:9px 0; gap:5px 12px; }\r\n.vbr-lab .vl-status { margin-top:8px; }\r\n.vbr-lab .vl-layoutline { margin:0; }\r\n@media(max-width:600px) {\r\n .vbr-lab .vl-head { padding:11px 12px; gap:8px; }\r\n .vbr-lab .vl-body { padding:12px; }\r\n .vbr-lab .vl-title { font-size:14px; }\r\n .vbr-lab .vl-tag { font-size:9px; padding:3px 5px; }\r\n .vbr-lab .vl-mapgroup { grid-template-columns:1fr; gap:3px; }\r\n .vbr-lab .vl-map button { flex-basis:85px; }\r\n .vbr-lab .vl-control { max-width:100%; flex-wrap:wrap; }\r\n .vbr-lab .vl-hexscroll { max-height:350px; }\r\n}\r\n\r\n<\/style>\r\n<div class=\"vbr-lab\" data-vbr-part=\"ntfs\" lang=\"en\" role=\"region\" aria-label=\"NTFS boot-sector teaching lab\">\r\n <div class=\"vl-head\"><p class=\"vl-title\">Boot sector & end-of-partition spare<\/p><span class=\"vl-tag\">ILLUSTRATIVE \u00b7 NTFS<\/span><\/div>\r\n <noscript>Enable JavaScript to inspect the teaching sample.<\/noscript>\r\n <div class=\"vl-body\">\r\n  <p class=\"vl-context\">1 GiB sample \u00b7 512 B\/sector \u00b7 4 KiB\/cluster \u00b7 partition starts at disk LBA 2,048<\/p>\r\n  <div class=\"vl-map\" data-el=\"map\" role=\"group\" aria-label=\"Inspect a boot-region sector\"><\/div>\r\n  <div class=\"vl-tools\">\r\n   <label class=\"vl-control\">Sector <select data-el=\"sector\" aria-label=\"Sector to inspect\"><\/select><\/label>\r\n   <label class=\"vl-control\"><input data-el=\"full\" type=\"checkbox\"> All 512 bytes<\/label>\r\n  <\/div>\r\n  <p class=\"vl-address\" data-el=\"address\"><\/p>\r\n  <div class=\"vl-workbench\">\r\n   <div class=\"vl-bytepanel\"><div class=\"vl-panelbar\"><span>OFFSET \/ HEX \/ ASCII<\/span><span data-el=\"viewlabel\"><\/span><\/div><div class=\"vl-hexscroll\" tabindex=\"0\" role=\"region\" aria-label=\"Hex and ASCII bytes; scroll horizontally on small screens\"><div class=\"vl-hex\" data-el=\"hex\"><\/div><\/div><\/div>\r\n   <div class=\"vl-decoder\"><p class=\"vl-sectiontitle\">Decoded field<\/p><label data-el=\"fieldlabel\">Choose a field<\/label><select data-el=\"field\" aria-label=\"Choose a decoded field\"><\/select><div class=\"vl-fieldnav\"><button type=\"button\" data-step=\"-1\">\u2190 Previous<\/button><button type=\"button\" data-step=\"1\">Next \u2192<\/button><\/div><div data-el=\"decoded\" aria-live=\"polite\" aria-atomic=\"true\"><\/div><\/div>\r\n  <\/div>\r\n  <div class=\"vl-legend\"><span><i class=\"vl-dot vl-id\"><\/i>Identity<\/span><span><i class=\"vl-dot vl-geo\"><\/i>Addressing<\/span><span><i class=\"vl-dot vl-meta\"><\/i>Metadata<\/span><span><i class=\"vl-dot vl-sig\"><\/i>Integrity<\/span><span>Dark fill = selected<\/span><\/div>\r\n  <details><summary>Layout, sample notes &amp; source<\/summary><div class=\"vl-method\">\r\n   <p data-el=\"mapnote\"><\/p><div class=\"vl-layoutline\" data-el=\"layout\"><\/div>\r\n   <p><strong>NTFS.<\/strong> The conventional NTFS total-sectors field here is 2,097,151, excluding the final spare sector; the containing partition has one additional sector. The spare is therefore at volume sector 2,097,151, not field value minus one. $Boot is illustrated as a 16-sector initial area; only its first sector is duplicated at the partition end. $MFTMirr is a separate metadata mirror. The signed record-size byte F6 means \u221210 \u2192 2\u00b9\u2070 = 1,024 bytes. Unused bytes and the unused legacy checksum are zero; bootstrap filler is F4.<\/p>\r\n   <p>Constructed teaching bytes, not a disk capture or mountable image. Offsets are sector-local hex; integer fields use little-endian encoding. Disk LBA = 2,048 + volume sector. All sector ranges are inclusive; the map is schematic. Select a field or click its bytes; dots in ASCII mark nonprintable bytes. Bootstrap content is teaching filler.<\/p>\r\n   <p>Source: <a href=\"https:\/\/github.com\/torvalds\/linux\/blob\/master\/fs\/ntfs3\/ntfs.h\" target=\"_blank\" rel=\"noopener noreferrer\">NTFS3 field layout<\/a> \u00b7 <a href=\"https:\/\/github.com\/tuxera\/ntfs-3g\/blob\/edge\/ntfsprogs\/mkntfs.c\" target=\"_blank\" rel=\"noopener noreferrer\">mkntfs spare-sector convention<\/a>.<\/p>\r\n  <\/div><\/details>\r\n  <p class=\"vl-status\" data-el=\"status\" role=\"status\"><\/p>\r\n <\/div>\r\n<\/div>\r\n<script>\r\n(() => {\r\n 'use strict';\r\n document.querySelectorAll('[data-vbr-part=\"ntfs\"]:not([data-ready])').forEach(root => {\r\n root.dataset.ready='true';\r\n const el=key=>root.querySelector('[data-el=\"'+key+'\"]');\r\n const uid='vbr-ntfs-'+Math.random().toString(36).slice(2,11);\r\n el('field').id=uid+'-field';el('fieldlabel').htmlFor=el('field').id;\r\n  const hex = (n,w=2) => n.toString(16).toUpperCase().padStart(w,'0');\r\n  const num = n => n.toLocaleString('en-US');\r\n  const esc = s => String(s).replace(\/[&<>\"']\/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]));\r\n  const read = (bytes,o,n) => { let x=0n; for(let i=n-1;i>=0;i--) x=(x<<8n)|BigInt(bytes[o+i]); return x; };\r\n  const write = (bytes,o,n,v) => { let x=BigInt(v); for(let i=0;i<n;i++){ bytes[o+i]=Number(x&255n); x>>=8n; } };\r\n  const fields = [];\r\n  function field(o,n,name,value,group='geo',note='',type='uint',display='') {\r\n    fields.push({o,n,name,value,group,note,type,display});\r\n  }\r\n  function build() {\r\n    const bytes=new Uint8Array(512);\r\n    fields.forEach(f=> {\r\n      if(f.type==='ascii') Array.from(f.value).forEach((c,i)=>bytes[f.o+i]=c.charCodeAt(0));\r\n      else if(f.type==='bytes') bytes.set(f.value,f.o);\r\n      else if(f.type==='fill') bytes.fill(f.value,f.o,f.o+f.n);\r\n      else write(bytes,f.o,f.n,f.value);\r\n    });\r\n    const fs=fields.splice(0).map(({value,...f})=>f);\r\n    return {bytes,fields:fs};\r\n  }\r\n  const sig = () => field(510,2,'BootSignature',0xAA55,'sig','On-disk byte order is 55 AA; the little-endian 16-bit value is 0xAA55.','uint','0xAA55');\r\n  const jump = (offset) => field(0,3,'Jump instruction',[0xEB,offset,0x90],'id','Short jump targets the first byte of the teaching bootstrap filler.','bytes','EB '+hex(offset)+' 90');\r\n  const common = () => {\r\n    field(11,2,'BytesPerSector',512,'geo','Logical sector size in bytes.');\r\n    field(13,1,'SectorsPerCluster',8,'geo','8 \u00d7 512 = 4,096 bytes per cluster.');\r\n  };\r\n  \/\/ NTFS: the partition span includes the final spare; BPB count excludes it.\r\n  jump(0x52); field(3,8,'OEM \/ system ID','NTFS    ','id','Space-padded identity string.','ascii'); common();\r\n  field(14,7,'Unused BPB bytes',0,'meta','Zero in this NTFS teaching sample.','fill','Zero-filled');\r\n  field(21,1,'Media descriptor',0xF8,'meta','Fixed-media descriptor.','uint','0xF8');\r\n  field(24,2,'SectorsPerTrack',63,'geo','Legacy BIOS geometry; not used for the LBA map.');\r\n  field(26,2,'Heads',255,'geo','Legacy BIOS geometry.');\r\n  field(28,4,'HiddenSectors',2048,'geo','Partition starts at disk LBA 2,048.');\r\n  field(36,1,'Drive number',0x80,'meta','Legacy BIOS drive number.','uint','0x80');\r\n  field(38,1,'Extended boot signature',0x80,'sig','Conventional NTFS extended signature.','uint','0x80');\r\n  field(40,8,'TotalSectors (NTFS)',2097151,'geo','Excludes the final spare in this convention. Partition span = this value + 1; backup is at volume sector 2,097,151.');\r\n  field(48,8,'$MFT start LCN',32768,'geo','32,768 \u00d7 8 = volume sector 262,144; disk LBA 264,192.');\r\n  field(56,8,'$MFTMirr start LCN',131072,'geo','131,072 \u00d7 8 = volume sector 1,048,576. This is not the boot-sector backup.');\r\n  field(64,1,'ClustersPerFileRecord',246,'meta','Signed int8 F6 = \u221210. Negative encoding gives 2^10 bytes per MFT record.','int8','\u221210 \u2192 1,024 B');\r\n  field(68,1,'ClustersPerIndexBuffer',1,'meta','Positive encoding: 1 cluster \u00d7 4,096 bytes.','int8','1 \u2192 4,096 B');\r\n  field(72,8,'Volume serial number',0x183A6E92B74C205Dn,'id','Fixed illustrative identifier; not evidence from a device.','uint','0x183A6E92B74C205D');\r\n  field(80,4,'Legacy checksum',0,'sig','Left unused (zero); distinct from exFAT\u2019s mandatory region checksum.');\r\n  field(84,426,'Bootstrap teaching filler',244,'meta','F4 is an x86 halt byte. No executable OS loader is provided.','fill','F4 \u00d7 426'); sig();\r\n  const nt=build();\r\n  const entry=(s,label,data)=>({s,label,...data});\r\n  const models={\r\n    ntfs:{name:'NTFS',stat:'End-of-partition spare',sectors:[entry(0,'Primary boot sector',nt),entry(2097151,'Backup boot sector',nt)],\r\n      groups:[['Primary',[['0','Boot sector',0]]],['Backup',[['2,097,151','Final partition sector',2097151]]]],\r\n      note:'NTFS: the backup is one sector at the partition end. It is separate from $MFTMirr; it is not a full copy of the initial $Boot area.',\r\n      layout:'$Boot 0\u201315 \u2192 \u2026 \u2192 $MFT start 262,144 \u2192 \u2026 \u2192 $MFTMirr start 1,048,576 \u2192 \u2026 \u2192 spare boot sector 2,097,151',\r\n      check:'NTFS address checks passed \u00b7 primary = spare \u00b7 record encoding \u221210 = 1,024 B'}\r\n  };\r\n  function assert(ok,msg) { if(!ok) throw new Error('Teaching sample check: '+msg); }\r\n  function validate() {\r\n    Object.values(models).forEach(m=>m.sectors.forEach(s=>{\r\n      assert(s.bytes.length===512,'sector length');\r\n      let end=0; s.fields.forEach(f=>{assert(f.o>=end && f.o+f.n<=512,'field bounds \/ overlap');end=f.o+f.n;});\r\n    }));\r\n    assert(Number(read(nt.bytes,40,8))+1===2097152,'NTFS partition span');\r\n    assert(Number(read(nt.bytes,48,8))*nt.bytes[13]===262144,'NTFS MFT');\r\n    assert(Number(read(nt.bytes,56,8))*nt.bytes[13]===1048576,'NTFS mirror');\r\n    assert(2**(256-nt.bytes[64])===1024,'NTFS signed size');\r\n\r\n  }\r\n  const fs='ntfs'; let sector=0,fi=0;\r\n  const model=()=>models[fs]; const current=()=>model().sectors.find(s=>s.s===sector);\r\n  function initialize() {\r\n    sector=0; fi=0;\r\n    el('map').innerHTML=model().groups.map(([label,items],gi)=>'<div class=\"vl-mapgroup\"><span class=\"vl-maplabel\">'+esc(label)+'<\/span><div class=\"vl-mapcells\">'+items.map(([range,name,s])=>'<button type=\"button\" data-sector=\"'+s+'\" data-tone=\"'+(gi?'backup':'main')+'\" aria-label=\"Inspect '+esc(name)+', volume sector '+s+'\"><strong>'+range+'<\/strong>'+esc(name)+'<\/button>').join('')+'<\/div><\/div>').join('');\r\n    el('mapnote').textContent=model().note; el('layout').textContent=model().layout;\r\n    el('sector').innerHTML=model().sectors.map(s=>'<option value=\"'+s.s+'\">'+num(s.s)+' \u00b7 '+esc(s.label)+'<\/option>').join('');\r\n    el('status').textContent=model().check;\r\n    selectSector(0);\r\n  }\r\n  function selectSector(s) {\r\n    sector=s;fi=0;\r\n    el('sector').value=String(s);\r\n    root.querySelectorAll('[data-sector]').forEach(b=>{\r\n      let start=Number(b.dataset.sector),on=s===start;\r\n      if(fs==='exfat' && (start===1||start===13)) on=s>=start&&s<=start+7;\r\n      b.setAttribute('aria-pressed',String(on));\r\n    });\r\n    el('address').textContent=model().name+' \/ '+current().label+' \u00b7 volume sector '+num(s)+' \u00b7 disk LBA '+num(s+2048)+' \u00b7 volume byte offset 0x'+hex(s*512,8);\r\n    el('field').innerHTML=current().fields.map((f,i)=>'<option value=\"'+i+'\">0x'+hex(f.o,3)+' \u00b7 '+esc(f.name)+'<\/option>').join('');\r\n    \/\/ Start on the most instructive field for each sector type.\r\n    const initial=current().fields.findIndex(f=>['BytesPerSector','BytesPerSectorShift','FSI_Free_Count','BootChecksum repetitions','ExtendedBootSignature'].includes(f.name));\r\n    fi=initial<0?0:initial;\r\n    renderField();\r\n  }\r\n  function renderHex() {\r\n    const s=current(), chosen=s.fields[fi], full=el('full').checked;\r\n    const rows=[]; for(let i=0;i<32;i++) if(full||i<6||i===31|| (i*16<chosen.o+chosen.n && i*16+16>chosen.o && chosen.n<=16)) rows.push(i);\r\n    el('viewlabel').textContent=full?'512 \/ 512 bytes':'Header + selected field + tail';\r\n    let previous=-1,html='';\r\n    rows.forEach(r=>{\r\n      if(r>previous+1) html+='<div class=\"vl-gap\">\u2026 '+num((r-previous-1)*16)+' bytes omitted \u00b7 enable \u201cAll 512 bytes\u201d \u2026<\/div>';\r\n      previous=r; let bs='',as='';\r\n      for(let j=0;j<16;j++) {\r\n        const o=r*16+j,b=s.bytes[o],idx=s.fields.findIndex(f=>o>=f.o&&o<f.o+f.n),f=s.fields[idx];\r\n        const active=o>=chosen.o&&o<chosen.o+chosen.n;\r\n        const cl=(f?' vl-'+f.group:'')+(active?' vl-active':'');\r\n        \/\/ Byte buttons are a pointer convenience. All fields are keyboard-accessible via the select and Previous\/Next.\r\n        bs+='<button type=\"button\" tabindex=\"-1\" class=\"vl-byte'+cl+'\" data-byte=\"'+o+'\" '+(idx<0?'disabled ':'')+'aria-label=\"Offset 0x'+hex(o,3)+', '+hex(b)+(f?', '+esc(f.name):', unassigned zero byte')+'\" title=\"0x'+hex(o,3)+(f?' \u00b7 '+esc(f.name):'')+'\">'+hex(b)+'<\/button>';\r\n        as+='<span class=\"'+cl+'\">'+(b>=32&&b<=126?(b===32?'&nbsp;':esc(String.fromCharCode(b))):'.')+'<\/span>';\r\n      }\r\n      html+='<div class=\"vl-hexrow\"><span class=\"vl-offset\">'+hex(r*16,4)+'<\/span><span class=\"vl-bytegroup\">'+bs+'<\/span><span class=\"vl-ascii\" aria-hidden=\"true\">'+as+'<\/span><\/div>';\r\n    });\r\n    el('hex').innerHTML=html;\r\n  }\r\n  function renderField() {\r\n    const s=current(),f=s.fields[fi]; el('field').value=String(fi);\r\n    const raw=Array.from(s.bytes.slice(f.o,f.o+Math.min(f.n,16))).map(b=>hex(b)).join(' ')+(f.n>16?' \u2026':'');\r\n    let value=f.display;\r\n    if(!value) value=f.type==='ascii'?'\u201c'+String.fromCharCode(...s.bytes.slice(f.o,f.o+f.n))+'\u201d':num(read(s.bytes,f.o,f.n));\r\n    const type=({ascii:'ASCII',uint:'Unsigned LE',int8:'Signed int8',bytes:'Instruction bytes',fill:'Byte pattern',checksum:'128 \u00d7 uint32 LE'})[f.type];\r\n    el('decoded').innerHTML='<p class=\"vl-fieldname\">'+esc(f.name)+'<\/p><p class=\"vl-decoded\">'+esc(value)+'<\/p><dl><dt>Offset<\/dt><dd>0x'+hex(f.o,3)+'\u20130x'+hex(f.o+f.n-1,3)+'<\/dd><dt>Length<\/dt><dd>'+num(f.n)+' byte'+(f.n===1?'':'s')+'<\/dd><dt>Encoding<\/dt><dd>'+type+'<\/dd><dt>Raw<\/dt><dd>'+raw+'<\/dd><\/dl><p class=\"vl-explanation\">'+esc(f.note)+'<\/p>';\r\n    renderHex();\r\n  }  el('map').addEventListener('click',e=>{const b=e.target.closest('[data-sector]');if(b)selectSector(Number(b.dataset.sector));});\r\n  el('sector').addEventListener('change',()=>selectSector(Number(el('sector').value)));\r\n  el('field').addEventListener('change',()=>{fi=Number(el('field').value);renderField();});\r\n  el('full').addEventListener('change',renderHex);\r\n  root.querySelectorAll('[data-step]').forEach(b=>b.addEventListener('click',()=>{fi=(fi+Number(b.dataset.step)+current().fields.length)%current().fields.length;renderField();}));\r\n  el('hex').addEventListener('click',e=>{\r\n    const b=e.target.closest('[data-byte]'); if(!b)return;\r\n    const o=Number(b.dataset.byte),idx=current().fields.findIndex(f=>o>=f.o&&o<f.o+f.n); if(idx>=0){fi=idx;renderField();}\r\n  });\r\n\r\n  try { validate();initialize(); } catch(error) { el('status').textContent=error.message;el('status').style.color='#a22020'; }\r\n });\r\n})();\r\n<\/script>\r\n<!-- ELEMENTOR MODULE END -->\r\n<\/body><\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-gn6iiio elementor-widget elementor-widget-text-editor\" data-id=\"gn6iiio\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>This table describes the layout documented by the Linux-NTFS implementation. It is a useful on-disk structure reference, not a substitute for a complete Microsoft NTFS specification.<\/p><p>One particularly important field is <code class=\"dtec-inline-code\">$MFT<\/code> LCN.<\/p><p>LCN means Logical Cluster Number. It identifies a cluster relative to the NTFS volume, not a physical disk LBA.<\/p><p>If the <code class=\"dtec-inline-code\">$MFT<\/code> LCN is known, the starting location of the Master File Table can be calculated using the volume&#8217;s cluster size:<\/p><p><code class=\"dtec-inline-code\">MFT byte offset = MFT LCN \u00d7 bytes per cluster<\/code><\/p><p>This does not identify every file&#8217;s location. It identifies the starting location of the <code class=\"dtec-inline-code\">$MFT<\/code> structure.<\/p><p>The <code class=\"dtec-inline-code\">$MFTMirr<\/code> field identifies the location of a limited mirror of important initial MFT records. It is not a complete backup of the Master File Table or user files.<\/p><p>For a deeper explanation of this relationship, see the <a href=\"https:\/\/www.amagicsoft.com\/wiki\/ntfs-master-file-table.html\">Amagicsoft Master File Table guide<\/a>.<\/p><p>The Linux-NTFS on-disk layout also documents a backup boot sector at the final sector of the partition for Windows NT 4.0 and later, while older NT 3.51 and earlier systems used a different location. This is an implementation and historical reference; the actual volume layout should be checked before assuming a backup location.<\/p><h3>FAT32 Boot Sector, FSInfo, and Backup Boot Record<\/h3><p>FAT32 uses a BPB in the first sector of the volume&#8217;s Reserved Region.<\/p><p>Several fields are particularly important:<\/p><table><tbody><tr><td><p><strong>Field<\/strong><\/p><\/td><td><p><strong>Byte offset<\/strong><\/p><\/td><td><p><strong>Size<\/strong><\/p><\/td><td><p><strong>Purpose<\/strong><\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">BPB_BytsPerSec<\/code><\/p><\/td><td><p>11<\/p><\/td><td><p>2 bytes<\/p><\/td><td><p>Bytes per sector<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">BPB_SecPerClus<\/code><\/p><\/td><td><p>13<\/p><\/td><td><p>1 byte<\/p><\/td><td><p>Sectors per cluster<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">BPB_RsvdSecCnt<\/code><\/p><\/td><td><p>14<\/p><\/td><td><p>2 bytes<\/p><\/td><td><p>Reserved-region size<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">BPB_FATSz32<\/code><\/p><\/td><td><p>36<\/p><\/td><td><p>4 bytes<\/p><\/td><td><p>Sectors occupied by one FAT<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">BPB_RootClus<\/code><\/p><\/td><td><p>44<\/p><\/td><td><p>4 bytes<\/p><\/td><td><p>First cluster of the root directory<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">BPB_FSInfo<\/code><\/p><\/td><td><p>48<\/p><\/td><td><p>2 bytes<\/p><\/td><td><p>Location of the FSInfo sector<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">BPB_BkBootSec<\/code><\/p><\/td><td><p>50<\/p><\/td><td><p>2 bytes<\/p><\/td><td><p>Location of the backup boot record<\/p><\/td><\/tr><\/tbody><\/table>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-433b035 elementor-widget elementor-widget-html\" data-id=\"433b035\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!doctype html>\r\n<html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>FAT32 VBR teaching lab<\/title><\/head><body>\r\n<!-- ELEMENTOR MODULE START -->\r\n<style>\r\n.vbr-lab { --vl-ink:#22303a; --vl-muted:#596770; --vl-line:#d1d8da; --vl-paper:#f8f9f7; --vl-green:#245e4c; --vl-blue:#315c83; --vl-amber:#805018; box-sizing:border-box; width:100%; max-width:1240px; margin:24px auto; color:var(--vl-ink); background:var(--vl-paper); border:1px solid var(--vl-line); border-top:4px solid #344b55; font:14px\/1.55 system-ui,-apple-system,\"Segoe UI\",sans-serif; text-align:left; color-scheme:light; }\r\n.vbr-lab *, .vbr-lab *::before, .vbr-lab *::after { box-sizing:border-box; }\r\n.vbr-lab [hidden] { display:none !important; }\r\n.vbr-lab p { margin:0; padding:0; font:inherit; color:inherit; }\r\n.vbr-lab button,.vbr-lab select { font:inherit; letter-spacing:normal; text-transform:none; border-radius:3px; box-shadow:none; margin:0; min-height:38px; }\r\n.vbr-lab button { appearance:none; border:1px solid var(--vl-line); background:#fff; color:var(--vl-ink); padding:7px 12px; cursor:pointer; font-weight:500; line-height:1.4; }\r\n.vbr-lab button:hover { background:#edf1ef; border-color:#81938c; }\r\n.vbr-lab :is(button,select,input,summary,a,[tabindex]):focus-visible { outline:3px solid #1b6faa; outline-offset:3px; }\r\n.vbr-lab a { color:#215e86; text-decoration:underline; }\r\n.vbr-lab .vl-head { padding:24px 26px 18px; display:flex; justify-content:space-between; gap:20px; align-items:start; }\r\n.vbr-lab .vl-title { font-size:24px; line-height:1.25; font-weight:650; letter-spacing:-.035em; }\r\n.vbr-lab .vl-tag { display:inline-block; white-space:nowrap; border:1px solid #b5c2ba; padding:4px 8px; font:11px\/1.5 ui-monospace,Consolas,monospace; color:var(--vl-green); background:#edf3ee; }\r\n.vbr-lab .vl-body { padding:20px 26px 24px; }\r\n.vbr-lab .vl-small { font-size:11px; color:var(--vl-muted); text-transform:uppercase; letter-spacing:.06em; }\r\n.vbr-lab .vl-value { font:600 15px\/1.6 ui-monospace,Consolas,monospace; }\r\n.vbr-lab .vl-sectionline { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:10px; }\r\n.vbr-lab .vl-sectiontitle { font-weight:700; font-size:13px; }\r\n.vbr-lab .vl-map { display:grid; gap:10px; margin-bottom:10px; }\r\n.vbr-lab .vl-mapgroup { display:grid; grid-template-columns:100px 1fr; align-items:stretch; gap:10px; }\r\n.vbr-lab .vl-maplabel { font:12px\/1.6 ui-monospace,Consolas,monospace; color:var(--vl-muted); align-self:center; }\r\n.vbr-lab .vl-mapcells { display:flex; flex-wrap:wrap; gap:5px; }\r\n.vbr-lab .vl-map button { text-align:left; flex:1 1 110px; border-top:3px solid #8eaaa0; padding:8px 10px; font-size:11px; }\r\n.vbr-lab .vl-map button[data-tone=\"backup\"] { border-top-color:#8d9caf; }\r\n.vbr-lab .vl-map button[aria-pressed=\"true\"] { background:#e9f0eb; outline:2px solid #426554; outline-offset:-2px; }\r\n.vbr-lab .vl-map button strong { display:block; font:600 13px\/1.6 ui-monospace,Consolas,monospace; }\r\n.vbr-lab .vl-mapnote { font-size:12px; color:var(--vl-muted); margin-bottom:16px; }\r\n.vbr-lab .vl-layoutline { padding:10px 12px; border:1px solid var(--vl-line); background:#f0f2ef; font:12px\/1.7 ui-monospace,Consolas,monospace; margin-bottom:20px; overflow-wrap:anywhere; }\r\n.vbr-lab .vl-tools { display:flex; align-items:center; flex-wrap:wrap; gap:10px 20px; padding:12px 0; border-top:1px solid var(--vl-line); }\r\n.vbr-lab .vl-control { display:flex; gap:8px; align-items:center; font-size:12px; }\r\n.vbr-lab select { background:#fff; color:var(--vl-ink); border:1px solid #a9b5b8; padding:6px 30px 6px 9px; max-width:100%; width:auto; }\r\n.vbr-lab input[type=\"checkbox\"] { appearance:auto; width:16px; height:16px; margin:0; accent-color:var(--vl-green); }\r\n.vbr-lab .vl-address { font:12px\/1.7 ui-monospace,Consolas,monospace; color:var(--vl-muted); margin-bottom:12px; overflow-wrap:anywhere; }\r\n.vbr-lab .vl-workbench { display:grid; grid-template-columns:minmax(0,1fr) 290px; border:1px solid var(--vl-line); background:#fff; }\r\n.vbr-lab .vl-bytepanel { min-width:0; background:#fbfcfa; }\r\n.vbr-lab .vl-panelbar { padding:10px 13px; border-bottom:1px solid var(--vl-line); display:flex; justify-content:space-between; gap:12px; font-size:11px; color:var(--vl-muted); }\r\n.vbr-lab .vl-hexscroll { overflow:auto; max-height:540px; padding:10px 12px 14px; }\r\n.vbr-lab .vl-hex { width:max-content; min-width:100%; font:12px\/1.8 ui-monospace,\"Cascadia Mono\",Consolas,monospace; }\r\n.vbr-lab .vl-hexrow { display:flex; align-items:center; white-space:nowrap; height:25px; }\r\n.vbr-lab .vl-offset { width:48px; flex-shrink:0; color:#697780; }\r\n.vbr-lab .vl-bytegroup { display:flex; gap:2px; }\r\n.vbr-lab .vl-byte { appearance:none; font:inherit; line-height:22px; width:22px; height:23px; min-height:0; border:0; padding:0; border-radius:0; background:transparent; font-weight:400; }\r\n.vbr-lab .vl-byte:nth-child(8) { margin-right:6px; }\r\n.vbr-lab .vl-ascii { display:inline-flex; border-left:1px solid #d6ddda; margin-left:12px; padding-left:12px; }\r\n.vbr-lab .vl-ascii span { display:inline-block; width:8px; text-align:center; }\r\n.vbr-lab .vl-id { background:#e6eef6; color:#234b6b; }\r\n.vbr-lab .vl-geo { background:#e5eee7; color:#28583e; }\r\n.vbr-lab .vl-meta { background:#f2eadb; color:#704713; }\r\n.vbr-lab .vl-sig { background:#eee5f0; color:#69436f; }\r\n.vbr-lab .vl-byte.vl-active,.vbr-lab .vl-ascii .vl-active { background:#244e42; color:#fff; box-shadow:inset 0 -2px 0 #13362b; }\r\n.vbr-lab .vl-gap { color:#66766d; padding:8px 0; font-size:11px; border-block:1px dashed #d8deda; margin:7px 0; }\r\n.vbr-lab .vl-decoder { border-left:1px solid var(--vl-line); padding:14px 16px; min-width:0; }\r\n.vbr-lab .vl-decoder label { display:block; font-size:11px; color:var(--vl-muted); margin:12px 0 5px; }\r\n.vbr-lab .vl-decoder select { width:100%; font-size:12px; }\r\n.vbr-lab .vl-fieldnav { display:flex; justify-content:space-between; gap:8px; margin:8px 0 15px; }\r\n.vbr-lab .vl-fieldnav button { font-size:11px; flex:1; padding:5px; min-height:32px; }\r\n.vbr-lab .vl-fieldname { font-weight:750; overflow-wrap:anywhere; margin-bottom:6px; }\r\n.vbr-lab .vl-decoded { font:600 21px\/1.35 ui-monospace,Consolas,monospace; color:var(--vl-green); margin:6px 0 14px; overflow-wrap:anywhere; }\r\n.vbr-lab dl { margin:12px 0; font-size:12px; display:grid; grid-template-columns:66px minmax(0,1fr); gap:7px 10px; }\r\n.vbr-lab dt { color:var(--vl-muted); font-weight:400; }\r\n.vbr-lab dd { margin:0; font:12px\/1.6 ui-monospace,Consolas,monospace; overflow-wrap:anywhere; }\r\n.vbr-lab .vl-explanation { font-size:12px; border-top:1px solid var(--vl-line); padding-top:12px; }\r\n.vbr-lab .vl-legend { display:flex; flex-wrap:wrap; gap:8px 15px; padding:12px 0; font-size:11px; color:var(--vl-muted); }\r\n.vbr-lab .vl-dot { display:inline-block; width:9px; height:9px; margin-right:5px; border:1px solid #9aaba3; }\r\n.vbr-lab .vl-footnote { font-size:12px; color:var(--vl-muted); margin:0 0 14px; }\r\n.vbr-lab details { border-top:1px solid var(--vl-line); padding-top:12px; font-size:12px; }\r\n.vbr-lab summary { cursor:pointer; color:#384d55; font-weight:600; }\r\n.vbr-lab .vl-method { padding-top:12px; display:grid; gap:10px; max-width:960px; }\r\n.vbr-lab .vl-status { margin-top:14px; font:11px\/1.6 ui-monospace,Consolas,monospace; color:var(--vl-green); }\r\n@media(max-width:1050px) { .vbr-lab .vl-workbench { grid-template-columns:minmax(0,1fr); } .vbr-lab .vl-decoder { border-left:0; border-top:1px solid var(--vl-line); } .vbr-lab .vl-decoder select { max-width:480px; } .vbr-lab .vl-fieldnav { max-width:300px; } }\r\n@media print { .vbr-lab .vl-hexscroll { max-height:none; } .vbr-lab button { color:#000; } }\r\n.vbr-lab { margin:16px auto; }\r\n.vbr-lab .vl-head { padding:12px 18px; border-bottom:1px solid var(--vl-line); align-items:center; }\r\n.vbr-lab .vl-title { font-size:16px; letter-spacing:0; }\r\n.vbr-lab .vl-body { padding:14px 18px 16px; }\r\n.vbr-lab .vl-context { font:11px\/1.6 ui-monospace,Consolas,monospace; color:var(--vl-muted); margin:0 0 12px; }\r\n.vbr-lab .vl-map { gap:6px; margin-bottom:12px; }\r\n.vbr-lab .vl-map button { min-height:44px; padding:5px 9px; }\r\n.vbr-lab .vl-mapgroup { grid-template-columns:90px 1fr; }\r\n.vbr-lab .vl-tools { padding:10px 0; }\r\n.vbr-lab .vl-decoder { padding:12px 14px; }\r\n.vbr-lab .vl-decoder label { margin-top:6px; }\r\n.vbr-lab .vl-fieldnav { margin:6px 0 10px; }\r\n.vbr-lab .vl-decoded { margin:4px 0 10px; font-size:19px; }\r\n.vbr-lab .vl-legend { padding:9px 0; gap:5px 12px; }\r\n.vbr-lab .vl-status { margin-top:8px; }\r\n.vbr-lab .vl-layoutline { margin:0; }\r\n@media(max-width:600px) {\r\n .vbr-lab .vl-head { padding:11px 12px; gap:8px; }\r\n .vbr-lab .vl-body { padding:12px; }\r\n .vbr-lab .vl-title { font-size:14px; }\r\n .vbr-lab .vl-tag { font-size:9px; padding:3px 5px; }\r\n .vbr-lab .vl-mapgroup { grid-template-columns:1fr; gap:3px; }\r\n .vbr-lab .vl-map button { flex-basis:85px; }\r\n .vbr-lab .vl-control { max-width:100%; flex-wrap:wrap; }\r\n .vbr-lab .vl-hexscroll { max-height:350px; }\r\n}\r\n\r\n<\/style>\r\n<div class=\"vbr-lab\" data-vbr-part=\"fat32\" lang=\"en\" role=\"region\" aria-label=\"FAT32 boot-sector teaching lab\">\r\n <div class=\"vl-head\"><p class=\"vl-title\">BPB, FSInfo & backup boot record<\/p><span class=\"vl-tag\">ILLUSTRATIVE \u00b7 FAT32<\/span><\/div>\r\n <noscript>Enable JavaScript to inspect the teaching sample.<\/noscript>\r\n <div class=\"vl-body\">\r\n  <p class=\"vl-context\">1 GiB sample \u00b7 512 B\/sector \u00b7 4 KiB\/cluster \u00b7 partition starts at disk LBA 2,048<\/p>\r\n  <div class=\"vl-map\" data-el=\"map\" role=\"group\" aria-label=\"Inspect a boot-region sector\"><\/div>\r\n  <div class=\"vl-tools\">\r\n   <label class=\"vl-control\">Sector <select data-el=\"sector\" aria-label=\"Sector to inspect\"><\/select><\/label>\r\n   <label class=\"vl-control\"><input data-el=\"full\" type=\"checkbox\"> All 512 bytes<\/label>\r\n  <\/div>\r\n  <p class=\"vl-address\" data-el=\"address\"><\/p>\r\n  <div class=\"vl-workbench\">\r\n   <div class=\"vl-bytepanel\"><div class=\"vl-panelbar\"><span>OFFSET \/ HEX \/ ASCII<\/span><span data-el=\"viewlabel\"><\/span><\/div><div class=\"vl-hexscroll\" tabindex=\"0\" role=\"region\" aria-label=\"Hex and ASCII bytes; scroll horizontally on small screens\"><div class=\"vl-hex\" data-el=\"hex\"><\/div><\/div><\/div>\r\n   <div class=\"vl-decoder\"><p class=\"vl-sectiontitle\">Decoded field<\/p><label data-el=\"fieldlabel\">Choose a field<\/label><select data-el=\"field\" aria-label=\"Choose a decoded field\"><\/select><div class=\"vl-fieldnav\"><button type=\"button\" data-step=\"-1\">\u2190 Previous<\/button><button type=\"button\" data-step=\"1\">Next \u2192<\/button><\/div><div data-el=\"decoded\" aria-live=\"polite\" aria-atomic=\"true\"><\/div><\/div>\r\n  <\/div>\r\n  <div class=\"vl-legend\"><span><i class=\"vl-dot vl-id\"><\/i>Identity<\/span><span><i class=\"vl-dot vl-geo\"><\/i>Addressing<\/span><span><i class=\"vl-dot vl-meta\"><\/i>Metadata<\/span><span><i class=\"vl-dot vl-sig\"><\/i>Integrity<\/span><span>Dark fill = selected<\/span><\/div>\r\n  <details><summary>Layout, sample notes &amp; source<\/summary><div class=\"vl-method\">\r\n   <p data-el=\"mapnote\"><\/p><div class=\"vl-layoutline\" data-el=\"layout\"><\/div>\r\n   <p><strong>FAT32.<\/strong> This sample uses a Microsoft-style three-sector boot record at 0\u20132, copied to 6\u20138, inside 32 reserved sectors. Sector 1 is FSInfo and sector 7 its initial copy; the authoritative FSInfo address remains 1. Boot-code sectors use F4 filler. The remaining reserved sectors are zero. With two 2,048-sector FATs, data begins at 4,128; floor((2,097,152 \u2212 4,128) \/ 8) = 261,628 clusters, above the FAT32 threshold of 65,525. Each FAT holds 262,144 entries, sufficient for 261,630 required entries. FSInfo allocation hints are explicitly unknown.<\/p>\r\n   <p>Constructed teaching bytes, not a disk capture or mountable image. Offsets are sector-local hex; integer fields use little-endian encoding. Disk LBA = 2,048 + volume sector. All sector ranges are inclusive; the map is schematic. Select a field or click its bytes; dots in ASCII mark nonprintable bytes. Bootstrap content is teaching filler.<\/p>\r\n   <p>Source: <a href=\"https:\/\/www.cs.fsu.edu\/~cop4610t\/assignments\/project3\/spec\/fatspec.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Microsoft FAT specification v1.03 (PDF), pp. 8\u201322<\/a>.<\/p>\r\n  <\/div><\/details>\r\n  <p class=\"vl-status\" data-el=\"status\" role=\"status\"><\/p>\r\n <\/div>\r\n<\/div>\r\n<script>\r\n(() => {\r\n 'use strict';\r\n document.querySelectorAll('[data-vbr-part=\"fat32\"]:not([data-ready])').forEach(root => {\r\n root.dataset.ready='true';\r\n const el=key=>root.querySelector('[data-el=\"'+key+'\"]');\r\n const uid='vbr-fat32-'+Math.random().toString(36).slice(2,11);\r\n el('field').id=uid+'-field';el('fieldlabel').htmlFor=el('field').id;\r\n  const hex = (n,w=2) => n.toString(16).toUpperCase().padStart(w,'0');\r\n  const num = n => n.toLocaleString('en-US');\r\n  const esc = s => String(s).replace(\/[&<>\"']\/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]));\r\n  const read = (bytes,o,n) => { let x=0n; for(let i=n-1;i>=0;i--) x=(x<<8n)|BigInt(bytes[o+i]); return x; };\r\n  const write = (bytes,o,n,v) => { let x=BigInt(v); for(let i=0;i<n;i++){ bytes[o+i]=Number(x&255n); x>>=8n; } };\r\n  const fields = [];\r\n  function field(o,n,name,value,group='geo',note='',type='uint',display='') {\r\n    fields.push({o,n,name,value,group,note,type,display});\r\n  }\r\n  function build() {\r\n    const bytes=new Uint8Array(512);\r\n    fields.forEach(f=> {\r\n      if(f.type==='ascii') Array.from(f.value).forEach((c,i)=>bytes[f.o+i]=c.charCodeAt(0));\r\n      else if(f.type==='bytes') bytes.set(f.value,f.o);\r\n      else if(f.type==='fill') bytes.fill(f.value,f.o,f.o+f.n);\r\n      else write(bytes,f.o,f.n,f.value);\r\n    });\r\n    const fs=fields.splice(0).map(({value,...f})=>f);\r\n    return {bytes,fields:fs};\r\n  }\r\n  const sig = () => field(510,2,'BootSignature',0xAA55,'sig','On-disk byte order is 55 AA; the little-endian 16-bit value is 0xAA55.','uint','0xAA55');\r\n  const jump = (offset) => field(0,3,'Jump instruction',[0xEB,offset,0x90],'id','Short jump targets the first byte of the teaching bootstrap filler.','bytes','EB '+hex(offset)+' 90');\r\n  const common = () => {\r\n    field(11,2,'BytesPerSector',512,'geo','Logical sector size in bytes.');\r\n    field(13,1,'SectorsPerCluster',8,'geo','8 \u00d7 512 = 4,096 bytes per cluster.');\r\n  };\r\n  \/\/ FAT32: reserved 32 + 2 FATs * 2048 = first data sector 4128.\r\n  jump(0x58); field(3,8,'BS_OEMName','MSWIN4.1','id','OEM name; FAT type is determined by cluster count, not this string.','ascii'); common();\r\n  field(14,2,'BPB_ResvdSecCnt',32,'geo','Reserved area is sectors 0\u201331, including both boot records.');\r\n  field(16,1,'BPB_NumFATs',2,'geo','Two mirrored FATs, each 2,048 sectors.');\r\n  field(17,2,'BPB_RootEntCnt',0,'meta','FAT32 root is a cluster chain, not a fixed root-entry region.');\r\n  field(19,2,'BPB_TotSec16',0,'geo','Zero: use the 32-bit total at 0x020.');\r\n  field(21,1,'BPB_Media',0xF8,'meta','Fixed-media descriptor.','uint','0xF8');\r\n  field(22,2,'BPB_FATSz16',0,'geo','Zero for FAT32; use BPB_FATSz32.');\r\n  field(24,2,'BPB_SecPerTrk',63,'geo','Legacy BIOS geometry.'); field(26,2,'BPB_NumHeads',255,'geo','Legacy BIOS geometry.');\r\n  field(28,4,'BPB_HiddSec',2048,'geo','Partition starts at disk LBA 2,048.');\r\n  field(32,4,'BPB_TotSec32',2097152,'geo','Partition sector count: last sector is 2,097,151.');\r\n  field(36,4,'BPB_FATSz32',2048,'geo','FAT #1: 32\u20132,079. FAT #2: 2,080\u20134,127.');\r\n  field(40,2,'BPB_ExtFlags',0,'meta','Bit 7 clear: FAT mirroring enabled.');\r\n  field(42,2,'BPB_FSVer',0,'meta','FAT32 version 0.0.','uint','0.0');\r\n  field(44,4,'BPB_RootClus',2,'geo','Cluster 2 begins at sector 4,128: 4,128 + (2 \u2212 2) \u00d7 8.');\r\n  field(48,2,'BPB_FSInfo',1,'geo','Active FSInfo is at volume sector 1, including when this field is read in the backup BPB.');\r\n  field(50,2,'BPB_BkBootSec',6,'geo','Backup boot record starts at sector 6; initial three-sector copy occupies 6\u20138.');\r\n  field(52,12,'Reserved FAT32 bytes',0,'meta','Reserved; initialized to zero.','fill','Zero-filled');\r\n  field(64,1,'BS_DrvNum',0x80,'meta','Legacy BIOS drive number.','uint','0x80');\r\n  field(66,1,'BS_BootSig',0x29,'sig','Extended FAT signature; serial, label and type string follow.','uint','0x29');\r\n  field(67,4,'BS_VolID',0x5E1A2B3C,'id','Fixed illustrative serial.','uint','0x5E1A2B3C');\r\n  field(71,11,'BS_VolLab','NO NAME    ','id','Default label for a volume with no label entry.','ascii');\r\n  field(82,8,'BS_FilSysType','FAT32   ','id','Informational text only; 261,628 data clusters determine FAT32.','ascii');\r\n  field(90,420,'Bootstrap teaching filler',244,'meta','F4 filler replaces boot instructions.','fill','F4 \u00d7 420'); sig(); const fat=build();\r\n  field(0,4,'FSI_LeadSig',0x41615252,'sig','FSInfo lead signature.','uint','0x41615252');\r\n  field(4,480,'FSI_Reserved1',0,'meta','Reserved bytes are zero.','fill','Zero-filled');\r\n  field(484,4,'FSI_StrucSig',0x61417272,'sig','Second FSInfo signature.','uint','0x61417272');\r\n  field(488,4,'FSI_Free_Count',0xFFFFFFFF,'meta','Unknown free-cluster count; a reader must calculate it.','uint','Unknown (0xFFFFFFFF)');\r\n  field(492,4,'FSI_Nxt_Free',0xFFFFFFFF,'meta','Unknown next-free hint; no allocation claim is made.','uint','Unknown (0xFFFFFFFF)');\r\n  field(496,12,'FSI_Reserved2',0,'meta','Reserved bytes are zero.','fill','Zero-filled');\r\n  field(508,4,'FSI_TrailSig',0xAA550000,'sig','Bytes 00 00 55 AA at offsets 0x1FC\u20130x1FF.','uint','0xAA550000'); const info=build();\r\n  field(0,510,'Continuation teaching filler',244,'meta','Illustrative third boot-record sector, not executable boot code.','fill','F4 \u00d7 510'); sig(); const cont=build();\r\n  const entry=(s,label,data)=>({s,label,...data});\r\n  const models={\r\n    fat32:{name:'FAT32',stat:'Reserved-area backup',sectors:[entry(0,'Primary BPB \/ boot',fat),entry(1,'Active FSInfo',info),entry(2,'Boot continuation',cont),entry(6,'Backup BPB \/ boot',fat),entry(7,'Initial FSInfo copy',info),entry(8,'Backup continuation',cont)],\r\n      groups:[['Primary',[['0','BPB \/ boot',0],['1','FSInfo',1],['2','Continuation',2]]],['Backup',[['6','BPB \/ boot copy',6],['7','Initial FSInfo copy',7],['8','Continuation copy',8]]]],\r\n      note:'Selected Microsoft-style layout: 0\u20132 copied to 6\u20138. BPB_BkBootSec = 6; BPB_FSInfo = 1. Sectors 3\u20135 and 9\u201331 remain reserved, outside these copies.',\r\n      layout:'Reserved 0\u201331 \u2192 FAT #1 32\u20132,079 \u2192 FAT #2 2,080\u20134,127 \u2192 data 4,128\u20132,097,151 | root cluster 2 at 4,128 \u00b7 261,628 clusters',\r\n      check:'FAT32 geometry checks passed \u00b7 FAT capacity sufficient \u00b7 boot-record copies match'}\r\n  };\r\n  function assert(ok,msg) { if(!ok) throw new Error('Teaching sample check: '+msg); }\r\n  function validate() {\r\n    Object.values(models).forEach(m=>m.sectors.forEach(s=>{\r\n      assert(s.bytes.length===512,'sector length');\r\n      let end=0; s.fields.forEach(f=>{assert(f.o>=end && f.o+f.n<=512,'field bounds \/ overlap');end=f.o+f.n;});\r\n    }));\r\n    const data=Number(read(fat.bytes,14,2))+fat.bytes[16]*Number(read(fat.bytes,36,4));\r\n    const count=Math.floor((Number(read(fat.bytes,32,4))-data)\/fat.bytes[13]);\r\n    assert(data===4128 && count===261628 && count>=65525,'FAT32 type');\r\n    assert(Number(read(fat.bytes,36,4))*512\/4>=count+2,'FAT32 capacity');\r\n    assert(Number(read(fat.bytes,50,2))+3<=Number(read(fat.bytes,14,2)),'FAT32 backup fits');\r\n\r\n  }\r\n  const fs='fat32'; let sector=0,fi=0;\r\n  const model=()=>models[fs]; const current=()=>model().sectors.find(s=>s.s===sector);\r\n  function initialize() {\r\n    sector=0; fi=0;\r\n    el('map').innerHTML=model().groups.map(([label,items],gi)=>'<div class=\"vl-mapgroup\"><span class=\"vl-maplabel\">'+esc(label)+'<\/span><div class=\"vl-mapcells\">'+items.map(([range,name,s])=>'<button type=\"button\" data-sector=\"'+s+'\" data-tone=\"'+(gi?'backup':'main')+'\" aria-label=\"Inspect '+esc(name)+', volume sector '+s+'\"><strong>'+range+'<\/strong>'+esc(name)+'<\/button>').join('')+'<\/div><\/div>').join('');\r\n    el('mapnote').textContent=model().note; el('layout').textContent=model().layout;\r\n    el('sector').innerHTML=model().sectors.map(s=>'<option value=\"'+s.s+'\">'+num(s.s)+' \u00b7 '+esc(s.label)+'<\/option>').join('');\r\n    el('status').textContent=model().check;\r\n    selectSector(0);\r\n  }\r\n  function selectSector(s) {\r\n    sector=s;fi=0;\r\n    el('sector').value=String(s);\r\n    root.querySelectorAll('[data-sector]').forEach(b=>{\r\n      let start=Number(b.dataset.sector),on=s===start;\r\n      if(fs==='exfat' && (start===1||start===13)) on=s>=start&&s<=start+7;\r\n      b.setAttribute('aria-pressed',String(on));\r\n    });\r\n    el('address').textContent=model().name+' \/ '+current().label+' \u00b7 volume sector '+num(s)+' \u00b7 disk LBA '+num(s+2048)+' \u00b7 volume byte offset 0x'+hex(s*512,8);\r\n    el('field').innerHTML=current().fields.map((f,i)=>'<option value=\"'+i+'\">0x'+hex(f.o,3)+' \u00b7 '+esc(f.name)+'<\/option>').join('');\r\n    \/\/ Start on the most instructive field for each sector type.\r\n    const initial=current().fields.findIndex(f=>['BytesPerSector','BytesPerSectorShift','FSI_Free_Count','BootChecksum repetitions','ExtendedBootSignature'].includes(f.name));\r\n    fi=initial<0?0:initial;\r\n    renderField();\r\n  }\r\n  function renderHex() {\r\n    const s=current(), chosen=s.fields[fi], full=el('full').checked;\r\n    const rows=[]; for(let i=0;i<32;i++) if(full||i<6||i===31|| (i*16<chosen.o+chosen.n && i*16+16>chosen.o && chosen.n<=16)) rows.push(i);\r\n    el('viewlabel').textContent=full?'512 \/ 512 bytes':'Header + selected field + tail';\r\n    let previous=-1,html='';\r\n    rows.forEach(r=>{\r\n      if(r>previous+1) html+='<div class=\"vl-gap\">\u2026 '+num((r-previous-1)*16)+' bytes omitted \u00b7 enable \u201cAll 512 bytes\u201d \u2026<\/div>';\r\n      previous=r; let bs='',as='';\r\n      for(let j=0;j<16;j++) {\r\n        const o=r*16+j,b=s.bytes[o],idx=s.fields.findIndex(f=>o>=f.o&&o<f.o+f.n),f=s.fields[idx];\r\n        const active=o>=chosen.o&&o<chosen.o+chosen.n;\r\n        const cl=(f?' vl-'+f.group:'')+(active?' vl-active':'');\r\n        \/\/ Byte buttons are a pointer convenience. All fields are keyboard-accessible via the select and Previous\/Next.\r\n        bs+='<button type=\"button\" tabindex=\"-1\" class=\"vl-byte'+cl+'\" data-byte=\"'+o+'\" '+(idx<0?'disabled ':'')+'aria-label=\"Offset 0x'+hex(o,3)+', '+hex(b)+(f?', '+esc(f.name):', unassigned zero byte')+'\" title=\"0x'+hex(o,3)+(f?' \u00b7 '+esc(f.name):'')+'\">'+hex(b)+'<\/button>';\r\n        as+='<span class=\"'+cl+'\">'+(b>=32&&b<=126?(b===32?'&nbsp;':esc(String.fromCharCode(b))):'.')+'<\/span>';\r\n      }\r\n      html+='<div class=\"vl-hexrow\"><span class=\"vl-offset\">'+hex(r*16,4)+'<\/span><span class=\"vl-bytegroup\">'+bs+'<\/span><span class=\"vl-ascii\" aria-hidden=\"true\">'+as+'<\/span><\/div>';\r\n    });\r\n    el('hex').innerHTML=html;\r\n  }\r\n  function renderField() {\r\n    const s=current(),f=s.fields[fi]; el('field').value=String(fi);\r\n    const raw=Array.from(s.bytes.slice(f.o,f.o+Math.min(f.n,16))).map(b=>hex(b)).join(' ')+(f.n>16?' \u2026':'');\r\n    let value=f.display;\r\n    if(!value) value=f.type==='ascii'?'\u201c'+String.fromCharCode(...s.bytes.slice(f.o,f.o+f.n))+'\u201d':num(read(s.bytes,f.o,f.n));\r\n    const type=({ascii:'ASCII',uint:'Unsigned LE',int8:'Signed int8',bytes:'Instruction bytes',fill:'Byte pattern',checksum:'128 \u00d7 uint32 LE'})[f.type];\r\n    el('decoded').innerHTML='<p class=\"vl-fieldname\">'+esc(f.name)+'<\/p><p class=\"vl-decoded\">'+esc(value)+'<\/p><dl><dt>Offset<\/dt><dd>0x'+hex(f.o,3)+'\u20130x'+hex(f.o+f.n-1,3)+'<\/dd><dt>Length<\/dt><dd>'+num(f.n)+' byte'+(f.n===1?'':'s')+'<\/dd><dt>Encoding<\/dt><dd>'+type+'<\/dd><dt>Raw<\/dt><dd>'+raw+'<\/dd><\/dl><p class=\"vl-explanation\">'+esc(f.note)+'<\/p>';\r\n    renderHex();\r\n  }  el('map').addEventListener('click',e=>{const b=e.target.closest('[data-sector]');if(b)selectSector(Number(b.dataset.sector));});\r\n  el('sector').addEventListener('change',()=>selectSector(Number(el('sector').value)));\r\n  el('field').addEventListener('change',()=>{fi=Number(el('field').value);renderField();});\r\n  el('full').addEventListener('change',renderHex);\r\n  root.querySelectorAll('[data-step]').forEach(b=>b.addEventListener('click',()=>{fi=(fi+Number(b.dataset.step)+current().fields.length)%current().fields.length;renderField();}));\r\n  el('hex').addEventListener('click',e=>{\r\n    const b=e.target.closest('[data-byte]'); if(!b)return;\r\n    const o=Number(b.dataset.byte),idx=current().fields.findIndex(f=>o>=f.o&&o<f.o+f.n); if(idx>=0){fi=idx;renderField();}\r\n  });\r\n\r\n  try { validate();initialize(); } catch(error) { el('status').textContent=error.message;el('status').style.color='#a22020'; }\r\n });\r\n})();\r\n<\/script>\r\n<!-- ELEMENTOR MODULE END -->\r\n<\/body><\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8ezgmxc elementor-widget elementor-widget-text-editor\" data-id=\"8ezgmxc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The <code class=\"dtec-inline-code\">BPB_FSInfo<\/code> field normally points to sector 1. This sector stores information such as the last known free-cluster count and the next free-cluster hint.<\/p><p>The <code class=\"dtec-inline-code\">BPB_BkBootSec<\/code> field identifies the backup boot record location. In the Microsoft FAT specification, its value is 0 or 6. When set to 6, the backup structure starts at volume-relative sector 6.<\/p><p>An important detail is that the FAT32 boot record is not simply a single-sector copy. The Microsoft specification describes the complete boot record as three sectors long, with a corresponding backup sequence. A copy of the FSInfo structure is also maintained in the backup sequence.<\/p><p>These structures serve different purposes:<\/p><ul><li>The boot sector contains the BPB and boot-related information.<\/li><li>FSInfo stores free-space hints.<\/li><li>The backup boot record provides an alternative copy of important boot information.<\/li><\/ul><p>FSInfo is not a second VBR, and its free-cluster count is not necessarily an exact, continuously updated value.<\/p><h3>exFAT Main and Backup Boot RegionsexFAT uses a more extensive structure called the Boot Region.<\/h3><p>According to the <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/fileio\/exfat-specification\" rel=\"nofollow\">Microsoft exFAT File System Specification<\/a>, the volume contains a Main Boot Region and a Backup Boot Region, each occupying 12 sectors.<\/p><table><tbody><tr><td><p><strong>Volume-relative sector<\/strong><\/p><\/td><td><p><strong>Main Boot Region<\/strong><\/p><\/td><td><p><strong>Backup Boot Region<\/strong><\/p><\/td><\/tr><tr><td><p>0 \/ 12<\/p><\/td><td><p>Boot Sector<\/p><\/td><td><p>Backup Boot Sector<\/p><\/td><\/tr><tr><td><p>1\u20138 \/ 13\u201320<\/p><\/td><td><p>Extended Boot Sectors<\/p><\/td><td><p>Backup Extended Boot Sectors<\/p><\/td><\/tr><tr><td><p>9 \/ 21<\/p><\/td><td><p>OEM Parameters<\/p><\/td><td><p>Backup OEM Parameters<\/p><\/td><\/tr><tr><td><p>10 \/ 22<\/p><\/td><td><p>Reserved<\/p><\/td><td><p>Backup Reserved<\/p><\/td><\/tr><tr><td><p>11 \/ 23<\/p><\/td><td><p>Boot Checksum<\/p><\/td><td><p>Backup Boot Checksum<\/p><\/td><\/tr><\/tbody><\/table><p>The Main Boot Sector contains the primary parameters used to describe the exFAT volume.<\/p><p>Important fields include:<\/p><table><tbody><tr><td><p><strong>Field<\/strong><\/p><\/td><td><p><strong>Byte offset<\/strong><\/p><\/td><td><p><strong>Size<\/strong><\/p><\/td><td><p><strong>Purpose<\/strong><\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">JumpBoot<\/code><\/p><\/td><td><p>0<\/p><\/td><td><p>3 bytes<\/p><\/td><td><p>Bootstrap jump instruction<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">FileSystemName<\/code><\/p><\/td><td><p>3<\/p><\/td><td><p>8 bytes<\/p><\/td><td><p>Identifies the file system as exFAT<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">PartitionOffset<\/code><\/p><\/td><td><p>64<\/p><\/td><td><p>8 bytes<\/p><\/td><td><p>Media-relative partition offset<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">VolumeLength<\/code><\/p><\/td><td><p>72<\/p><\/td><td><p>8 bytes<\/p><\/td><td><p>Volume length in sectors<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">FatOffset<\/code><\/p><\/td><td><p>80<\/p><\/td><td><p>4 bytes<\/p><\/td><td><p>Starting sector of the first FAT<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">FatLength<\/code><\/p><\/td><td><p>84<\/p><\/td><td><p>4 bytes<\/p><\/td><td><p>Length of each FAT<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">ClusterHeapOffset<\/code><\/p><\/td><td><p>88<\/p><\/td><td><p>4 bytes<\/p><\/td><td><p>Starting sector of the Cluster Heap<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">ClusterCount<\/code><\/p><\/td><td><p>92<\/p><\/td><td><p>4 bytes<\/p><\/td><td><p>Number of clusters in the Cluster Heap<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">FirstClusterOfRootDirectory<\/code><\/p><\/td><td><p>96<\/p><\/td><td><p>4 bytes<\/p><\/td><td><p>Starting cluster of the root directory<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">VolumeFlags<\/code><\/p><\/td><td><p>106<\/p><\/td><td><p>2 bytes<\/p><\/td><td><p>File-system status flags<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">BytesPerSectorShift<\/code><\/p><\/td><td><p>108<\/p><\/td><td><p>1 byte<\/p><\/td><td><p>Sector-size encoding<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">SectorsPerClusterShift<\/code><\/p><\/td><td><p>109<\/p><\/td><td><p>1 byte<\/p><\/td><td><p>Cluster-size encoding<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">NumberOfFats<\/code><\/p><\/td><td><p>110<\/p><\/td><td><p>1 byte<\/p><\/td><td><p>Number of FAT structures<\/p><\/td><\/tr><tr><td><p><code class=\"dtec-inline-code\">PercentInUse<\/code><\/p><\/td><td><p>112<\/p><\/td><td><p>1 byte<\/p><\/td><td><p>Reported percentage of allocated clusters<\/p><\/td><\/tr><\/tbody><\/table>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8096095 elementor-widget elementor-widget-html\" data-id=\"8096095\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!doctype html>\r\n<html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>exFAT VBR teaching lab<\/title><\/head><body>\r\n<!-- ELEMENTOR MODULE START -->\r\n<style>\r\n.vbr-lab { --vl-ink:#22303a; --vl-muted:#596770; --vl-line:#d1d8da; --vl-paper:#f8f9f7; --vl-green:#245e4c; --vl-blue:#315c83; --vl-amber:#805018; box-sizing:border-box; width:100%; max-width:1240px; margin:24px auto; color:var(--vl-ink); background:var(--vl-paper); border:1px solid var(--vl-line); border-top:4px solid #344b55; font:14px\/1.55 system-ui,-apple-system,\"Segoe UI\",sans-serif; text-align:left; color-scheme:light; }\r\n.vbr-lab *, .vbr-lab *::before, .vbr-lab *::after { box-sizing:border-box; }\r\n.vbr-lab [hidden] { display:none !important; }\r\n.vbr-lab p { margin:0; padding:0; font:inherit; color:inherit; }\r\n.vbr-lab button,.vbr-lab select { font:inherit; letter-spacing:normal; text-transform:none; border-radius:3px; box-shadow:none; margin:0; min-height:38px; }\r\n.vbr-lab button { appearance:none; border:1px solid var(--vl-line); background:#fff; color:var(--vl-ink); padding:7px 12px; cursor:pointer; font-weight:500; line-height:1.4; }\r\n.vbr-lab button:hover { background:#edf1ef; border-color:#81938c; }\r\n.vbr-lab :is(button,select,input,summary,a,[tabindex]):focus-visible { outline:3px solid #1b6faa; outline-offset:3px; }\r\n.vbr-lab a { color:#215e86; text-decoration:underline; }\r\n.vbr-lab .vl-head { padding:24px 26px 18px; display:flex; justify-content:space-between; gap:20px; align-items:start; }\r\n.vbr-lab .vl-title { font-size:24px; line-height:1.25; font-weight:650; letter-spacing:-.035em; }\r\n.vbr-lab .vl-tag { display:inline-block; white-space:nowrap; border:1px solid #b5c2ba; padding:4px 8px; font:11px\/1.5 ui-monospace,Consolas,monospace; color:var(--vl-green); background:#edf3ee; }\r\n.vbr-lab .vl-body { padding:20px 26px 24px; }\r\n.vbr-lab .vl-small { font-size:11px; color:var(--vl-muted); text-transform:uppercase; letter-spacing:.06em; }\r\n.vbr-lab .vl-value { font:600 15px\/1.6 ui-monospace,Consolas,monospace; }\r\n.vbr-lab .vl-sectionline { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:10px; }\r\n.vbr-lab .vl-sectiontitle { font-weight:700; font-size:13px; }\r\n.vbr-lab .vl-map { display:grid; gap:10px; margin-bottom:10px; }\r\n.vbr-lab .vl-mapgroup { display:grid; grid-template-columns:100px 1fr; align-items:stretch; gap:10px; }\r\n.vbr-lab .vl-maplabel { font:12px\/1.6 ui-monospace,Consolas,monospace; color:var(--vl-muted); align-self:center; }\r\n.vbr-lab .vl-mapcells { display:flex; flex-wrap:wrap; gap:5px; }\r\n.vbr-lab .vl-map button { text-align:left; flex:1 1 110px; border-top:3px solid #8eaaa0; padding:8px 10px; font-size:11px; }\r\n.vbr-lab .vl-map button[data-tone=\"backup\"] { border-top-color:#8d9caf; }\r\n.vbr-lab .vl-map button[aria-pressed=\"true\"] { background:#e9f0eb; outline:2px solid #426554; outline-offset:-2px; }\r\n.vbr-lab .vl-map button strong { display:block; font:600 13px\/1.6 ui-monospace,Consolas,monospace; }\r\n.vbr-lab .vl-mapnote { font-size:12px; color:var(--vl-muted); margin-bottom:16px; }\r\n.vbr-lab .vl-layoutline { padding:10px 12px; border:1px solid var(--vl-line); background:#f0f2ef; font:12px\/1.7 ui-monospace,Consolas,monospace; margin-bottom:20px; overflow-wrap:anywhere; }\r\n.vbr-lab .vl-tools { display:flex; align-items:center; flex-wrap:wrap; gap:10px 20px; padding:12px 0; border-top:1px solid var(--vl-line); }\r\n.vbr-lab .vl-control { display:flex; gap:8px; align-items:center; font-size:12px; }\r\n.vbr-lab select { background:#fff; color:var(--vl-ink); border:1px solid #a9b5b8; padding:6px 30px 6px 9px; max-width:100%; width:auto; }\r\n.vbr-lab input[type=\"checkbox\"] { appearance:auto; width:16px; height:16px; margin:0; accent-color:var(--vl-green); }\r\n.vbr-lab .vl-address { font:12px\/1.7 ui-monospace,Consolas,monospace; color:var(--vl-muted); margin-bottom:12px; overflow-wrap:anywhere; }\r\n.vbr-lab .vl-workbench { display:grid; grid-template-columns:minmax(0,1fr) 290px; border:1px solid var(--vl-line); background:#fff; }\r\n.vbr-lab .vl-bytepanel { min-width:0; background:#fbfcfa; }\r\n.vbr-lab .vl-panelbar { padding:10px 13px; border-bottom:1px solid var(--vl-line); display:flex; justify-content:space-between; gap:12px; font-size:11px; color:var(--vl-muted); }\r\n.vbr-lab .vl-hexscroll { overflow:auto; max-height:540px; padding:10px 12px 14px; }\r\n.vbr-lab .vl-hex { width:max-content; min-width:100%; font:12px\/1.8 ui-monospace,\"Cascadia Mono\",Consolas,monospace; }\r\n.vbr-lab .vl-hexrow { display:flex; align-items:center; white-space:nowrap; height:25px; }\r\n.vbr-lab .vl-offset { width:48px; flex-shrink:0; color:#697780; }\r\n.vbr-lab .vl-bytegroup { display:flex; gap:2px; }\r\n.vbr-lab .vl-byte { appearance:none; font:inherit; line-height:22px; width:22px; height:23px; min-height:0; border:0; padding:0; border-radius:0; background:transparent; font-weight:400; }\r\n.vbr-lab .vl-byte:nth-child(8) { margin-right:6px; }\r\n.vbr-lab .vl-ascii { display:inline-flex; border-left:1px solid #d6ddda; margin-left:12px; padding-left:12px; }\r\n.vbr-lab .vl-ascii span { display:inline-block; width:8px; text-align:center; }\r\n.vbr-lab .vl-id { background:#e6eef6; color:#234b6b; }\r\n.vbr-lab .vl-geo { background:#e5eee7; color:#28583e; }\r\n.vbr-lab .vl-meta { background:#f2eadb; color:#704713; }\r\n.vbr-lab .vl-sig { background:#eee5f0; color:#69436f; }\r\n.vbr-lab .vl-byte.vl-active,.vbr-lab .vl-ascii .vl-active { background:#244e42; color:#fff; box-shadow:inset 0 -2px 0 #13362b; }\r\n.vbr-lab .vl-gap { color:#66766d; padding:8px 0; font-size:11px; border-block:1px dashed #d8deda; margin:7px 0; }\r\n.vbr-lab .vl-decoder { border-left:1px solid var(--vl-line); padding:14px 16px; min-width:0; }\r\n.vbr-lab .vl-decoder label { display:block; font-size:11px; color:var(--vl-muted); margin:12px 0 5px; }\r\n.vbr-lab .vl-decoder select { width:100%; font-size:12px; }\r\n.vbr-lab .vl-fieldnav { display:flex; justify-content:space-between; gap:8px; margin:8px 0 15px; }\r\n.vbr-lab .vl-fieldnav button { font-size:11px; flex:1; padding:5px; min-height:32px; }\r\n.vbr-lab .vl-fieldname { font-weight:750; overflow-wrap:anywhere; margin-bottom:6px; }\r\n.vbr-lab .vl-decoded { font:600 21px\/1.35 ui-monospace,Consolas,monospace; color:var(--vl-green); margin:6px 0 14px; overflow-wrap:anywhere; }\r\n.vbr-lab dl { margin:12px 0; font-size:12px; display:grid; grid-template-columns:66px minmax(0,1fr); gap:7px 10px; }\r\n.vbr-lab dt { color:var(--vl-muted); font-weight:400; }\r\n.vbr-lab dd { margin:0; font:12px\/1.6 ui-monospace,Consolas,monospace; overflow-wrap:anywhere; }\r\n.vbr-lab .vl-explanation { font-size:12px; border-top:1px solid var(--vl-line); padding-top:12px; }\r\n.vbr-lab .vl-legend { display:flex; flex-wrap:wrap; gap:8px 15px; padding:12px 0; font-size:11px; color:var(--vl-muted); }\r\n.vbr-lab .vl-dot { display:inline-block; width:9px; height:9px; margin-right:5px; border:1px solid #9aaba3; }\r\n.vbr-lab .vl-footnote { font-size:12px; color:var(--vl-muted); margin:0 0 14px; }\r\n.vbr-lab details { border-top:1px solid var(--vl-line); padding-top:12px; font-size:12px; }\r\n.vbr-lab summary { cursor:pointer; color:#384d55; font-weight:600; }\r\n.vbr-lab .vl-method { padding-top:12px; display:grid; gap:10px; max-width:960px; }\r\n.vbr-lab .vl-status { margin-top:14px; font:11px\/1.6 ui-monospace,Consolas,monospace; color:var(--vl-green); }\r\n@media(max-width:1050px) { .vbr-lab .vl-workbench { grid-template-columns:minmax(0,1fr); } .vbr-lab .vl-decoder { border-left:0; border-top:1px solid var(--vl-line); } .vbr-lab .vl-decoder select { max-width:480px; } .vbr-lab .vl-fieldnav { max-width:300px; } }\r\n@media print { .vbr-lab .vl-hexscroll { max-height:none; } .vbr-lab button { color:#000; } }\r\n.vbr-lab { margin:16px auto; }\r\n.vbr-lab .vl-head { padding:12px 18px; border-bottom:1px solid var(--vl-line); align-items:center; }\r\n.vbr-lab .vl-title { font-size:16px; letter-spacing:0; }\r\n.vbr-lab .vl-body { padding:14px 18px 16px; }\r\n.vbr-lab .vl-context { font:11px\/1.6 ui-monospace,Consolas,monospace; color:var(--vl-muted); margin:0 0 12px; }\r\n.vbr-lab .vl-map { gap:6px; margin-bottom:12px; }\r\n.vbr-lab .vl-map button { min-height:44px; padding:5px 9px; }\r\n.vbr-lab .vl-mapgroup { grid-template-columns:90px 1fr; }\r\n.vbr-lab .vl-tools { padding:10px 0; }\r\n.vbr-lab .vl-decoder { padding:12px 14px; }\r\n.vbr-lab .vl-decoder label { margin-top:6px; }\r\n.vbr-lab .vl-fieldnav { margin:6px 0 10px; }\r\n.vbr-lab .vl-decoded { margin:4px 0 10px; font-size:19px; }\r\n.vbr-lab .vl-legend { padding:9px 0; gap:5px 12px; }\r\n.vbr-lab .vl-status { margin-top:8px; }\r\n.vbr-lab .vl-layoutline { margin:0; }\r\n@media(max-width:600px) {\r\n .vbr-lab .vl-head { padding:11px 12px; gap:8px; }\r\n .vbr-lab .vl-body { padding:12px; }\r\n .vbr-lab .vl-title { font-size:14px; }\r\n .vbr-lab .vl-tag { font-size:9px; padding:3px 5px; }\r\n .vbr-lab .vl-mapgroup { grid-template-columns:1fr; gap:3px; }\r\n .vbr-lab .vl-map button { flex-basis:85px; }\r\n .vbr-lab .vl-control { max-width:100%; flex-wrap:wrap; }\r\n .vbr-lab .vl-hexscroll { max-height:350px; }\r\n}\r\n\r\n<\/style>\r\n<div class=\"vbr-lab\" data-vbr-part=\"exfat\" lang=\"en\" role=\"region\" aria-label=\"exFAT boot-sector teaching lab\">\r\n <div class=\"vl-head\"><p class=\"vl-title\">Main & backup boot regions<\/p><span class=\"vl-tag\">ILLUSTRATIVE \u00b7 exFAT<\/span><\/div>\r\n <noscript>Enable JavaScript to inspect the teaching sample.<\/noscript>\r\n <div class=\"vl-body\">\r\n  <p class=\"vl-context\">1 GiB sample \u00b7 512 B\/sector \u00b7 4 KiB\/cluster \u00b7 partition starts at disk LBA 2,048<\/p>\r\n  <div class=\"vl-map\" data-el=\"map\" role=\"group\" aria-label=\"Inspect a boot-region sector\"><\/div>\r\n  <div class=\"vl-tools\">\r\n   <label class=\"vl-control\">Sector <select data-el=\"sector\" aria-label=\"Sector to inspect\"><\/select><\/label>\r\n   <label class=\"vl-control\"><input data-el=\"full\" type=\"checkbox\"> All 512 bytes<\/label>\r\n  <\/div>\r\n  <p class=\"vl-address\" data-el=\"address\"><\/p>\r\n  <div class=\"vl-workbench\">\r\n   <div class=\"vl-bytepanel\"><div class=\"vl-panelbar\"><span>OFFSET \/ HEX \/ ASCII<\/span><span data-el=\"viewlabel\"><\/span><\/div><div class=\"vl-hexscroll\" tabindex=\"0\" role=\"region\" aria-label=\"Hex and ASCII bytes; scroll horizontally on small screens\"><div class=\"vl-hex\" data-el=\"hex\"><\/div><\/div><\/div>\r\n   <div class=\"vl-decoder\"><p class=\"vl-sectiontitle\">Decoded field<\/p><label data-el=\"fieldlabel\">Choose a field<\/label><select data-el=\"field\" aria-label=\"Choose a decoded field\"><\/select><div class=\"vl-fieldnav\"><button type=\"button\" data-step=\"-1\">\u2190 Previous<\/button><button type=\"button\" data-step=\"1\">Next \u2192<\/button><\/div><div data-el=\"decoded\" aria-live=\"polite\" aria-atomic=\"true\"><\/div><\/div>\r\n  <\/div>\r\n  <div class=\"vl-legend\"><span><i class=\"vl-dot vl-id\"><\/i>Identity<\/span><span><i class=\"vl-dot vl-geo\"><\/i>Addressing<\/span><span><i class=\"vl-dot vl-meta\"><\/i>Metadata<\/span><span><i class=\"vl-dot vl-sig\"><\/i>Integrity<\/span><span>Dark fill = selected<\/span><\/div>\r\n  <details><summary>Layout, sample notes &amp; source<\/summary><div class=\"vl-method\">\r\n   <p data-el=\"mapnote\"><\/p><div class=\"vl-layoutline\" data-el=\"layout\"><\/div>\r\n   <p><strong>exFAT.<\/strong> Sectors 0\u201311 and 12\u201323 form separate 12-sector boot regions. The checksum is computed from the preceding 11 sectors of each region, skipping boot-sector bytes 106, 107 and 112, then repeated 128 times in its checksum sector. Main and backup start identical in this sample; backup flags and percent-used are treated as stale by readers. No bootstrap is supplied: main boot-code bytes are F4; extended code is zero. OEM parameters are null; reserved bytes are zero. The heap has 261,632 clusters; root cluster 12 leaves room for bitmap and up-case metadata, whose contents are outside this lab.<\/p>\r\n   <p>Constructed teaching bytes, not a disk capture or mountable image. Offsets are sector-local hex; integer fields use little-endian encoding. Disk LBA = 2,048 + volume sector. All sector ranges are inclusive; the map is schematic. Select a field or click its bytes; dots in ASCII mark nonprintable bytes. Bootstrap content is teaching filler.<\/p>\r\n   <p>Source: <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/fileio\/exfat-specification\" target=\"_blank\" rel=\"noopener noreferrer\">Microsoft exFAT specification, \u00a7\u00a72\u20133<\/a>.<\/p>\r\n  <\/div><\/details>\r\n  <p class=\"vl-status\" data-el=\"status\" role=\"status\"><\/p>\r\n <\/div>\r\n<\/div>\r\n<script>\r\n(() => {\r\n 'use strict';\r\n document.querySelectorAll('[data-vbr-part=\"exfat\"]:not([data-ready])').forEach(root => {\r\n root.dataset.ready='true';\r\n const el=key=>root.querySelector('[data-el=\"'+key+'\"]');\r\n const uid='vbr-exfat-'+Math.random().toString(36).slice(2,11);\r\n el('field').id=uid+'-field';el('fieldlabel').htmlFor=el('field').id;\r\n  const hex = (n,w=2) => n.toString(16).toUpperCase().padStart(w,'0');\r\n  const num = n => n.toLocaleString('en-US');\r\n  const esc = s => String(s).replace(\/[&<>\"']\/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]));\r\n  const read = (bytes,o,n) => { let x=0n; for(let i=n-1;i>=0;i--) x=(x<<8n)|BigInt(bytes[o+i]); return x; };\r\n  const write = (bytes,o,n,v) => { let x=BigInt(v); for(let i=0;i<n;i++){ bytes[o+i]=Number(x&255n); x>>=8n; } };\r\n  const fields = [];\r\n  function field(o,n,name,value,group='geo',note='',type='uint',display='') {\r\n    fields.push({o,n,name,value,group,note,type,display});\r\n  }\r\n  function build() {\r\n    const bytes=new Uint8Array(512);\r\n    fields.forEach(f=> {\r\n      if(f.type==='ascii') Array.from(f.value).forEach((c,i)=>bytes[f.o+i]=c.charCodeAt(0));\r\n      else if(f.type==='bytes') bytes.set(f.value,f.o);\r\n      else if(f.type==='fill') bytes.fill(f.value,f.o,f.o+f.n);\r\n      else write(bytes,f.o,f.n,f.value);\r\n    });\r\n    const fs=fields.splice(0).map(({value,...f})=>f);\r\n    return {bytes,fields:fs};\r\n  }\r\n  const sig = () => field(510,2,'BootSignature',0xAA55,'sig','On-disk byte order is 55 AA; the little-endian 16-bit value is 0xAA55.','uint','0xAA55');\r\n  const jump = (offset) => field(0,3,'Jump instruction',[0xEB,offset,0x90],'id','Short jump targets the first byte of the teaching bootstrap filler.','bytes','EB '+hex(offset)+' 90');\r\n  const common = () => {\r\n    field(11,2,'BytesPerSector',512,'geo','Logical sector size in bytes.');\r\n    field(13,1,'SectorsPerCluster',8,'geo','8 \u00d7 512 = 4,096 bytes per cluster.');\r\n  };\r\n  \/\/ exFAT: one FAT at 2048, heap at 4096, 261632 4-KiB clusters.\r\n  jump(0x76); field(3,8,'FileSystemName','EXFAT   ','id','Required exFAT identifier, space-padded.','ascii');\r\n  field(11,53,'MustBeZero',0,'meta','This replaces the legacy FAT BPB area and must be zero.','fill','Zero-filled');\r\n  field(64,8,'PartitionOffset',2048,'geo','Partition starts at disk LBA 2,048.');\r\n  field(72,8,'VolumeLength',2097152,'geo','Volume occupies sectors 0\u20132,097,151.');\r\n  field(80,4,'FatOffset',2048,'geo','First FAT starts at volume sector 2,048.');\r\n  field(84,4,'FatLength',2048,'geo','2,048 \u00d7 512 \/ 4 = 262,144 entries; need 261,634.');\r\n  field(88,4,'ClusterHeapOffset',4096,'geo','Cluster 2 starts at volume sector 4,096.');\r\n  field(92,4,'ClusterCount',261632,'geo','(2,097,152 \u2212 4,096) \/ 8 = 261,632; heap ends at sector 2,097,151.');\r\n  field(96,4,'FirstClusterOfRootDirectory',12,'geo','4,096 + (12 \u2212 2) \u00d7 8 = volume sector 4,176; disk LBA 6,224.');\r\n  field(100,4,'VolumeSerialNumber',0x7C3D1A20,'id','Fixed illustrative serial.','uint','0x7C3D1A20');\r\n  field(104,2,'FileSystemRevision',0x0100,'meta','High byte is major; low byte is minor.','uint','1.00');\r\n  field(106,2,'VolumeFlags',0,'meta','Clean flags; active FAT 0. These two bytes are excluded from the boot checksum. Backup value is treated as stale.','uint','0x0000');\r\n  field(108,1,'BytesPerSectorShift',9,'geo','2^9 = 512 bytes per logical sector.','uint','9 \u2192 512 B');\r\n  field(109,1,'SectorsPerClusterShift',3,'geo','2^3 = 8 sectors; 512 \u00d7 8 = 4,096 bytes.','uint','3 \u2192 8 sectors');\r\n  field(110,1,'NumberOfFats',1,'geo','One FAT; second FAT is absent.');\r\n  field(111,1,'DriveSelect',0x80,'meta','Legacy BIOS drive number.','uint','0x80');\r\n  field(112,1,'PercentInUse',255,'meta','FF means usage is unavailable; excluded from the boot checksum. Backup value is treated as stale.','uint','Unknown (0xFF)');\r\n  field(113,7,'Reserved',0,'meta','Reserved bytes initialized to zero.','fill','Zero-filled');\r\n  field(120,390,'BootCode',244,'meta','exFAT specifies F4 filler when bootstrap instructions are not provided.','fill','F4 \u00d7 390'); sig(); const ex=build();\r\n  field(0,508,'ExtendedBootCode',0,'meta','Zero when no extended bootstrap instructions are supplied.','fill','Zero-filled');\r\n  field(508,4,'ExtendedBootSignature',0xAA550000,'sig','32-bit value AA550000 is stored as 00 00 55 AA.','uint','0xAA550000'); const extended=build();\r\n  field(0,480,'Null OEM parameters',0,'meta','Ten unused 48-byte OEM parameter slots, each all zero.','fill','10 \u00d7 48 zero bytes');\r\n  field(480,32,'Reserved OEM tail',0,'meta','Reserved bytes are zero.','fill','Zero-filled'); const oem=build();\r\n  field(0,512,'Reserved sector',0,'meta','Entire sector initialized to zero; it has no 55 AA signature.','fill','512 zero bytes'); const reserved=build();\r\n  const exmain=[ex,...Array(8).fill(extended),oem,reserved];\r\n  function checksum(sectors) {\r\n    let sum=0;\r\n    sectors.forEach((s,si)=>s.bytes.forEach((b,i)=>{\r\n      if(si===0 && (i===106||i===107||i===112)) return;\r\n      sum=(((sum>>>1)|((sum&1)?0x80000000:0))+b)>>>0;\r\n    })); return sum;\r\n  }\r\n  const sum=checksum(exmain); const cb=new Uint8Array(512);\r\n  for(let i=0;i<512;i+=4) write(cb,i,4,sum);\r\n  const cs={bytes:cb,fields:[{o:0,n:512,name:'BootChecksum repetitions',type:'checksum',group:'sig',display:'0x'+hex(sum,8),note:'Computed from this region\u2019s sectors 0\u201310 (or 12\u201322). Repeated as 128 little-endian uint32 values. Skips only boot-sector offsets 106, 107 and 112.'}]};\r\n  const entry=(s,label,data)=>({s,label,...data});\r\n  const models={\r\n    exfat:{name:'exFAT',stat:'12 + 12 boot sectors',sectors:[...exmain,cs,...exmain,cs].map((d,s)=>entry(s,(s<12?'Main ':'Backup ')+(['boot',...Array(8).fill('extended boot'),'OEM parameters','reserved','checksum'][s%12]),d)),\r\n      groups:[['Main 0\u201311',[['0','Boot sector',0],['1\u20138','Extended boot',1],['9','OEM parameters',9],['10','Reserved',10],['11','Checksum',11]]],['Backup 12\u201323',[['12','Boot sector copy',12],['13\u201320','Extended copies',13],['21','OEM copy',21],['22','Reserved copy',22],['23','Checksum',23]]]],\r\n      note:'Each region is 12 sectors: boot (1) + extended (8) + OEM (1) + reserved (1) + checksum (1). Use the sector selector to inspect every extended sector.',\r\n      layout:'Main 0\u201311 \u2192 backup 12\u201323 \u2192 alignment gap 24\u20132,047 \u2192 FAT 2,048\u20134,095 \u2192 heap 4,096\u20132,097,151 | root cluster 12 at 4,176',\r\n      check:'exFAT checks passed \u00b7 independently recomputed main \/ backup checksum 0x'+hex(sum,8)+' \u00b7 all 128 words verified'}\r\n  };\r\n  function assert(ok,msg) { if(!ok) throw new Error('Teaching sample check: '+msg); }\r\n  function validate() {\r\n    Object.values(models).forEach(m=>m.sectors.forEach(s=>{\r\n      assert(s.bytes.length===512,'sector length');\r\n      let end=0; s.fields.forEach(f=>{assert(f.o>=end && f.o+f.n<=512,'field bounds \/ overlap');end=f.o+f.n;});\r\n    }));\r\n    const heap=Number(read(ex.bytes,88,4)), clusters=Number(read(ex.bytes,92,4));\r\n    assert(clusters===Math.floor((Number(read(ex.bytes,72,8))-heap)\/8),'exFAT cluster count');\r\n    assert(Number(read(ex.bytes,80,4))+Number(read(ex.bytes,84,4))<=heap,'exFAT FAT bounds');\r\n    assert(Number(read(ex.bytes,84,4))*512\/4>=clusters+2,'exFAT capacity');\r\n    assert(heap+(Number(read(ex.bytes,96,4))-2)*8===4176,'exFAT root');\r\n    [0,12].forEach(start=>{\r\n      const region=models.exfat.sectors.slice(start,start+11), expected=checksum(region);\r\n      for(let i=0;i<512;i+=4) assert(Number(read(models.exfat.sectors[start+11].bytes,i,4))===expected,'checksum word');\r\n    });\r\n    assert(models.exfat.sectors.slice(0,12).every((s,i)=>s.bytes.every((b,j)=>b===models.exfat.sectors[i+12].bytes[j])),'exFAT initial backup');\r\n  }\r\n  const fs='exfat'; let sector=0,fi=0;\r\n  const model=()=>models[fs]; const current=()=>model().sectors.find(s=>s.s===sector);\r\n  function initialize() {\r\n    sector=0; fi=0;\r\n    el('map').innerHTML=model().groups.map(([label,items],gi)=>'<div class=\"vl-mapgroup\"><span class=\"vl-maplabel\">'+esc(label)+'<\/span><div class=\"vl-mapcells\">'+items.map(([range,name,s])=>'<button type=\"button\" data-sector=\"'+s+'\" data-tone=\"'+(gi?'backup':'main')+'\" aria-label=\"Inspect '+esc(name)+', volume sector '+s+'\"><strong>'+range+'<\/strong>'+esc(name)+'<\/button>').join('')+'<\/div><\/div>').join('');\r\n    el('mapnote').textContent=model().note; el('layout').textContent=model().layout;\r\n    el('sector').innerHTML=model().sectors.map(s=>'<option value=\"'+s.s+'\">'+num(s.s)+' \u00b7 '+esc(s.label)+'<\/option>').join('');\r\n    el('status').textContent=model().check;\r\n    selectSector(0);\r\n  }\r\n  function selectSector(s) {\r\n    sector=s;fi=0;\r\n    el('sector').value=String(s);\r\n    root.querySelectorAll('[data-sector]').forEach(b=>{\r\n      let start=Number(b.dataset.sector),on=s===start;\r\n      if(fs==='exfat' && (start===1||start===13)) on=s>=start&&s<=start+7;\r\n      b.setAttribute('aria-pressed',String(on));\r\n    });\r\n    el('address').textContent=model().name+' \/ '+current().label+' \u00b7 volume sector '+num(s)+' \u00b7 disk LBA '+num(s+2048)+' \u00b7 volume byte offset 0x'+hex(s*512,8);\r\n    el('field').innerHTML=current().fields.map((f,i)=>'<option value=\"'+i+'\">0x'+hex(f.o,3)+' \u00b7 '+esc(f.name)+'<\/option>').join('');\r\n    \/\/ Start on the most instructive field for each sector type.\r\n    const initial=current().fields.findIndex(f=>['BytesPerSector','BytesPerSectorShift','FSI_Free_Count','BootChecksum repetitions','ExtendedBootSignature'].includes(f.name));\r\n    fi=initial<0?0:initial;\r\n    renderField();\r\n  }\r\n  function renderHex() {\r\n    const s=current(), chosen=s.fields[fi], full=el('full').checked;\r\n    const rows=[]; for(let i=0;i<32;i++) if(full||i<8||i===31|| (i*16<chosen.o+chosen.n && i*16+16>chosen.o && chosen.n<=16)) rows.push(i);\r\n    el('viewlabel').textContent=full?'512 \/ 512 bytes':'Header + selected field + tail';\r\n    let previous=-1,html='';\r\n    rows.forEach(r=>{\r\n      if(r>previous+1) html+='<div class=\"vl-gap\">\u2026 '+num((r-previous-1)*16)+' bytes omitted \u00b7 enable \u201cAll 512 bytes\u201d \u2026<\/div>';\r\n      previous=r; let bs='',as='';\r\n      for(let j=0;j<16;j++) {\r\n        const o=r*16+j,b=s.bytes[o],idx=s.fields.findIndex(f=>o>=f.o&&o<f.o+f.n),f=s.fields[idx];\r\n        const active=o>=chosen.o&&o<chosen.o+chosen.n;\r\n        const cl=(f?' vl-'+f.group:'')+(active?' vl-active':'');\r\n        \/\/ Byte buttons are a pointer convenience. All fields are keyboard-accessible via the select and Previous\/Next.\r\n        bs+='<button type=\"button\" tabindex=\"-1\" class=\"vl-byte'+cl+'\" data-byte=\"'+o+'\" '+(idx<0?'disabled ':'')+'aria-label=\"Offset 0x'+hex(o,3)+', '+hex(b)+(f?', '+esc(f.name):', unassigned zero byte')+'\" title=\"0x'+hex(o,3)+(f?' \u00b7 '+esc(f.name):'')+'\">'+hex(b)+'<\/button>';\r\n        as+='<span class=\"'+cl+'\">'+(b>=32&&b<=126?(b===32?'&nbsp;':esc(String.fromCharCode(b))):'.')+'<\/span>';\r\n      }\r\n      html+='<div class=\"vl-hexrow\"><span class=\"vl-offset\">'+hex(r*16,4)+'<\/span><span class=\"vl-bytegroup\">'+bs+'<\/span><span class=\"vl-ascii\" aria-hidden=\"true\">'+as+'<\/span><\/div>';\r\n    });\r\n    el('hex').innerHTML=html;\r\n  }\r\n  function renderField() {\r\n    const s=current(),f=s.fields[fi]; el('field').value=String(fi);\r\n    const raw=Array.from(s.bytes.slice(f.o,f.o+Math.min(f.n,16))).map(b=>hex(b)).join(' ')+(f.n>16?' \u2026':'');\r\n    let value=f.display;\r\n    if(!value) value=f.type==='ascii'?'\u201c'+String.fromCharCode(...s.bytes.slice(f.o,f.o+f.n))+'\u201d':num(read(s.bytes,f.o,f.n));\r\n    const type=({ascii:'ASCII',uint:'Unsigned LE',int8:'Signed int8',bytes:'Instruction bytes',fill:'Byte pattern',checksum:'128 \u00d7 uint32 LE'})[f.type];\r\n    el('decoded').innerHTML='<p class=\"vl-fieldname\">'+esc(f.name)+'<\/p><p class=\"vl-decoded\">'+esc(value)+'<\/p><dl><dt>Offset<\/dt><dd>0x'+hex(f.o,3)+'\u20130x'+hex(f.o+f.n-1,3)+'<\/dd><dt>Length<\/dt><dd>'+num(f.n)+' byte'+(f.n===1?'':'s')+'<\/dd><dt>Encoding<\/dt><dd>'+type+'<\/dd><dt>Raw<\/dt><dd>'+raw+'<\/dd><\/dl><p class=\"vl-explanation\">'+esc(f.note)+'<\/p>';\r\n    renderHex();\r\n  }  el('map').addEventListener('click',e=>{const b=e.target.closest('[data-sector]');if(b)selectSector(Number(b.dataset.sector));});\r\n  el('sector').addEventListener('change',()=>selectSector(Number(el('sector').value)));\r\n  el('field').addEventListener('change',()=>{fi=Number(el('field').value);renderField();});\r\n  el('full').addEventListener('change',renderHex);\r\n  root.querySelectorAll('[data-step]').forEach(b=>b.addEventListener('click',()=>{fi=(fi+Number(b.dataset.step)+current().fields.length)%current().fields.length;renderField();}));\r\n  el('hex').addEventListener('click',e=>{\r\n    const b=e.target.closest('[data-byte]'); if(!b)return;\r\n    const o=Number(b.dataset.byte),idx=current().fields.findIndex(f=>o>=f.o&&o<f.o+f.n); if(idx>=0){fi=idx;renderField();}\r\n  });\r\n\r\n  try { validate();initialize(); } catch(error) { el('status').textContent=error.message;el('status').style.color='#a22020'; }\r\n });\r\n})();\r\n<\/script>\r\n<!-- ELEMENTOR MODULE END -->\r\n<\/body><\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-rfiwn6w elementor-widget elementor-widget-text-editor\" data-id=\"rfiwn6w\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"color: inherit; font-family: inherit; font-size: inherit; font-style: inherit; font-weight: inherit; letter-spacing: inherit; text-align: inherit; text-transform: inherit;\">Unlike the traditional FAT BPB, exFAT defines its own parameter layout. Its <\/span><code class=\"dtec-inline-code\" style=\"color: inherit; font-style: inherit; font-weight: inherit; letter-spacing: inherit; text-transform: inherit;\">MustBeZero<\/code><span style=\"color: inherit; font-family: inherit; font-size: inherit; font-style: inherit; font-weight: inherit; letter-spacing: inherit; text-align: inherit; text-transform: inherit;\"> field also occupies the range corresponding to the FAT12\/16\/32 BPB area, helping prevent older FAT implementations from mistakenly interpreting an exFAT volume as a FAT volume.<\/span><\/p><h4>How the exFAT Boot Checksum Works<\/h4><p>The exFAT Boot Checksum provides a stronger validation mechanism than checking a signature alone.<\/p><p>The specification defines the following process:<\/p><ol><li>Read the first 11 sectors of the Main Boot Region.<\/li><li>Exclude the <code class=\"dtec-inline-code\">VolumeFlags<\/code> bytes at offsets 106\u2013107 and the <code class=\"dtec-inline-code\">PercentInUse<\/code> byte at offset 112.<\/li><li>Process the remaining bytes in order.<\/li><li>For each byte, rotate the current 32-bit checksum right by one bit and add the byte value, keeping the result within 32 bits.<\/li><li>Store the resulting checksum as a repeating four-byte pattern throughout the Boot Checksum sector.<\/li><\/ol><p>The Backup Boot Region has its own corresponding checksum calculation.<\/p><p>The exclusion of <code class=\"dtec-inline-code\">VolumeFlags<\/code> and <code class=\"dtec-inline-code\">PercentInUse<\/code> is intentional. These fields can be updated without recalculating the Boot Checksum. The specification also states that the corresponding values in the Backup Boot Sector must be treated as stale.<\/p><p>This means that a byte-for-byte comparison of the Main and Backup Boot Regions is not an appropriate universal validation method.<\/p><p>Instead, each region must be checked according to its own checksum and field-validity rules.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-br5c12j elementor-widget elementor-widget-heading\" data-id=\"br5c12j\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">How to Inspect and Validate a Volume Boot Record<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0sos13w elementor-widget elementor-widget-text-editor\" data-id=\"0sos13w\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Inspecting a VBR requires knowing where the volume begins and which file system defines its layout.<\/p>\n<p>A raw sector should not be interpreted using a generic template without first identifying the volume format.<\/p>\n<h3>Step 1: Identify the Volume&#8217;s Starting LBA<\/h3>\n<p>Determine the partition or volume starting position using reliable disk-layout information.<\/p>\n<p>On a conventional basic disk, the partition&#8217;s starting LBA is normally the starting position of its contained volume.<\/p>\n<p>Do not assume that every volume begins at LBA 0 or that a drive letter identifies a physical disk offset.<\/p>\n<h3>Step 2: Calculate the Byte Offset<\/h3>\n<p>To locate the volume&#8217;s first sector in a raw disk image, use:<\/p>\n<p><code class=\"dtec-inline-code\">Byte offset = Volume starting LBA \u00d7 Logical sector size<\/code><\/p>\n<p>For example, if a partition begins at LBA 2,048 and the device uses 512-byte logical sectors:<\/p>\n<p><code class=\"dtec-inline-code\">2,048 \u00d7 512 = 1,048,576 bytes<\/code><\/p>\n<p>The VBR begins at byte offset 1,048,576 in that illustrative disk image.<\/p>\n<p>For a 4,096-byte logical sector, the same LBA would correspond to a different byte offset. Always use the device&#8217;s actual logical sector size rather than assuming every disk uses 512-byte sectors.<\/p>\n<h3>Step 3: Inspect the Structure Using a Hex Editor<\/h3>\n<p>A disk editor or hex editor can display the raw sector bytes and their offsets.<\/p>\n<p>For a read-only inspection:<\/p>\n<ol><li>Open a disk image or the correct physical device using a suitable hex editor.<\/li><li>Navigate to the calculated byte offset.<\/li><li>Examine the initial bytes and file-system identifier.<\/li><li>Interpret the relevant fields using the corresponding file-system specification.<\/li><li>Check whether the field values are internally consistent.<\/li><\/ol>\n<p>For example, an NTFS boot sector should be interpreted using its NTFS field layout, while a FAT32 sector should be interpreted using the FAT32 BPB definitions.<\/p>\n<p>Do not edit the source disk while performing an inspection. When the source contains important data, a read-only image is preferable.<\/p>\n<h3>Step 4: Check File-System-Specific Consistency<\/h3>\n<p>A VBR should be evaluated using multiple indicators rather than a single signature.<\/p>\n<p>Useful checks include:<\/p>\n<ul><li>Whether the reported bytes-per-sector value is valid for the format.<\/li><li>Whether sectors-per-cluster is an allowed value.<\/li><li>Whether the volume length fits within the available partition or volume extent.<\/li><li>Whether file-system-specific offsets point to plausible locations.<\/li><li>Whether backup structures are located where the relevant format specifies.<\/li><li>Whether required checksums and signatures validate.<\/li><\/ul>\n<p>For FAT32, inspect the BPB fields and the relationship between the boot sector, FSInfo, and backup boot record.<\/p>\n<p>For NTFS, examine the volume-sector count and MFT-related cluster locations. A plausible <code class=\"dtec-inline-code\">$MFT<\/code> LCN does not by itself prove that the MFT is intact.<\/p>\n<p>For exFAT, validate the Main and Backup Boot Checksums independently and confirm that the relevant fields are within their specified ranges.<\/p>\n<h3>Step 5: Interpret the Results Carefully<\/h3>\n<p>A successful signature check does not prove that a volume is healthy.<\/p>\n<p>Similarly, a valid backup boot structure does not prove that all file-system metadata or user data remains intact.<\/p>\n<p>A proper assessment should distinguish between:<\/p>\n<ul><li>A readable boot sector.<\/li><li>Structurally valid file-system parameters.<\/li><li>A valid backup structure.<\/li><li>A mountable file system.<\/li><li>An executable and complete operating-system boot chain.<\/li><\/ul>\n<p>These are related but different conditions.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-xybeskq elementor-widget elementor-widget-heading\" data-id=\"xybeskq\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">What Happens When a Volume Boot Record Is Damaged?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-s6j6i22 elementor-widget elementor-widget-text-editor\" data-id=\"s6j6i22\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Damage to a <strong>Volume Boot Record<\/strong> can prevent a system from starting or make a volume difficult to identify and mount.<\/p>\n<p>The exact impact depends on which fields or structures are affected and how the operating system uses them.<\/p>\n<table><tbody><tr><td><p><strong>Damage<\/strong><\/p><\/td><td><p><strong>Possible result<\/strong><\/p><\/td><\/tr><tr><td><p>Bootstrap code damage<\/p><\/td><td><p>Traditional BIOS startup may fail<\/p><\/td><\/tr><tr><td><p>BPB or volume-parameter damage<\/p><\/td><td><p>The file system may not be recognized or mounted correctly<\/p><\/td><\/tr><tr><td><p>Invalid NTFS boot information<\/p><\/td><td><p>NTFS volume interpretation may fail<\/p><\/td><\/tr><tr><td><p>FAT32 boot-sector damage<\/p><\/td><td><p>FAT32 mounting or boot operations may be affected<\/p><\/td><\/tr><tr><td><p>exFAT Boot Region inconsistency<\/p><\/td><td><p>File-system identification or validation may fail<\/p><\/td><\/tr><tr><td><p>Main boot structure damage with a valid backup<\/p><\/td><td><p>Recovery may be possible using the appropriate file-system-specific procedure<\/p><\/td><\/tr><\/tbody><\/table>\n<h3>VBR Damage Does Not Automatically Mean File Deletion<\/h3>\n<p>A VBR contains structural and boot-related information. It does not normally store the contents of ordinary user files.<\/p>\n<p>Therefore, damage to a VBR does not automatically mean that photos, documents, videos, or other file contents have been erased.<\/p>\n<p>For example, an NTFS volume may have a damaged boot sector while some or all of its MFT records and user-data clusters remain readable.<\/p>\n<p>However, recovery depends on the condition of the other file-system structures, the physical readability of the storage device, and whether additional writes have overwritten important metadata or file contents.<\/p>\n<p>A volume that cannot boot may still contain recoverable data. Conversely, a readable VBR does not prove that the rest of the file system is healthy.<\/p>\n<h3>VBR Damage vs. MBR or GPT Damage<\/h3>\n<p>These failures affect different storage layers.<\/p>\n<ul><li><strong>MBR damage:<\/strong> May affect legacy bootstrap code or the partition entries stored at disk LBA 0.<\/li><li><strong>GPT damage:<\/strong> May affect the partition layout, GPT headers, or partition entry arrays.<\/li><li><strong>VBR damage:<\/strong> Affects the initial boot-related structure of a specific volume.<\/li><li><strong>EFI System Partition damage:<\/strong> May prevent UEFI firmware from locating or loading the Windows EFI boot manager.<\/li><\/ul>\n<p>The repair procedure must match the damaged component.<\/p>\n<p>For example, <code class=\"dtec-inline-code\">bootrec \/fixmbr<\/code> rewrites MBR boot code; it does not reconstruct a damaged NTFS VBR, repair GPT headers, or restore missing partition entries.<\/p>\n<p>For a related explanation of disk-level boot problems, see <a href=\"https:\/\/www.amagicsoft.com\/wiki\/mbr-corruption.html\">Amagicsoft&#8217;s MBR corruption guide<\/a>.<\/p>\n<p>If important files are inaccessible, protect the original data before attempting a write-based repair. Avoid formatting, initializing, repartitioning, or running repair commands that modify the file system before securing a suitable backup or image.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-njmpof0 elementor-widget elementor-widget-image\" data-id=\"njmpof0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.amagicsoft.com\/wp-content\/uploads\/2026\/10\/vbr-damage-vs-mbr-gpt-damage.webp\" title=\"\" alt=\"vbr-damage-vs-mbr-gpt-damage\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-rcwmcjm elementor-widget elementor-widget-heading\" data-id=\"rcwmcjm\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Conclusion<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-qaf0iis elementor-widget elementor-widget-text-editor\" data-id=\"qaf0iis\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>A <strong>Volume Boot Record<\/strong> is a volume-level structure that connects file-system parameters with boot-related information. Its position is normally the first logical sector of a volume, while its exact layout depends on the file system.<\/p>\n<p>The distinction between MBR, GPT, and VBR is essential: MBR and GPT describe disk-level partition layouts, whereas the VBR belongs to a file-system volume. Legacy BIOS startup may execute VBR bootstrap code, while native UEFI startup loads an EFI application from the EFI System Partition.<\/p>\n<p>Understanding the differences between NTFS, FAT32, and exFAT boot structures also helps distinguish a damaged boot record from broader file-system corruption or actual user-data loss.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9qcioxu elementor-widget elementor-widget-heading\" data-id=\"9qcioxu\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">FAQs<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-grgxozm faq-no-toc dtec-faq elementor-widget elementor-widget-elementskit-faq\" data-id=\"grgxozm\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementskit-faq.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"ekit-wid-con\" >\n                <div class=\"elementskit-single-faq elementor-repeater-item-cv8ez7c\">\n            <div class=\"elementskit-faq-header\">\n                <h3 class=\"elementskit-faq-title\">Is a Volume Boot Record the Same as a Partition Boot Record?<\/h3>\n            <\/div>\n            <div class=\"elementskit-faq-body\">\n                In many conventional PC disk layouts, the terms refer to the same sector because the volume begins at the start of its partition. However, the terminology varies. A partition describes a disk region, while a volume describes the storage organized for a file system.            <\/div>\n        <\/div>\n                <div class=\"elementskit-single-faq elementor-repeater-item-8jbugo8\">\n            <div class=\"elementskit-faq-header\">\n                <h3 class=\"elementskit-faq-title\">Is the VBR Always Located at LBA 0?<\/h3>\n            <\/div>\n            <div class=\"elementskit-faq-body\">\n                No. On a partitioned disk, the VBR is normally located at the starting LBA of its volume. Disk LBA 0 belongs to the disk-level structure, such as an MBR or Protective MBR. An unpartitioned volume may begin at the device's LBA 0.            <\/div>\n        <\/div>\n                <div class=\"elementskit-single-faq elementor-repeater-item-977jke7\">\n            <div class=\"elementskit-faq-header\">\n                <h3 class=\"elementskit-faq-title\">Does a GPT Disk Have a Volume Boot Record?<\/h3>\n            <\/div>\n            <div class=\"elementskit-faq-body\">\n                Yes. GPT defines the disk's partition layout, not the internal structure of each file system. A GPT disk can contain NTFS, FAT32, or exFAT volumes, each with its own boot-related structures.            <\/div>\n        <\/div>\n                <div class=\"elementskit-single-faq elementor-repeater-item-e9j2yxq\">\n            <div class=\"elementskit-faq-header\">\n                <h3 class=\"elementskit-faq-title\">Does UEFI Use the Volume Boot Record?<\/h3>\n            <\/div>\n            <div class=\"elementskit-faq-body\">\n                Native UEFI startup does not normally execute the traditional x86 bootstrap code stored in a VBR. Instead, UEFI loads an EFI application from a supported file system, such as the FAT32 EFI System Partition used by standard Windows UEFI installations. The ESP still has its own FAT32 boot sector.            <\/div>\n        <\/div>\n                <div class=\"elementskit-single-faq elementor-repeater-item-vxrfyky\">\n            <div class=\"elementskit-faq-header\">\n                <h3 class=\"elementskit-faq-title\">What Does the 55 AA Signature Mean in a Boot Sector?<\/h3>\n            <\/div>\n            <div class=\"elementskit-faq-body\">\n                The bytes <code>55 AA<\/code> are a boot signature used by several traditional boot-sector formats. Their presence is a useful structural indicator, but it does not prove that the BPB, file-system parameters, bootstrap code, or backup structures are valid.            <\/div>\n        <\/div>\n                <div class=\"elementskit-single-faq elementor-repeater-item-g0hx2ww\">\n            <div class=\"elementskit-faq-header\">\n                <h3 class=\"elementskit-faq-title\">Where Is the Backup VBR Located?<\/h3>\n            <\/div>\n            <div class=\"elementskit-faq-body\">\n                There is no universal backup location. FAT32 commonly uses the sector identified by <code>BPB_BkBootSec<\/code>, often sector 6. NTFS layouts commonly place a backup boot sector at the final volume sector in later Windows NT versions. exFAT uses a separate Backup Boot Region starting at volume-relative sector 12.            <\/div>\n        <\/div>\n                <div class=\"elementskit-single-faq elementor-repeater-item-2snztkw\">\n            <div class=\"elementskit-faq-header\">\n                <h3 class=\"elementskit-faq-title\">Can a Damaged VBR Cause Permanent Data Loss?<\/h3>\n            <\/div>\n            <div class=\"elementskit-faq-body\">\n                Not necessarily. VBR damage can prevent a volume from mounting or starting, while other file-system metadata and user-data clusters may remain intact. The recovery outcome depends on the extent of damage, subsequent writes, and the physical condition of the device.            <\/div>\n        <\/div>\n                                <script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Is a Volume Boot Record the Same as a Partition Boot Record?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"In many conventional PC disk layouts, the terms refer to the same sector because the volume begins at the start of its partition. However, the terminology varies. A partition describes a disk region, while a volume describes the storage organized for a file system.\"}},{\"@type\":\"Question\",\"name\":\"Is the VBR Always Located at LBA 0?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. On a partitioned disk, the VBR is normally located at the starting LBA of its volume. Disk LBA 0 belongs to the disk-level structure, such as an MBR or Protective MBR. An unpartitioned volume may begin at the device's LBA 0.\"}},{\"@type\":\"Question\",\"name\":\"Does a GPT Disk Have a Volume Boot Record?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. GPT defines the disk's partition layout, not the internal structure of each file system. A GPT disk can contain NTFS, FAT32, or exFAT volumes, each with its own boot-related structures.\"}},{\"@type\":\"Question\",\"name\":\"Does UEFI Use the Volume Boot Record?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Native UEFI startup does not normally execute the traditional x86 bootstrap code stored in a VBR. Instead, UEFI loads an EFI application from a supported file system, such as the FAT32 EFI System Partition used by standard Windows UEFI installations. The ESP still has its own FAT32 boot sector.\"}},{\"@type\":\"Question\",\"name\":\"What Does the 55 AA Signature Mean in a Boot Sector?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"The bytes <code>55 AA<\/code> are a boot signature used by several traditional boot-sector formats. Their presence is a useful structural indicator, but it does not prove that the BPB, file-system parameters, bootstrap code, or backup structures are valid.\"}},{\"@type\":\"Question\",\"name\":\"Where Is the Backup VBR Located?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"There is no universal backup location. FAT32 commonly uses the sector identified by <code>BPB_BkBootSec<\/code>, often sector 6. NTFS layouts commonly place a backup boot sector at the final volume sector in later Windows NT versions. exFAT uses a separate Backup Boot Region starting at volume-relative sector 12.\"}},{\"@type\":\"Question\",\"name\":\"Can a Damaged VBR Cause Permanent Data Loss?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Not necessarily. VBR damage can prevent a volume from mounting or starting, while other file-system metadata and user-data clusters may remain intact. The recovery outcome depends on the extent of damage, subsequent writes, and the physical condition of the device.\"}}]}<\/script>\n                \n    <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>A Volume Boot Record (VBR) is a boot-related data structure stored at the beginning of a file system volume. It contains information that describes the volume&#8217;s layout and may also include bootstrap code used during legacy startup. Although the VBR is commonly associated with the first sector of a partition, its exact structure and role [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":58037,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[842],"tags":[841],"class_list":["post-58036","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-disk-partition","tag-knowledge-base"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.0 (Yoast SEO v27.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Volume Boot Record: Structure &amp; Boot Process | Amagicsoft<\/title>\n<meta name=\"description\" content=\"Learn what a volume boot record contains, where it is located, how it differs from MBR, and how BIOS, UEFI, NTFS, FAT32, and exFAT use it.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.amagicsoft.com\/de\/kb\/disk-partition\/volume-boot-record.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Volume Boot Record (VBR): Structure, Location, and Boot Process\" \/>\n<meta property=\"og:description\" content=\"Learn what a volume boot record contains, where it is located, how it differs from MBR, and how BIOS, UEFI, NTFS, FAT32, and exFAT use it.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.amagicsoft.com\/de\/kb\/disk-partition\/volume-boot-record.html\" \/>\n<meta property=\"og:site_name\" content=\"Amagicsoft\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/amagicsoft.2024\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-30T23:29:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.amagicsoft.com\/wp-content\/uploads\/2026\/10\/Volume-Boot-Record-VBR-Structure-Location-and-Boot-Process.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1350\" \/>\n\t<meta property=\"og:image:height\" content=\"760\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Vasilii\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Amagicsoft\" \/>\n<meta name=\"twitter:site\" content=\"@Amagicsoft\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vasilii\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"24\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/kb\\\/disk-partition\\\/volume-boot-record.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/kb\\\/disk-partition\\\/volume-boot-record.html\"},\"author\":{\"name\":\"Vasilii\",\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/zh\\\/#\\\/schema\\\/person\\\/5cc725a7bfa9bc0e962db26a19dfb8c2\"},\"headline\":\"Volume Boot Record (VBR): Structure, Location, and Boot Process\",\"datePublished\":\"2026-10-30T23:29:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/kb\\\/disk-partition\\\/volume-boot-record.html\"},\"wordCount\":5017,\"publisher\":{\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/zh\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/kb\\\/disk-partition\\\/volume-boot-record.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.amagicsoft.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/Volume-Boot-Record-VBR-Structure-Location-and-Boot-Process.webp\",\"keywords\":[\"Knowledge Base\"],\"articleSection\":[\"Disk &amp; Partition\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/kb\\\/disk-partition\\\/volume-boot-record.html\",\"url\":\"https:\\\/\\\/www.amagicsoft.com\\\/kb\\\/disk-partition\\\/volume-boot-record.html\",\"name\":\"Volume Boot Record: Structure & Boot Process | Amagicsoft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/zh\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/kb\\\/disk-partition\\\/volume-boot-record.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/kb\\\/disk-partition\\\/volume-boot-record.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.amagicsoft.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/Volume-Boot-Record-VBR-Structure-Location-and-Boot-Process.webp\",\"datePublished\":\"2026-10-30T23:29:19+00:00\",\"description\":\"Learn what a volume boot record contains, where it is located, how it differs from MBR, and how BIOS, UEFI, NTFS, FAT32, and exFAT use it.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/kb\\\/disk-partition\\\/volume-boot-record.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.amagicsoft.com\\\/kb\\\/disk-partition\\\/volume-boot-record.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/kb\\\/disk-partition\\\/volume-boot-record.html#primaryimage\",\"url\":\"https:\\\/\\\/www.amagicsoft.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/Volume-Boot-Record-VBR-Structure-Location-and-Boot-Process.webp\",\"contentUrl\":\"https:\\\/\\\/www.amagicsoft.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/Volume-Boot-Record-VBR-Structure-Location-and-Boot-Process.webp\",\"width\":1350,\"height\":760,\"caption\":\"Volume Boot Record (VBR) Structure, Location, and Boot Process\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/kb\\\/disk-partition\\\/volume-boot-record.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.amagicsoft.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Volume Boot Record (VBR): Structure, Location, and Boot Process\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/zh\\\/#website\",\"url\":\"https:\\\/\\\/www.amagicsoft.com\\\/zh\\\/\",\"name\":\"Amagicsoft\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/zh\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.amagicsoft.com\\\/zh\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/zh\\\/#organization\",\"name\":\"Amagicsoft\",\"url\":\"https:\\\/\\\/www.amagicsoft.com\\\/zh\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.amagicsoft.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/cropped-logo_512x512-1.webp\",\"contentUrl\":\"https:\\\/\\\/www.amagicsoft.com\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/cropped-logo_512x512-1.webp\",\"width\":512,\"height\":512,\"caption\":\"Amagicsoft\"},\"image\":{\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/zh\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/amagicsoft.2024\\\/\",\"https:\\\/\\\/x.com\\\/Amagicsoft\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.amagicsoft.com\\\/zh\\\/#\\\/schema\\\/person\\\/5cc725a7bfa9bc0e962db26a19dfb8c2\",\"name\":\"Vasilii\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/12fbd3cf5c3fd435565e0ee05fea6fb3ae89413aafdccfb30c0c821c69a44d12?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/12fbd3cf5c3fd435565e0ee05fea6fb3ae89413aafdccfb30c0c821c69a44d12?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/12fbd3cf5c3fd435565e0ee05fea6fb3ae89413aafdccfb30c0c821c69a44d12?s=96&d=mm&r=g\",\"caption\":\"Vasilii\"},\"description\":\"Vasilii is a data recovery specialist with around 10 years of hands-on experience in the field. Throughout his career, he has successfully solved thousands of complex cases involving deleted files, formatted drives, lost partitions, and RAW file systems. His expertise covers both manual recovery methods using professional tools like hex editors and advanced automated solutions with recovery software. Vasilii's mission is to make reliable data recovery knowledge accessible to both IT professionals and everyday users, helping them safeguard their valuable digital assets.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/vasilii-zaitsev-65894b376\\\/\"],\"url\":\"https:\\\/\\\/www.amagicsoft.com\\\/de\\\/author\\\/vasilii\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Volume-Boot-Record: Aufbau und Bootvorgang | Amagicsoft","description":"Erfahren Sie, was ein Volume-Boot-Record enth\u00e4lt, wo er sich befindet, wie er sich vom MBR unterscheidet und wie BIOS, UEFI, NTFS, FAT32 und exFAT ihn nutzen.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.amagicsoft.com\/de\/kb\/disk-partition\/volume-boot-record.html","og_locale":"de_DE","og_type":"article","og_title":"Volume Boot Record (VBR): Structure, Location, and Boot Process","og_description":"Learn what a volume boot record contains, where it is located, how it differs from MBR, and how BIOS, UEFI, NTFS, FAT32, and exFAT use it.","og_url":"https:\/\/www.amagicsoft.com\/de\/kb\/disk-partition\/volume-boot-record.html","og_site_name":"Amagicsoft","article_publisher":"https:\/\/www.facebook.com\/amagicsoft.2024\/","article_published_time":"2026-10-30T23:29:19+00:00","og_image":[{"width":1350,"height":760,"url":"https:\/\/www.amagicsoft.com\/wp-content\/uploads\/2026\/10\/Volume-Boot-Record-VBR-Structure-Location-and-Boot-Process.webp","type":"image\/webp"}],"author":"Vasilii","twitter_card":"summary_large_image","twitter_creator":"@Amagicsoft","twitter_site":"@Amagicsoft","twitter_misc":{"Verfasst von":"Vasilii","Gesch\u00e4tzte Lesezeit":"24\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.amagicsoft.com\/kb\/disk-partition\/volume-boot-record.html#article","isPartOf":{"@id":"https:\/\/www.amagicsoft.com\/kb\/disk-partition\/volume-boot-record.html"},"author":{"name":"Vasilii","@id":"https:\/\/www.amagicsoft.com\/zh\/#\/schema\/person\/5cc725a7bfa9bc0e962db26a19dfb8c2"},"headline":"Volume Boot Record (VBR): Structure, Location, and Boot Process","datePublished":"2026-10-30T23:29:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.amagicsoft.com\/kb\/disk-partition\/volume-boot-record.html"},"wordCount":5017,"publisher":{"@id":"https:\/\/www.amagicsoft.com\/zh\/#organization"},"image":{"@id":"https:\/\/www.amagicsoft.com\/kb\/disk-partition\/volume-boot-record.html#primaryimage"},"thumbnailUrl":"https:\/\/www.amagicsoft.com\/wp-content\/uploads\/2026\/10\/Volume-Boot-Record-VBR-Structure-Location-and-Boot-Process.webp","keywords":["Knowledge Base"],"articleSection":["Disk &amp; Partition"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/www.amagicsoft.com\/kb\/disk-partition\/volume-boot-record.html","url":"https:\/\/www.amagicsoft.com\/kb\/disk-partition\/volume-boot-record.html","name":"Volume-Boot-Record: Aufbau und Bootvorgang | Amagicsoft","isPartOf":{"@id":"https:\/\/www.amagicsoft.com\/zh\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.amagicsoft.com\/kb\/disk-partition\/volume-boot-record.html#primaryimage"},"image":{"@id":"https:\/\/www.amagicsoft.com\/kb\/disk-partition\/volume-boot-record.html#primaryimage"},"thumbnailUrl":"https:\/\/www.amagicsoft.com\/wp-content\/uploads\/2026\/10\/Volume-Boot-Record-VBR-Structure-Location-and-Boot-Process.webp","datePublished":"2026-10-30T23:29:19+00:00","description":"Erfahren Sie, was ein Volume-Boot-Record enth\u00e4lt, wo er sich befindet, wie er sich vom MBR unterscheidet und wie BIOS, UEFI, NTFS, FAT32 und exFAT ihn nutzen.","breadcrumb":{"@id":"https:\/\/www.amagicsoft.com\/kb\/disk-partition\/volume-boot-record.html#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.amagicsoft.com\/kb\/disk-partition\/volume-boot-record.html"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.amagicsoft.com\/kb\/disk-partition\/volume-boot-record.html#primaryimage","url":"https:\/\/www.amagicsoft.com\/wp-content\/uploads\/2026\/10\/Volume-Boot-Record-VBR-Structure-Location-and-Boot-Process.webp","contentUrl":"https:\/\/www.amagicsoft.com\/wp-content\/uploads\/2026\/10\/Volume-Boot-Record-VBR-Structure-Location-and-Boot-Process.webp","width":1350,"height":760,"caption":"Volume Boot Record (VBR) Structure, Location, and Boot Process"},{"@type":"BreadcrumbList","@id":"https:\/\/www.amagicsoft.com\/kb\/disk-partition\/volume-boot-record.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.amagicsoft.com\/"},{"@type":"ListItem","position":2,"name":"Volume Boot Record (VBR): Structure, Location, and Boot Process"}]},{"@type":"WebSite","@id":"https:\/\/www.amagicsoft.com\/zh\/#website","url":"https:\/\/www.amagicsoft.com\/zh\/","name":"Amagicsoft","description":"","publisher":{"@id":"https:\/\/www.amagicsoft.com\/zh\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.amagicsoft.com\/zh\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.amagicsoft.com\/zh\/#organization","name":"Amagicsoft","url":"https:\/\/www.amagicsoft.com\/zh\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.amagicsoft.com\/zh\/#\/schema\/logo\/image\/","url":"https:\/\/www.amagicsoft.com\/wp-content\/uploads\/2025\/04\/cropped-logo_512x512-1.webp","contentUrl":"https:\/\/www.amagicsoft.com\/wp-content\/uploads\/2025\/04\/cropped-logo_512x512-1.webp","width":512,"height":512,"caption":"Amagicsoft"},"image":{"@id":"https:\/\/www.amagicsoft.com\/zh\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/amagicsoft.2024\/","https:\/\/x.com\/Amagicsoft"]},{"@type":"Person","@id":"https:\/\/www.amagicsoft.com\/zh\/#\/schema\/person\/5cc725a7bfa9bc0e962db26a19dfb8c2","name":"Vasilii","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/12fbd3cf5c3fd435565e0ee05fea6fb3ae89413aafdccfb30c0c821c69a44d12?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/12fbd3cf5c3fd435565e0ee05fea6fb3ae89413aafdccfb30c0c821c69a44d12?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/12fbd3cf5c3fd435565e0ee05fea6fb3ae89413aafdccfb30c0c821c69a44d12?s=96&d=mm&r=g","caption":"Vasilii"},"description":"Vasilii ist ein Datenrettungsspezialist mit rund 10 Jahren praktischer Erfahrung in diesem Bereich. Im Laufe seiner Karriere hat er Tausende von komplexen F\u00e4llen mit gel\u00f6schten Dateien, formatierten Laufwerken, verlorenen Partitionen und RAW-Dateisystemen erfolgreich gel\u00f6st. Sein Fachwissen umfasst sowohl manuelle Wiederherstellungsmethoden mit professionellen Tools wie Hex-Editoren als auch fortschrittliche automatische L\u00f6sungen mit Wiederherstellungssoftware. Vasilii hat es sich zur Aufgabe gemacht, zuverl\u00e4ssiges Wissen zur Datenwiederherstellung sowohl IT-Fachleuten als auch normalen Nutzern zug\u00e4nglich zu machen und ihnen dabei zu helfen, ihre wertvollen digitalen Ressourcen zu sch\u00fctzen.","sameAs":["https:\/\/www.linkedin.com\/in\/vasilii-zaitsev-65894b376\/"],"url":"https:\/\/www.amagicsoft.com\/de\/author\/vasilii"}]}},"_links":{"self":[{"href":"https:\/\/www.amagicsoft.com\/de\/wp-json\/wp\/v2\/posts\/58036","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.amagicsoft.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.amagicsoft.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.amagicsoft.com\/de\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.amagicsoft.com\/de\/wp-json\/wp\/v2\/comments?post=58036"}],"version-history":[{"count":3,"href":"https:\/\/www.amagicsoft.com\/de\/wp-json\/wp\/v2\/posts\/58036\/revisions"}],"predecessor-version":[{"id":58042,"href":"https:\/\/www.amagicsoft.com\/de\/wp-json\/wp\/v2\/posts\/58036\/revisions\/58042"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.amagicsoft.com\/de\/wp-json\/wp\/v2\/media\/58037"}],"wp:attachment":[{"href":"https:\/\/www.amagicsoft.com\/de\/wp-json\/wp\/v2\/media?parent=58036"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.amagicsoft.com\/de\/wp-json\/wp\/v2\/categories?post=58036"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.amagicsoft.com\/de\/wp-json\/wp\/v2\/tags?post=58036"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}