> On Mar 8, 2016, at 7:29 AM, Patrick <plafr...@gmail.com> wrote: > > On Fri, Mar 4, 2016 at 9:09 PM, 张云 <zyun...@163.com <mailto:zyun...@163.com>> > wrote: > First your must know exactly how linux boot (not at source code level). > > Most recent linux distributions boot as > > grub —> kernel —> initramfs’ /init executable > > All the userspace affair is started by initramfs’ /init. Kernel no longer > join the boot process. > > >From you description, I think you were blocked by the initramfs concept. > >Initramfs is the first root filesystem and reside in memeory. > It’s loaded by grub, and the kernel automatically mount it, execute the > /init. The /init executable can do some extra initialisation > and switch to the real root filesystem on disk. > for detail /Documentaion/filesystems/ramfs-rootfs-initramfs > > Hope that would be useful to your. > > Thanks for the response. I was able to get a minimal boot using the files in > the mini.iso image from Ubuntu. I just copied the kernel and the ramdisk > image from that iso, and these have given me enough to start learning some > things. It is still just dropping me into the prompt for the ramdisk image, > so the kernel hasn't yet made the switch over to root filesystem on a drive, > but this is at least enough to get me started. > > One thing I noticed that confused me was the result of the commands pasted > below. It looks like the partition table on the disk image might be getting > messed up. But, interestingly enough, it still seems to allow me to use the > image for booting. In spite of this, fdisk is giving me strange output when I > ask it to print out the partition tables after I build a file system on the > disk image using mkfs. When I look at the disk image using gparted, on the > other hand, it actually looks OK. > > It looks like I might be using mkfs incorrectly. Can anyone see anything > obvious that I am doing wrong? > > ============== > > dd if=/dev/zero of=./disk.img bs=1M count=1000 > sudo losetup /dev/loop0 ./disk.img > sudo fdisk /dev/loop0 > (commands in fdisk) > > n (new partition) > > p (primary partition) > > 1 (partition number) > > (default start and end for partition) > > t (change type of partition) > > b (change type of partition to FAT32) > > a (set boot flag) > > 1 (set boot flag for first partition) > > w (write changes) > fdisk -lu /dev/loop0 > Disk /dev/loop0 > : 1048 MB, 1048576000 bytes > 123 heads, 59 sectors/track, 282 cylinders, total 2048000 sectors > Units = sectors of 1 * 512 = 512 bytes > Sector size (logical/physical): 512 bytes / 512 bytes > I/O size (minimum/optimal): 512 bytes / 512 bytes > Disk identifier: 0x7b9351bf > > Device Boot Start End Blocks Id System > /dev/loop0p1 * 2048 2047999 1022976 b W95 FAT32 >
The problem is caused by the command below > mkfs -t vfat /dev/loop0 /dev/loop0 is the whole disk, and /dev/loop0p1 is the partition. The command make a file system on the disk, thus overrides the disk’s partition table. I guess that it is the partition on which you want to make a filesystem. The right command is mkfs -t ext2 /dev/loop0p1 We prefer ext2,3,4 to fat32 on linux. > fdisk -lu /dev/loop0 > Disk /dev/loop0: 1048 MB, 1048576000 bytes > 255 heads, 63 sectors/track, 127 cylinders, total 2048000 sectors > Units = sectors of 1 * 512 = 512 bytes > Sector size (logical/physical): 512 bytes / 512 bytes > I/O size (minimum/optimal): 512 bytes / 512 bytes > Disk identifier: 0x00000000 > > Device Boot Start End Blocks Id System > > ============== > > Thanks, > Patrick > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@kernelnewbies.org > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies