1. 程式人生 > >用fdisk分割槽sd卡從sd卡上載入rootfs

用fdisk分割槽sd卡從sd卡上載入rootfs

s3c6410 支援Nand Flash本地啟動Linux,包括核心,根檔案系統,bootloader均寫入在Nand Flash.這樣可以獨立執行.   很多情況下,Nand Flash的某種原因無法寫入核心和Rootfs.而使用tftp下載核心,用NFS啟動根檔案系統比較慢.s3c6410 支援 SD卡啟動,經過改造u-boot可以從SD卡引導核心,這樣而Linux 又可以從SD卡的裝載ext3根檔案系統.這樣可以製作一個完整的SD卡啟動卡.   這樣bootloader(u-boot)可以寫入SD卡,引導扇區.     bootloader的第一階段把自己裝入在記憶體高階地址看後,可以用兩種方法從SD卡裝入核心到記憶體.   一種是用fatload命令從fat分割槽裝入核心檔案到記憶體。       fatload mmc 1 address filename (上述命令表示從第一個mmc裝置裝入檔案filename到記憶體的address當中),這個需要完整的實現fat的驅動,因此很多u-boot沒有帶.     另外一種常見的做法是使用u-boot的movi 命令.     用movi 命令直接讀寫SD卡sector.但是這樣有可以與檔案系統有衝突,因此要小心分割槽.     後面就是用這個方法來實現啟動的.可以把movi讀入命令寫入bootcmd 實現自動啟動   3.核心裝入後,可以支援用ext3的格式作根檔案系統,這樣可以把SD卡一個分割槽格式化成ext3即     可以啟動 ,這樣要修改bootargs  2.Linux SD分割槽操作.
   支援這種需要2G以下,非SDHC卡,假設是一個2G SD卡,分300M給FAT,剩下全部給 EXT3格式,作根檔案系統。    bootloader寫在SD卡的引導區,不佔用分割槽空間    Linux 對SD卡的的操作,如果第一個插入的SD卡是 /dev/sda,第二個SD卡是/dev/sdb ...依次類推.    如果第一個SD卡的第一個分割槽是 /dev/sda1 ,第二個分割槽 /dev/sda2 .如果上一個卡(sda)未安全撥下,而第二次插入也會變成sdb.     所以插入卡時要小心檢測SD卡對應的裝置結點.    2.1 Linux 分割槽工具 fdisk.      fdisk 與dos下的工具同名,在操作SD分割槽,最好把分割槽檔案目錄umount掉,否則會修改分割槽失敗,也注意要把SD卡的防寫鎖開啟. 命令格式           fdisk <裝置結點> 
     這是指裝置結點/dev/sda之類,不要對/dev/sda1 之類操作.
  1. fdisk /dev/sda
  2. The number of cylinders for this disk is set to 35560.
  3. There is nothing wrong with that, but this is larger than 1024,
  4. and could in certain setups cause problems with:
  5. 1) software that runs at boot time (e.g., old versions of LILO)
  6. 2) booting and partitioning software from other OSs
  7. (e.g., DOS FDISK, OS/2 FDISK)
  8. Command (m for help): m   #<------------顯示fdisk選單
  9. Command action
  10. a toggle a bootable flag
  11. b edit bsd disklabel
  12. c toggle the dos compatibility flag
  13. d delete a partition
  14. l list known partition types
  15. m print this menu
  16. n add a new partition
  17. o create a new empty DOS partition table
  18. p print the partition table
  19. q quit without saving changes
  20. s create a new empty Sun disklabel
  21. t change a partition's system id
  22. u change display/entry units
  23. v verify the partition table
  24. w write table to disk and exit
  25. x extra functionality (experts only)
  26. Command (m for help): p #<--------------------列印分割槽表
  27. Disk /dev/sda: 2002 MB, 2002780160 bytes
  28. 11 heads, 10 sectors/track, 35560 cylinders
  29. Units = cylinders of 110 * 512 = 56320 bytes
  30. Device Boot Start End Blocks Id System
  31. /dev/sda1 2 35561 1955775+ b W95 FAT32  #原有的FAT32分割槽
