2016年5月30日 星期一

Ubuntu 將語系由中文改為英文

Ubuntu 將語系由中文改為英文



Step 1. 修改設定檔:

# vim /var/lib/locales/supported.d/local


將en_US.UTF-8 UTF-8放在第一列,
en_US.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8



Step 2. 修改設定檔:

# vim /etc/default/locale 


將相關字串放在最前面如下,

LANG="en_US.UTF-8"
LANGUAGE="en_US:en"


Step 3. 重新開機

#reboot


以上!



2016年5月27日 星期五

解決MT7620A "squashfs3.2-r2" 編譯問題


解決MT7620A "squashfs3.2-r2" 編譯問題

SDK Version: 4.3.0.0

編譯問題:

問題1.

cc   mksquashfs.o read_fs.o sort.o  -lz -L/home/paddy/workspace/project/mediatek/apsoc/RT288x_SDK/toolchain/mksquash_lzma-3.2/lzma443/C/7zip/Compress/LZMA_Alone -L/home/paddy/workspace/project/mediatek/apsoc/RT288x_SDK/toolchain/mksquash_lzma-3.2/lzma443/C/7zip/Compress/LZMA_C -lpthread -lunlzma_r -llzma_r -lstdc++  -o mksquashfs
/usr/bin/ld: mksquashfs.o: undefined reference to symbol 'log10@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[1]: *** [mksquashfs] Error 1
make[1]: Leaving directory `/home/paddy/workspace/project/mediatek/apsoc/RT288x_SDK/toolchain/mksquash_lzma-3.2/squashfs3.2-r2/squashfs-tools'

make: *** [all] Error 2

解決: 在mksquash_lzma-3.2/squashfs3.2-r2/squashfs-tools/Makefile中增加 -lm

 24 mksquashfs: LDLIBS += -lpthread -lunlzma_r -llzma_r -lstdc++ 
 25 mksquashfs: mksquashfs.o read_fs.o sort.o
 26 


修改成
 24 mksquashfs: LDLIBS += -lpthread -lunlzma_r -llzma_r -lstdc++ -lm
 25 mksquashfs: mksquashfs.o read_fs.o sort.o
 26 



問題2.

cc   unsquashfs.o  -lz -L/home/paddy/workspace/project/mediatek/apsoc/RT288x_SDK/toolchain/mksquash_lzma-3.2/lzma443/C/7zip/Compress/LZMA_Alone -L/home/paddy/workspace/project/mediatek/apsoc/RT288x_SDK/toolchain/mksquash_lzma-3.2/lzma443/C/7zip/Compress/LZMA_C -lunlzma -o unsquashfs
/home/paddy/workspace/project/mediatek/apsoc/RT288x_SDK/toolchain/mksquash_lzma-3.2/lzma443/C/7zip/Compress/LZMA_C/libunlzma.a(uncomp.o): In function `sqlzma_un':
uncomp.c:(.text+0x4b): 未定義參考到「inflateReset」
uncomp.c:(.text+0x8c): 未定義參考到「inflate」
uncomp.c:(.text+0x180): 未定義參考到「zError」
/home/paddy/workspace/project/mediatek/apsoc/RT288x_SDK/toolchain/mksquash_lzma-3.2/lzma443/C/7zip/Compress/LZMA_C/libunlzma.a(uncomp.o): In function `sqlzma_init':
uncomp.c:(.text+0x3a3): 未定義參考到「inflateInit_」
collect2: error: ld returned 1 exit status
make[1]: *** [unsquashfs] Error 1
make[1]: Leaving directory `/home/paddy/workspace/project/mediatek/apsoc/RT288x_SDK/toolchain/mksquash_lzma-3.2/squashfs3.2-r2/squashfs-tools'
make: *** [all] Error 2

解決: 在mksquash_lzma-3.2/squashfs3.2-r2/squashfs-tools/Makefile中增加 -lz

 30 
 31 unsquashfs: LDLIBS += -lunlzma

 32 unsquashfs: unsquashfs.o


修改成

 30 
 31 unsquashfs: LDLIBS += -lunlzma -lz

 32 unsquashfs: unsquashfs.o



以上!



MT7620A 編譯問題:mksquashfs


MT7620A 編譯問題:mksquashfs


問題1.  liblzma.so.0: cannot open shared object file: No such file ...


# update version info
echo ""WM102A"-0.0.4 (Beta, Build 64321.435)" > /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/etc/version
LC_ALL=C date -u >> /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/etc/version
mkdir -p /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/opt
cp -af /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/etc/version /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/opt/version
/home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/tools/mksquashfs: error while loading shared libraries: liblzma.so.0: cannot open shared object file: No such file or directory
make[1]: *** [platform_rt7620-image] Error 127
make[1]: Leaving directory `/home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336'
make: *** [target] Error 2

解決:
1.downlod xz-5.0.3.tar.bz2
2. 解壓縮:#tar jxvf xz-5.0.3.tar.bz2
3. #cd xz-5.0.3
4. #make
5. copy liblzma.so.5.0.3 至 /opt/buildroot-gcc342/lib
6.#cd  /opt/buildroot-gcc342/lib
7.#ln -s lib liblzma.so.5.0.3  liblzma.so
8.#ln -s lib liblzma.so.5.0.3  liblzma.so.0



問題2. liblzma.so.0: wrong ELF class: ELFCLASS64


# update version info

echo ""WM102A"-0.0.4 (Beta, Build 64331.424)" > /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/etc/version
LC_ALL=C date -u >> /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/etc/version
mkdir -p /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/opt
cp -af /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/etc/version /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/opt/version
/home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/tools/mksquashfs: error while loading shared libraries: liblzma.so.0: wrong ELF class: ELFCLASS64
make[1]: *** [platform_rt7620-image] Error 127
make[1]: Leaving directory `/home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336'
make: *** [target] Error 2


