feat(tools): dump partition table
This commit is contained in:
parent
e7f75acb13
commit
e5fa803eb0
|
@ -1,10 +1,15 @@
|
||||||
TARGET = boot_floppy1440.bin \
|
TARGET = boot_floppy1440.bin \
|
||||||
boot_floppy2880.bin
|
boot_floppy2880.bin \
|
||||||
|
boot_mbr.bin
|
||||||
|
|
||||||
FLOPPY_SRCS = floppy.asm \
|
FLOPPY_SRCS = floppy.asm \
|
||||||
../common/const.inc \
|
../common/const.inc \
|
||||||
../common/fat12.inc
|
../common/fat12.inc
|
||||||
|
|
||||||
|
MBR_SRCS = mbr.asm \
|
||||||
|
../common/const.inc \
|
||||||
|
../common/fat12.inc
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: $(TARGET)
|
all: $(TARGET)
|
||||||
|
|
||||||
|
@ -14,6 +19,9 @@ boot_floppy1440.bin: $(FLOPPY_SRCS)
|
||||||
boot_floppy2880.bin: $(FLOPPY_SRCS)
|
boot_floppy2880.bin: $(FLOPPY_SRCS)
|
||||||
$(AS) -DFLOPPY_SIZE=FLOPPY_2880 floppy.asm $@
|
$(AS) -DFLOPPY_SIZE=FLOPPY_2880 floppy.asm $@
|
||||||
|
|
||||||
|
boot_mbr.bin: $(MBR_SRCS)
|
||||||
|
$(AS) mbr.asm $@
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
$(RM) $(TARGET)
|
$(RM) $(TARGET)
|
||||||
|
|
|
@ -70,11 +70,6 @@ _start:
|
||||||
|
|
||||||
; search in root directory
|
; search in root directory
|
||||||
|
|
||||||
mov si, kernel_file
|
|
||||||
call fat_search_root
|
|
||||||
jc .error_not_found
|
|
||||||
mov [kernel_start], ax
|
|
||||||
|
|
||||||
mov si, stage1_file
|
mov si, stage1_file
|
||||||
call fat_search_root
|
call fat_search_root
|
||||||
jc .error_not_found
|
jc .error_not_found
|
||||||
|
@ -91,13 +86,6 @@ _start:
|
||||||
|
|
||||||
call disk_read_sectors
|
call disk_read_sectors
|
||||||
|
|
||||||
; preload kernel
|
|
||||||
mov ax, KERNEL_PRELOAD/0x10
|
|
||||||
mov es, ax
|
|
||||||
mov ax, [kernel_start]
|
|
||||||
xor bx, bx
|
|
||||||
call fat_load_binary
|
|
||||||
|
|
||||||
; load stage 2
|
; load stage 2
|
||||||
mov ax, LOADER_BASE/0x10
|
mov ax, LOADER_BASE/0x10
|
||||||
mov es, ax
|
mov es, ax
|
||||||
|
@ -124,10 +112,8 @@ _start:
|
||||||
msg_error db "ERROR: ", 0
|
msg_error db "ERROR: ", 0
|
||||||
msg_not_found db " not found", CR, LF, 0
|
msg_not_found db " not found", CR, LF, 0
|
||||||
|
|
||||||
kernel_file db "VMSTUPIDSYS", 0
|
|
||||||
stage1_file db "STPDLDR SYS", 0
|
stage1_file db "STPDLDR SYS", 0
|
||||||
|
|
||||||
kernel_start dw 0x0
|
|
||||||
stage1_start dw 0x0
|
stage1_start dw 0x0
|
||||||
|
|
||||||
|
|
||||||
|
|
32
boot/bootsect/mbr.asm
Normal file
32
boot/bootsect/mbr.asm
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
format binary
|
||||||
|
use16
|
||||||
|
|
||||||
|
include '../common/const.inc'
|
||||||
|
include '../common/macro.inc'
|
||||||
|
|
||||||
|
org MBR_BASE
|
||||||
|
cli
|
||||||
|
xor ax, ax
|
||||||
|
mov ds, ax
|
||||||
|
mov es, ax
|
||||||
|
mov ss, ax
|
||||||
|
mov sp, ax
|
||||||
|
cld
|
||||||
|
; relocate from 0x7C00 to 0x0600
|
||||||
|
mov cx, 0x0100
|
||||||
|
mov si, BOOTSECT_BASE
|
||||||
|
mov di, MBR_BASE
|
||||||
|
rep movsw
|
||||||
|
jmp 0x0:start
|
||||||
|
start:
|
||||||
|
; TODO: read partition table and load bootable one.
|
||||||
|
|
||||||
|
times 436-($-$$) db 0x90
|
||||||
|
UID db 'STUPIDDISK'
|
||||||
|
; partition table
|
||||||
|
PT1 db 16 dup(0)
|
||||||
|
PT2 db 16 dup(0)
|
||||||
|
PT3 db 16 dup(0)
|
||||||
|
PT4 db 16 dup(0)
|
||||||
|
; magic
|
||||||
|
db 0x55, 0xAA
|
|
@ -2,6 +2,7 @@ CR = 0x0D
|
||||||
LF = 0x0A
|
LF = 0x0A
|
||||||
|
|
||||||
; -------- Address ----------
|
; -------- Address ----------
|
||||||
|
MBR_BASE = 0x0600
|
||||||
BOOTSECT_BASE = 0x7C00
|
BOOTSECT_BASE = 0x7C00
|
||||||
LOADER_BASE = 0x1000
|
LOADER_BASE = 0x1000
|
||||||
MULTIBOOT_BASE = 0x100000
|
MULTIBOOT_BASE = 0x100000
|
||||||
|
|
|
@ -139,6 +139,7 @@ defn EFI_SYSTEM_TABLE
|
||||||
EFI_BOOT_SERVICES_SIGNATURE = 0x56524553544f4f42
|
EFI_BOOT_SERVICES_SIGNATURE = 0x56524553544f4f42
|
||||||
EFI_BOOT_SERVICES_REVISION = EFI_SPECIFICATION_VERSION
|
EFI_BOOT_SERVICES_REVISION = EFI_SPECIFICATION_VERSION
|
||||||
|
|
||||||
|
;; Struct: EFI_BOOT_SERVICES
|
||||||
struc EFI_BOOT_SERVICES
|
struc EFI_BOOT_SERVICES
|
||||||
{
|
{
|
||||||
.Hdr EFI_TABLE_HEADER
|
.Hdr EFI_TABLE_HEADER
|
||||||
|
@ -150,6 +151,7 @@ struc EFI_BOOT_SERVICES
|
||||||
EFI_RUNTIMES_SERVICES_SIGNATURE = 0x56524553544e5552
|
EFI_RUNTIMES_SERVICES_SIGNATURE = 0x56524553544e5552
|
||||||
EFI_RUNTIMES_SERVICES_REVISION = EFI_SPECIFICATION_VERSION
|
EFI_RUNTIMES_SERVICES_REVISION = EFI_SPECIFICATION_VERSION
|
||||||
|
|
||||||
|
;; Struct: EFI_RUNTIMES_SERVICES
|
||||||
struc EFI_RUNTIMES_SERVICES
|
struc EFI_RUNTIMES_SERVICES
|
||||||
{
|
{
|
||||||
.Hdr EFI_TABLE_HEADER
|
.Hdr EFI_TABLE_HEADER
|
||||||
|
@ -161,6 +163,7 @@ struc EFI_RUNTIMES_SERVICES
|
||||||
EFI_LOADED_IMAGE_PROTOCOL_GUID equ 0x5B1B31A1, 0x9562, 0x11d2, 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3D
|
EFI_LOADED_IMAGE_PROTOCOL_GUID equ 0x5B1B31A1, 0x9562, 0x11d2, 0x8E, 0x3F, 0x00, 0xA0, 0xC9, 0x69, 0x72, 0x3D
|
||||||
EFI_LOADED_IMAGE_PROTOCOL_REVISION = 0x1000
|
EFI_LOADED_IMAGE_PROTOCOL_REVISION = 0x1000
|
||||||
|
|
||||||
|
;; Struct: EFI_LOADED_IMAGE_PROTOCOL
|
||||||
struc EFI_LOADED_IMAGE_PROTOCOL
|
struc EFI_LOADED_IMAGE_PROTOCOL
|
||||||
{
|
{
|
||||||
.Revision UINT32
|
.Revision UINT32
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
format binary
|
format binary
|
||||||
|
|
||||||
include '../common/const.inc'
|
include '../common/const.inc'
|
||||||
|
include '../common/macro.inc'
|
||||||
include 'multiboot.inc'
|
include 'multiboot.inc'
|
||||||
|
|
||||||
org LOADER_BASE
|
org LOADER_BASE
|
||||||
|
@ -75,9 +76,10 @@ _start:
|
||||||
include 'video.inc'
|
include 'video.inc'
|
||||||
include 'gdt.inc'
|
include 'gdt.inc'
|
||||||
|
|
||||||
msg_stage2 db "StupidOS Loader", CR, LF, 0
|
msg_stage2 db "StupidOS Loader", CR, LF, 0
|
||||||
msg_error_a20 db "ERROR: can't enable a20 line", CR, LF, 0
|
kernel_fat12_file db "VMSTUPIDSYS", 0
|
||||||
msg_error_memory db "ERROR: can't detect available memory", CR, LF, 0
|
msg_error_a20 db "ERROR: can't enable a20 line", CR, LF, 0
|
||||||
|
msg_error_memory db "ERROR: can't detect available memory", CR, LF, 0
|
||||||
|
|
||||||
use32
|
use32
|
||||||
; =========================================================================
|
; =========================================================================
|
||||||
|
|
|
@ -1,28 +1,78 @@
|
||||||
|
;; File: memory.inc
|
||||||
|
;; Detect available memory
|
||||||
|
;;
|
||||||
|
|
||||||
; 0xE820 Get System Memory Map
|
;; Constants: Address type
|
||||||
; EAX=0x0000E820
|
;;
|
||||||
; EDX=0x534D4150
|
;; See <AddressRange.Type>
|
||||||
; EBX=0x0 or continuation value
|
;;
|
||||||
; ECX=buffer size
|
;; ADDRESS_RANGE_MEMORY - Available and usable RAM.
|
||||||
; ES:SI = buffer
|
;; ADDRESS_RANGE_RESERVED - Reserved or in use.
|
||||||
memory_do_E820:
|
ADDRESS_RANGE_MEMORY = 1
|
||||||
|
ADDRESS_RANGE_RESERVED = 2
|
||||||
|
|
||||||
ret
|
;; Struct: AddressRange
|
||||||
|
struc AddressRange
|
||||||
|
{
|
||||||
|
;; Variable: BaseAddrLow
|
||||||
|
;; Low 32 Bits of Base Address
|
||||||
|
.BaseAddrLow dd ?
|
||||||
|
;; Variable: BaseAddrHigh
|
||||||
|
;; High 32 Bits of Base Address
|
||||||
|
.BaseAddrHigh dd ?
|
||||||
|
;; Variable: LengthLow
|
||||||
|
;; Low 32 Bits of Length in Bytes
|
||||||
|
.LengthLow dd ?
|
||||||
|
;; Variable: LengthHigh
|
||||||
|
;; High 32 Bits of Length in Bytes
|
||||||
|
.LengthHigh dd ?
|
||||||
|
;; Variable: Type
|
||||||
|
;; Address type of this range. <Address type>
|
||||||
|
.Type db ?
|
||||||
|
}
|
||||||
|
defn AddressRange
|
||||||
|
|
||||||
|
;; Function: memory_e820_get_mmap_entry
|
||||||
|
;;
|
||||||
|
;; In:
|
||||||
|
;; EAX - Function code
|
||||||
|
;; EBX - Continuation
|
||||||
|
;; ES:DI - Buffer Pointer
|
||||||
|
;; ECX - Buffer size
|
||||||
|
;; EDX - Signature 'SMAP'
|
||||||
|
;;
|
||||||
|
;; Out:
|
||||||
|
;; CF - Carry Flag
|
||||||
|
;; EAX - Signature 'SMAP'
|
||||||
|
;; ES:DI - Buffer Pointer
|
||||||
|
;; ECX - Buffer Size
|
||||||
|
;; EBX - Continuation
|
||||||
|
memory_e820_get_map:
|
||||||
|
mov eax, 0xE820
|
||||||
|
mov ebx, 0x0
|
||||||
|
mov ecx, 'SMAP'
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
;; Function: memory_get_for_large_conf
|
||||||
|
;;
|
||||||
|
;; In:
|
||||||
|
;; AX - Function code E801h
|
||||||
|
;;
|
||||||
|
;; Out:
|
||||||
|
;; CF - Non-Carry - indicates no error
|
||||||
|
;; AX - Extended 1
|
||||||
|
;; BX - Extended 2
|
||||||
|
;; CX - Configured 1
|
||||||
|
;; DX - Configured 2
|
||||||
|
|
||||||
|
;; Function: memory_get_extended_memory_size
|
||||||
|
;;
|
||||||
|
;; In:
|
||||||
|
;; AH - Function code 88h
|
||||||
|
;;
|
||||||
|
;; Out:
|
||||||
|
;; CF - Non-Carry - indicates no error
|
||||||
|
;; AX - Number of contiguous KB above 1MB
|
||||||
memory_get_map:
|
memory_get_map:
|
||||||
call memory_do_E820
|
ret
|
||||||
jnc .end
|
|
||||||
|
|
||||||
; try 0x88
|
|
||||||
clc
|
|
||||||
mov ah, 0x88
|
|
||||||
int 0x15
|
|
||||||
jc .error
|
|
||||||
test ax, ax
|
|
||||||
je .error
|
|
||||||
.end:
|
|
||||||
clc
|
|
||||||
ret
|
|
||||||
.error:
|
|
||||||
stc
|
|
||||||
ret
|
|
||||||
|
|
|
@ -1,2 +1,62 @@
|
||||||
|
struc VesaInfo
|
||||||
|
{
|
||||||
|
.Signature dd ?
|
||||||
|
.Version dw ?
|
||||||
|
.OEMNamePtr dd ?
|
||||||
|
.Capabilities dd ?
|
||||||
|
.VideoModesOffset dw ?
|
||||||
|
.VideoModesSegment dw ?
|
||||||
|
.CountOf64KBlocks dw ?
|
||||||
|
.OEMSoftwareRevision dw ?
|
||||||
|
.OEMVendorNamePtr dd ?
|
||||||
|
.OEMProductNamePtr dd ?
|
||||||
|
.OEMProductRevisionPtr dd ?
|
||||||
|
.Reserved db 222 dup(?)
|
||||||
|
.OEMData db 256 dup(?)
|
||||||
|
}
|
||||||
|
|
||||||
|
struc VesaModeInfo
|
||||||
|
{
|
||||||
|
.ModeAttributes dw ?
|
||||||
|
.WindowAAttributes db ?
|
||||||
|
.WindowBAttributes db ?
|
||||||
|
.WindowGranularity dw ?
|
||||||
|
.WindowSize dw ?
|
||||||
|
.SegmentWindowA dw ?
|
||||||
|
.SegmentWindowB dw ?
|
||||||
|
.WindowPositioning dd ?
|
||||||
|
.BytesPerScanLine dw ?
|
||||||
|
|
||||||
|
; --
|
||||||
|
.Width dw ?
|
||||||
|
.Height dw ?
|
||||||
|
.WidthChar db ?
|
||||||
|
.HeightChar db ?
|
||||||
|
.PlanesCount db ?
|
||||||
|
.BitsPerPixel db ?
|
||||||
|
.BanksCount db ?
|
||||||
|
.MemoryModel db ?
|
||||||
|
.BankSize db ?
|
||||||
|
.ImagePagesCount db ?
|
||||||
|
.Reserved db ?
|
||||||
|
|
||||||
|
.RedMaskSize db ?
|
||||||
|
.RedFieldPosition db ?
|
||||||
|
.GreenMaskSize db ?
|
||||||
|
.GreenFieldPosition db ?
|
||||||
|
.BlueMaskSize db ?
|
||||||
|
.BlueFieldPosition db ?
|
||||||
|
.ReservedMaskSize db ?
|
||||||
|
.ReservedMaskPosition db ?
|
||||||
|
.DirectColorModeInfo db ?
|
||||||
|
|
||||||
|
; -- VBE v1.2+
|
||||||
|
.Framebuffer dd ?
|
||||||
|
.OffScreenMemoryOffset dd ?
|
||||||
|
.OffScreenMemorySize dd ?
|
||||||
|
.Reserved2 db 206 dup(?)
|
||||||
|
}
|
||||||
|
defn VesaModeInfo
|
||||||
|
|
||||||
video_setup:
|
video_setup:
|
||||||
ret
|
ret
|
||||||
|
|
8
include/fs/echfs.h
Normal file
8
include/fs/echfs.h
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#ifndef ECHFS_H
|
||||||
|
# define ECHFS_H 1
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
|
||||||
|
} EchFSIdentityTable;
|
||||||
|
|
||||||
|
#endif /* !ECHFS_H */
|
0
include/fs/fat12.h
Normal file
0
include/fs/fat12.h
Normal file
16
sbin/parted/Makefile
Normal file
16
sbin/parted/Makefile
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
TARGET = parted
|
||||||
|
SRCS = main.c
|
||||||
|
OBJS = $(SRCS:.c=.o)
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
|
all: $(TARGET)
|
||||||
|
|
||||||
|
$(TARGET): $(OBJS)
|
||||||
|
$(CC) -o $@ $^ $(LDFLAGS)
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
$(RM) $(TARGET) $(OBJS)
|
||||||
|
|
||||||
|
.PHONY: install
|
||||||
|
install: $(TARGET)
|
157
sbin/parted/main.c
Normal file
157
sbin/parted/main.c
Normal file
|
@ -0,0 +1,157 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define MBR_MAGIC0 0x55
|
||||||
|
#define MBR_MAGIC1 0xAA
|
||||||
|
|
||||||
|
#define MBR_PART_BOOTABLE (1 << 7)
|
||||||
|
|
||||||
|
enum {
|
||||||
|
MBR_PART_TYPE_EMPTY = 0x00,
|
||||||
|
MBR_PART_TYPE_FAT12 = 0x01,
|
||||||
|
MBR_PART_TYPE_FAT16 = 0x04,
|
||||||
|
MBR_PART_TYPE_GPT_PROTECTIVE = 0xEE,
|
||||||
|
MBR_PART_TYPE_EFI = 0xEF
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct partition {
|
||||||
|
uint8_t attributes;
|
||||||
|
uint8_t chs_start[3];
|
||||||
|
uint8_t type;
|
||||||
|
uint8_t chs_last_sector[3];
|
||||||
|
uint32_t lba_start;
|
||||||
|
uint32_t sectors_count;
|
||||||
|
} __attribute__((packed)) Partition;
|
||||||
|
|
||||||
|
typedef struct mbr_header {
|
||||||
|
uint8_t raw[436];
|
||||||
|
uint8_t uid[10];
|
||||||
|
struct partition part[4];
|
||||||
|
uint8_t magic[2];
|
||||||
|
} __attribute__((packed)) MBRHeader;
|
||||||
|
|
||||||
|
static char *prg_name = NULL;
|
||||||
|
static int dump_info = 0;
|
||||||
|
static const char *diskpath = NULL;
|
||||||
|
static FILE *diskfd = NULL;
|
||||||
|
static MBRHeader header;
|
||||||
|
|
||||||
|
static void
|
||||||
|
dump_partition_info(Partition part)
|
||||||
|
{
|
||||||
|
printf("\tBootable: ");
|
||||||
|
if (part.attributes & MBR_PART_BOOTABLE)
|
||||||
|
{
|
||||||
|
printf("yes\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("no\n");
|
||||||
|
}
|
||||||
|
printf("\tType: %d\n", part.type);
|
||||||
|
printf("\tLBA Start: %d\n", part.lba_start);
|
||||||
|
printf("\tSectors: %d\n", part.sectors_count);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dump_disk(void)
|
||||||
|
{
|
||||||
|
int idx;
|
||||||
|
|
||||||
|
printf("UID: ");
|
||||||
|
for (idx = 0; idx < 10; idx++)
|
||||||
|
{
|
||||||
|
printf("%02X", header.uid[idx]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
for (idx = 0; idx < 4; idx++)
|
||||||
|
{
|
||||||
|
printf("Partition %d:\n", idx);
|
||||||
|
dump_partition_info(header.part[idx]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
usage(int retcode)
|
||||||
|
{
|
||||||
|
if (retcode == EXIT_FAILURE)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Try '%s -h' for more information.\n", prg_name);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Usage: %s [-hVd] disk\n", prg_name);
|
||||||
|
printf("\t-h\tdisplay this help and exit\n");
|
||||||
|
printf("\t-V\toutput version information.\n");
|
||||||
|
printf("\t-d\tdump disk information\n");
|
||||||
|
printf("\t-o out\twrite to file 'out'\n");
|
||||||
|
printf("\nReport bugs to <%s>\n", MK_BUGREPORT);
|
||||||
|
}
|
||||||
|
|
||||||
|
exit(retcode);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
version(void)
|
||||||
|
{
|
||||||
|
printf("%s commit %s\n", prg_name, MK_COMMIT);
|
||||||
|
exit(EXIT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
prg_name = argv[0];
|
||||||
|
|
||||||
|
while ((argc > 1) && (argv[1][0] == '-'))
|
||||||
|
{
|
||||||
|
switch (argv[1][1])
|
||||||
|
{
|
||||||
|
case 'h':
|
||||||
|
usage(EXIT_SUCCESS);
|
||||||
|
break;
|
||||||
|
case 'V':
|
||||||
|
version();
|
||||||
|
break;
|
||||||
|
case 'd':
|
||||||
|
dump_info = 1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
usage(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
argv++;
|
||||||
|
argc--;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc <= 1) usage(EXIT_FAILURE);
|
||||||
|
|
||||||
|
diskpath = argv[1];
|
||||||
|
diskfd = fopen(diskpath, "rb");
|
||||||
|
if (diskfd == NULL)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s: %s\n", diskpath, strerror(errno));
|
||||||
|
return (EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fread(&header, sizeof(uint8_t), sizeof(MBRHeader), diskfd) != sizeof(MBRHeader))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s: can't read mbr header\n", diskpath);
|
||||||
|
return (EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
if (header.magic[0] != MBR_MAGIC0 || header.magic[1] != MBR_MAGIC1)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s: no valid MBR\n", diskpath);
|
||||||
|
return (EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dump_info)
|
||||||
|
{
|
||||||
|
dump_disk();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (EXIT_SUCCESS);
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
CC = gcc
|
CC = gcc
|
||||||
RM = rm -f
|
RM = rm -f
|
||||||
|
|
||||||
TARGET = fat$(EXEXT) coff-ld$(EXEXT)
|
TARGET = fat$(EXEXT) coff-ld$(EXEXT) parted$(EXEXT)
|
||||||
|
|
||||||
CFLAGS = -DMK_COMMIT="$(MK_COMMIT)" -DMK_BUGREPORT="$(MK_BUGREPORT)" -I../include
|
CFLAGS = -DMK_COMMIT="$(MK_COMMIT)" -DMK_BUGREPORT="$(MK_BUGREPORT)" -I../include
|
||||||
LDFLAGS =
|
LDFLAGS =
|
||||||
|
@ -15,6 +15,9 @@ fat$(EXEXT): fat.c
|
||||||
coff-ld$(EXEXT): coff-ld.c
|
coff-ld$(EXEXT): coff-ld.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
|
||||||
|
|
||||||
|
parted$(EXEXT): ../sbin/parted/main.c
|
||||||
|
$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
|
||||||
|
|
||||||
.PHONY: install
|
.PHONY: install
|
||||||
install: $(TARGET)
|
install: $(TARGET)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue