Move the real kernel onto the cpio.flp and read this from the boot.flp

make debug handling with serial console obnoxious, but present.
This commit is contained in:
phk 1995-01-30 03:19:58 +00:00
parent de932de1a9
commit 5da6d72e0b
4 changed files with 79 additions and 76 deletions

View File

@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
* $Id: main.c,v 1.18 1994/12/27 23:26:51 jkh Exp $
* $Id: main.c,v 1.19 1995/01/29 02:31:35 phk Exp $
*
*/
@ -60,13 +60,9 @@ main(int argc, char **argv)
printf("sysinstall running as init\n\r");
ioctl(0,TIOCSCTTY,(char *)NULL);
setlogin("root");
debug_fd = open("/dev/ttyv1",O_WRONLY);
setbuf(stdin,0);
setbuf(stdout,0);
setbuf(stderr,0);
} else {
debug_fd = open("sysinstall.debug",
O_WRONLY|O_CREAT|O_TRUNC,0644);
}
if (set_termcap() == -1) {
Fatal("Can't find terminal entry\n");

View File

@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
* $Id: stage2.c,v 1.20 1994/12/27 23:26:56 jkh Exp $
* $Id: stage2.c,v 1.21 1995/01/14 10:31:21 jkh Exp $
*
*/
@ -89,9 +89,6 @@ stage2()
TellEm("unzipping /stand/sysinstall onto hard disk");
exec(4, "/stand/gzip", "zcat", 0 );
/*
CopyFile("/stand/sysinstall","/mnt/stand/sysinstall");
*/
Link("/mnt/stand/sysinstall","/mnt/stand/cpio");
Link("/mnt/stand/sysinstall","/mnt/stand/bad144");
Link("/mnt/stand/sysinstall","/mnt/stand/gunzip");
@ -125,7 +122,6 @@ stage2()
}
}
CopyFile("/kernel","/mnt/kernel");
TellEm("make /dev entries");
chdir("/mnt/dev");
makedevs();
@ -152,11 +148,76 @@ stage2()
fprintf(f1,"proc\t\t/proc\tprocfs rw 0 0\n");
fclose(f1);
#if 1
{
#include <sys/wait.h>
int ffd, pfd[2];
int zpid, cpid;
int i,j,k;
j = fork();
if (!j) {
chroot("/mnt");
chdir("/");
retry:
while (1) {
dialog_msgbox(TITLE,
"Insert CPIO floppy in floppy drive 0", -1, -1, 1);
ffd = open("/dev/rfd0",O_RDONLY);
if (ffd > 0)
break;
Debug("problems opening /dev/rfd0: %d",errno);
}
dialog_clear_norefresh();
TellEm("cd /stand ; gunzip < /dev/fd0 | cpio -idum");
pipe(pfd);
zpid = fork();
if (!zpid) {
close(0); dup(ffd); close(ffd);
close(1); dup(pfd[1]); close(pfd[1]);
close(pfd[0]);
i = exec (1,"/stand/gunzip","/stand/gunzip", 0);
exit(i);
}
cpid = fork();
if (!cpid) {
close(0); dup(pfd[0]); close(pfd[0]);
close(ffd);
close(pfd[1]);
close(1); open("/dev/null",O_WRONLY);
chdir("/stand");
i = exec (1,"/stand/cpio","/stand/cpio","-iduvm", 0);
exit(i);
}
close(pfd[0]);
close(pfd[1]);
close(ffd);
i = wait(&j);
if (i < 0 || j)
Fatal("Pid %d, status %d, cpio=%d, gunzip=%d.\nerror:%s",
i, j, cpid, zpid, strerror(errno));
i = wait(&j);
if (i < 0 || j)
Fatal("Pid %d, status %d, cpio=%d, gunzip=%d.\nerror:%s",
i, j, cpid, zpid, strerror(errno));
/* bininst.sh MUST be the last file on the floppy */
if (access("/stand/OK", R_OK) == -1) {
AskAbort("CPIO floppy was bad! Please check media for defects and retry.");
goto retry;
}
unlink("/stand/OK");
i = rename ("/stand/kernel","/kernel");
exit (i);
}
i = wait(&k);
Debug("chroot'er: %d %d %d",i,j,k);
}
#endif
sync();
TellEm("Make marker file");
i = open("/mnt/stand/need_cpio_floppy",O_CREAT|O_WRONLY|O_TRUNC);
close(i);
TellEm("Unmount disks");
for (j = 1; Fsize[j]; j++)
continue;

View File

@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
* $Id: stage4.c,v 1.11 1995/01/14 10:31:23 jkh Exp $
* $Id: stage4.c,v 1.12 1995/01/28 01:13:28 jkh Exp $
*
*/
@ -27,62 +27,4 @@
#include "sysinstall.h"
void
stage4()
{
int ffd, pfd[2];
int zpid, cpid;
int i,j;
if (access("/stand/need_cpio_floppy",R_OK))
return;
retry:
while (1) {
dialog_msgbox(TITLE,
"Insert CPIO floppy in floppy drive 0", -1, -1, 1);
ffd = open("/dev/fd0a",O_RDONLY);
if (ffd > 0)
break;
}
dialog_clear_norefresh();
TellEm("cd /stand ; gunzip < /dev/fd0 | cpio -idum");
pipe(pfd);
zpid = fork();
if (!zpid) {
close(0); dup(ffd); close(ffd);
close(1); dup(pfd[1]); close(pfd[1]);
close(pfd[0]);
i = exec (1,"/stand/gunzip","/stand/gunzip", 0);
exit(i);
}
cpid = fork();
if (!cpid) {
close(0); dup(pfd[0]); close(pfd[0]);
close(ffd);
close(pfd[1]);
close(1); open("/dev/null",O_WRONLY);
chdir("/stand");
i = exec (1,"/stand/cpio","/stand/cpio","-iduvm", 0);
exit(i);
}
close(pfd[0]);
close(pfd[1]);
close(ffd);
i = wait(&j);
if (i < 0 || j)
Fatal("Pid %d, status %d, cpio=%d, gunzip=%d.\nerror:%s",
i, j, cpid, zpid, strerror(errno));
i = wait(&j);
if (i < 0 || j)
Fatal("Pid %d, status %d, cpio=%d, gunzip=%d.\nerror:%s",
i, j, cpid, zpid, strerror(errno));
/* bininst.sh MUST be the last file on the floppy */
if (access("/stand/scripts/bininst.sh", R_OK) == -1) {
AskAbort("CPIO floppy was bad! Please check media for defects and retry.");
goto retry;
}
else {
TellEm("unlink /stand/need_cpio_floppy");
unlink("/stand/need_cpio_floppy");
}
}
stage4() { /* Obsolete */ }

View File

@ -38,19 +38,23 @@ set_termcap()
return -1;
if (setenv("TERMCAP", termcap_vt100, 1) < 0)
return -1;
debug_fd = dup(1);
} else if (color_display) {
if (setenv("TERM", "cons25", 1) < 0)
return -1;
if (setenv("TERMCAP", termcap_cons25, 1) < 0)
return -1;
debug_fd = open("/dev/ttyv1",O_WRONLY);
} else {
if (setenv("TERM", "cons25-m", 1) < 0)
return -1;
if (setenv("TERMCAP", termcap_cons25_m, 1) < 0)
return -1;
debug_fd = open("/dev/ttyv1",O_WRONLY);
}
} else {
debug_fd = open("sysinstall.debug",
O_WRONLY|O_CREAT|O_TRUNC,0644);
}
printf("TERM=%s\n",getenv("TERM"));
printf("TERMCAP=%s\n",getenv("TERMCAP"));
return 0;
}