1. 程式人生 > >OMAPL138製作SD卡啟動介質及重灌Linux系統

OMAPL138製作SD卡啟動介質及重灌Linux系統

OMAPL138製作SD卡啟動盤及重灌Linux系統

手裡的創龍的OMAPL138平臺的系統SSH壞掉了,我重新移植了openssh還是不好使,沒有辦法了只能重灌OMAPL138的系統了,按照創龍給的文件《SD卡啟動盤製作》按照步驟進行,當執行一個叫做mksdboot-tl.sh檔案時候出現以下報錯:(倒數第4行)

sfdisk 無效選項 – D,然後我進入到了這個指令碼檔案中查看了這一步驟執行了什麼命令,發現:

sfdisk -D -H ....我查看了sfdisk的手冊,並沒有發現-D引數,諮詢了創龍的AE,他們給的說法是,需要換ubuntu 12.04系統,而我用的是ubuntu 16.04。我沒有去換這個系統,我覺得也不應該去換,我們應該去尋找問題本質,從根源理論上出發,不能讓問題被動地去改變我們,而我們應該去主動解決問題!!

帶著好奇心,一步一步的學習,經過一天一夜的錘鍊,終於把這個問題解決了,成功的把系統寫入了新的SD卡,當看見一個嶄新的系統在我面前的時候,我真的挺激動的。這也正是技術有趣的地方。

廢話不多說了,進入正題。

【導語】:OMAPL138是德州儀器的ARM+DSP架構,實際上ARM這塊依舊按照TI Sitara系列ARM的套路來的,基本上所有的板子都可以大同小異的按照這個本文提供的方法進行SD卡啟動盤的製作。在本部落格中將要分享SD卡分割槽重新裝在嵌入式Linux在OMAPL138或(TI其他ARM的平臺)

本機環境和準備工作

  • 本機工作於Ubuntu 16.04.3 amd64 系統
  • u-boot-tools元件 (使用 sudo apt-get install u-boot-tools
    命令安裝)
  • fdisk命令,dd命令,mkfs命令等
  • OMAPL138的rootfs根檔案系統及boot檔案(已打好包上傳到百度雲見本文附件)

SD卡的格式化

OMAPL138的Linux系統和引導都在SD裡面,所以SD卡的分割槽十分重要,在這裡要區分SD的分割槽和SDka分割槽的型別和名稱。OMAPL138的文件中給出要分為兩個區一個boot(2G大小,格式:b型 FAT32)一個rootfs(不少於4G,85型 Linux檔案系統)

1. SD卡分割槽