解決:重新編譯 squashfs4.2.tar.gz
1. download squashfs4.2.tar.gz
2. #tar zxvf   squashfs4.2.tar.gz
3. #cd  squashfs4.2/squashfs-tools
4. #vi Makefile (問題3 需要修改)

 GZIP_SUPPORT = 1
 19 
 20 ########### Building XZ support #############
 21 #
 22 # LZMA2 compression.
 23 #
 24 # XZ Utils liblzma (http://tukaani.org/xz/) is supported
 25 #
 26 # To build using XZ Utils liblzma - install the library and uncomment
 27 # the XZ_SUPPORT line below.
 28 #
 29 XZ_SUPPORT = 1


5.#make
6.將編譯好的mksquashfs 取代舊的
#cp mksquashfs  /opt/buildroot-gcc342/bin/mksquashfs_lzma-4.2

問題3 mksquashfs compressor xz is not supported

# update version info
echo ""WM102A"-0.0.4 (Beta, Build 64331.424)" > /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/etc/version
LC_ALL=C date -u >> /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/etc/version
mkdir -p /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/opt
cp -af /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/etc/version /home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/build/rootfs/opt/version
/home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336/tools/mksquashfs: invalid option
mksquashfs compressor "xz" is not supported
make[1]: *** [platform_rt7620-image] Error 127
make[1]: Leaving directory `/home/paddy/workspace/project/mediatek/apsoc2/WM102A-0.0.4.10336'
make: *** [target] Error 2

解決:請看問題2.


以上!

2016年5月23日 星期一

編譯問題解決: MT7620A Uboot


解決MT7620A "Uboot" 編譯問題

SDK Version: 4.3.0.0

編譯問題:ERROR: ... mkimage: invalid entry point -n


進入Uboot路徑:執行make最後要產生boot.img時產生錯誤.


./tools/mkimage -A mips -T standalone -C none \
-a 0x80200000 -e  \
-n "SPI Flash Image" \
-r DDR2 -s 16 -t 64 -u 32 \
-y 0xFF -z 0xFF -w 0xFF -d uboot.bin uboot.img
./tools/mkimage: invalid entry point -n

make: *** [uboot.img] Error 1




解決方法:


        此一錯誤是由於系統語言不是英文導致,請進入Uboot路徑;編輯Makefile;找到
mkimage ...-e $(shell readelf -h u-boot | grep "Entry" | awk '{print $$4}')                        
這一行,這就是出錯的地方.
        看看出什麼錯誤;在command line下執行: #readelf -h u-boot
Uboot# readelf -h u-boot
ELF 檔頭:
  魔術位元組:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  類別:                              ELF32
  資料:                              2 的補數,小尾序(little endian)
  版本:                              1 (current)
  OS/ABI:                            UNIX - System V
  ABI 版本:                          0
  類型:                              EXEC (可執行檔案)
  系統架構:                          MIPS R3000
  版本:                              0x1
  進入點位址:               0x80200000
  程式標頭起點:          52 (檔案內之位元組)
  區段標頭起點:          217472 (檔案內之位元組)
  旗標:             0x50001007, noreorder, pic, cpic, o32, mips32
  此標頭的大小:       52 (位元組)
  程式標頭大小:       32 (位元組)
  Number of program headers:         2
  區段標頭大小:         40 (位元組)
  區段標頭數量:         153

  字串表索引區段標頭: 150

原來是Makefile找不到”Entry“字串;將字串改成“進入點位址”再執行一次:


Uboot# readelf -h u-boot| grep '進入點位址'
  進入點位址:               0x80200000


終於找到進入點位址, 接著修改分析參數.
 awk '{print $$4}'

改成

 awk '{print $$2}'



重新編譯;終於成功了:


./tools/mkimage -A mips -T standalone -C none \
-a 0x80200000 -e 0x80200000 \
-n "SPI Flash Image" \
-r DDR2 -s 16 -t 64 -u 32 \
-y 0xFF -z 0xFF -w 0xFF -d uboot.bin uboot.img
Image Name:   SPI Flas
Created:      Mon May 23 15:33:25 2016
Image Type:   MIPS Linux Standalone Program (uncompressed)
Data Size:    88104 Bytes = 86.04 kB = 0.08 MB
Load Address: 0x80200000
Entry Point:  0x80200000
DRAM Parameter: 29 (Parm0=0 Parm1=0)

===============<<IMPORTANT>>==================
Notes:Uboot firmware in flash is uboot.img NOT uboot.bin

================================================



以上!