/* * newfs -F -s 10000 ffs.img * gcc -lrumpvfs -lrump -lrumpfs_ffs -lrumpuser -lrumpdev_disk -lrumpdev -pthread rump.c -g -O0 * * $ RUMP_NCPU=2 RUMP_VERBOSE=1 ./a.out [ 1.0000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, [ 1.0000000] 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, [ 1.0000000] 2018, 2019 The NetBSD Foundation, Inc. All rights reserved. [ 1.0000000] Copyright (c) 1982, 1986, 1989, 1991, 1993 [ 1.0000000] The Regents of the University of California. All rights reserved. [ 1.0000000] NetBSD 8.99.42 (RUMP-ROAST) [ 1.0000000] total memory = unlimited (host limit) [ 1.0000000] timecounter: Timecounters tick every 10.000 msec [ 1.0000080] timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0 [ 1.0000090] cpu0 at thinair0: rump virtual cpu [ 1.0000090] cpu1 at thinair0: rump virtual cpu [ 1.0000090] root file system type: rumpfs [ 1.0000090] kern.module.path=/stand/amd64/8.99.42/modules [ 1.0000090] mainbus0 (root) [ 1.0200090] /devdisk: hostpath ffs.img (5000 KB) [ 1.0200090] /devdisk: file system not clean (fs_clean=0x80); please fsck(8) [ 1.0200090] /devdisk: lost blocks 0 files 0 OK */ #include #include #include #include #include #include #include #include int main(int argc, char **argv) { if (rump_init() != 0) errx(1, "rump_init"); if (rump_pub_etfs_register("/devdisk", "ffs.img", RUMP_ETFS_BLK)) err(1, "rump_pub_etfs_register"); struct ufs_args args; args.fspec = __UNCONST("/devdisk"); if (rump_sys_mkdir("/mp", 0777) == -1) err(1, "rump_sys_mkdir"); errno = 0; if (rump_sys_mount(MOUNT_FFS, "/mp", 0, &args, sizeof(args)) == -1) err(1, "rump_sys_mount"); if (rump_sys_unmount("/mp", 0) == -1) err(1, "rump_sys_umount"); printf("OK\n"); return 0; }