Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 8090 → Rev 8091

/data/Tupfile.lua
790,7 → 790,6
 
-- generate tup rule for kolibri.img
tup.definerule{inputs = input_deps, command = make_img_command, outputs = output_deps}
tup.definerule{inputs = {"../kernel/trunk/boot/uefi4kos.asm", "kolibri.img", "../kernel/trunk/kernel.bin"}, command = "fasm ../kernel/trunk/boot/uefi4kos.asm %o", outputs = {"kolibri.efi"}}
 
-- generate command and dependencies for mkisofs
input_deps = {"kolibri.img"}
822,3 → 821,40
else tup.definerule{inputs = {v.group or v[2]}, command = cmd, outputs = {"distribution_kit/" .. v[1]}}
end
end
 
 
-- generate tup rule for kolibri.efi
tup.definerule{inputs = {"../kernel/trunk/boot/uefi4kos.asm", "kolibri.img", "../kernel/trunk/kernel.bin.ext_loader"},
command = "fasm -dUEFI=1 -dextended_primary_loader=1 ../kernel/trunk/boot/uefi4kos.asm %o",
outputs = {"kolibri.efi"}}
 
input_deps = {"kolibri.img", "../kernel/trunk/bootloader/extended_primary_loader/fat32/kordldr.f32.bin", "../kernel/trunk/bootloader/extended_primary_loader/fat32/bootsect.bin", "../kernel/trunk/kernel.mnt.ext_loader"}
make_raw_command = '^ MKIMG kolibri.raw^ ' -- for tup: don't write full command to logs
make_raw_command = make_raw_command .. "dd if=/dev/zero of=kolibri.raw bs=1048576 count=64 2>&1"
make_raw_command = make_raw_command .. " && parted --script kolibri.raw mktable msdos"
make_raw_command = make_raw_command .. " && parted --script kolibri.raw unit MiB mkpart primary fat32 1 100%%"
make_raw_command = make_raw_command .. " && parted --script kolibri.raw set 1 boot on"
bootsector = "../kernel/trunk/bootloader/extended_primary_loader/fat32/bootsect.bin"
make_raw_command = make_raw_command .. " && mformat -i kolibri.raw@@1M -v KOLIBRIOS -T 129024 -h 16 -s 32 -H 2048 -c 1 -F -B " .. bootsector .. " ::"
make_raw_command = make_raw_command .. " && mcopy -moi kolibri.raw@@1M ../kernel/trunk/kernel.mnt.ext_loader ::KERNEL.MNT"
make_raw_command = make_raw_command .. " && mcopy -moi kolibri.raw@@1M kolibri.img ::KOLIBRI.IMG"
make_raw_command = make_raw_command .. " && mcopy -moi kolibri.raw@@1M ../kernel/trunk/bootloader/extended_primary_loader/fat32/kordldr.f32.bin ::KORDLDR.F32"
make_raw_command = make_raw_command .. " && mcopy -moi kolibri.raw@@1M ../kernel/trunk/bootloader/extended_primary_loader/config.ini ::CONFIG.INI"
 
make_raw_command = make_raw_command .. ' && mmd -i kolibri.raw@@1M ::KOLIBRIOS'
 
-- make folders
table.sort(img_dirs)
for i,v in ipairs(img_dirs) do
if v ~= img_dirs[i-1] then
make_raw_command = make_raw_command .. ' && mmd -i kolibri.raw@@1M "::KOLIBRIOS/' .. v .. '"'
end
end
 
for i,v in ipairs(img_files) do
local_file = v[2]
make_raw_command = make_raw_command .. ' && mcopy -moi kolibri.raw@@1M "' .. local_file .. '" "::KOLIBRIOS/' .. v[1] .. '"'
end
 