插上我們的USB讀卡器,等待系統讀取了SD卡的資訊。輸入:

  • 檢視分割槽

    sudo fdisk -l

    得到下面截圖的圖片,這裡有兩個注意點,fdisk命令十分危險,一定要看清楚後執行,博主曾經的時候因為輸錯一個字母導致整個機械硬碟格式化,花費了將近一天恢復。

    重點在看清楚/dev/sdc這個sdc,(插入不同的USB口Linux分配的掛在節點名稱就不一樣,可能是sdd,可能是sde,總之看清楚確認好是你的目標記憶體卡

    然後看倒數兩行的資訊,現在這個SD卡有兩個分割槽,分別是sdc1和sdc2,我們現在要把這兩個分割槽全部清除掉(你的可能有三四個分割槽,也可能只有一個分割槽

  • fdisk操作

    上面的操作已經獲得了/dev/sdc的裝置節點名稱,然後我們對/devsdc進行分割槽,需要建立兩個分割槽,一個boot(FAT32型,大約2G大小)和rootfs區(Linux檔案系統型,記憶體卡剩餘大小全給它)

    解掛SD卡:

    sudo umount /dev/sdc*

    這裡加入萬用字元*就是解掛所有分割槽。

    sudo fdisk /dev/sdc

    會有一個這樣的和使用者互動的介面,可以輸入p,回車,檢視當前/dev/sdc分割槽狀態。

    然後我們刪除所有分割槽,按照圖片輸入:

    到此為止我們刪除了所有的分割槽,然後我們就開始建立分割槽。

    建立分割槽:


    到此為止,第一個分割槽我們的boot分割槽建立完畢。

    建立第二個分割槽rootfs分割槽:

    從圖中可以看出我們已經建立了一個linux型別的12.9GiB大小的分割槽,這個就是rootfs分割槽,不需要修改檔案型別。

    通過p我們檢視建立的分割槽,就是我們剛才建立的分割槽,重點3個位置,啟動那個*要在sdc1位置,兩個檔案型別一個是FAT32 一個是Linux即可。

    還有最後一步,非常重要,輸入w 對結果進行儲存。

    然後,fdisk會自動退出。輸入

    sudo fdisk -l命令檢視是否建立成功。

    如果的確是這樣的輸出,就成功了。

  • 格式化分割槽

    我們進行了分割槽之後就開始對分割槽進行格式化操作,並通過命令指定分割槽卷名字。

    • 把讀卡器拔了重新插一次。

    • 解掛分割槽: sudo umount /dev/sdc

    • 對/dev/sdc1進行格式化: sudo mkfs.vfat -F 32 -n "boot" /dev/sdc1

    • 對/dev/sdc2進行格式化:sudo mke2fs -j -L "rootfs" /dev/sdc2

    這一步驟會提示“無論如何都要繼續(y,n)” 輸入 y

    提示“Writing superblocks and filesystem accounting information:” 直接回車

    到此,我們完成了格式化。

建立boot引導區

記憶體卡的工作已經做完了,我們開始進行boot引導區的建立,在本文的檔案附錄下載壓縮包mksdboot.rar檔案,然後解壓到你linux你任意的位置,你喜歡哪裡就哪裡,我解壓到~/script/mksdboot目錄下了,以下所有命令都以這個路徑為例,自己注意修改。

boot.cmd檔案

檔案裡面寫入是這些內容

mmc rescan 0
setenv bootargs ${mem_args} console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw ip=off eth=${ethaddr} rootwait

使用mkimage命令建立boot.scr檔案

mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n 'Execute uImage' -d ~/script/mksdboot/boot.cmd ~/script/mksdboot/boot.scr

然後我們進入到這個目錄檢視會生成boot.scr檔案,這個檔案就是我們要寫入到boot區域的檔案。

準備boot檔案

1) 把讀卡器拔了,然後再重新插一次

2) 把boot目錄裡面的所有檔案都拷貝到記憶體卡的boot分割槽。sudo cp ~/script/mksdboot/boot/* /media/delvis/boot/

3) 解掛/dev/sdc: sudo umount /dev/sdc*

4) 重點:使用dd命令燒寫u-boot.ais檔案sudo dd if=/home/delvis/script/mksdboot/boot/u-boot.ais of=/dev/sdc seek=10

如圖,表示成功。(這裡請使用絕對完全的路徑,不要使用終端裡面例如 ~ 這個符號代表的主目錄)

建立Linux的檔案系統

1 解壓檔案系統到rootfs

這個就沒有什麼了,把記憶體卡拔了再插一下,在壓縮包的filesystem裡面有rootfs.tar.zb2檔案,使用解壓命令,解壓到記憶體卡的rootfs區域即可。

sudo tar -xvf ~/script/mksdboot/filesystem/rootfs.tar.bz2 -C /media/delvis/rootfs

等待解壓完成之後,一個啟動盤就做好了。

2 建立matrix-gui-2.0的連線檔案

通過執行這個指令碼來進行:注意修改腳本里面的路徑,在5和6行,這個指令碼路徑是我自己SD卡掛在的路徑

#!/bin/bash
# check if we need to create symbolic link for matrix 
cd /media/delvis/rootfs/etc/init.d

echo -n "Creating matrix-gui-e symbolic link..."
if [ -f /media/delvis/rootfs/etc/init.d/matrix-gui-e ]; then
  if [ -h /media/delvis/rootfs/etc/rc3.d/*matrix* ]; then
    echo " (skipped) "
  else
    ln -s  ../init.d/matrix-gui-e /tmp/sdk/$$/etc/rc3.d/S99matrix-gui-e
    ln -s  ../init.d/matrix-gui-e /tmp/sdk/$$/etc/rc5.d/S99matrix-gui-e
    echo "Create done"
  fi
fi

sync

3 記憶體卡啟動

可以把記憶體卡拿下來,放在板子裡啟動了。注意調節撥碼開關讓OMAPL138從記憶體卡啟動。

結束語

今天完成了Linux記憶體卡的製作,完成了,看到了啟動介面。

附錄檔案:

檔案:mksdboot.rar

參考文獻:

[3] 創龍公司著. mksdboot-tl.sh指令碼檔案和相關文件. 創龍手冊.

2· 文中涉及的內容若有侵權行為,請與本人聯絡,本人會及時刪除。

3· 尊重成果,本文將用的參考文獻全部給出,向無私的工程師,愛好者致敬。