Edit the qcow2 FreeBSD image file
joh.hendriks at gmail.com
Wed Oct 4 10:40:29 UTC 2017
Op 04/10/2017 om 12:09 schreef Polytropon:
> On Wed, 4 Oct 2017 12:02:56 +0200, Johan Hendriks wrote:
>> Op 04/10/2017 om 11:29 schreef Polytropon:
>>> On Wed, 4 Oct 2017 09:47:47 +0200, Johan Hendriks wrote:
>>>> I want to add a script to the default qcow2 file of the FreeBSD qcow2 image.
>>>> But how do i mount the qcow2 file on FreeBSD?
>>>> There are a lot of howto's how to do it on Linux but i do not always
>>>> have a Linux box ready.
>>> Without having verified, I'd say something like this will work:
>>> # mdconfig -a -t vnode -f <flename> -u 0
>>> # mount -t ufs -o rw /dev/md0s1a /mnt
>>> The key is to connect the file to a md device ("memory disk"),
>>> and then use it as if it was a real disk. But always check the
>>> correct device file name - md0 will reflect the "disk layout"
>>> of the image file, so maybe you need to use /dev/md0p1 or
>>> /dev/md0a or simply /dev/md0, so check "ls /dev/md0*" to see
>>> how the layout is being translated to device files - this
>>> depends on the layout that has been constructed within the
>>> image file.
>>> When you're done, use:
>>> # umount /mnt
>>> # mdconfig -d -u 0
>>> This will finally sync any changes and disconnect the device.
>>> The image file can be used now.
>> Thanks, I tried that, but it does not work.
>> root at desk:~ # mdconfig -a -t vnode -f FreeBSD-11.1-RELEASE-amd64.qcow2 -u 0
>> Then a ls of /dev/md0 only shows md0 and i can not mount that one.
>> root at desk:~ # ls -al /dev/md*
>> crw-r----- 1 root operator 0x8c Oct 4 11:48 /dev/md0
>> crw------- 1 root wheel 0xb Sep 21 14:16 /dev/mdctl
>> And a mount of /dev/md0 gives an error.
>> root at desk:~ # mount -t ufs -o rw /dev/md0 /mnt
>> mount: /dev/md0: Invalid argument
> Check the file format of md0 if it is recognized as a filesystem
> # file FreeBSD-11.1-RELEASE-amd64.qcow2
> # file -s /dev/md0
> it should be recognized as a UFS file system (typically called
> "Unix Fast File system [v2]"). Note that you can only mount a
> file system which is being recognized correctly.
Indeed it is not recognized as a regular filesystem.
root at desk:~ # file FreeBSD-11.1-RELEASE-amd64.qcow2
FreeBSD-11.1-RELEASE-amd64.qcow2: QEMU QCOW Image (v2), 22548643840 bytes
root at desk:~ # file -s /dev/md0
/dev/md0: QEMU QCOW Image (v2), 22548643840 bytes
Well I installed the qemu-tools port and created a .raw file.
This way i can mount the file with mdconfig like you discribed.
root at desk:~ # qemu-img convert FreeBSD-11.1-RELEASE-amd64.qcow2
root at desk:~ # mdconfig -d -u 0
root at desk:~ # mdconfig -a -t vnode -f FreeBSD-11.1-RELEASE-amd64.raw -u 0
root at desk:~ # ls /dev/md0*
/dev/md0 /dev/md0p1 /dev/md0p2 /dev/md0p3
root at desk:~ # mount /dev/md0p3 /mnt
root at desk:~ # cd /mnt
root at desk:/mnt # ls -al
drwxr-xr-x 19 root wheel 512 Jul 21 04:33 .
drwxr-xr-x 31 root wheel 39 Sep 21 14:16 ..
-rw-r--r-- 2 root wheel 957 Jul 21 04:33 .cshrc
-rw-r--r-- 2 root wheel 249 Jul 21 04:33 .profile
drwxrwxr-x 2 root operator 512 Jul 21 04:30 .snap
-r--r--r-- 1 root wheel 6199 Jul 21 04:33 COPYRIGHT
drwxr-xr-x 2 root wheel 1024 Jul 21 04:31 bin
drwxr-xr-x 8 root wheel 1024 Jul 21 04:33 boot
dr-xr-xr-x 2 root wheel 512 Jul 21 04:30 dev
drwxr-xr-x 27 root wheel 2048 Jul 21 04:33 etc
drwxr-xr-x 4 root wheel 1536 Jul 21 04:31 lib
drwxr-xr-x 3 root wheel 512 Jul 21 04:33 libexec
drwxr-xr-x 2 root wheel 512 Jul 21 04:30 media
drwxr-xr-x 2 root wheel 512 Jul 21 04:30 mnt
drwxr-xr-x 2 root wheel 512 Jul 21 04:30 net
dr-xr-xr-x 2 root wheel 512 Jul 21 04:30 proc
drwxr-xr-x 2 root wheel 2560 Jul 21 04:31 rescue
drwxr-xr-x 2 root wheel 512 Jul 21 04:33 root
drwxr-xr-x 2 root wheel 2560 Jul 21 04:32 sbin
lrwxr-xr-x 1 root wheel 11 Jul 21 04:30 sys -> usr/src/sys
drwxrwxrwt 2 root wheel 512 Jul 21 04:30 tmp
drwxr-xr-x 14 root wheel 512 Jul 21 04:30 usr
drwxr-xr-x 24 root wheel 512 Jul 21 04:30 var
Thank you both for your time.
I can now do what i want.
More information about the freebsd-questions