Author: alexander
Date: 2006-07-26 07:21:30 -0600 (Wed, 26 Jul 2006)
New Revision: 1676

Modified:
   trunk/packages/initramfs/Makefile
   trunk/packages/initramfs/init.c
Log:
Added support for root.ext2 larger than 2 GB (e.g., for a LiveDVD)


Modified: trunk/packages/initramfs/Makefile
===================================================================
--- trunk/packages/initramfs/Makefile   2006-07-23 10:45:41 UTC (rev 1675)
+++ trunk/packages/initramfs/Makefile   2006-07-26 13:21:30 UTC (rev 1676)
@@ -55,7 +55,7 @@
        rm -rf temp
 
 init:
-       gcc [EMAIL PROTECTED] -o $@ -static -ldevmapper -Os -s -Wall 
-DVOLUME_ID=\"lfslivecd-$(VERSION)\"
+       gcc [EMAIL PROTECTED] -o $@ -static -ldevmapper -Os -s -Wall 
-DVOLUME_ID=\"lfslivecd-$(VERSION)\" -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
 
 clean:
        -rm -rf temp

Modified: trunk/packages/initramfs/init.c
===================================================================
--- trunk/packages/initramfs/init.c     2006-07-23 10:45:41 UTC (rev 1675)
+++ trunk/packages/initramfs/init.c     2006-07-26 13:21:30 UTC (rev 1676)
@@ -69,7 +69,7 @@
        int i, overhead;
        int fd;
        struct dm_task * dmt;
-       struct stat stat_buf;
+       int devsize;
        
        printf("Initramfs activated\n");
 
@@ -114,11 +114,14 @@
        
        /* Create a sparse file for the second loop */
        
-       stat(ROOT_FILE, &stat_buf);
-       overhead = 0x1000 + stat_buf.st_size / 0x100;
+       fd = open("/dev/loop0", O_RDONLY);
+       ioctl(fd, BLKGETSIZE, &devsize);
+       close(fd);
        
+       overhead = 0x1000 + devsize * 2;
+       
        fd = open(OVERLAY, O_CREAT | O_WRONLY, 0600);
-       ftruncate(fd, stat_buf.st_size + overhead);
+       ftruncate(fd, devsize * 0x200ULL + overhead);
        close(fd);
        
        losetup("/dev/loop1", OVERLAY, O_RDWR);
@@ -128,7 +131,7 @@
         dm_task_set_name(dmt, "lfs-cd");
         dm_task_set_major(dmt, 254);
         dm_task_set_minor(dmt, 0);
-        dm_task_add_target(dmt, 0, stat_buf.st_size / 0x200,
+        dm_task_add_target(dmt, 0, devsize,
            "snapshot", "/dev/loop0 /dev/loop1 p 8");
         dm_task_run(dmt);
         dm_task_destroy(dmt);

-- 
http://linuxfromscratch.org/mailman/listinfo/livecd
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to