接下操作,是刪除原有分割槽,並且新建兩個分割槽,一個用FAT,一個是EXT32根檔案系統
  1. Command (m for help): d #<-------------刪除一個分割槽
  2. Selected partition 1
  3. Command (m for help): n #<-------------新建一個分割槽
  4. Command action
  5. e extended
  6. p primary partition (1-4)
  7. p #<--------------選擇建立 primary 首要分割槽
  8. Partition number (1-4): 1 #<---------第一個首要分割槽
  9. First cylinder (1-35560, default 1): #<---------起始位置,直接回車用預設值
  10. Using default value 1
  11. Last cylinder or +size or +sizeM or +sizeK (1-35560, default 35560): 300M
  12. #<---- 第一個分割槽使用 300M空間
  13. Command (m for help): p
  14. Disk /dev/sda: 2002 MB, 2002780160 bytes
  15. 11 heads, 10 sectors/track, 35560 cylinders
  16. Units = cylinders of 110 * 512 = 56320 bytes
  17. Device Boot Start End Blocks Id System
  18. /dev/sda1 1 300 16495 83 Linux
  19. Command (m for help): n #<----建第二個分割槽
  20. Command action
  21. e extended
  22. p primary partition (1-4)
  23. p #<--------------選擇建立 primary 首要分割槽
  24. Partition number (1-4): 2 #<---------第二個首要分割槽
  25. First cylinder (301-35560, default 301):
  26. Using default value 301
  27. Last cylinder or +size or +sizeM or +sizeK (301-35560, default 35560):
  28. Using default value 35560 #直接回車表示預設值,即把剩下所有空間都歸入這個分割槽
  29. Command (m for help): p
  30. Disk /dev/sda: 2002 MB, 2002780160 bytes
  31. 11 heads, 10 sectors/track, 35560 cylinders
  32. Units = cylinders of 110 * 512 = 56320 bytes
  33. Device Boot Start End Blocks Id System
  34. /dev/sda1 1 300 16495 83 Linux
  35. /dev/sda2 301 35560 1939300 83 Linux
  36. Command (m for help): w #<-------將分割槽表寫入SD卡,至此才真正生效
  37. The partition table has been altered!
  38. Calling ioctl() to re-read partition table.
  39. Syncing disks.
  2.2 格式化兩個分割槽    第一個格式化成 FAT         mkfs.vfat /dev/sda1    第二個格式化 格式ext3 格式 mkfs.ext3 /dev/sda2 
  1. mkfs.vfat /dev/sda1 #<----------格式化命令
  2. mkfs.vfat 2.11 (12 Mar 2005)
  3. [[email protected] u-boot-1.1.6_hxy6410]# mkfs.ext3 /dev/sda2 #<------格式化命令
  4. mke2fs 1.39 (29-May-2006)
  5. Filesystem label=
  6. OS type: Linux
  7. Block size=4096 (log=2)
  8. Fragment size=4096 (log=2)
  9. 242880 inodes, 484825 blocks
  10. 24241 blocks (5.00%) reserved for the super user
  11. First data block=0
  12. Maximum filesystem blocks=499122176
  13. 15 block groups
  14. 32768 blocks per group, 32768 fragments per group
  15. 16192 inodes per group
  16. Superblock backups stored on blocks:
  17. 32768, 98304, 163840, 229376, 294912
  18. Writing inode tables: done
  19. Creating journal (8192 blocks): done
  20. Writing superblocks and filesystem accounting information:
  21. done
  22. This filesystem will be automatically checked every 33 mounts or
  23. 180 days, whichever comes first. Use tune2fs -c or -i to override.
   2.3 測試檔案系統是否可以用           mount -t ext3 /dev/sda2 /mnt    2.4 把根檔案系統拷入SD卡,r表示遞迴,a表示把許可權,符號連結等資訊也拷貝        cp -ra /home/hxy/rootfs/* /mnt
1.PC機上格式化SD卡   在桌面的PC機上用SD讀卡器操作SD卡:   一般情況下PC機上第一個U盤整體裝置結點是/dev/sda,第二個是 /dev/sdb,在RHEL5下它會被自動mount到/media/disk和 /media/disk_1 目錄.   U盤/dev/sdb上第一個分割槽是 /dev/sdb1,第二是/dev/sdb2 依此類推.   根檔案系統採用符號連結等特性,用FAT32是不行的,這裡直接採用標準的ext3的檔案系統.在實測時,把U盤整個做一個分割槽做ext3根檔案系統.總是出不少問題(可能步驟也不對),因此按網上推薦的,做二個分割槽,第一個分割槽採用vfat格式,第二個分割槽才採用ext3的格式. 1.1 用fdisk分割槽      執行fdisk /dev/sdb     fdisk有如下常用選項
1. 輸入 m 顯示所有命令列示。 
2. 輸入 p 顯示硬碟分割情形。 
3. 輸入 a 設定硬碟啟動區。 
4. 輸入 n 設定新的硬碟分割區。 
  4.1. 輸入 e 硬碟為[擴充套件]分割區(extend)。 
   4.2. 輸入 p 硬碟為[首要]分割區(primary)。 
5. 輸入 t 改變硬碟分割區屬性。 
6. 輸入 d 刪除硬碟分割區屬性。 
7. 輸入 q 結束不存入硬碟分割區屬性。 
8. 輸入 w 結束並寫入硬碟分割區屬性 如果以前U盤有分割槽,需要輸入d命令來依次刪除分割槽,以下執行兩次n命令建立一個 400M的FAT分割槽,以及把剩下的分割槽設為ext3,最後用w命令把結果儲存下來.

Command (m for help): n

Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1020, default 1): 
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1020, default 1020): +400M

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (202-1020, default 202): 
Using default value 202
Last cylinder or +size or +sizeM or +sizeK (202-1020, default 1020): 
Using default value 1020

Command (m for help): p

Disk /dev/sdb: 2041 MB, 2041577472 bytes
63 heads, 62 sectors/track, 1020 cylinders
Units = cylinders of 3906 * 512 = 1999872 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         201      392522    b  W95 FAT32
/dev/sdb2             202        1020     1599507   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 裝置或資源忙.
The kernel still uses the old table.
The new table will be used at the next reboot.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

1.2 格式化分割槽     mkfs.vfat /dev/sda1 #第一個分割槽格式化成fat32     mkfs.ext3 /dev/sda2 #第二個分割槽格式化成fat32   可以用     tune2fs -l /dev/sda2 來檢驗分割槽型別  1.3 拷貝根檔案系統   mount /dev/sda2 /mnt/sdcard #掛載SD卡   cp -ra /home/hxy/rootfs/* /mnt/sdcard #把根檔案系統拷到SD卡 2.編譯ARM Linux核心  2.1 修改核心配置   確保ext3的檔案系統支援,和SD卡驅動都被靜態編譯到核心,我使用的是Linux 2.6.29.  在核心原始碼目錄執行 make menuconfig   其中ext3在File system下.成功的配置如下.   

 <*> Ext3 journalling file system support       
    [*]   Ext3 extended attributes 
    [*]     Ext3 POSIX Access Control Lists 
    [*]     Ext3 Security Labels  
SD卡驅動支援在Device Drivers ->MMC/SD/SDIO card support 下,成功的配置如下  
 --- MMC/SD/SDIO card support                           
 [*]   MMC debugging                                    
 [ ]   Allow unsafe resume (DANGEROUS)                  
       *** MMC/SD/SDIO Card Drivers ***                 
 <*>   MMC block device driver                          
 [*]     Use bounce buffer for simple hosts             
 <*>   SDIO UART/GPS class support                      
 <*>   MMC host test driver                             
       *** MMC/SD/SDIO Host Controller Drivers ***      
 <*>   Secure Digital Host Controller Interface support 
 <*>   Samsung S3C SD/MMC Card Interface support        
  編譯核心 make zImage  2.2 在ARM-linux下的測試.    在一個已經正常啟動的ARM-LINUX下,插入SD卡.出現如下提示,表示SD卡已經安裝上
[root: /]# s3c2440-sdi s3c2440-sdi: running at 0kHz (requested: 0kHz).                            
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).                                   
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).                                   
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).                                   
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).                                   
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).                                   
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).                                   
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).                                   
s3c2440-sdi s3c2440-sdi: running at 16875kHz (requested: 25000kHz).                               
s3c2440-sdi s3c2440-sdi: running at 16875kHz (requested: 25000kHz).                               
mmc0: new SD card at address 0002                                                                 
mmcblk0: mmc0:0002 00000 1.90 GiB                                                                
 mmcblk0: p1 p2                                                                                   
FAT: utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive! 
但是最後一句在提示FAT有不識別的IO字符集,導致第一個VFAT分割槽沒有自動建立裝置結點.用如下命令只看到mmcblk0p2的結點.(以下操作均是在開發板上進行) [root: /]# ls -l /dev/mmc*                                             
brw-rw----    1 root     root     179,   0 Sep 22 10:48 /dev/mmcblk0   
brw-rw----    1 root     root     179,   2 Sep 22 10:48 /dev/mmcblk0p2 測試ext3分割槽 mount -t ext3 /dev/mmcblk0p2 /mnt 在/mnt上可以讀寫檔案.表示ext3分割槽正常. 手動建立第一個分割槽的結點. mknod /dev/mmcblk0p1 b 179 1 測試vfat 分割槽 mount -t vfat /dev/mmcblk0p1 /mnt 在/mnt上可以讀寫檔案.表示vfat分割槽正常.如果想自動建立個裝置結點,可以修改/etc/fstat來使用這個分割槽 3.使用SD卡分割槽作為根檔案  修改LINUX啟動引數.我用的是u-boot .因此在u-boot shell用set bootargs命令來設定Linux啟動引數.  成功的啟動引數是 noinitrd root=179:2 rw console=ttySAC0 其中179和2是sd卡上ext3分割槽的主裝置和從裝置號. 用set bootargs "noinitrd root=179:2 rw console=ttySAC0 "設定後.重啟核心,即可用ext3分割槽作為根檔案系統

相關推薦

fdisk分割槽sdsd載入rootfs

s3c6410 支援Nand Flash本地啟動Linux,包括核心,根檔案系統,bootloader均寫入在Nand Flash.這樣可以獨立執行.   很多情況下,Nand Flash的某種原因無法寫入核心和Rootfs.而使用tftp下載核心,用NFS啟動根檔案系統比較慢.s3c6410 支援

js實現table內容下到連續滾動

網上有很多用ul實現新聞列表滾動的例子,但是很少有直接用table實現列表內容滾動的例子,而Marquee標籤滾動的效果不是很好,於是就自己寫了一個,提供給攻城師朋友們參考 實現思路:由於table包含標題和內容,實際上理想的效果是標題不動,內容滾動,於是把標題和內容拆分出

Exynos4412SD啟動的簡單網絡文件系統制作

x86 -m oba 大於等於 mpi 使用 trustzone 之前 ror Exynos4412從SD卡啟動的簡單網絡文件系統制作 1. 簡介 嵌入式系統能夠在開發板上正常運行,需要先進行系統配置,一個完整的嵌入式系統應該包含的幾個部分::uboot,kernel,ro

u-boot sdfuse命令燒錄分析----SD載入核心

在u-boot移植過程中,由於u-boot燒錄在SD卡中,因此老是載入核心失敗,是什麼原因呢?在載入核心的列印資訊中有這樣類似的資訊: reading kernel.. 1120, 10240 MMC read: dev # 1, block # 112

sd中顯示一個圖片 Android

第一步:通過path得到file,我是把圖片放在mnt/sdcard/中的。 第二布:在判斷檔案存在後將檔案轉換為bitmap檔案。通過BitmapFactory.decodeFile來轉換的。

ubootSD燒寫核心和檔案系統

環境:ubuntu 13.04 一、首先製作sd啟動盤:  插入SD卡     sudo dd iflag=dsync oflag=dsync if=tiny210v2-uboot.binof=/dev/mmcblk0 seek=1  tiny210v2-uboot.bin來自:   http://www.a

s3c6410開發板研究筆記(一)SD啟動UBOOT(未完待續。。。)

背景 6410支援從SD卡啟動,是否可以在SD卡上燒寫一個UBOOT,開發板的跳線設定為SD卡啟動後,將UBOOT執行起來?在UBOOT中可以操作網口(例如 tftp kernel 根檔案系統)、操作NANDFLASH,NORFALSH,方便的進行升級? 資料收集部分 參考

android開發SD獲得路徑怎麼將圖片變成Bitmap

方法一: Uri uri = data.getData();  System.out.println(uri.getPath());  ContentResolver cr = this.getCon

UNO R3SD讀取圖片並顯示到2.2寸液晶屏(220x176)

 折騰了一個週末,終於基本搞定。之前也玩過一陣,但沒能解決圖片大到一定程度後記憶體不足或者陣列超限的問題, 所以決定再試一下用SD卡。220x176的資料比較少,查了一圈壇內壇外中文外文的網站之後總算找到了一些思路。 大思路就是從SD卡中讀指定圖片檔案的每個畫素的RGB

友善之臂tiny4412使用SD燒錄uboot,並使開發板SD啟動進入uboot過程記錄。

一、前提準備: 建議:為保持過程的一致性,建議使用和以下描述中一樣的軟硬體。其它軟硬體不保證過程的可行性。以下描述的過程,博主已多次驗證,可行。 1.安裝了ubuntu系統的電腦一臺,我使用的是14.04 LTS版。 2.友善之臂的tiny4412 ADK 1312開發板。

intent開啟各種檔案 開啟sd路徑 開啟系統目錄...

在其他類中呼叫MyIntent類中的方法,例如: Intent it = MyIntent .getHtmlFileIntent("/sdcard/tutorial.html");//對應你的檔名 startActivity( it ); //可用於獲取開

S3C6410sd啟動的原理

  s3c6410從sd卡啟動的原理,有以下幾篇不錯的文章可供參考: 3.S3C6410製作SD啟動卡以及簡易SDbootloader的方法 4.飛凌官方網站的一篇關於S5PV210開發板的啟動方式技術文章,寫的不錯,圖文並茂,具體就是翻譯《S3C6410_Int

6410SD啟動uboot

6410支援從SD卡啟動,是否可以在SD卡上燒寫一個UBOOT,開發板的跳線設定為SD卡啟動後,將UBOOT執行起來? 在UBOOT中可以操作網口(例如 tftp kernel 根檔案系統)、操作NANDFLASH,NORFALSH,方便的進行升級?  資料收集部分 參考

優盤Flash, SD, TF ,CF一體黑膠儲存顆粒資料恢復專用必備工具合

優盤Flash, SD卡, TF 卡 ,CF卡一體黑膠儲存顆粒資料恢復專用必備工具合集 對於資料的丟失是大家最不想看到的,畢竟 資料無價的道理都懂,但是意外總是沒有預兆,目前市場上流通的行動式儲存無外乎 優盤, SD卡, TF 卡 ,CF卡等小巧的介質,然而便捷的同時 ,給我們的資料安全也帶來了

SIM座/TF座/SD座的質量控制與規範用途

如今電子產品競爭日益激烈,提高SIM卡座,SD卡座,TF卡座等聯結器製作加工質量已成為的最關鍵因素之一。聯結器加工質量水平不僅是企業技術與管理水平的標誌,更是關乎企業的生存和發展。訊普根據客戶的生產實際情況,制定了相關質量控制體系。 1、以“零缺陷”為生產目標,設定SMT貼片加工質量過

_037_Android_Android 儲存到SD,獲取SD的大小及可用空間

 使用Sdcard注意事項:     1.許可權問題:             <uses-permission andro

android 雙SD切換 SD SWAP 方案,如何恢復 設定- 儲存- 預設儲存器 的使用者選擇功

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

NanoPC T4低階格式化SD,恢復SD和TF 方法

  恢復SD卡和TF卡 方法:Windows下執行:HDDLLF.4.40.exe執行Low-Level format然後拔插,重新插在win10下提示格式化,則執行格式化操作,即可恢復。   應用場合:使用Win32DiskImage燒錄軟體燒寫SD卡的時候 如果涉及系統的切換,比

Android 記憶體 / Micro SD / TF / 儲存 剩餘容量 / 剩餘記憶體 / 可用空間、總容量的 2 種獲取方式

1 採用 Java 的 File 類 // 總容量 public long getStorageTotalSpace(String path) { File file = ne

SD、TF壞道及容量檢測

請注意,可以在未經過博主同意下轉載,但必須註明出處,謝謝!!! 1、 插入TF卡,執行dotNet Disk Imager軟體,介面如下: 2、 在Device欄中勾選待測TF卡。圖示所插入