32 lines
		
	
	
		
			460 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			460 B
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
newroot.c
 | 
						|
 | 
						|
Replace the current root with a new one
 | 
						|
*/
 | 
						|
 | 
						|
#include <errno.h>
 | 
						|
#include <stdio.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <string.h>
 | 
						|
#include <unistd.h>
 | 
						|
 | 
						|
int main(int argc, char *argv[])
 | 
						|
{
 | 
						|
	int r;
 | 
						|
	char *dev;
 | 
						|
 | 
						|
	if (argc != 2)
 | 
						|
	{
 | 
						|
		fprintf(stderr, "Usage: newroot <block-special>\n");
 | 
						|
		exit(1);
 | 
						|
	}
 | 
						|
	dev= argv[1];
 | 
						|
	r= mount(dev, "/", 0 /* !ro */);
 | 
						|
	if (r != 0)
 | 
						|
	{
 | 
						|
		fprintf(stderr, "newroot: mount failed: %s\n", strerror(errno));
 | 
						|
		exit(1);
 | 
						|
	}
 | 
						|
	return 0;
 | 
						|
}
 |