Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More Robust Filesystem Manipulation #199

Open
NathanTP opened this issue Jul 14, 2021 · 1 comment
Open

More Robust Filesystem Manipulation #199

NathanTP opened this issue Jul 14, 2021 · 1 comment

Comments

@NathanTP
Copy link
Contributor

Mounting target images is fraught. It's the source of many bugs (e.g. #168 #137). It also prevents CI for marshal (since Docker doesn't support mount or FUSE). We should really deal with these issues at the root rather than patching each issue with hacks.

I think the most promising method is to use e2fsprogs to manually copy files in and out of the filesystem. It would require some changes to the build process (that uses mounts to simplify data transfers), but it could be done.

@timsnyder-siv
Copy link
Contributor

Along the lines of using e2fsprogs and issues with mounting filesystems, have you done anything to make sure that the filesystem images are bit identical each time you build them with firemarshal? Obvi, there will be impact from the bundled systems you're using to build the images (buildroot, whatever else) but do you or could you do something to normalize them to meet the constraints for repeatability placed on you by FireSim (bit exactness)?

One thing that we've found helpful because we also manipulate the images a bit downstream from firemarshal so that we can have a single image for SPEC and tweak the init scripts to run specific workloads, is to run the rootfs through make_ext4fs -T <fixed_timestamp> and that makes all of the timestamps always whatever time we pick. Picking 0 is fraught because some things (ahem runspec) are clever and don't like it if you run them before they think they sprang into existence.

I've been looking for an equivalent way in e2fsprogs to set a fixed timestamp on all files in the created filesystem, but I don't see one (yet).

Also, if you'd like a pointer to FUSE working in CI, take a look at https://github.com/sifive/wake/tree/c91b5c45dfa7e9881c708a1673500821ce671976/.circleci. It has all the right knobs twiddled to enable FUSE (at least on CircleCI).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants