亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? build.c

?? LINUX1.0源代碼,代碼條理清晰
?? C
字號:
/*
 *  linux/tools/build.c
 *
 *  Copyright (C) 1991, 1992  Linus Torvalds
 */

/*
 * This file builds a disk-image from three different files:
 *
 * - bootsect: max 510 bytes of 8086 machine code, loads the rest
 * - setup: max 4 sectors of 8086 machine code, sets up system parm
 * - system: 80386 code for actual system
 *
 * It does some checking that all files are of the correct type, and
 * just writes the result to stdout, removing headers and padding to
 * the right amount. It also writes some system data to stderr.
 */

/*
 * Changes by tytso to allow root device specification
 */

#include <stdio.h>	/* fprintf */
#include <string.h>
#include <stdlib.h>	/* contains exit */
#include <sys/types.h>	/* unistd.h needs this */
#include <sys/stat.h>
#include <sys/sysmacros.h>
#include <unistd.h>	/* contains read/write */
#include <fcntl.h>
#include <linux/config.h>
#include <linux/a.out.h>

#define MINIX_HEADER 32
#define GCC_HEADER 1024

#define SYS_SIZE DEF_SYSSIZE

#define DEFAULT_MAJOR_ROOT 0
#define DEFAULT_MINOR_ROOT 0

/* max nr of sectors of setup: don't change unless you also change
 * bootsect etc */
#define SETUP_SECTS 4

#define STRINGIFY(x) #x

typedef union {
	long l;
	short s[2];
	char b[4];
} conv;

long intel_long(long l)
{
	conv t;

	t.b[0] = l & 0xff; l >>= 8;
	t.b[1] = l & 0xff; l >>= 8;
	t.b[2] = l & 0xff; l >>= 8;
	t.b[3] = l & 0xff; l >>= 8;
	return t.l;
}

short intel_short(short l)
{
	conv t;

	t.b[0] = l & 0xff; l >>= 8;
	t.b[1] = l & 0xff; l >>= 8;
	return t.s[0];
}

void die(char * str)
{
	fprintf(stderr,"%s\n",str);
	exit(1);
}

void usage(void)
{
	die("Usage: build bootsect setup system [rootdev] [> image]");
}

int main(int argc, char ** argv)
{
	int i,c,id, sz;
	unsigned long sys_size;
	char buf[1024];
	struct exec *ex = (struct exec *)buf;
	char major_root, minor_root;
	struct stat sb;

	if ((argc < 4) || (argc > 5))
		usage();
	if (argc > 4) {
		if (!strcmp(argv[4], "CURRENT")) {
			if (stat("/", &sb)) {
				perror("/");
				die("Couldn't stat /");
			}
			major_root = major(sb.st_dev);
			minor_root = minor(sb.st_dev);
		} else if (strcmp(argv[4], "FLOPPY")) {
			if (stat(argv[4], &sb)) {
				perror(argv[4]);
				die("Couldn't stat root device.");
			}
			major_root = major(sb.st_rdev);
			minor_root = minor(sb.st_rdev);
		} else {
			major_root = 0;
			minor_root = 0;
		}
	} else {
		major_root = DEFAULT_MAJOR_ROOT;
		minor_root = DEFAULT_MINOR_ROOT;
	}
	fprintf(stderr, "Root device is (%d, %d)\n", major_root, minor_root);
	for (i=0;i<sizeof buf; i++) buf[i]=0;
	if ((id=open(argv[1],O_RDONLY,0))<0)
		die("Unable to open 'boot'");
	if (read(id,buf,MINIX_HEADER) != MINIX_HEADER)
		die("Unable to read header of 'boot'");
	if (((long *) buf)[0]!=intel_long(0x04100301))
		die("Non-Minix header of 'boot'");
	if (((long *) buf)[1]!=intel_long(MINIX_HEADER))
		die("Non-Minix header of 'boot'");
	if (((long *) buf)[3] != 0)
		die("Illegal data segment in 'boot'");
	if (((long *) buf)[4] != 0)
		die("Illegal bss in 'boot'");
	if (((long *) buf)[5] != 0)
		die("Non-Minix header of 'boot'");
	if (((long *) buf)[7] != 0)
		die("Illegal symbol table in 'boot'");
	i=read(id,buf,sizeof buf);
	fprintf(stderr,"Boot sector %d bytes.\n",i);
	if (i != 512)
		die("Boot block must be exactly 512 bytes");
	if ((*(unsigned short *)(buf+510)) != (unsigned short)intel_short(0xAA55))
		die("Boot block hasn't got boot flag (0xAA55)");
	buf[508] = (char) minor_root;
	buf[509] = (char) major_root;	
	i=write(1,buf,512);
	if (i!=512)
		die("Write call failed");
	close (id);
	
	if ((id=open(argv[2],O_RDONLY,0))<0)
		die("Unable to open 'setup'");
	if (read(id,buf,MINIX_HEADER) != MINIX_HEADER)
		die("Unable to read header of 'setup'");
	if (((long *) buf)[0]!=intel_long(0x04100301))
		die("Non-Minix header of 'setup'");
	if (((long *) buf)[1]!=intel_long(MINIX_HEADER))
		die("Non-Minix header of 'setup'");
	if (((long *) buf)[3] != 0)
		die("Illegal data segment in 'setup'");
	if (((long *) buf)[4] != 0)
		die("Illegal bss in 'setup'");
	if (((long *) buf)[5] != 0)
		die("Non-Minix header of 'setup'");
	if (((long *) buf)[7] != 0)
		die("Illegal symbol table in 'setup'");
	for (i=0 ; (c=read(id,buf,sizeof buf))>0 ; i+=c )
		if (write(1,buf,c)!=c)
			die("Write call failed");
	if (c != 0)
		die("read-error on 'setup'");
	close (id);
	if (i > SETUP_SECTS*512)
		die("Setup exceeds " STRINGIFY(SETUP_SECTS)
			" sectors - rewrite build/boot/setup");
	fprintf(stderr,"Setup is %d bytes.\n",i);
	for (c=0 ; c<sizeof(buf) ; c++)
		buf[c] = '\0';
	while (i<SETUP_SECTS*512) {
		c = SETUP_SECTS*512-i;
		if (c > sizeof(buf))
			c = sizeof(buf);
		if (write(1,buf,c) != c)
			die("Write call failed");
		i += c;
	}
	
	if ((id=open(argv[3],O_RDONLY,0))<0)
		die("Unable to open 'system'");
	if (read(id,buf,GCC_HEADER) != GCC_HEADER)
		die("Unable to read header of 'system'");
	if (N_MAGIC(*ex) != ZMAGIC)
		die("Non-GCC header of 'system'");
	fprintf(stderr,"System is %d kB (%d kB code, %d kB data and %d kB bss)\n",
		(ex->a_text+ex->a_data+ex->a_bss)/1024,
		ex->a_text /1024,
		ex->a_data /1024,
		ex->a_bss  /1024);
	sz = N_SYMOFF(*ex) - GCC_HEADER + 4;
	sys_size = (sz + 15) / 16;
	if (sys_size > SYS_SIZE)
		die("System is too big");
	while (sz > 0) {
		int l, n;

		l = sz;
		if (l > sizeof(buf))
			l = sizeof(buf);
		if ((n=read(id, buf, l)) != l) {
			if (n == -1) 
				perror(argv[1]);
			else
				fprintf(stderr, "Unexpected EOF\n");
			die("Can't read 'system'");
		}
		if (write(1, buf, l) != l)
			die("Write failed");
		sz -= l;
	}
	close(id);
	if (lseek(1,500,0) == 500) {
		buf[0] = (sys_size & 0xff);
		buf[1] = ((sys_size >> 8) & 0xff);
		if (write(1, buf, 2) != 2)
			die("Write failed");
	}
	return(0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99在线精品视频| 午夜欧美视频在线观看 | 国内精品久久久久影院色| 亚洲精品国产精品乱码不99| 国产精品天干天干在线综合| 久久精品日产第一区二区三区高清版 | 麻豆国产欧美一区二区三区| 日韩av午夜在线观看| 日韩 欧美一区二区三区| 免费成人美女在线观看| 秋霞午夜鲁丝一区二区老狼| 久久国产精品99久久久久久老狼| 奇米影视一区二区三区| 国产中文一区二区三区| 成人精品电影在线观看| 在线观看成人免费视频| 欧美一区二区三区在线电影| 日韩欧美中文一区| 国产天堂亚洲国产碰碰| 亚洲天天做日日做天天谢日日欢| 亚洲黄色片在线观看| 日韩电影在线一区二区| 久久爱另类一区二区小说| 国产精品一区二区免费不卡| 成人国产精品免费观看动漫| 欧美系列亚洲系列| 欧美大片在线观看一区二区| 日本一区二区免费在线| 亚洲综合小说图片| 国产麻豆精品久久一二三| 91香蕉视频污| 精品理论电影在线观看| 亚洲天堂2014| 青椒成人免费视频| 91在线视频18| 欧美成人午夜电影| 亚洲欧美区自拍先锋| 老司机一区二区| 99久久精品费精品国产一区二区| 欧美日韩国产精品成人| 国产精品久久久久久久岛一牛影视| 亚洲国产成人tv| 成人精品国产免费网站| 日韩三级免费观看| 亚洲一区二区三区影院| 国产精品系列在线播放| 制服丝袜av成人在线看| 国产精品色噜噜| 精品综合久久久久久8888| 日本久久一区二区| 欧美国产精品劲爆| 久久精品国产久精国产| 在线观看日韩高清av| 亚洲国产精品成人综合色在线婷婷| 日韩主播视频在线| 一本大道久久a久久精二百 | 成人免费在线视频| 国产在线不卡视频| 欧美一区二区三区小说| 亚洲国产日韩综合久久精品| 99视频有精品| 欧美激情综合五月色丁香小说| 免费av成人在线| 欧美老肥妇做.爰bbww视频| 亚洲视频你懂的| 成人av电影免费观看| 中文字幕不卡在线播放| 国产精品一区二区x88av| 日韩欧美国产综合| 天天操天天干天天综合网| 91福利精品视频| 亚洲视频精选在线| 99麻豆久久久国产精品免费 | 97se狠狠狠综合亚洲狠狠| 国产日韩高清在线| 国产一区二区三区在线观看免费| 精品久久一二三区| 黄色资源网久久资源365| 精品少妇一区二区三区在线播放| 日韩国产在线观看| 欧美大片在线观看一区二区| 激情综合亚洲精品| 国产午夜三级一区二区三| 高清av一区二区| 国产精品美女www爽爽爽| 99在线精品一区二区三区| 亚洲激情六月丁香| 精品视频在线看| 麻豆国产91在线播放| 久久久影视传媒| 国产超碰在线一区| 日韩伦理av电影| 欧美日韩视频在线一区二区| 美女看a上一区| 久久久亚洲国产美女国产盗摄| 成人精品国产免费网站| 亚洲激情成人在线| 欧美videos大乳护士334| 丰满放荡岳乱妇91ww| 亚洲一区二区三区视频在线| 欧美一区二区精品| 成人在线视频一区二区| 亚洲一区二区欧美激情| 精品国产污污免费网站入口| www..com久久爱| 免费成人av在线播放| 国产精品系列在线| 欧美三级蜜桃2在线观看| 精品一区二区精品| 亚洲靠逼com| 久久嫩草精品久久久久| 日本高清成人免费播放| 黑人巨大精品欧美黑白配亚洲| 国产精品国产a级| 欧美一区二区视频在线观看2020| 成人av在线资源网| 久久精品久久久精品美女| 自拍偷拍欧美精品| 久久伊人蜜桃av一区二区| 91蜜桃在线免费视频| 国产一区二区三区香蕉| 亚洲成av人影院| 国产精品久久久久久妇女6080| 91麻豆精品国产91久久久| 91色婷婷久久久久合中文| 国产老女人精品毛片久久| 亚洲成人三级小说| 亚洲色图另类专区| 久久久久国产精品厨房| 日韩亚洲欧美综合| 欧美日韩亚洲国产综合| 99久久国产综合精品色伊 | 不卡的av在线播放| 精品亚洲欧美一区| 日本vs亚洲vs韩国一区三区二区| 亚洲免费观看高清| 亚洲少妇30p| 国产精品福利一区| 国产精品免费丝袜| 国产亚洲婷婷免费| 久久蜜桃av一区精品变态类天堂| 日韩亚洲欧美在线观看| 777亚洲妇女| 欧美一级日韩免费不卡| 欧美三级在线看| 欧美色网站导航| 91视频免费播放| 色综合欧美在线| 99国产精品国产精品久久| 成人国产电影网| 99精品桃花视频在线观看| 99天天综合性| 色狠狠色噜噜噜综合网| 91国偷自产一区二区三区观看| 91蝌蚪porny九色| 91小视频免费看| 欧美日韩亚洲国产综合| 欧美一区二区在线观看| 欧美一区二区黄| 久久久精品免费免费| 国产人成亚洲第一网站在线播放 | 欧美日韩在线免费视频| 欧美丝袜丝交足nylons| 5月丁香婷婷综合| 日韩免费看的电影| 国产亚洲福利社区一区| 国产精品美女久久久久av爽李琼| 最新欧美精品一区二区三区| 一区二区三区影院| 日本sm残虐另类| 国产成人在线视频播放| 91在线国产福利| 91精品国产综合久久精品图片 | 欧美日韩激情一区二区| 91精品国产一区二区三区蜜臀 | 亚洲精品菠萝久久久久久久| 亚洲大片精品永久免费| 美女尤物国产一区| 粉嫩高潮美女一区二区三区| 欧美性做爰猛烈叫床潮| 精品国产一区二区国模嫣然| 国产精品美女久久久久av爽李琼 | 久久综合国产精品| 国产精品福利影院| 日韩精品成人一区二区在线| 国产精品资源网| 欧美色涩在线第一页| 国产色产综合色产在线视频| 亚洲综合色视频| 国产一区二区网址| 欧美日韩高清影院| 国产精品免费视频一区| 蜜桃传媒麻豆第一区在线观看| 国产裸体歌舞团一区二区| 欧美性受xxxx黑人xyx性爽| 欧美一级日韩免费不卡| 亚洲免费视频中文字幕| 韩国在线一区二区| 欧美一区在线视频| 亚洲激情综合网|