2011-03-30 12:46:40 +00:00
|
|
|
#include <u.h>
|
|
|
|
#include <libc.h>
|
2021-07-27 18:21:08 +00:00
|
|
|
|
|
|
|
char bin[] = "/bin";
|
|
|
|
char root[] = "/root";
|
2011-03-30 12:46:40 +00:00
|
|
|
|
|
|
|
void
|
2021-07-27 18:21:08 +00:00
|
|
|
main(int, char *argv[])
|
2011-03-30 12:46:40 +00:00
|
|
|
{
|
2011-06-04 05:19:29 +00:00
|
|
|
char buf[32];
|
2011-03-30 12:46:40 +00:00
|
|
|
|
2021-07-27 18:21:08 +00:00
|
|
|
/* setup the boot namespace */
|
|
|
|
bind("/boot", bin, MAFTER);
|
2011-06-04 08:07:21 +00:00
|
|
|
|
2021-07-27 18:21:08 +00:00
|
|
|
if(fork() == 0){
|
|
|
|
execl("/bin/paqfs", "-qa", "-c", "8", "-m", root, "/boot/bootfs.paq", nil);
|
|
|
|
goto Err;
|
2011-04-16 20:42:16 +00:00
|
|
|
}
|
2021-07-27 18:21:08 +00:00
|
|
|
if(await(buf, sizeof(buf)) < 0)
|
|
|
|
goto Err;
|
2011-03-30 12:46:40 +00:00
|
|
|
|
2021-07-27 18:21:08 +00:00
|
|
|
bind(root, "/", MAFTER);
|
|
|
|
|
|
|
|
buf[0] = '/';
|
2021-07-28 22:55:17 +00:00
|
|
|
buf[1+read(open("/env/cputype", OREAD|OCEXEC), buf+1, sizeof buf - 6)] = '\0';
|
2021-07-27 18:21:08 +00:00
|
|
|
strcat(buf, bin);
|
|
|
|
bind(buf, bin, MAFTER);
|
|
|
|
bind("/rc/bin", bin, MAFTER);
|
2011-06-04 08:07:21 +00:00
|
|
|
|
2011-06-14 19:03:03 +00:00
|
|
|
exec("/bin/bootrc", argv);
|
2021-07-27 18:21:08 +00:00
|
|
|
Err:
|
|
|
|
errstr(buf, sizeof buf);
|
|
|
|
_exits(buf);
|
2011-03-30 12:46:40 +00:00
|
|
|
}
|