How to run mkfs on file image partitions without mounting?

Multi tool use
Multi tool use

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
5
down vote

favorite












I am creating an empty file...



dd if=/dev/zero of=$SDCARD bs=1 count=0 seek=$(expr 1024 * $SDCARD_SIZE)


...then turning it into an drive image...



parted -s $SDCARD mklabel msdos


...and creating partitions on it



parted -s $SDCARD unit KiB mkpart primary fat32 $IMAGE_ROOTFS_ALIGNMENT $(expr $IMAGE_ROOTFS_ALIGNMENT + $BOOT_SPACE_ALIGNED)
parted -s $SDCARD unit KiB mkpart primary $(expr $IMAGE_ROOTFS_ALIGNMENT + $BOOT_SPACE_ALIGNED) $(expr $IMAGE_ROOTFS_ALIGNMENT + $BOOT_SPACE_ALIGNED + $ROOTFS_SIZE)


How do I use mkfs.ext and mkfs.vfat without mounting this image?










share|improve this question



























    up vote
    5
    down vote

    favorite












    I am creating an empty file...



    dd if=/dev/zero of=$SDCARD bs=1 count=0 seek=$(expr 1024 * $SDCARD_SIZE)


    ...then turning it into an drive image...



    parted -s $SDCARD mklabel msdos


    ...and creating partitions on it



    parted -s $SDCARD unit KiB mkpart primary fat32 $IMAGE_ROOTFS_ALIGNMENT $(expr $IMAGE_ROOTFS_ALIGNMENT + $BOOT_SPACE_ALIGNED)
    parted -s $SDCARD unit KiB mkpart primary $(expr $IMAGE_ROOTFS_ALIGNMENT + $BOOT_SPACE_ALIGNED) $(expr $IMAGE_ROOTFS_ALIGNMENT + $BOOT_SPACE_ALIGNED + $ROOTFS_SIZE)


    How do I use mkfs.ext and mkfs.vfat without mounting this image?










    share|improve this question

























      up vote
      5
      down vote

      favorite









      up vote
      5
      down vote

      favorite











      I am creating an empty file...



      dd if=/dev/zero of=$SDCARD bs=1 count=0 seek=$(expr 1024 * $SDCARD_SIZE)


      ...then turning it into an drive image...



      parted -s $SDCARD mklabel msdos


      ...and creating partitions on it



      parted -s $SDCARD unit KiB mkpart primary fat32 $IMAGE_ROOTFS_ALIGNMENT $(expr $IMAGE_ROOTFS_ALIGNMENT + $BOOT_SPACE_ALIGNED)
      parted -s $SDCARD unit KiB mkpart primary $(expr $IMAGE_ROOTFS_ALIGNMENT + $BOOT_SPACE_ALIGNED) $(expr $IMAGE_ROOTFS_ALIGNMENT + $BOOT_SPACE_ALIGNED + $ROOTFS_SIZE)


      How do I use mkfs.ext and mkfs.vfat without mounting this image?










      share|improve this question















      I am creating an empty file...



      dd if=/dev/zero of=$SDCARD bs=1 count=0 seek=$(expr 1024 * $SDCARD_SIZE)


      ...then turning it into an drive image...



      parted -s $SDCARD mklabel msdos


      ...and creating partitions on it



      parted -s $SDCARD unit KiB mkpart primary fat32 $IMAGE_ROOTFS_ALIGNMENT $(expr $IMAGE_ROOTFS_ALIGNMENT + $BOOT_SPACE_ALIGNED)
      parted -s $SDCARD unit KiB mkpart primary $(expr $IMAGE_ROOTFS_ALIGNMENT + $BOOT_SPACE_ALIGNED) $(expr $IMAGE_ROOTFS_ALIGNMENT + $BOOT_SPACE_ALIGNED + $ROOTFS_SIZE)


      How do I use mkfs.ext and mkfs.vfat without mounting this image?







      linux parted mkfs






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 11 mins ago









      Ciro Santilli 新疆改造中心 六四事件 法轮功

      4,46123938




      4,46123938










      asked May 6 '16 at 18:51









      Paul Knopf

      241310




      241310




















          2 Answers
          2






          active

          oldest

          votes

















          up vote
          4
          down vote



          accepted










          You want to format a partition in a disk-image file, rather than the entire image file. In that case, you need to use losetup to tell linux to use the image file as a loopback device.



          NOTE: losetup requires root privileges, so must be run as root or with sudo. The /dev/loop* devices it uses/creates also require root privs to access and use.



          e.g (as root)



          # losetup /dev/loop0 ./sdcard.img

          # fdisk -l /dev/loop0
          Disk /dev/loop0: 1 MiB, 1048576 bytes, 2048 sectors
          Units: sectors of 1 * 512 = 512 bytes
          Sector size (logical/physical): 512 bytes / 512 bytes
          I/O size (minimum/optimal): 512 bytes / 512 bytes
          Disklabel type: dos
          Disk identifier: 0x54c246ab

          Device Boot Start End Sectors Size Id Type
          /dev/loop0p1 1 1023 1023 511.5K c W95 FAT32 (LBA)
          /dev/loop0p2 1024 2047 1024 512K 83 Linux

          # file -s /dev/loop0p1
          /dev/loop0p1: data

          # mkfs.vfat /dev/loop0p1
          mkfs.fat 3.0.28 (2015-05-16)
          Loop device does not match a floppy size, using default hd params

          # file -s /dev/loop0p1
          /dev/loop0p1: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, root entries 512, sectors 1023 (volumes <=32 MB) , Media descriptor 0xf8, sectors/FAT 1, sectors/track 32, heads 64, serial number 0xfa9e3726, unlabeled, FAT (12 bit)


          and, finally, detach the image from the loopback device:



          # losetup -d /dev/loop0


          See man losetup for more details.






          share|improve this answer





























            up vote
            4
            down vote













            To create an image with multiple partitions, a solution that doesn't require any fancy tools or root access is to first create the filesystems, then concatenate them.



            truncate -s $IMAGE_ROOTFS_ALIGNMENT disk
            truncate -s $BOOT_SPACE_ALIGNED part1
            mkfs.fat part1
            cat part1 >>disk
            truncate -s $ROOTFS_SIZE part2
            mkfs.ext4 part2
            cat part2 >>disk


            Then run parted or fdisk to create the partitions.



            This approach has the downside that the resulting image won't be sparse.






            share|improve this answer




















              Your Answer







              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "106"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              convertImagesToLinks: false,
              noModals: false,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );













               

              draft saved


              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f281589%2fhow-to-run-mkfs-on-file-image-partitions-without-mounting%23new-answer', 'question_page');

              );

              Post as a guest






























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes








              up vote
              4
              down vote



              accepted










              You want to format a partition in a disk-image file, rather than the entire image file. In that case, you need to use losetup to tell linux to use the image file as a loopback device.



              NOTE: losetup requires root privileges, so must be run as root or with sudo. The /dev/loop* devices it uses/creates also require root privs to access and use.



              e.g (as root)



              # losetup /dev/loop0 ./sdcard.img

              # fdisk -l /dev/loop0
              Disk /dev/loop0: 1 MiB, 1048576 bytes, 2048 sectors
              Units: sectors of 1 * 512 = 512 bytes
              Sector size (logical/physical): 512 bytes / 512 bytes
              I/O size (minimum/optimal): 512 bytes / 512 bytes
              Disklabel type: dos
              Disk identifier: 0x54c246ab

              Device Boot Start End Sectors Size Id Type
              /dev/loop0p1 1 1023 1023 511.5K c W95 FAT32 (LBA)
              /dev/loop0p2 1024 2047 1024 512K 83 Linux

              # file -s /dev/loop0p1
              /dev/loop0p1: data

              # mkfs.vfat /dev/loop0p1
              mkfs.fat 3.0.28 (2015-05-16)
              Loop device does not match a floppy size, using default hd params

              # file -s /dev/loop0p1
              /dev/loop0p1: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, root entries 512, sectors 1023 (volumes <=32 MB) , Media descriptor 0xf8, sectors/FAT 1, sectors/track 32, heads 64, serial number 0xfa9e3726, unlabeled, FAT (12 bit)


              and, finally, detach the image from the loopback device:



              # losetup -d /dev/loop0


              See man losetup for more details.






              share|improve this answer


























                up vote
                4
                down vote



                accepted










                You want to format a partition in a disk-image file, rather than the entire image file. In that case, you need to use losetup to tell linux to use the image file as a loopback device.



                NOTE: losetup requires root privileges, so must be run as root or with sudo. The /dev/loop* devices it uses/creates also require root privs to access and use.



                e.g (as root)



                # losetup /dev/loop0 ./sdcard.img

                # fdisk -l /dev/loop0
                Disk /dev/loop0: 1 MiB, 1048576 bytes, 2048 sectors
                Units: sectors of 1 * 512 = 512 bytes
                Sector size (logical/physical): 512 bytes / 512 bytes
                I/O size (minimum/optimal): 512 bytes / 512 bytes
                Disklabel type: dos
                Disk identifier: 0x54c246ab

                Device Boot Start End Sectors Size Id Type
                /dev/loop0p1 1 1023 1023 511.5K c W95 FAT32 (LBA)
                /dev/loop0p2 1024 2047 1024 512K 83 Linux

                # file -s /dev/loop0p1
                /dev/loop0p1: data

                # mkfs.vfat /dev/loop0p1
                mkfs.fat 3.0.28 (2015-05-16)
                Loop device does not match a floppy size, using default hd params

                # file -s /dev/loop0p1
                /dev/loop0p1: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, root entries 512, sectors 1023 (volumes <=32 MB) , Media descriptor 0xf8, sectors/FAT 1, sectors/track 32, heads 64, serial number 0xfa9e3726, unlabeled, FAT (12 bit)


                and, finally, detach the image from the loopback device:



                # losetup -d /dev/loop0


                See man losetup for more details.






                share|improve this answer
























                  up vote
                  4
                  down vote



                  accepted







                  up vote
                  4
                  down vote



                  accepted






                  You want to format a partition in a disk-image file, rather than the entire image file. In that case, you need to use losetup to tell linux to use the image file as a loopback device.



                  NOTE: losetup requires root privileges, so must be run as root or with sudo. The /dev/loop* devices it uses/creates also require root privs to access and use.



                  e.g (as root)



                  # losetup /dev/loop0 ./sdcard.img

                  # fdisk -l /dev/loop0
                  Disk /dev/loop0: 1 MiB, 1048576 bytes, 2048 sectors
                  Units: sectors of 1 * 512 = 512 bytes
                  Sector size (logical/physical): 512 bytes / 512 bytes
                  I/O size (minimum/optimal): 512 bytes / 512 bytes
                  Disklabel type: dos
                  Disk identifier: 0x54c246ab

                  Device Boot Start End Sectors Size Id Type
                  /dev/loop0p1 1 1023 1023 511.5K c W95 FAT32 (LBA)
                  /dev/loop0p2 1024 2047 1024 512K 83 Linux

                  # file -s /dev/loop0p1
                  /dev/loop0p1: data

                  # mkfs.vfat /dev/loop0p1
                  mkfs.fat 3.0.28 (2015-05-16)
                  Loop device does not match a floppy size, using default hd params

                  # file -s /dev/loop0p1
                  /dev/loop0p1: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, root entries 512, sectors 1023 (volumes <=32 MB) , Media descriptor 0xf8, sectors/FAT 1, sectors/track 32, heads 64, serial number 0xfa9e3726, unlabeled, FAT (12 bit)


                  and, finally, detach the image from the loopback device:



                  # losetup -d /dev/loop0


                  See man losetup for more details.






                  share|improve this answer














                  You want to format a partition in a disk-image file, rather than the entire image file. In that case, you need to use losetup to tell linux to use the image file as a loopback device.



                  NOTE: losetup requires root privileges, so must be run as root or with sudo. The /dev/loop* devices it uses/creates also require root privs to access and use.



                  e.g (as root)



                  # losetup /dev/loop0 ./sdcard.img

                  # fdisk -l /dev/loop0
                  Disk /dev/loop0: 1 MiB, 1048576 bytes, 2048 sectors
                  Units: sectors of 1 * 512 = 512 bytes
                  Sector size (logical/physical): 512 bytes / 512 bytes
                  I/O size (minimum/optimal): 512 bytes / 512 bytes
                  Disklabel type: dos
                  Disk identifier: 0x54c246ab

                  Device Boot Start End Sectors Size Id Type
                  /dev/loop0p1 1 1023 1023 511.5K c W95 FAT32 (LBA)
                  /dev/loop0p2 1024 2047 1024 512K 83 Linux

                  # file -s /dev/loop0p1
                  /dev/loop0p1: data

                  # mkfs.vfat /dev/loop0p1
                  mkfs.fat 3.0.28 (2015-05-16)
                  Loop device does not match a floppy size, using default hd params

                  # file -s /dev/loop0p1
                  /dev/loop0p1: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, root entries 512, sectors 1023 (volumes <=32 MB) , Media descriptor 0xf8, sectors/FAT 1, sectors/track 32, heads 64, serial number 0xfa9e3726, unlabeled, FAT (12 bit)


                  and, finally, detach the image from the loopback device:



                  # losetup -d /dev/loop0


                  See man losetup for more details.







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited May 7 '16 at 2:31

























                  answered May 7 '16 at 2:23









                  cas

                  38k44495




                  38k44495






















                      up vote
                      4
                      down vote













                      To create an image with multiple partitions, a solution that doesn't require any fancy tools or root access is to first create the filesystems, then concatenate them.



                      truncate -s $IMAGE_ROOTFS_ALIGNMENT disk
                      truncate -s $BOOT_SPACE_ALIGNED part1
                      mkfs.fat part1
                      cat part1 >>disk
                      truncate -s $ROOTFS_SIZE part2
                      mkfs.ext4 part2
                      cat part2 >>disk


                      Then run parted or fdisk to create the partitions.



                      This approach has the downside that the resulting image won't be sparse.






                      share|improve this answer
























                        up vote
                        4
                        down vote













                        To create an image with multiple partitions, a solution that doesn't require any fancy tools or root access is to first create the filesystems, then concatenate them.



                        truncate -s $IMAGE_ROOTFS_ALIGNMENT disk
                        truncate -s $BOOT_SPACE_ALIGNED part1
                        mkfs.fat part1
                        cat part1 >>disk
                        truncate -s $ROOTFS_SIZE part2
                        mkfs.ext4 part2
                        cat part2 >>disk


                        Then run parted or fdisk to create the partitions.



                        This approach has the downside that the resulting image won't be sparse.






                        share|improve this answer






















                          up vote
                          4
                          down vote










                          up vote
                          4
                          down vote









                          To create an image with multiple partitions, a solution that doesn't require any fancy tools or root access is to first create the filesystems, then concatenate them.



                          truncate -s $IMAGE_ROOTFS_ALIGNMENT disk
                          truncate -s $BOOT_SPACE_ALIGNED part1
                          mkfs.fat part1
                          cat part1 >>disk
                          truncate -s $ROOTFS_SIZE part2
                          mkfs.ext4 part2
                          cat part2 >>disk


                          Then run parted or fdisk to create the partitions.



                          This approach has the downside that the resulting image won't be sparse.






                          share|improve this answer












                          To create an image with multiple partitions, a solution that doesn't require any fancy tools or root access is to first create the filesystems, then concatenate them.



                          truncate -s $IMAGE_ROOTFS_ALIGNMENT disk
                          truncate -s $BOOT_SPACE_ALIGNED part1
                          mkfs.fat part1
                          cat part1 >>disk
                          truncate -s $ROOTFS_SIZE part2
                          mkfs.ext4 part2
                          cat part2 >>disk


                          Then run parted or fdisk to create the partitions.



                          This approach has the downside that the resulting image won't be sparse.







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered May 7 '16 at 19:16









                          Gilles

                          514k12110231550




                          514k12110231550



























                               

                              draft saved


                              draft discarded















































                               


                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f281589%2fhow-to-run-mkfs-on-file-image-partitions-without-mounting%23new-answer', 'question_page');

                              );

                              Post as a guest













































































                              kmVRJ53 2G160,UQQiv9HeXJMBrXxiOTvtMa
                              e,oISKDYTUbHzx2vtuKSpD23c c6Gjzbh,75qIJU7dZzb7HfqlzFMUBRwhypfs f9yzp0VCGNOs WP,yX7eKE8Z53rL9DTrTQ

                              Popular posts from this blog

                              How to check contact read email or not when send email to Individual?

                              How many registers does an x86_64 CPU actually have?

                              Displaying single band from multi-band raster using QGIS