Changeset 1676

Show
Ignore:
Timestamp:
07/26/06 07:21:30 (2 years ago)
Author:
alexander
Message:

Added support for root.ext2 larger than 2 GB (e.g., for a LiveDVD)

Location:
trunk/packages/initramfs
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/packages/initramfs/Makefile

    r1571 r1676  
    5656 
    5757init: 
    58         gcc $@.c -o $@ -static -ldevmapper -Os -s -Wall -DVOLUME_ID=\"lfslivecd-$(VERSION)\" 
     58        gcc $@.c -o $@ -static -ldevmapper -Os -s -Wall -DVOLUME_ID=\"lfslivecd-$(VERSION)\" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 
    5959 
    6060clean: 
  • trunk/packages/initramfs/init.c

    r1518 r1676  
    7070        int fd; 
    7171        struct dm_task * dmt; 
    72         struct stat stat_buf; 
     72        int devsize; 
    7373         
    7474        printf("Initramfs activated\n"); 
     
    115115        /* Create a sparse file for the second loop */ 
    116116         
    117         stat(ROOT_FILE, &stat_buf); 
    118         overhead = 0x1000 + stat_buf.st_size / 0x100; 
     117        fd = open("/dev/loop0", O_RDONLY); 
     118        ioctl(fd, BLKGETSIZE, &devsize); 
     119        close(fd); 
     120         
     121        overhead = 0x1000 + devsize * 2; 
    119122         
    120123        fd = open(OVERLAY, O_CREAT | O_WRONLY, 0600); 
    121         ftruncate(fd, stat_buf.st_size + overhead); 
     124        ftruncate(fd, devsize * 0x200ULL + overhead); 
    122125        close(fd); 
    123126         
     
    129132        dm_task_set_major(dmt, 254); 
    130133        dm_task_set_minor(dmt, 0); 
    131         dm_task_add_target(dmt, 0, stat_buf.st_size / 0x200, 
     134        dm_task_add_target(dmt, 0, devsize, 
    132135            "snapshot", "/dev/loop0 /dev/loop1 p 8"); 
    133136        dm_task_run(dmt);