Changeset 0928526 in mainline


Ignore:
Timestamp:
2008-08-04T21:15:13Z (16 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
677f620
Parents:
6e0e8c9
Message:

Boot infrastructure support for FAT16 init ramdisks.
Only amd64 so far.

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • boot/arch/amd64/Makefile.inc

    r6e0e8c9 r0928526  
    3333        $(USPACEDIR)/srv/devmap/devmap \
    3434        $(USPACEDIR)/srv/rd/rd \
    35         $(USPACEDIR)/srv/vfs/vfs \
    36         $(USPACEDIR)/srv/fs/tmpfs/tmpfs \
     35        $(USPACEDIR)/srv/vfs/vfs
     36ifeq ($(RDFMT),tmpfs)
     37        INIT_TASKS += $(USPACEDIR)/srv/fs/tmpfs/tmpfs
     38endif
     39ifeq ($(RDFMT),fat)
     40        INIT_TASKS += $(USPACEDIR)/srv/fs/fat/fat
     41endif
    3742
    3843RD_TASKS = \
     
    4146        $(USPACEDIR)/srv/kbd/kbd \
    4247        $(USPACEDIR)/srv/console/console \
    43         $(USPACEDIR)/srv/fs/fat/fat \
    4448        $(USPACEDIR)/app/tetris/tetris \
    4549        $(USPACEDIR)/app/tester/tester \
    4650        $(USPACEDIR)/app/klog/klog \
    4751        $(USPACEDIR)/app/cli/cli
     52ifneq ($(RDFMT),tmpfs)
     53        RD_TASKS += $(USPACEDIR)/srv/fs/tmpfs/tmpfs
     54endif
     55ifneq ($(RDFMT),fat)
     56        RD_TASKS += $(USPACEDIR)/srv/fs/fat/fat
     57endif
    4858
    4959build: $(BASE)/image.iso
     
    5262        mkdir -p arch/$(ARCH)/iso/boot/grub
    5363        cp arch/$(ARCH)/grub/stage2_eltorito arch/$(ARCH)/iso/boot/grub/
    54         cp arch/$(ARCH)/grub/menu.lst arch/$(ARCH)/iso/boot/grub/
     64ifneq ($(RDFMT),tmpfs)
     65        cat arch/$(ARCH)/grub/menu.lst | grep -v "tmpfs" >arch/$(ARCH)/iso/boot/grub/menu.lst
     66endif
     67ifneq ($(RDFMT),fat)
     68        cat arch/$(ARCH)/grub/menu.lst | grep -v "fat" >arch/$(ARCH)/iso/boot/grub/menu.lst
     69endif
    5570        cp $(KERNELDIR)/kernel.bin arch/$(ARCH)/iso/boot/
    5671        for task in $(INIT_TASKS) ; do \
     
    6075                cp $$task $(USPACEDIR)/dist/sbin/ ; \
    6176        done
     77ifeq ($(RDFMT),tmpfs)
    6278        $(BASE)/tools/mktmpfs.py 4096 $(USPACEDIR)/dist/ arch/$(ARCH)/iso/boot/initrd.img
     79endif
     80ifeq ($(RDFMT),fat)
     81        $(BASE)/tools/mkfat.sh $(USPACEDIR)/dist/ arch/$(ARCH)/iso/boot/initrd.img
     82endif
    6383        mkisofs -J -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o $(BASE)/image.iso arch/$(ARCH)/iso/
    6484
  • boot/arch/amd64/grub/menu.lst

    r6e0e8c9 r0928526  
    1111        module /boot/vfs
    1212        module /boot/tmpfs
     13        module /boot/fat
    1314        module /boot/loader
    1415        module /boot/initrd.img
  • boot/boot.config

    r6e0e8c9 r0928526  
    7979! [ARCH=mips32] IMAGE (choice)
    8080
     81# Ramdisk format
     82@ "tmpfs" TMPFS image
     83@ "fat" FAT16 image
     84! RDFMT (choice)
  • uspace/app/init/init.c

    r6e0e8c9 r0928526  
    5252}
    5353
    54 static bool mount_tmpfs(void)
     54static bool mount_fs(const char *fstype)
    5555{
    5656        int rc = -1;
    5757       
    5858        while (rc < 0) {
    59                 rc = mount("tmpfs", "/", "initrd");
     59                rc = mount(fstype, "/", "initrd");
    6060               
    6161                switch (rc) {
     
    9696        info_print();
    9797        sleep(5);       // FIXME
     98        bool has_tmpfs = false;
     99        bool has_fat = false;
    98100       
    99         if (!mount_tmpfs()) {
     101        if (!(has_tmpfs = mount_fs("tmpfs")) && !(has_fat = mount_fs("fat"))) {
    100102                printf(NAME ": Exiting\n");
    101103                return -1;
     
    110112        version_print();
    111113       
    112         spawn("/sbin/fat");
     114        /*
     115         * Spawn file system servers that were not loaded as init tasks.
     116         */
     117        if (!has_fat)
     118                spawn("/sbin/fat");
     119        if (!has_tmpfs)
     120                spawn("/sbin/tmpfs");
     121               
    113122        spawn("/sbin/tetris");
    114123        spawn("/sbin/cli");
Note: See TracChangeset for help on using the changeset viewer.