Hi, I'm trying to run ubuntu from sdcard on mini6410 and at the same time be able to use java on it without installing it in the Flash memory of the board, so i downloaded the jdk for arm from oracle website from here : http://download.oracle.com/otn-pub/java/jdk/7u45-b18/jdk-7u45-linux-arm-... and then i extracted the archive and put the folder in /opt of rootfs-ubuntu-0910 folder. I changed the files ~/.bashrc of allusers (root, ubuntu, and fa) and then i used the mktools to create my .ext3 image that i use from sdcard. The system runs finee, but the problem is that when i try to use java commands (like java, or javac) or even when i try to execute the scripts, it gives me the following message : /opt/jdk1.7.0_45/jre/bin/java: No such file or directory when i navigate to the folder, and list the files, "java" is listed as a binary file, with execution permission. when i try to run it the system cannot find it. So before asking for help i'll tell you what i already tried. i tried to create a new FriendlyARM.cpio containing the /opt folder, and with the good initialisation of the variable path in the script "init" that you can find after extracting the cpio. when i tried to use it to compile a new image of the kernel, it gave me the following error : linux-2.6.28.6/arch/arm/mm/proc-v6.S:227: relocation truncated to fit: R_ARM_JUMP24 against `.text.init' make: *** [.tmp_vmlinux1] Error 1 so any help about how to customize the filesystem and use it properly would be appreciated, and also i'll be delighted if someone can tell me what's the file "FriendlyARM.cpio" is really used for in the kernel, i tried to look for it, but no answers. Thanks in advance.
customize rootfs
Is "java" cross-compiled for the correct ARM platform? What does: readelf -a <filename> say about the 4th or 5th line from the end of the output? Just a guess.
Hi davef, here's the feedback of the command readelf -a ./java : ELF Header: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) Machine: ARM Version: 0x1 Entry point address: 0x8470 Start of program headers: 52 (bytes into file) Start of section headers: 2368 (bytes into file) Flags: 0x5000002, has entry point, Version5 EABI Size of this header: 52 (bytes) Size of program headers: 32 (bytes) Number of program headers: 8 Size of section headers: 40 (bytes) Number of section headers: 31 Section header string table index: 28 Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .interp PROGBITS 00008134 000134 000019 00 A 0 0 1 [ 2] .note.ABI-tag NOTE 00008150 000150 000020 00 A 0 0 4 [ 3] .note.gnu.build-i NOTE 00008170 000170 000024 00 A 0 0 4 [ 4] .hash HASH 00008194 000194 000048 04 A 5 0 4 [ 5] .dynsym DYNSYM 000081dc 0001dc 000080 10 A 6 1 4 [ 6] .dynstr STRTAB 0000825c 00025c 0000e4 00 A 0 0 1 [ 7] .gnu.version VERSYM 00008340 000340 000010 02 A 5 0 2 [ 8] .gnu.version_r VERNEED 00008350 000350 000040 00 A 6 2 4 [ 9] .rel.dyn REL 00008390 000390 000008 08 A 5 0 4 [10] .rel.plt REL 00008398 000398 000020 08 A 5 12 4 [11] .init PROGBITS 000083b8 0003b8 00000c 00 AX 0 0 4 [12] .plt PROGBITS 000083c4 0003c4 000044 04 AX 0 0 4 [13] .text PROGBITS 00008408 000408 000200 00 AX 0 0 4 [14] .fini PROGBITS 00008608 000608 000008 00 AX 0 0 4 [15] .rodata PROGBITS 00008610 000610 000020 00 A 0 0 4 [16] .ARM.exidx ARM_EXIDX 00008630 000630 000008 00 AL 13 0 4 [17] .eh_frame PROGBITS 00008638 000638 000004 00 A 0 0 4 [18] .init_array INIT_ARRAY 0001063c 00063c 000004 00 WA 0 0 4 [19] .fini_array FINI_ARRAY 00010640 000640 000004 00 WA 0 0 4 [20] .jcr PROGBITS 00010644 000644 000004 00 WA 0 0 4 [21] .dynamic DYNAMIC 00010648 000648 000110 08 WA 6 0 4 [22] .got PROGBITS 00010758 000758 000020 04 WA 0 0 4 [23] .data PROGBITS 00010778 000778 000008 00 WA 0 0 4 [24] .bss NOBITS 00010780 000780 000004 00 WA 0 0 1 [25] .comment PROGBITS 00000000 000780 000064 01 MS 0 0 1 [26] .ARM.attributes ARM_ATTRIBUTES 00000000 0007e4 000031 00 0 0 1 [27] .gnu_debuglink PROGBITS 00000000 000815 000014 00 0 0 1 [28] .shstrtab STRTAB 00000000 000829 000115 00 0 0 1 [29] .symtab SYMTAB 00000000 000e18 000670 10 30 78 4 [30] .strtab STRTAB 00000000 001488 000280 00 0 0 1 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings) I (info), L (link order), G (group), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific) There are no section groups in this file. Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align EXIDX 0x000630 0x00008630 0x00008630 0x00008 0x00008 R 0x4 PHDR 0x000034 0x00008034 0x00008034 0x00100 0x00100 R E 0x4 INTERP 0x000134 0x00008134 0x00008134 0x00019 0x00019 R 0x1 [Requesting program interpreter: /lib/ld-linux-armhf.so.3] LOAD 0x000000 0x00008000 0x00008000 0x0063c 0x0063c R E 0x8000 LOAD 0x00063c 0x0001063c 0x0001063c 0x00144 0x00148 RW 0x8000 DYNAMIC 0x000648 0x00010648 0x00010648 0x00110 0x00110 RW 0x4 NOTE 0x000150 0x00008150 0x00008150 0x00044 0x00044 R 0x4 GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RW 0x4 Section to Segment mapping: Segment Sections... 00 .ARM.exidx 01 02 .interp 03 .interp .note.ABI-tag .note.gnu.build-id .hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .ARM.exidx .eh_frame 04 .init_array .fini_array .jcr .dynamic .got .data .bss 05 .dynamic 06 .note.ABI-tag .note.gnu.build-id 07 Dynamic section at offset 0x648 contains 29 entries: Tag Type Name/Value 0x00000001 (NEEDED) Shared library: [libpthread.so.0] 0x00000001 (NEEDED) Shared library: [libjli.so] 0x00000001 (NEEDED) Shared library: [libdl.so.2] 0x00000001 (NEEDED) Shared library: [libc.so.6] 0x0000000e (SONAME) Library soname: [lib.so] 0x0000000f (RPATH) Library rpath: [$ORIGIN/../lib/arm/jli] 0x0000000c (INIT) 0x83b8 0x0000000d (FINI) 0x8608 0x00000019 (INIT_ARRAY) 0x1063c 0x0000001b (INIT_ARRAYSZ) 4 (bytes) 0x0000001a (FINI_ARRAY) 0x10640 0x0000001c (FINI_ARRAYSZ) 4 (bytes) 0x00000004 (HASH) 0x8194 0x00000005 (STRTAB) 0x825c 0x00000006 (SYMTAB) 0x81dc 0x0000000a (STRSZ) 228 (bytes) 0x0000000b (SYMENT) 16 (bytes) 0x00000015 (DEBUG) 0x0 0x00000003 (PLTGOT) 0x10758 0x00000002 (PLTRELSZ) 32 (bytes) 0x00000014 (PLTREL) REL 0x00000017 (JMPREL) 0x8398 0x00000011 (REL) 0x8390 0x00000012 (RELSZ) 8 (bytes) 0x00000013 (RELENT) 8 (bytes) 0x6ffffffe (VERNEED) 0x8350 0x6fffffff (VERNEEDNUM) 2 0x6ffffff0 (VERSYM) 0x8340 0x00000000 (NULL) 0x0 Relocation section '.rel.dyn' at offset 0x390 contains 1 entries: Offset Info Type Sym.Value Sym. Name 00010774 00000315 R_ARM_GLOB_DAT 00000000 __gmon_start__ Relocation section '.rel.plt' at offset 0x398 contains 4 entries: Offset Info Type Sym.Value Sym. Name 00010764 00000216 R_ARM_JUMP_SLOT 000083d8 __libc_start_main 00010768 00000316 R_ARM_JUMP_SLOT 00000000 __gmon_start__ 0001076c 00000416 R_ARM_JUMP_SLOT 000083f0 JLI_Launch 00010770 00000716 R_ARM_JUMP_SLOT 000083fc abort Unwind table index '.ARM.exidx' at offset 0x630 contains 1 entries: 0x8470 <_start>: 0x1 [cantunwind] Symbol table '.dynsym' contains 8 entries: Num: Value Size Type Bind Vis Ndx Name 0: 00000000 0 NOTYPE LOCAL DEFAULT UND 1: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTab 2: 000083d8 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.4 (2) 3: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ 4: 000083f0 0 FUNC GLOBAL DEFAULT UND JLI_Launch@SUNWprivate_1.1 (3) 5: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses 6: 00000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable 7: 000083fc 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.4 (2) Symbol table '.symtab' contains 103 entries: Num: Value Size Type Bind Vis Ndx Name 0: 00000000 0 NOTYPE LOCAL DEFAULT UND 1: 00008150 0 NOTYPE LOCAL DEFAULT 2 $d 2: 00008470 0 NOTYPE LOCAL DEFAULT 13 $a 3: 00008630 0 NOTYPE LOCAL DEFAULT 16 $d 4: 000084a0 0 NOTYPE LOCAL DEFAULT 13 $d 5: 00008610 0 NOTYPE LOCAL DEFAULT 15 $d 6: 00010778 0 NOTYPE LOCAL DEFAULT 23 $d 7: 000084ac 0 NOTYPE LOCAL DEFAULT 13 $a 8: 000084ac 0 FUNC LOCAL DEFAULT 13 call_gmon_start 9: 000084c8 0 NOTYPE LOCAL DEFAULT 13 $d 10: 000083b8 0 NOTYPE LOCAL DEFAULT 11 $a 11: 00008608 0 NOTYPE LOCAL DEFAULT 14 $a 12: 000083c0 0 NOTYPE LOCAL DEFAULT 11 $a 13: 0000860c 0 NOTYPE LOCAL DEFAULT 14 $a 14: 00008408 0 NOTYPE LOCAL DEFAULT 13 $a 15: 00008464 0 NOTYPE LOCAL DEFAULT 13 $d 16: 00008614 0 NOTYPE LOCAL DEFAULT 15 $d 17: 00010644 0 OBJECT LOCAL DEFAULT 20 __JCR_LIST__ 18: 000084d0 0 NOTYPE LOCAL DEFAULT 13 $a 19: 000084d0 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones 20: 000084fc 0 NOTYPE LOCAL DEFAULT 13 $d 21: 00008508 0 NOTYPE LOCAL DEFAULT 13 $a 22: 00008508 0 FUNC LOCAL DEFAULT 13 register_tm_clones 23: 0000853c 0 NOTYPE LOCAL DEFAULT 13 $d 24: 0001077c 0 NOTYPE LOCAL DEFAULT 23 $d 25: 00008548 0 NOTYPE LOCAL DEFAULT 13 $a 26: 00008548 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux 27: 0000856c 0 NOTYPE LOCAL DEFAULT 13 $d 28: 00010780 1 OBJECT LOCAL DEFAULT 24 c...stripped-down
here are the last lines of the output, they don't seem to be pasted here : Attribute Section: aeabi File Attributes Tag_CPU_name: "6" Tag_CPU_arch: v6 Tag_ARM_ISA_use: Yes Tag_THUMB_ISA_use: Thumb-1 Tag_VFP_arch: VFPv2 Tag_ABI_PCS_wchar_t: 4 Tag_ABI_FP_denormal: Needed Tag_ABI_FP_exceptions: Needed Tag_ABI_FP_number_model: IEEE 754 Tag_ABI_align8_needed: Yes Tag_ABI_align8_preserved: Yes, except leaf SP Tag_ABI_enum_size: int Tag_ABI_HardFP_use: SP and DP Tag_ABI_VFP_args: VFP registers Tag_CPU_unaligned_access: v6 Tag_unknown_44: 1 (0x1)
> /opt/jdk1.7.0_45/jre/bin/java: No such file or directory This kind of error message occurs when some needed libraries are missing. You already got the list of required libraries by using the 'readelf' command: 0x00000001 (NEEDED) Shared library: [libpthread.so.0] 0x00000001 (NEEDED) Shared library: [libjli.so] 0x00000001 (NEEDED) Shared library: [libdl.so.2] 0x00000001 (NEEDED) Shared library: [libc.so.6] Are these libs present in your target's root filesystem?
@Juergen Beisert Thanks for the answer but all the files you mentioned are available on the target filesystem, so any other guesses ? i'll be so glad if you help me solve this problem
solved it, davef was right, the files i used were for chips that have hardware support for floating point "hflt", while S3C6410 has a software support for floating point, so when i've put the right files on, it worked like a charm, thank you guys. PS: i still need information about FriendlyARM.cpio if anyone can help, all i know is that this file contains some sort of filesystem that will be loaded in the RAM, so correct me if i'm wrong, and give me some more info if you can. Thanks again.
it's in /scripts/ in the kernel sources, you can open it like a zip file. no idea how you edit one though, whenever I did, I broke stuff.
@Reggie: My question is about what's (friendlyarm.cpio) used for in the kernel not where would i find it. and for your information the following link is showing a scenario in which he user had to customize friendlyarm.cpio, i didn't manage to do the same thing, but still the topic contains cool stuff to know, hope you enjoy the reading : http://www.friendlyarm.net/forum/topic/2385
"[...] were for chips that have hardware support for floating point "hflt", while S3C6410 has a software support for floating point [...]" This is not hardware related, it's just toolchain related (compiler, assember, linker). The ARMv6 in the S3C6410 SoC supports hardware floating point. If the toolchain makes use of it, it can use the floating point register when calling functions or still the CPU main registers. That's why libs and programs from different toolchains cannot be mixed. Once more it is important to build the whole system with one toolchain. For the records (ouput from the 'readelf -a <targetfile>' command): Hardware floating point support with CPU's main registers usage: Tag_CPU_name: "ARM1136JF-S" Tag_CPU_arch: v6 Tag_ARM_ISA_use: Yes Tag_THUMB_ISA_use: Thumb-1 Tag_FP_arch: VFPv2 Tag_ABI_PCS_wchar_t: 4 Tag_ABI_FP_denormal: Needed Tag_ABI_FP_exceptions: Needed Tag_ABI_FP_number_model: IEEE 754 Tag_ABI_align_needed: 8-byte Tag_ABI_align_preserved: 8-byte, except leaf SP Tag_ABI_enum_size: int Tag_ABI_HardFP_use: SP and DP Tag_ABI_optimization_goals: Aggressive Speed Tag_CPU_unaligned_access: v6 Tag_DIV_use: Not allowed Hardware floating point support with floating point registers usage: Tag_CPU_name: "ARM1136JF-S" Tag_CPU_arch: v6 Tag_ARM_ISA_use: Yes Tag_THUMB_ISA_use: Thumb-1 Tag_FP_arch: VFPv2 Tag_ABI_PCS_wchar_t: 4 Tag_ABI_FP_denormal: Needed Tag_ABI_FP_exceptions: Needed Tag_ABI_FP_number_model: IEEE 754 Tag_ABI_align_needed: 8-byte Tag_ABI_align_preserved: 8-byte, except leaf SP Tag_ABI_enum_size: int Tag_ABI_HardFP_use: SP and DP Tag_ABI_VFP_args: VFP registers Tag_ABI_optimization_goals: Aggressive Speed Tag_CPU_unaligned_access: v6 Tag_DIV_use: Not allowed And here the output without any hardware floating point support: Tag_CPU_name: "4T" Tag_CPU_arch: v4T Tag_ARM_ISA_use: Yes Tag_THUMB_ISA_use: Thumb-1 Tag_ABI_PCS_wchar_t: 4 Tag_ABI_FP_denormal: Needed Tag_ABI_FP_exceptions: Needed Tag_ABI_FP_number_model: IEEE 754 Tag_ABI_align_needed: 8-byte Tag_ABI_align_preserved: 8-byte, except leaf SP Tag_ABI_enum_size: int Tag_ABI_optimization_goals: Aggressive Speed Tag_DIV_use: Not allowed
@ Juergen Beisert : So it's a toolchain related issues, programs cannot use libs that were not compiled using the same toolchain, that's clear enough now, thank you for the clarification. Do you have anything to tell me about FriendlyARM.cpio ? I'll be glad to hear (or in this case to read).