-- generate tup rule for kolibri.raw
tup.definerule{inputs = input_deps, command = make_raw_command, outputs = {"kolibri.raw"}}
/kernel/trunk/Tupfile.lua
1,5 → 1,7
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > %o", {"lang.inc"})
tup.rule({"bootbios.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o ", "bootbios.bin")
tup.rule({"bootbios.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o -dextended_primary_loader=1", "bootbios.bin.ext_loader")
tup.rule({"kernel.asm", extra_inputs = {"bootbios.bin", "lang.inc"}}, "fasm -m 65536 %f %o " .. tup.getconfig("KERPACK_CMD"), "kernel.mnt")
tup.rule({"kernel.asm", extra_inputs = {"lang.inc"}}, "fasm -m 65536 %f %o -dUEFI=1", "kernel.bin")
tup.rule({"kernel.asm", extra_inputs = {"bootbios.bin.ext_loader", "lang.inc"}}, "fasm -m 65536 %f %o -dextended_primary_loader=1" .. tup.getconfig("KERPACK_CMD"), "kernel.mnt.ext_loader")
tup.rule({"kernel.asm", extra_inputs = {"lang.inc"}}, "fasm -m 65536 %f %o -dUEFI=1 -dextended_primary_loader=1", "kernel.bin.ext_loader")
/kernel/trunk/boot/bootcode.inc
667,7 → 667,7
jnz .show_remarks
; e) preboot_device = from where to boot?
if defined extended_primary_loader
_ask_question bdev,'12',preboot_device ; range accepted for answer: 1-2
_ask_question bdev,'13',preboot_device ; range accepted for answer: 1-3
else
_ask_question bdev,'14',preboot_device ; range accepted for answer: 1-4
end if
970,9 → 970,25
; BOOT DEVICE
 
mov al, [preboot_device]
dec al
if defined extended_primary_loader
cmp al, RD_LOAD_FROM_MEMORY
jnz @f
mov al, RD_LOAD_FROM_NONE
@@:
end if
mov [es:BOOT_LO.rd_load_from], al
 
; /sys path
mov eax, dword[preboot_syspath+0]
mov dword[es:BOOT_LO.syspath+0], eax
mov eax, dword[preboot_syspath+4]
mov dword[es:BOOT_LO.syspath+4], eax
mov eax, dword[preboot_syspath+8]
mov dword[es:BOOT_LO.syspath+8], eax
mov eax, dword[preboot_syspath+12]
mov dword[es:BOOT_LO.syspath+12], eax
 
 
; GET MEMORY MAP
include '../detect/biosmem.inc'
 
/kernel/trunk/boot/booten.inc
30,7 → 30,7
ask_bd db "Add disks visible by BIOS emulated in V86-mode? [1-yes, 2-no]: ",0
 
if defined extended_primary_loader
bdev db "Load ramdisk from [1-floppy; 2-kolibri.img]: ",0
bdev db "Load ramdisk from [1-floppy; 2-kolibri.img; 3-don't load]: ",0
else
bdev db "Load ramdisk from [1-floppy; 2-C:\kolibri.img (FAT32);"
db 13,10,186," "
75,9 → 75,10
preboot_device_msg db " [e] Floppy image: ",0
 
if defined extended_primary_loader
preboot_device_msgs dw 0,pdm1,pdm2,0
preboot_device_msgs dw 0,pdm1,pdm2,pdm3,0
pdm1 db "real floppy",13,10,0
pdm2 db "C:\kolibri.img (FAT32)",13,10,0
pdm3 db "do not use floppy image",13,10,0
else
preboot_device_msgs dw 0,pdm1,pdm2,pdm3,pdm4,0
pdm1 db "real floppy",13,10,0
/kernel/trunk/boot/bootru.inc
30,7 → 30,8
ask_bd cp866 "Добавить диски, видимые через BIOS в режиме V86? [1-да, 2-нет]: ",0
 
if defined extended_primary_loader
bdev cp866 "Загрузить образ из [1-дискета; 2-kolibri.img из папки загрузки]: ",0
bdev cp866 "Загрузить образ из [1-дискета; 2-kolibri.img из папки загрузки;",13,10
cp866 "║ 3-не загружать]: ",0
else
bdev cp866 "Загрузить образ из [1-дискета; 2-C:\kolibri.img (FAT32);",13,10
cp866 "║ 3-использовать уже загруженный образ;",13,10
73,9 → 74,10
preboot_device_msg cp866 " [e] Образ дискеты: ",0
 
if defined extended_primary_loader
preboot_device_msgs dw 0,pdm1,pdm2,0
preboot_device_msgs dw 0,pdm1,pdm2,pdm3,0
pdm1 cp866 "настоящая дискета",13,10,0
pdm2 cp866 "kolibri.img из папки загрузки",13,10,0
pdm3 cp866 "не загружать образ рамдиска",13,10,0
else
preboot_device_msgs dw 0,pdm1,pdm2,pdm3,pdm4,0
pdm1 cp866 "настоящая дискета",13,10,0
/kernel/trunk/boot/parsers.inc
74,12 → 74,25
jc .nothing
cmp al, 1
jb .nothing
cmp al, 2
cmp al, 3
ja .nothing
mov [es:preboot_device], al
.nothing:
ret
 
parse_syspath:
; everything except spaces
mov bx, preboot_syspath
.next_char:
call parse_char
jc .done
mov [es:bx], al
inc bx
jmp .next_char
.done:
mov byte[es:bx], 0 ; terminator
ret
 
parse_char:
; skip spaces and return the next character or CF if EOF.
cmp si, dx
/kernel/trunk/boot/preboot.inc
27,9 → 27,12
preboot_launcher db 0 ; start launcher after kernel is loaded? (1-yes, 2-no)
preboot_dma db 0 ; use DMA for access to HDD (1-always, 2-only for read, 3-never)
preboot_device db 0 ; device to load ramdisk from
; 0-floppy 1-harddisk 2-kernel restart
; 3-format ram disk 4-don't use ramdisk
; 1-floppy 2-harddisk 3-kernel restart
; 4-format ram disk 5-don't use ramdisk
; !!!! 0 - autodetect !!!!
preboot_biosdisk db 0 ; use V86 to access disks through BIOS (1-yes, 2-no)
preboot_syspath db '/RD/1',0 ; path to /sys dir
rb 20-($-preboot_syspath)
if defined extended_primary_loader
; timeout in 1/18th of second for config settings screen
preboot_timeout dw PREBOOT_TIMEOUT*18
/kernel/trunk/boot/rdload.inc
75,13 → 75,6
call register_ramdisk
jmp yes_sys_on_hd
;-----------------------------------------------------------------------------
; Register ramdisk file system
register_ramdisk:
mov esi, boot_initramdisk
call boot_log
call ramdisk_init
ret
;-----------------------------------------------------------------------------
iglobal
align 4
read_image_fsinfo:
/kernel/trunk/boot/uefi4kos.asm
204,14 → 204,14
 
cli
 
mov rsi, kernel_bin_data_begin
mov rsi, kernel_data_begin
mov rdi, KERNEL_BASE
mov rcx, (kernel_bin_data_end - kernel_bin_data_begin + 7) / 8
mov rcx, (kernel_data_end - kernel_data_begin + 7) / 8
rep movsq
 
mov rsi, kolibri_img_data_begin
mov rsi, ramdisk_data_begin
mov rdi, RAMDISK_BASE
mov rcx, (kolibri_img_data_end - kolibri_img_data_begin + 7 ) / 8
mov rcx, (ramdisk_data_end - ramdisk_data_begin + 7 ) / 8
rep movsq
 
xor esi, esi
232,9 → 232,11
mov word[esi + BOOT_LO.apm_code_16], 0
mov word[esi + BOOT_LO.apm_data_16], 0
mov byte[esi + BOOT_LO.bios_hd_cnt], 0
mov word[esi + BOOT_LO.sys_disk], 'r1' ; boot from /rd/1
mov rsi, syspath
mov rdi, BOOT_LO.syspath
mov ecx, 32
rep movsb
 
 
lgdt [cs:GDTR]
 
mov ax, DATA_32_SELECTOR
428,17 → 430,19
msg_error du 'Error!',13,10,0
msg du 79 dup ' ',13,10,0
 
syspath db '/RD/1',0
 
memory_map rb MEMORY_MAP_SIZE
gop_buffer rb GOP_BUFFER_SIZE
 
 
kernel_bin_data_begin:
file '../kernel.bin'
kernel_bin_data_end:
kernel_data_begin:
file '../kernel.bin.ext_loader'
kernel_data_end:
kolibri_img_data_begin:
ramdisk_data_begin:
file '../../../data/kolibri.img'
kolibri_img_data_end:
ramdisk_data_end:
 
align 16
data fixups
/kernel/trunk/bootloader/extended_primary_loader/after_win/Tupfile.lua
0,0 → 1,2
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("kordldr.win.asm", "fasm %f %o", "kordldr.win.bin")
/kernel/trunk/bootloader/extended_primary_loader/cdfs/Tupfile.lua
0,0 → 1,2
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("bootsect.asm", "fasm %f %o ", "bootsect.bin")
/kernel/trunk/bootloader/extended_primary_loader/cdfs/bootsect.asm
50,7 → 50,8
; get file system information
; scan for Primary Volume Descriptor
db 66h
movi eax, 10h-1
push 10h-1
pop eax
pvd_scan_loop:
mov cx, 1
inc eax
/kernel/trunk/bootloader/extended_primary_loader/config.ini
0,0 → 1,15
; boot time parameters for KolibriOS
 
; timeout in seconds for config settings screen
timeout=5
 
; width*height
resolution=1024*768
 
; where to load ramdisk from
; 2 - /hd0/1/kolibri.img
; 3 - don't load ramdisk
;imgfrom=3
 
; which directory to use as /sys
;syspath=/HD0/1/KOLIBRIOS
/kernel/trunk/bootloader/extended_primary_loader/fat1x/Tupfile.lua
0,0 → 1,3
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("bootsect.asm", "fasm %f %o", "bootsect.bin")
tup.rule("kordldr.f1x.asm", "fasm %f %o", "kordldr.f1x.bin")
/kernel/trunk/bootloader/extended_primary_loader/fat32/Tupfile.lua
0,0 → 1,3
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("bootsect.asm", "fasm %f %o", "bootsect.bin")
tup.rule("kordldr.f32.asm", "fasm %f %o", "kordldr.f32.bin")
/kernel/trunk/bootloader/extended_primary_loader/fat32/bootsect.asm
24,7 → 24,7
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;*****************************************************************************
 
use_lba = 0
use_lba = 1
org 0x7C00
jmp start
nop
/kernel/trunk/const.inc
683,11 → 683,11
type dd ?
ends
 
RD_LOAD_FROM_FLOPPY = 0
RD_LOAD_FROM_HD = 1
RD_LOAD_FROM_MEMORY = 2
RD_LOAD_FROM_FORMAT = 3
RD_LOAD_FROM_NONE = 4
RD_LOAD_FROM_FLOPPY = 1
RD_LOAD_FROM_HD = 2
RD_LOAD_FROM_MEMORY = 3
RD_LOAD_FROM_FORMAT = 4
RD_LOAD_FROM_NONE = 5
 
struct boot_data
bpp db ? ; bits per pixel
721,7 → 721,7
kernel_restart dw ?
sys_disk dw ? ; Device to mount on /sys/, see loader_doc.txt for details
acpi_rsdp dd ?
rb 0x1f
syspath rb 0x1f
bios_hd_cnt db ? ; number of BIOS hard disks
bios_hd rb 0x80 ; BIOS hard disks
memmap_block_cnt dd ? ; available physical memory map: number of blocks
/kernel/trunk/data16.inc
77,6 → 77,7
config_variable 'vbemode', parse_vbemode
config_variable 'biosdisks', parse_biosdisks
config_variable 'imgfrom', parse_imgfrom
config_variable 'syspath', parse_syspath
dw 0
; data for image file loading, look in PrimaryLoader.txt
image_file_struct:
/kernel/trunk/fs/parse_fn.inc
28,6 → 28,16
locals
buff rb 4 ; for test cd
endl
if defined extended_primary_loader
mov ecx, sysdir_path
mov [ecx-64], dword 'sys'
mov [ecx-2], byte 3
mov esi, BOOT.syspath
mov edi, sysdir_path-1
mov ecx, 20
rep movsb
ret
else
mov ax, [BOOT.sys_disk]
mov ecx, sysdir_path
mov [ecx-64], dword 'sys'
61,6 → 71,7
jne .next_cd
@@:
ret
end if
 
.hard_disk:
sub al, '1'
/kernel/trunk/kernel.asm
138,7 → 138,11
; places revision number there.
if ~ defined UEFI
bootbios:
if ~ defined extended_primary_loader
file 'bootbios.bin'
else
file 'bootbios.bin.ext_loader'
end if
if __REV__ > 0
cur_pos = 0
cnt = 0
697,8 → 701,10
call PIT_init
 
; Register ramdisk file system
if ~ defined extended_primary_loader
cmp [BOOT.rd_load_from], RD_LOAD_FROM_HD ; will be loaded later
je @f
end if
cmp [BOOT.rd_load_from], RD_LOAD_FROM_NONE
je @f
call register_ramdisk
1099,6 → 1105,14
 
ret
 
;-----------------------------------------------------------------------------
; Register ramdisk file system
register_ramdisk:
mov esi, boot_initramdisk
call boot_log
call ramdisk_init
ret
 
; in: edx -> APPDATA for OS/IDLE slot
; in: ebx = stack base
proc setup_os_slot
/kernel/trunk/readme-ext-loader.txt
48,3 → 48,8
imgfrom=<источник рамдиска>. 1 - грузить дискету, 2 - грузить файл
kolibri.img, находящийся рядом с первичным загрузчиком. Умолчальное
значение 1 при загрузке с дискеты и 2 в противном случае.
 
syspath=<путь к директории /sys> - строка.
Умолчальное значение /RD/1. Может быть и не корнем раздела, например
/HD0/1/KOLIBRIOS. Ядро должно уметь работать с носителем без подгружаемых
драйверов.
/tup.config.template
39,7 → 39,8
# CONFIG_KERPACK_CMD=&& kerpack %o
# CONFIG_PESTRIP_CMD=&& EXENAME=%o fasm $(ROOT)/data/common/pestrip.asm %o
 
### BUILD_TYPE, if set, enables building kolibri.img and kolibri.iso.
### BUILD_TYPE, if set, enables building kolibri.img, kolibri.iso and
### kolibri.raw.
### Must match subdirectory name in $(ROOT)/data.
### Requires Linux.
# CONFIG_BUILD_TYPE=eng