折騰了好幾天,終於成功在beagleboard上執行qnx系統,如果說在beagleboard上執行android費了一些手腳的話,在beagleboard上執行qnx可以說是費盡周折。秉承本部落格的主旨,將折騰過程記錄下來,供各位同學參考,以後可以少繞一些彎子。
1. 首先要將啟動的sd卡進行分割槽和格式化,讓其中乙個分割槽成為啟動分割槽。
2. beagleboard提供了mlo和u-boot.bin檔案,將他們拷貝到sd卡的啟動分割槽後,beagleboard啟動時會啟動mlo程式,然後mlo程式會呼叫u-boot.bin。其中u-boot.bin可以用來裝載qnx系統映象。
4. 將生成的qnx系統映象檔案拷貝到sd卡啟動分割槽中,u-boot.bin啟動後會裝載qnx系統映象。
有了基本思路就開始開幹,第一步是對sd卡進行分割槽和格式化。
為了保持之前的wince系統和android系統,我另外找了乙個2g的卡,又是幾十塊錢出去了。。。。
網上有一些資料關於如何格式化sd卡的,有windows作業系統的方法,也有linux系統的方法。反正我的ubuntu已經安裝好了,而且linux系統上的方法說的詳細一點,就採用了linux系統上的方法。
將sd卡裝如讀卡器,將讀卡器插入pc上,從vmware選單上設定在ubuntu虛擬機器上使用usb裝置。
於是在我的ubuntu上就可以看到自動mount出來的sd卡內容了。
關掉自動顯示的sd卡內容視窗(主要是擔心一會umount sd卡的時候會出問題)
啟動ubuntu的terminal視窗,開始在命令列介面下格式化sd卡。
a)通過df命令檢視sd卡的裝置名,df的輸出裡有類似/dev/sdb1 .... /media/的一行,表示sd卡的裝置名是sdb,下面統一使用sdx作為sd卡的裝置名,如果你的情況有所不同,請作相應調整,如將umount /dev/sdx1 調整成umount /dev/sdb1
b) 通過umount命令釋放sbd: umount /dev/sdx1
c) 通過以下命令清除sdb的內容,如果遇到許可權問題,請使用sudo,或者直接設定root的密碼後su 到root上執行:
dd if=/dev/zero of=/dev/sdx bs=1m count=1
d)啟動fdisk:
fdisk /dev/sdx
c) 在fdisk介面下先通過命令p檢視一下情況,如果c)步驟完成的話,顯示出來的應該只用磁碟資訊,沒有分割槽資訊。在我參考的文件中建議通過磁碟資訊計算一下分割槽時分多少柱面,計算方法是位元組總量除以255再除以63再除以512,我自己用的是2g的卡,計算結果和他的相同,就按他的結果(239)做了。
command (m for help): p
disk /dev/sdx: 1973 mb, 1973420032 bytes
d)通過x命令進入高階模式:
command (m for help): x
e)通過h命令設定head數量,通過s命令設定setor數量,通過c命令設定cylinder數量,這裡的cylinder(柱面)使用的值就是上面算出來的值。其中的255,63就是上一步的除數。
expert command (m for help): h
number of heads (1-256, default 4): 255
expert command (m for help): s
number of sectors (1-63, default 62): 63
warning: setting sector offset for dos compatiblity
expert command (m for help): c
number of cylinders (1-1048576, default 1011): 239
f)通過r命令回到普通模式,使用n命令建立分割槽:
expert command (m for help): r
command (m for help): n
command action
e extended
p primary partition (1-4) p
partition number (1-4): 1
first cylinder (1-15, default 1): 1
last cylinder or +size or +sizem or +sizek (1-15, default 15): 15
g)讓分割槽成為啟動分割槽:
command (m for help): a partition number (1-4): 1
h)通過t命令設定分割槽為fat32格式的分割槽:
command (m for help): t
selected partition 1 hex code (type l to list codes): c
changed system type of partition 1 to c (w95 fat32 (lba))
i)通過p命令確認分割槽情況:
command (m for help): p
disk /dev/sdx: 1973 mb, 1973420032 bytes 255 heads, 63 sectors/track, 239 cylinders units = cylinders of 16065 * 512 = 8225280 bytes disk identifier: 0xa2b8daf8 device boot start end blocks id system /dev/sdx1 * 1 15 120456 c w95 fat32 (lba)
j)通過w命令寫入分割槽資訊:
command (m for help): w
the partition table has been altered! calling ioctl() t re-read partition table.
我繼續記錄我錯誤的做法,雖然是錯誤的,但是還是成功啟動qnx了。
將剛格式化得分割槽mount進來,拷貝mlo程式和u-boot.bin程式,注意一定要第乙個拷貝mlo程式,保證它在0磁軌上,beagleboard才能啟動它:
mount /dev/sdx1 /mnt
cp mlo /mnt cp u-boot.bin /mnt
umount /dev/sdx1
bits: 8
stop bits: 1
parity: none
在Linux上執行C
眾所周知,c 是microsoft推出的.net語言,只能在.net平台上執行,例如win 9x me nt 2000 xp和win ce之類的作業系統。但是,現在卻有了乙個叫做mono的專案,它的目標就是把.net及其程式語言移植到非windows的平台上。現在,c 是唯一被移植到非windows...
在Linux上執行C
眾所周知,c 是microsoft推出的.net語言,只能在.net平台上執行,例如win 9x me nt 2000 xp和win ce之類的作業系統。但是,現在卻有了乙個叫做mono的專案,它的目標就是把.net及其程式語言移植到非windows的平台上。現在,c 是唯一被移植到非windows...
在Nginx上執行Ruby on Rails
安裝ruby export path var lib gems 1.8 bin echo export path var lib gems 1.8 bin etc bash.bashrc aptitude install ruby rubygems vim ruby rub y dev libzli...