import re
import os
from subprocess import call, check_call, check_output, CalledProcessError
+from subprocess import DEVNULL
def mk_fs(config, fs_type, size, prefix, src_dir=None, size_gran = 0x100000,
- fs_img=None):
+ fs_img=None, quiet=False):
"""Create a file system volume
Args:
fs_img (str or None): Leaf filename for image, or None to use a
default name. The image is always placed under
persistent_data_dir.
+ quiet (bool): Suppress non-error output
Raises:
CalledProcessError: if any error occurs when creating the filesystem
check_call(f'rm -f {fs_img}', shell=True)
check_call(f'truncate -s $(( {size_gran} * {count} )) {fs_img}',
shell=True)
- check_call(f'mkfs.{fs_lnxtype} {mkfs_opt} {fs_img}', shell=True)
+ check_call(f'mkfs.{fs_lnxtype} {mkfs_opt} {fs_img}', shell=True,
+ stdout=DEVNULL if quiet else None)
if fs_type == 'ext4':
sb_content = check_output(f'tune2fs -l {fs_img}',
shell=True).decode()
if 'metadata_csum' in sb_content:
check_call(f'tune2fs -O ^metadata_csum {fs_img}', shell=True)
elif fs_lnxtype == 'vfat' and src_dir:
- check_call(f'mcopy -i {fs_img} -vsmpQ {src_dir}/* ::/', shell=True)
+ flags = f"-smpQ{'' if quiet else 'v'}"
+ check_call(f'mcopy -i {fs_img} {flags} {src_dir}/* ::/',
+ shell=True)
elif fs_lnxtype == 'exfat' and src_dir:
check_call(f'fattools cp {src_dir}/* {fs_img}', shell=True)
return fs_img