Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1856407
  • 博文数量: 473
  • 博客积分: 13997
  • 博客等级: 上将
  • 技术积分: 5953
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-22 11:52
文章分类

全部博文(473)

文章存档

2014年(8)

2013年(38)

2012年(95)

2011年(181)

2010年(151)

分类: LINUX

2012-05-28 04:10:37

因為有網友問到這個問題,所以我把它拿出來討論,熟讀LDD3(LINUX Device Driver3)的朋友應該都知道Linux檔案系統和block driver之間的關係,在Linux kernel stack中,block driver負責驅動裝置上的硬體,而file system就是對block drvier下讀取和寫入的指令,所以只要能正確驅動平台上儲存裝置的block drvier,那你可以在此block driver上操作任何一種file system


為了這次的demo,必需再修改arch/arm/plat-s3c24xx/common-smdk.c這個檔案,這次把mtd partition調整為4個partition,最後一個partition放squashfs的image,修改範例如下

燒寫完kernel後開機可以從/proc/mtd中得知Linux目前mtd分割區的狀態,接下來我們用 Flash_eraseall把/dev/mtd3整塊抹掉,並把製作好的squashfs的image燒到/dev/mtd3,簡列步驟如下(mtd utility簡介請參考拙作JFFS2 file system-老而彌堅的檔案系統)
(1)flash_eraseall /dev/mtd3
(2)nandwrite -p /dev/mtd3 squashfs.root

燒錄完成後重新開機,修改uboot的bootargs為mem=64M console=ttySAC0 root=/dev/mtdblock3 rootfstype=squashfs,接著啟動Linux,就會發現Linux的root file system已經變為squashfs

  1.staticstruct mtd_partition smdk_default_nand_part[]={
   2.[0]={
   3..name ="Boot Agent",
   4..offset 
  5..size = SZ_256K,
   6..mask_flags = MTD_CAP_ROM,
   7.},
   8.[1]={
   9..name ="S3C2410 flash partition 1(Kernel)",
  10..offset = SZ_2M,
  11..size = SZ_4M,
  12..mask_flags = MTD_CAP_ROM,
  13.},
  14.[2]={
  15..name =
 16..offset = SZ_8M,
  17..size =/*SZ_4M*//*SZ_50M*/SZ_8M,
  18.//.mask_flags = 0,

  19.},
  20.[3]={
  21..name ="S3C2410 flash partition 3(Other file system)",
  22..offset = SZ_16M,
  23..size = SZ_8M,
阅读(1639) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~