[Q] HOWTO for building a custom ROM? - Captivate Q&A, Help & Troubleshooting

I consider myself a smart guy. I am also pretty tenacious when it comes to problem solving.
While my goal is simple, the work required to achieve it may be daunting.
I am sick and tired of AT&T's bloatware, branding and other nonsense and I want to create a ROM with the following:
* Stock Android 2.2 OS + Samsung drivers
* Minimal set of required applications and services required to run the OS plus the following add-ons:
1) ROM Manager
2) Titanium Backup
3) Root
Ideally I'd get the 2.2 source from Google, build it, add the Samsung drivers, and get the filesystem layout. Then I would be able to add in the apks as necessary.
Perhaps I am biting off more than I can chew at this point, but I don't know. I've searched for articles on building custom ROMs but most are pretty old and outdated.
Am I crazy here? Is this doable?

gdanko said:
I consider myself a smart guy. I am also pretty tenacious when it comes to problem solving.
While my goal is simple, the work required to achieve it may be daunting.
I am sick and tired of AT&T's bloatware, branding and other nonsense and I want to create a ROM with the following:
* Stock Android 2.2 OS + Samsung drivers
* Minimal set of required applications and services required to run the OS plus the following add-ons:
1) ROM Manager
2) Titanium Backup
3) Root
Ideally I'd get the 2.2 source from Google, build it, add the Samsung drivers, and get the filesystem layout. Then I would be able to add in the apks as necessary.
Perhaps I am biting off more than I can chew at this point, but I don't know. I've searched for articles on building custom ROMs but most are pretty old and outdated.
Am I crazy here? Is this doable?
Click to expand...
Click to collapse
You are not crazy, you can do it. And please write an uptodate tutorial about building custom ROMs.

Well I need to find a basic HOWTO for building ROMs that isnt > 1 year old. I am hunting for something reliable.

I found a good HOWTO here but it's for the Desire.
http://forum.xda-developers.com/showthread.php?t=709105
There is reference to "vendor files" which appear to be device-specific files for the build. Do such animals exist for the Captivate?
That aside, I was able to build a generic Froyo and I have the Captivate kernel source downloaded from Samsung. Once I can make this build image Captivate-specific I can tie it all together with the kernel.

The vendor files are available at Samsung, too, but the files appear to be 2.1-specific as referenced in this text file:
1. Get android open source.
: version info - Android eclair 2.1 (android-2.1_r2)
( Download site : http://source.android.com )
2. Overwrite modules that you want to build.
3. Add the following lines at the end of build/target/board/generic/BoardConfig.mk
BOARD_HAVE_BLUETOOTH := true
BT_USE_BTL_IF := true
BT_ALT_STACK := true
BRCM_BTL_INCLUDE_A2DP := true
BRCM_BT_USE_BTL_IF := true
4. make update-api
5. make

gdanko said:
The vendor files are available at Samsung, too, but the files appear to be 2.1-specific as referenced in this text file:
1. Get android open source.
: version info - Android eclair 2.1 (android-2.1_r2)
( Download site : http://source.android.com )
2. Overwrite modules that you want to build.
3. Add the following lines at the end of build/target/board/generic/BoardConfig.mk
BOARD_HAVE_BLUETOOTH := true
BT_USE_BTL_IF := true
BT_ALT_STACK := true
BRCM_BTL_INCLUDE_A2DP := true
BRCM_BT_USE_BTL_IF := true
4. make update-api
5. make
Click to expand...
Click to collapse
that would probably be because Samsung has not officially released 2.2 or the source code for it.

Pirateghost said:
that would probably be because Samsung has not officially released 2.2 or the source code for it.
Click to expand...
Click to collapse
Yep, although looks like you're making way more headway than me in the custom ROM front. I'd love a good generic walk though. There is nothing I've found other than either very technical, or very vague information.

Once I have the process down I will write up a *very* detailed walk through. Just help me get to that point.
I do have a question.
Building the ROM and building the kernel are independent of one another, right? I don't need to replace the kernel as well, do I? Looking at my Nandroid backups I have the following files:
cache.img
data.img
datadata.img
system.img
nandroid.md5
It is my understanding that the kernel is called zImage. So with that said, if I am able to build the aforementioned .img files I should be able to build the ROM, right?
Thoughts?
Furthermore, since Samsung hasn't released the 2.2 sources yet I will just use 2.1 as a test bed. As stated previously, my goal is to create a 100% plain vanilla ROM for the Captivate and I think with all of you to support me I can do that. From there we can add more useful things if need be. But for now, I want to make it stock.

I had jdk 1.6 and had previously just commented out the java version check as outlined in another HOWTO. But I opted to just grab the 1.5 jdk from Sun (Oracle)
make update-api looks good:
[email protected]:~/android_build/mydroid$ make update-api
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.1-update1
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=ECLAIR
============================================
However, I am told newer versions of gcc are problematic with Android so I want to find gcc3.4 which I believe is the best version to build Android. Assuming this builds okay and I think it will, how do I get the apks into the .img files?

After merging Samsung's files into the Eclair source the build is complete!
[email protected]:~/android_build/mydroid/out/target/product/generic$ ls -l *.img
-rw-r--r-- 1 gdanko gdanko 159163 2010-10-13 08:42 ramdisk.img
-rw------- 1 gdanko gdanko 57541440 2010-10-13 08:42 system.img
-rw------- 1 gdanko gdanko 2112 2010-10-13 08:42 userdata.img
Now, my Nandroid backups have the following files:
bash-3.2$ ls -l
-rw-rwxr-x system sdcard_rw 268821696 2010-10-04 15:01 system.img
-rw-rwxr-x system sdcard_rw 162976704 2010-10-04 15:02 data.img
-rw-rwxr-x system sdcard_rw 1203840 2010-10-04 15:02 datadata.img
-rw-rwxr-x system sdcard_rw 16896 2010-10-04 15:02 cache.img
-rw-rwxr-x system sdcard_rw 179 2010-10-04 15:03 nandroid.md5
I am noticing that a stock AT&T Captivate system.img is considerably larger than my system.img. Is this okay?
Also, I am missing data.img, datadata.img, and cache.img in my build. Any idea why?
So... assuming this IS successul, what do I need to do next to use this ROM? I will obviously first test it on the emulator. Furthermore, I want to verify if I can just leave the stock Captivate kernel in place.
Any thoughts?

i would think it would be fine to leave the captivate kernel in place. i am curious to see where this goes.
by the way, check out the dev section. i9000 froyo source went up this morning
http://forum.xda-developers.com/showthread.php?t=807423

I am trying to get the emulator set up to see if my ROM image works. I am confident it will. I wont build a 2.2 ROM until I have a 2.2 kernel. There is no config on the device so I don't know the kernel settings. Too risky for me.

This is pretty interesting. I'll be subscribing to this thread for updates. It would be cool if someone actually made some progress on an AOSP 2.2 rom for us.

I am pretty confident my 2.1 ROM will work. If it does, the 2.2 will be a slam dunk provided Samsung gives us the SGH-I897 files.

gdanko said:
[email protected]:~/android_build/mydroid/out/target/product/generic$ ls -l *.img
-rw-r--r-- 1 gdanko gdanko 159163 2010-10-13 08:42 ramdisk.img
-rw------- 1 gdanko gdanko 57541440 2010-10-13 08:42 system.img
-rw------- 1 gdanko gdanko 2112 2010-10-13 08:42 userdata.img
Now, my Nandroid backups have the following files:
bash-3.2$ ls -l
-rw-rwxr-x system sdcard_rw 268821696 2010-10-04 15:01 system.img
-rw-rwxr-x system sdcard_rw 162976704 2010-10-04 15:02 data.img
-rw-rwxr-x system sdcard_rw 1203840 2010-10-04 15:02 datadata.img
-rw-rwxr-x system sdcard_rw 16896 2010-10-04 15:02 cache.img
-rw-rwxr-x system sdcard_rw 179 2010-10-04 15:03 nandroid.md5
Click to expand...
Click to collapse
Talking to a guy here at work I found out:
* data.img is /data
* datadata.img is /data/data
This is not created when I build my ROM. Is there an option to build data.img? I believe /data is needed in order to boot.

Here are the first images of my ROM running on the emulator. Only real problem is that calendar crashes. I will any ideas why??? :/
Enclosing logcat output. It looks like the calendar is trying to connect to google and cannot since the apis are missing. I don't think it's an issue with the ROM itself.

I bit the bullet and installed the ROM to my device to see what it'd do. I of course created a Nandroid backup first.
The ROM did install successfully via this method:
1) From my Linux box, md5sum system.img > nandroid.md5
2) mkdir /mnt/captivate/clockworkmod/backup/Test
3) cp system.img /mnt/captivate/clockworkmod/backup/Test/
4) cp nandroid.md5 /mnt/captivate/clockworkmod/backup/Test/
5) Run CWM and Backup Current ROM
6) Run CWM and boot into recovery
7) From recovery mode, factory reset the device
8) From recovery mode, restore "Test"
9) From recovery mode, reboot!
The ROM actually booted up with the following issues:
1) No internet access. Most likely because I have not installed the radio's software? How and where do I get it?
2) The screen flickers like crazy. I am not sure why. In the Samsung directory there is an OpenGL archive. I should see if I can use that to fix screen issues.
3) Calendar crashes, this happens in the emulator too. adb logcat shows the calendar is trying to reach Google but the APIs are not installed.
4) The "Product" in Settings > About is "generic". How can I make that "SAMSUNG-SGH-I897"? Just change the environment variable?
I am looking forward to your replies! I think with the help of the community I can rid the Captivate (and other devices) of the tyranny that is crapware!

gdanko did you give up on this or move to something better I would really like to see where this went and what happen to your howto.

Seems like this thread is dead unfort - proabably either - got stuck with RL crap or he bought a different phone

Related

[HOW-TO] Modify boot.img for LG Thrill/O3D

Im sure a good bit of you have already figured out that there is ZERO documentation on building a boot.img for our phones. Unfortunately it is not a generic process and every device is different. So basically this is a how-to on unpacking/repacking a boot.img for flashing to the device. This will allow you to make ramdisk modifications and create a boot.img from a kernel you compiled.
Directions
First youre going to need a few things. First and foremost, I have NO IDEA HOW TO DO THIS ON WINDOWS, so dont ask. If someone does then shoot me the directions and Ill put it up here and give you full credit.
You will need a Linux distribution such as Ubuntu (you can use a live CD or run it in a Virtual Machine as well, but again, dont ask me how to run it in Virtual Machine, Ive never done it).
-You will need to download the included boot-tools.zip which includes three things: unpack-bootimg.pl, mkbootimg, and a META-INF directory for flashing the boot.img in cwm recovery.
-You will also need the stock boot.img (or a custom one if you can find one at this point )
-Extract the boot-tools.zip to youre home folder. Make sure both files inside can be Executed as a program by checking 'Properties>Permissions'.
-Paste your boot.img in that folder as well.
-Open up a Terminal and:
Code:
cd ~/boot-tools
-Type:
Code:
./unpack-bootimg.pl boot.img
-This will create:
boot-img.ramdisk (this is the extracted ramdisk where you can make changes to your ramdisk)
boot-img.ramdisk.cpio.gz (this is the compressed ramdisk. You dont need to touch this.
boot.img-kernel.gz (this is the actual kernel)
-Rename "boot.img-kernel.gz" to "zImage" (OR, if you compiled your own just delete "boot.img-kernel.gz" and paste your compiled zImage here.
-Now you can make any changes you want inside boot-img.ramdisk.
-Now to repack the ramdisk so it can be packaged with the kernel you need to change directories in Terminal again:
Code:
cd ~/boot-tools/boot-img.ramdisk
-Now in the Terminal type:
Code:
find . | cpio -o -H newc | gzip > ../newramdisk.cpio.gz
(This part may require some package dependencies which you may need to install (gzip)
-This will produce a new package called "newramdisk.cpio.gz" This is the ramdisk you will package into the boot.img.
-So now finally we are going to bundle it all up into a boot.img
-So again we are going to change directories in the Terminal:
Code:
cd ~/boot-tools
-Now this next part needs to be exact or it will not work. In Terminal type:
Code:
mkbootimg --kernel zImage --ramdisk newramdisk.cpio.gz --cmdline "root=/dev/ram0 rw mem=128M console=ttyS2,115200n8 initrd=0x81600000,20M ramdisk_size=20480" --board omap4spd --base 0x756e0000 --ramdiskaddr 0x81600000 -o newboot.img
-This is very fast and it produces a new file called "newboot.img"
-You can now either delete or rename the original file called "boot.img"
-Now rename "newboot.img" to "boot.img"
-Now take "boot.img" and "Meta-INF" and zip those up together, naming the .zip whatever you want.
-Now you have a flashable boot.img update.zip you can put on your SD Card and flash from CWM recovery.
I suggest unpacking and then repacking a stock kernel without modification and then flashing it just to make sure it works before you make any changes.
Barring typo's, this process does work. Ive built a boot.img with it and the boot.img has been verified by other xda-ers to fully boot up and work. If I messed something up just let me know so I can fix it! Feedback is always welcome!
DOWNLOADS
boot-tools.zip
A breakdown of the boot.img bundling code:
Code:
mkbootimg --kernel zImage --ramdisk newramdisk.cpio.gz --cmdline "root=/dev/ram0 rw mem=128M console=ttyS2,115200n8 initrd=0x81600000,20M ramdisk_size=20480" --board omap4spd --base 0x756e0000 --ramdiskaddr 0x81600000 -o newboot.img
mkbootimg: This is just the command to use mkbootimg that packages the boot.img
--kernel zImage:This defines the file you want mkbootimg to use as your kernel.
--ramdisk newramdisk.cpio.gz: This defines the package you want to use as your ramdisk.
--cmdline "root=/dev/ram0 rw mem=128M console=ttyS2,115200n8 initrd=0x81600000,20M ramdisk_size=20480": This part is specific to our device and is taken from the kernel source. This is the part that was such a mystery
--board: This defines what board were installing our kernel too. This may or may not be needed. But I didnt test without this.
--base 0x756e0000: This defines the kernel base address. This is also device specific.
--ramdiskaddr 0x81600000: This defines the ramdisk base address. This is also device specific.
-o newboot.img: This tells mkbootimg what to name the output file, which in this case is "newboot.img" You can change this to whatever you want.
Thanks, good write up. I have a question. I'm on mac. I have mkbootimg from ICS sources, but I have no --ramdiskaddr option. Are you using a special mkbootimg?
You can install run it through cygwin on windows and i think on a mac too. Thats what i use for my kitchen and tools...
Or you cab just make a 10 gig partition and run dual boot ubuntu... i do that too but actually use 20 gigs... it is much easier than virtual. I use cygwin the most unless its a heavy duty project.
Sent from my LG-P925 using XDA App
Dont know what im doing wrong...
getting
"mkbootimg not found"
dont know what i did wrong...
its in the folder...
any ideas?
Cannot repack in cygwin. You must use virtual or real ubuntu install.
Sent from my LG-P925 using XDA App
Thank you eternally sir! This shall come in handy.
oh, and I'm going to be doing this on my HP 210 netbook with Linux on it. It's what I've compiled every kernel over in the Infuse forums and even Linuxbozo's CM7 Kang for myself before I moved to the Thrill.
Anyone try to complie the kernel with cm7 source? Didn't get the Tiap_drv.ko (wifi driver)
Sent from my Optimus 3D using Tapatalk
anyone?
im running ubuntu linux...
i tried adding ./mkbootimg... (says cannot execute binary file)
i tried adding sudo ./mkbootimg... (says syntax error)
i tried sudo mkbootimg... (says command not found)
i tried a space between . and /... (says no such file or directory)
i tried adding the full file path.
i have no idea what to do...
help please.
bzlmnop said:
im running ubuntu linux...
i tried adding ./mkbootimg... (says cannot execute binary file)
i tried adding sudo ./mkbootimg... (says syntax error)
i tried sudo mkbootimg... (says command not found)
i tried a space between . and /... (says no such file or directory)
i tried adding the full file path.
i have no idea what to do...
help please.
Click to expand...
Click to collapse
Did you give mkbootimg executable permissions?
Also you might try
Code:
sudo cp [I]path_to_[/I]/mkbootimg /usr/bin
Sent from my LG-P925 using Tapatalk
I did make sure it had the proper permissions...
Will cp path move mkbootimg to /usr/bin?
Because right now its just in my boot-tools folder...
Either way I will try it when I get home...
Thanks.
Sent from my LG-P925 using xda premium
Edit:
I tried copying it to /usr/bin.
Made sure permissions were correct.
Still nothing...
Edit #2:
Ok it might be working now...
how long should it take?
And will there be any result dialog?
Edit #3:
Nevermind, didnt work at all.
Have tried the entire process start to finish about 3 or 4 times now.
Still no success...
However i did find a typo in the OP "cd ~/boot-tools/boot-img.ramdisk" should be "boot.img-ramdisk"
Still everytime i try mkbootimg it says "bash: /usr/bin/mkbootimg: cannot execute binary file"
Any help would be greatly appreciated.
Thanks.
Aria check your PM
???
Alright,
nevermind i guess.
I have given up.
i have read everything there is out there to read about using mkbootimg.
the closest i have gotten is using a root account and it gave me a usage message:
"usage: mkbootimg
--kernel <filename>
--ramdisk <filename>
[ --second <2ndbootloader-filename> ]
[ --cmdline <kernel-commandline> ]
[ --board <boardname> ]
[ --board <address> ]
-o | --output <filename>"
Nothing i can find or no one i have asked seems to have an answer.
im so mad right now, bc trying to develop and stuff was fun up to this point. Now it just completely blows.
Mkbooimg doesn't work for O3D or thrill, you need too use U-boots mkimage also when unpacking the boot.img you just remove the first 76 bytes not the first 2048 as you do with mkbootimg files
Sent from my LG-P920 using Tapatalk
Thank you Echts!
Ok i will try that and report back...
So, the guide in the OP is wrong then?
b/c the included .zip has mkbootimg in it...
bzlmnop said:
Ok i will try that and report back...
So, the guide in the OP is wrong then?
b/c the included .zip has mkbootimg in it...
Click to expand...
Click to collapse
haven't followed his guide to test exactly but has anyone gotten his way to work? Looks like the old way which I don't know anyone who has gotten to work.
O3D/Thrill use U-boot images afaik and mkimage works, I repack that way, it's how I put the overclock module tekahuna did in to the boot.img
Sent from my LG-P920 using Tapatalk
ok, I think I see the problem... I use another mkbootimg and the "file mkbootimg" command produces:
mkbootimg: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
Whereas using CallMeAria's produces:
mkbootimg: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped
The first one works for me but does not have the ramdiskaddr option. Are you using a 64bit system Aria?
Edit: or visa versa, not sure what I'm using on my HP210 Netbook. Just know it's XCFE xubuntu. Asked for it preinstalled.
Multiupload is down can somebody reupload or send me the link
thank you
I also need the link to the boot tools zip

[HOWTO] Unpack and repack stock firmware, works also for gen8

Hello All,
Here is a log of what I did to unpack and repack 3.2.78 firmware if any cooker is interested. The interesting part that differs in gen8 and gen9 compared to previous generation is the way you extract kernel and initrd.
For the record, Archos changed again initrd compression in this one, this is now lzo, not lzma anymore. Gen8 extract is the same except that they still use .gz instead of lzma/lzo.
I also attached the tools (linux) I use, aos-unpack has gen8 and gen9 keys, aos-kernel-unpack is a tool I wrote to split zImage and initrd.
Log is a bit rough, but all should be there:
Code:
aos-unpack firmware_archos_it4.aos
cd firmware_archos_it4/raw
dd if=9_MMCF of=init_kernel bs=264 skip=1
aos-kernel-unpack init_kernel
mv unpacked-cpio.gz init-cpio.cpio.lzo
mv unpacked-header init-header
mv unpacked-kernel init-zImage
rm unpack-unknown
dd if=10_MMCF of=recovery_kernel bs=264 skip=1
aos-kernel-unpack recovery_kernel
mv unpacked-cpio.gz recovery-cpio.cpio.lzo
mv unpacked-header recovery-header
mv unpacked-kernel recovery-zImage
rm unpack-unknown
mkdir init_cpio
cd init_cpio
cat ../init-cpio.cpio.lzo | lzop -d | sudo cpio -i --make-directories
cd ..
mkdir recovery_cpio
cd recovery_cpio
cat ../recovery-cpio.cpio.lzo | lzop -d | sudo cpio -i --make-directories
sudo emacs init (comment secure part and change squashfs location:
#if [ $SQUASHFS_CHECK -eq 1 ] ; then
# SQUASHFS_FULL_PATH=`get_mount_info p system`/$SECURE_SQUASHFS_FILENAME
# $CRAMFSCHECKER $SQUASHFS_FULL_PATH
# if [ $? -ne 0 ] ; then
# $FLASH_PARTITION_ERASE init
# log_and_reboot $FS_CHECK_ERROR "Secured fs check failed"
# fi
# $LOSETUP -o 256 `get_mount_info d rootfs` $SQUASHFS_FULL_PATH || log_and_die "Mounting system partition failed"
#else
mount_p data
$LOSETUP `get_mount_info d rootfs` /data/media/android_3.2.78.squashfs || log_and_die "Mounting system partition failed"
#fi
)
sudo su
rm init~
find . | cpio -o -H newc | lzop > ../new_initrd.lzo
cd ../../root/data/
dd if=androidmerged.squashfs.secure of=androidmerged.squashfs bs=256 skip=1
unsquashfs androidmerged.squashfs
cd squashfs-root
cp ../../../../3.2.69/root/data/squashfs-root/system/bin/su system/bin
chmod 6755 system/bin/su
cp ../../../../3.2.69/root/data/squashfs-root/system/app/Superuser.apk system/app
emacs default.prop
-> ro.secure=0
-> persist.service.adb.enable=1
emacs system/build.prop
-> ro.board.has_vibrator=yes
tar -cvzf ../rooted_stock_3.2.78.tgz *
cd ..
mksquashfs squashfs-root android_3.2.78.squashfs
Let me know if you need details or explanations. I didn't release 3.2.78 yet, my g9 battery is dead (or is it the whole tablet ? Crossing finger ) and I can't test right now. Hopefully it will go back to life and I will be able to test soon.
LeTama
i searched for some tool like this
but i cant execute the archos-tools(archos-unpack, archos-kernel-unpack)
im using ubuntu 10.10 and i get "cant execute binary file"
i writed "aos-unpack firmware_archos_it4.aos" in terminal in the directory i have the aos-unpack firmware_archos_it4.aos
any idea what i do wrong,
sorry if i m spaming this thread because i dont understand so much yet (i get my archos g9 on xmas)
Oups, yes, I believe I know... 64 bits Ubuntu here, I bet you are 32 ?
letama said:
Oups, yes, I believe I know... 64 bits Ubuntu here, I bet you are 32 ?
Click to expand...
Click to collapse
i m on virual box and yes i have 32 bit
djnilse said:
i m on virual box and yes i have 32 bit
Click to expand...
Click to collapse
Ok, that explains. I uploaded 32 bits version, can you try them and let me know if they work ?
Thanks!
letama said:
Ok, that explains. I uploaded 32 bits version, can you try them and let me know if they work ?
Click to expand...
Click to collapse
ok i ll try it, i ll report back in a hour or so
HI!
Thanks @letama for your linux tools .
I repacked firmware.squashfs.secure but now I don't know which are the correct zImage and initramfs.cpio.gz ( into .../raw -directory ) for flash into Recovery. ( I used your tools for unpack-repack - 3.2.78 firmware) .
---------- Post added at 08:00 PM ---------- Previous post was at 07:50 PM ----------
Following your tutorial for version 3.2.69 I managed to root my device , but I returned to the official version 3.2.78 without root, because was not stable and had no root privileges for all apk instaled ( root_explorer , setcpu and ather like that without root privileage ) - for this I gave up...
Thanks for your tools !
Now, I can update my rootfs to 3.2.78.
Have a nice day !
Thaolia
Thanks for this, might come in handy, might start cooking.... Never done it before. Does anyone know if anyone has started getting ClockworkMod running on this so we can get some CyanogenMod 9 love on this?
Sent from my Galaxy Nexus using XDA App
surdu_petru said:
Thanks @letama for your linux tools .
I repacked firmware.squashfs.secure but now I don't know which are the correct zImage and initramfs.cpio.gz ( into .../raw -directory ) for flash into Recovery. ( I used your tools for unpack-repack - 3.2.78 firmware) .
Click to expand...
Click to collapse
Kernel unpack is in the list of commands there, and you also have to modify the initrd...
surdu_petru said:
Following your tutorial for version 3.2.69 I managed to root my device , but I returned to the official version 3.2.78 without root, because was not stable and had no root privileges for all apk instaled ( root_explorer , setcpu and ather like that without root privileage ) - for this I gave up...
Click to expand...
Click to collapse
3.2.78 rooted is coming soon, I'm uploading it currently, it should be ready in few minutes.
letama said:
3.2.78 rooted is coming soon, I'm uploading it currently, it should be ready in few minutes.
Click to expand...
Click to collapse
coool, i gonna try it as soon as its up
for the 32-bit thing,
i unpacked the .78 firmware it worked well
Ok now I found the way....it's rooted v3.2.78 working very well but I still not root privilege for all apk ....I have to find a solution, because I do not like root half ...
surdu_petru said:
Ok now I found the way....it's rooted v3.2.78 working very well but I still not root privilege for all apk ....I have to find a solution, because I do not like root half ...
Click to expand...
Click to collapse
do you tried to reinstall the apps or even the whole firmware ?
i was on .69 rooted(squash) and root explorer, setcpu and titanium backup
worked rooted
djnilse said:
do you tried to reinstall the apps or even the whole firmware ?
i was on .69 rooted(squash) and root explorer, setcpu and titanium backup
worked rooted
Click to expand...
Click to collapse
For both rooted versions (3.2.69 and 3.2.78) I receive permission for root ( from su ) but for example in root-explorer I can't mount RW is just RO , than I can't modifie the sytem files .....if you understand what I meant
I think copy su in /system/bin and Superuser.apk in /system/app it's not enough....but I will see ....
surdu_petru said:
For both rooted versions (3.2.69 and 3.2.78) I receive permission for root ( from su ) but for example in root-explorer I can't mount RW is just RO , than I can't modifie the sytem files .....if you understand what I meant
I think copy su in /system/bin and Superuser.apk in /system/app it's not enough....but I will see ....
Click to expand...
Click to collapse
As you saw in the other thread, you want ext4, not squashfs. Squashfs is read-only by nature, it can't be modified.
OneAn9ryN00b said:
Thanks for this, might come in handy, might start cooking.... Never done it before. Does anyone know if anyone has started getting ClockworkMod running on this so we can get some CyanogenMod 9 love on this?
Click to expand...
Click to collapse
Well, ClockworkMod is not needed to run Cyanogen 9, it can be launched without cmw.
I compiled a clockworkmod recovery for gen8 few weeks ago, it was working fine. However, it's not really worth the effort with Archos as we can't use directly partitions the way it's done on phones. We have to resize partition first.
hey op can this tool unpack a plug-in from one device and reconpile it to work on a different device? the reason i ask after my RMA i cant use my plug-in from my original g9
I never purchased plugins, so I don't know, but I believe it contains an activation key that depends on your device ID.
Try it and look at what it produce ?
But I believe it won't do much, you would have to regenerate a proper key for your device.
I would contact Archos about this, no reason that they can't produce one for a rma situation.
letama said:
I never purchased plugins, so I don't know, but I believe it contains an activation key that depends on your device ID.
Try it and look at what it produce ?
But I believe it won't do much, you would have to regenerate a proper key for your device.
I would contact Archos about this, no reason that they can't produce one for a rma situation.
Click to expand...
Click to collapse
i tried talking to archos, the plugin i had was a free pack they offered right when the g9 was released, all i get from archos is a big nothing no reply to my emails and when i call them they play stupid "I'm sorry i don't know what you are talking about"
well anyway I'd love to try just not to computer savvy I'll probably just spring for the full plugin on the archos site but if anyone wants to try the free pak plugin i have is here this plugin seemed to help with netflix and movies over heating the CPU causing a reboot
robertlawson225 said:
i tried talking to archos, the plugin i had was a free pack they offered right when the g9 was released, all i get from archos is a big nothing no reply to my emails and when i call them they play stupid "I'm sorry i don't know what you are talking about"
well anyway I'd love to try just not to computer savvy I'll probably just spring for the full plugin on the archos site but if anyone wants to try the free pak plugin i have is here this plugin seemed to help with netflix and movies over heating the CPU causing a reboot
Click to expand...
Click to collapse
I took a look, aos-unpack is able to unpack it. It produces multiple n_PLUG and there is a digest that mentions your device id. They seem to be flashed to rawfs partition, but I can't tell much more than that.
I'm afraid that without major reverse engineering to interpret these _PLUGIN files, it won't do any good.

[Dev] Modify stock image script

In case someone would like to build an own image based on the stock firmware,
I wrote a script that performs the neccessary steps (which where mostly described at the xda-forums) automatically on a linux based system.
It is very raw, and is not well optimized. It also is using many sudo calls for creating and modifying the image. Maybe someone has another, better solution.
Usage:
Download and unpack the ExtractAOS archive:
Code:
tar xfj ExtractAOS.tar.bz2
At first you need to place a AOS update file (firmware_archos_it4.aos) into the "dl" folder.
Then copy a busybox.tar.bz2 file, which contains the statically linked binaries of busybox (no subdirectories) inside the archive:
Code:
ash
busybox
cat
chgrp
...
Also make sure that following tools are installed on your system:
unsquash
unzip
tar
Then start the main script:
Code:
./unpackAOS
You will see a menu like this:
Code:
---------- Unpack and Modify Archos image -----------
1 Cleanup: Umount all mounted devices and delete all created files.
2 Download needed packages
3 Setup build directory
4 Create new Ext4 loop image and mount it to MOUNT_DIR
5 Extract AOS image
6 Copy AOS image contens into /data/ExtractAOS/archos_update_folder
7 Modify image in /data/ExtractAOS/archos_update_folder
8 Finish image and unmount it
88 Perform step 3-8 automatically
99 Exit
Then download needed tools via menu item "2".
If the download are successfully done, then you can enter "88"
to build your own archos.ext4.update image file.
Notes:
I'm on a 64 bit system. Letama seems to provide binaries also for 32 bit sytems. In that case, you can modify and set the correct binary within the script file.
This script is intended to provide a base for developers which want their own customisations
Special thanks to:
letama
surdu_petru
Thanks i will try it next weekend
Gesendet von meinem HTC Desire mit Tapatalk 2
Quallenauge said:
Also make sure that following tools are installed on your system:
unsquash
unzip
tar
Click to expand...
Click to collapse
On which firmwares did you test this script?
There was an error in squashfs header in 4.0.5-4.0.6 FW (including test releases)- androidmerged.squashfs.secure could be mounted as loop but not extracted
Hi,
I builded my image based on the current 4.0.7 aos-update file.
I'm using archlinux 64 bit.
Which arch are you using? Can you please verify that the correct extractAOS binaries are downloaded within the script?
The script doesn't mount the androidmerged.squashfs.secure as loop device, but copies all the data from androidmerged.squashfs to a temporary folder named "output_folder".
Can you please provide a console output? Maybe there is some more information?...
Quallenauge said:
Hi,
I builded my image based on the current 4.0.7 aos-update file.
I'm using archlinux 64 bit.
Which arch are you using? Can you please verify that the correct extractAOS binaries are downloaded within the script?
The script doesn't mount the androidmerged.squashfs.secure as loop device, but copies all the data from androidmerged.squashfs to a temporary folder named "output_folder".
Can you please provide a console output? Maybe there is some more information?...
Click to expand...
Click to collapse
I didn't test the script (I stick to 3.2.80).
For modifying I use LeTamas' "manual" method- correct binaries are present (linux 32bit). Unpacking .aos file works fine but I had problems with unsquashfs (header error in =<4.0.6 fw) so the only option was mount -o loop.
If it works for 4.0.7= Archos corrected the error
Hi!
I've just downloaded the 4.0.6 version from archos servers.
Code:
h**p:// update.archos.com/9/gen9/gen9_4.0.6/firmware_archos_it4.aos
Unpacking of the squashfs still works here...
Maybe you missed the needed steps:
Code:
cd $BASEPATH/firmware_archos_it4/root/data
dd if=androidmerged.squashfs.secure of=androidmerged.squashfs bs=256 skip=1
if [ -d output_folder ]; then
rm -f output_folder
fi
unsquashfs -d output_folder androidmerged.squashfs
Maybe stupid question but why we need this busybox ( this archive actually is missing)? I think there is busybox already from the archive is that archive is rooted or give us something more?
Hi,
I saw that another customized roms contains an updated busybox, which can provide more features.
(Honestly, I don't know which feature is it worth to replace the builtin busybox... . :angel
If you want to build an image without this step, just comment out the busybox call.
The busybox archive is missing, because I don't know If I have the permission to include a compiled (from other people) busybox by default.
[Dev] CM9 Mod Extension
Help!
I can't wait to try out the final build from Anybody interested in testing a CM9 super-alpha build in a week or so?, so I decided to try out a modification of the stock rom with CM9 by myself. And yes, today zygote has startet and I got a screen =)
I would like to share with you, what I did and I hope that you can give some code extensions to build a better mod script.
So, let's go:
1) Compile cyanogen mod
Install prerequisites
(I used Ubuntu Precise 32bit in a chrooted environment)
Then perform like suggested a repo init/sync:
Code:
repo init -u git://github.com/CyanogenMod/android.git -b ics
repo sync
Then perform a compile action:
Code:
. build/envsetup.sh
lunch full_panda-eng
mka
PS: I had to modify the cyanogen_root/external/webkit/Android.mk
because there where build errors:
Code:
# Build the performance command line tool.
#include $(WEBKIT_PATH)/android/benchmark/Android.mk
Get some coffee I full build will take about an hour (on my system).
2) Unpack Archos stock image
You can use my tool at #1 of this thread!
PS: I used 407 stock image...
3) Create a loop image and mount it into a folder
You can use my script for that.
4) Get my new archive and unpack it.
Go into that folder and modify the bash script Porting.sh to match the folder paths:
Code:
export CYANOGEN=/cynogen_mod/out/target/product/panda
export STOCK=/ExtractAOS/firmware_archos_it4/root/data/output_folder/
export OUT=/Android/Development/mount
Run the script as root!
Code:
sudo ./Porting.sh
You get a file system contents in $OUT. Unmount the loop directory and
load it into the media update path as usual:
Code:
adb push archos.ext4.update /data/media/ && adb reboot
That's it! You should get a CM9 desktop.
------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------ ------------
That was the good news! The bad:
The current state is a proof of concept.
I'm really hope that you can contribute to the modding script: I'm not an android expert!
Dirty technical details:
I had to use the existing vendor libraries especially the graphics drivers (I tried to use the panda binaries, with no luck :-/ ).
I moved them into the /system/vendor/lib folder and symlinked the libraries to /system/lib. This way it seems to much cleaner.
I modify the init.rc script to mount the data directory into /data2 to not interfere with existing archos installation. Later we should be able to point to that directory again. (Hint: to update the development you must use a adapted adb update command:
Code:
adb push archos.ext4.update /data2/media/ && adb reboot
From the first test, I saw that I have no real touchscreen, it worked like a "mouse" controlled environment. Maybe because the panda board has an mouse as input device.
Thanks.
PS: I'm curious how JackpotCalvin has solved the CM9 integration, It sounds way better than my solution...
Nice one
Some thoughts:
-why do you copy $STOCK/usr/bin/[binary name] when later all $STOCK/usr dir is copied?
-there should be no need to place PowerVR in /system/vendor/lib/[...], /system/lib/[...] should work fine
-check prelinks for existing libs and adjust prelink map for [repo path]/device/ (this may not be necessary, last system I compiled was Froyo)
I'm stopping my efford because I'm at a point, where I learned that just replacing the files between both sources (Panda Board CM9 builded binaries and Archos Stock ROM) is not a 100% solution.
I resolved my input devices setup, by copying the corresponding icd (and other) foles to the output folder. Then I had unresolved issues by getting WLAN to work. I found out, that in libandroid.so and libandroid_legacy.so are coded the modules which are needed for WIFI. Panda board is compiled w/o WIFI, so there are no
wifi modules loaded. (After I load wl12xx_sdio.ko manually by using insmod, the wlan was functional!).
The solution IMHO must be, to compile an adapted CM9 with all hardware specific settings. Maybe the customized files can also moved inside the device configuration directory so that the merge script is obsolete (my hope).
So I decided to either to wait until JackpotClavin is posting his CM9 configuration files
Code:
http://forum.xda-developers.com/showpost.php?p=28439197&postcount=80
or to learn how to make a new device on CM which maches our Archos device. (Maybe someone else can give me some archos specific instructions).
Update: Great! JackpoClavin has provided sources =)

[GUIDE]Development for GalaxyTab 7.7 and Plus. How hard could it be?

Planning this for sometimes. So much work ahead. Just studying the new code cause me a lot of time. I think I have to rush it out so that someone may share my burden. Don't have much time to polish it. I'm trying to provide all commands, files and links. Please correct me if something is wrong or missing. Hoping this could be a stepping stone for those interested. If you like challenge, it'll be fun!
1. Introduction
If you have watched "Top Gear", you would have heard Jeremy Clarkson said "How hard could it be?". Why is it so hard to build a rom for our tab?
When I first play with rom building, it was quite straightforward. I recuilt my retired PC (Celeron 1.2G with 3G RAM, 40G HD) and follow the guild for building PA. Installing Ubuntu 12.04 and then the necessary packages. Everything is ready in a few hours. It was really challenging your patience to repo sync the source. After a few retries, I finally completed the download in two days! After two hours, my harddisk is full! Then I collected another retired 80G HD from a friend. Re-install everything and build again. Building requried 7 hours on my antique PC. With only a few minor errors to correct, my first rom pa2.55 was out. So how hard could it be? It was our predecessors ( @ohanar, @locerra, etc.) :good: who had already done lots of hardwork on device trees and kernel! If Samsung has really released the hardware related sources, there will not be so much troubles for us. At the time Android 4.2 launch, we have a new problem. Our tab's CSR chip doesn't support Bluedroid. See the Nexus family, everything is ready. Rom building will never be so pain in the ass as us.
1.1 What's wrong with our hardware
GT-7.7 and Plus use the exynos4 smdk4210 board with Mali-400 GPU. Quite a number of devices have similar hardware. The main problem we have would be:
1.1.1 CSR bluetooth chip.
CSR chip doesn't support bluedroid which become standard after Android 4.2. Bluez.org has provide a solution for 4.2 early this year but porting to 4.3 and 4.4 may take some time.Working on it now. Anyone has experience on bluetooth are welcome to help.. Bluez working now. See my Thread How to port Bluez to Android 4.4. Cheers!:highfive:
1.1.2 Athero wifi chip.
Samusng's wifi driver has issues on 5G support and SOD. I'm using the modified kernel driver from Samsung's 4.1.2 source. Athero provide drivers for 3.1 to 3.10 linux kernels but they have no wakelock support. I also wrote a drive base on Athero's source and add wakelock support but have no time to polish it now. Athero's chip doesn't have firmware for AP as Boardcom. Which is also the way Android platform providing wifi tethering in framework. To support wifi tethering we have to change the framework and the driver. Anyone has experience in linux HostAP are welcome to help. Wifi tethering is ok now! Tutorial will be in Post#2 soon.
1.1.3 modem chip (xm6260).
RIL stand for (radio interface library). Most of the phone manufacturer would provide their own vendor lib. The only working blob now is Samsung's ICS propietry libsec-ril.so which is obselete now. The one from stock 4.1.2 not working but no time to trace. It also don't seems to have much difference. This library handle the AT commands issuing to the (baseband to) modem chip. xm6260 has a complete set of command manual. It should not be too hard to rewrite if we can hack the ports. However it is not worth to splend too much time on this. Those has experience in AT commands are welcome to help.
RIL details: http://www.kandroid.org/online-pdk/guide/telephony.html
1.2 Where to get the source?
1.2.1 Samsung's source for our tab
The best source would be from Samsung http://opensource.samsung.com/. Sadly, the source from Samsung only cover the kernel. Our tab only have source up to 4.1.2 and kernel source 3.0.31 from Samsung.
1.2.2 Samsung's source for other devices
Luckly, we have similar architecture to some newer Samsung models. Their source is our major source now. eg. We can use the Mali driver from Note8 and/or i9300.
1.2.3 Manufacturere's web site.
The other source would be from the chip manufacturer. eg. Athero has source for linux.
1.3 What is going on at boot?
1.3.1 Power ON
a) When power button is long pressed (should be released after the logo shows otherwise it will reboot again every 6 seconds). The manufacturer's bootloader would show the vendor's logo. At that moment, bootloader would sense if there are key being pressed. Standard Android will go to boot menu when pwr + vol- is pressed. Samsung would go to download mode (something like fastboot) and accept pwr + vol+ to start recovery mode. If no other key is pressed, it would be a normal boot.
b) When USB is plug in (PC usb port or charger) at power off, the tab will be turn on silently. It is in the LPM (low power mode). According to lpm.rc (executed by Init, will be explained in 1.3.3), CPU will be set to POWERSAVING and the program charger is running. It should only handle simple tasks like Detecting the pwr button to show the charging images. If the pwr is long press when showing the charging image, it will reboot as in a).
3) Lollipop LPM: charger is link to the program /sbin/healthd. The process is similar to b) but lpm.rc is merged to init.rc.
1.3.2 Boot image
For our tab, there are two parts for a boot.img or a recovery.img. kernel binary and initramfs. As the name imply, Init-Ram-FS is the initial file system loaded into ram when the devices boot. Kernel binary provide the hardware drivers libraies which communicate with the hardware and baseband. At normal boot or recovery mode, the image (in /boot or /recovery partition) will be decompressed and loaded to memory. Initramfs will be loaded in root(/). It would consume a few hundreds MB of RAM and that's why our free ram is only 7xxM.
In LPM, it would depends on the last boot state. If it was powered off from recovery, recovery.img will be loaded and handle the LPM. If it was powered off from platform, boot.img will be loaded and handle LPM. That's why It might show different charging images if the charging images for reovery.img and boot.img are different.
Stock cook roms can unpack and modified the initramfs from the existing zImage. It is created in system/core if we build it from source. Here is a tool which can unpack/repack our boot.img or recovery.img.
1.3.3 Init
There is the Init program in every initramfs. This is the first program to run according to the sequence in the init.rc (or lpm.rc when in LPM). Partitions will be mounted and symlinked, default values and permissions are assigned, services will be started, etc. The source of Init is in system/core. The last thing Init do would be the continuous eventloop to process events.
2. Getting Start
To start building, we need the building environment. Many tutorials have alreay covered the details so I just list my suggestions. The guide from Google is a bit outdated but really helpful. http://source.android.com/source/building.html
Basic knowledge of linux is required. All commands are run in a terminal.
2.1 Hardware
A decent PC with as much ram as possible. Thanks for the donations, I can upgrade to a better i5 notebook with 4G ram and a 500G partition only for building. It would take 3+hrs. for a clean build. RAM and Harddisk speed are essential. A desktop PC with same configuration will be faster since notebook harddisk is slower. I plan to add more RAM when the price drop (seems to be a long wait )
RAM: 4G or above is recommended.
Harddisk space: 30G+ for system, 60G+ per rom, size of ccache (50G-100G), Roughly, a partition with at least 120G for one rom. Bigger is better.
A decent internet connection is essential. It will take days to sync the source if you only have bandwidth of 2M or less .
2.2 OS
64bit Ubuntu Desktop 12.04 or above. Recommend 13.04 or above. I'm using the latest 14.04.
2.3 Install the required packages
These packages are required during building and packing. (eg. gzip is required to compress the kernel binary)
type command: (have a beer or coffee. It will take a while)
Code:
[I][COLOR="Green"]For Ubuntu 12.x and 13.x:[/COLOR][/I]
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev zlib1g-dev:i386 \
libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 lib32z-dev \
libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc \
readline-common libreadline6-dev libreadline6 bzip2 libbz2-dev libbz2-1.0 libncurses5-dev lib32readline5 \
lib32readline-gplv2-dev lib32readline6 libreadline-dev libreadline6-dev:i386 libreadline6:i386 pngcrush \
libghc-bzlib-dev lib32bz2-dev libsdl1.2-dev libesd0-dev squashfs-tools schedtool libwxgtk2.8-dev python
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
[I][COLOR="Green"]For Ubuntu 14.x and 15.x:[/COLOR][/I]
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.8-dev squashfs-tools \
build-essential zip curl libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils xsltproc lzop \
libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline-gplv2-dev gcc-multilib
2.4 Insatll android-sdk
Download (for Linux 64-bit of course): http://developer.android.com/sdk/index.html
Extract the file to a directory (eg. ~/android-sdk)
Add the path to ~/.bashrc
type command:
Code:
sudo gedit ~/.bashrc
at the bottom add the path
Code:
export PATH=~/bin:~/android-sdk/tools:~/android-sdk/platform-tools:$PATH
Quit and restart terminal to commit the changes.
Verify the path and update the SDK
type command:
Code:
android
2.5 Install java
If you have installed eclipse, openJAVA is ready. Some say it is not suitable for android development.
I've tried both and I found no appearing difference.
To install SUN JAVA (Ubuntu 13.04 or above)
type command:
Code:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
For Lollipop: openjdk 7 is required
Code:
sudo apt-get install openjdk-7-jdk
2.6 Install repo
type command:
Code:
mkdir -p ~/bin
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
2.7 Add usb dev rules
Which are required for adb and fastboot, eg. View attachment 51-android.zip
type command:
Code:
sudo cp 51-android.rules /etc/udev/rules.d
sudo chmod 0644 /etc/udev/rules.d/51-android.rules
2.8 Enable ccache
type command:
Code:
sudo gedit ~/.bashrc
add lines for CCACHE
Code:
export USE_CCACHE=1
export CCACHE_DIR=~/android/.ccache
Quit and launch the terminal again to commit the changes
ccache will cache the object files of gcc for next build, it would increase the speed of subsequent builds alot.
After source is sync in 2.11 and before build, we can set the size of ccache first.
type command:
Code:
~/android/rom/prebuilts/misc/linux-x86/ccache -M<size>
2.9 Init the source
Make a new working driectory for your rom
type command: (eg. ~/android/rom)
Code:
mkdir -p ~/android/rom
Each rom has its own manifest.xml listing all the required projects.
It is usually in the project android (manifest for PA). The readme of this project would provide the command to init.
eg. CM11.0: https://github.com/CyanogenMod/android/tree/cm-11.0
type command:
Code:
repo init -u git://github.com/CyanogenMod/android.git -b cm-11.0
It will fetch the manifest.xml and put it into a hidden directory .repo in the current directory (~/android/rom/.repo)
2.10 preparing local_manifest.xml
It is not a good pratice to change the manifest.xml directly. If the ROM has change its manifest, you would require to init again. The right way is putting everything your device needed in a seperate file .repo/local_manifests/local_manifest.xml. The device trees and kernel source for GalaxyTab 7.7 and Plus : https://github.com/danielhk?tab=repositories
eg. cm11.0 for p6800
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project name="danielhk/android_hardware_atheros_wlan" path="hardware/atheros/wlan" />
<project name="danielhk/android_device_samsung_p6800" path="device/samsung/p6800" />
<project name="danielhk/android_device_samsung_smdk4210-tab" path="device/samsung/smdk4210-tab" />
<project name="danielhk/android_kernel_samsung_smdk4210" path="kernel/samsung/smdk4210" />
<project name="danielhk/proprietary_vendor_samsung_smdk4210" path="vendor/samsung" />
<project name="CyanogenMod/android_hardware_samsung" path="hardware/samsung" />
</manifest>
Note: Settings will follow manifest.xml. cm-11.0's manifest has default remote="github" and revision="refs/heads/cm-11.0" so we can omit the same entries here. For other roms, see the defined names in manifest.xml and change accordingly. You can also add other devices trees here if you want to build them for the same rom.
2.11 sync and build
To fetch the source (specified in manifest.xml and local_manifest.xml) to working directory (~/android/rom)
type command:
Code:
repo sync -j32
-J specify the no. of threads to download. I have a few trials. Seems 32 works for me.
When it is done. You will find that ~/android/rom is not empty now.
You may set the ccache size now:
type command: (eg. 50G)
Code:
~/android/rom/prebuilts/misc/linux-x86/ccache -M50G
Only if you want to change size, otherwise it only requires once.
To build a rom, change to the rom directory. Usual commands: (eg. for CM roms)
Code:
cd ~/android/rom
. build/envsetup.sh
lunch cm_p6800-userdebug
mka bacon
CM need to download a prebuilt (Termianl.apk). To simplify this routines, I modified the build script from PA to cm View attachment rom-build.zip.
Copy it to the rom directory, type command:
Code:
cd ~/android/rom
./rom-build.sh p6800
After building is complete with no error, the rom will be output to ~/android/rom/out/target/product/p6800.
3. What can we do? :laugh:
3.1 Kernel
Since Samsung provide the complete kernel source, working on kernel would be comparatively speaking much easier.
When we say kernel, we mean the boot.img or zImage which already include the initramfs. This image will be flash to the /kernel (/dev/block/mmcblk0p5)
Hardware and flags are defined in defconfig inside <kernel dir>/arch/arm/config. It is the Linux standard.
3.1.1 difference between stock kernel and the kernel in custom rom
The main difference between the two kernels is the location of kernel library modules. Libray modules are mainly for network and storage drivers. By building them as modules, they can be stoped and restarted in case of critical errors.
Stock kernel put it in /lib which is part of the initramfs. We need to do extra steps to manually copy them to the initramfs after the first build and rebuild again. If you want to build the stock kernel, there is a very good tutorial.
Custom rom put the kernel library modules in /system/lib. Thus boot.img need to match those modules, otherwise they will not work properly.
For custom roms, which defconfig to be used is defined in device tree.
eg. For p6800, in the file device/samsung/p6800/BoardConfig.mk. There is the line:
Code:
TARGET_KERNEL_CONFIG := cyanogenmod_p6800_defconfig
It specify which defconfig file for the kernel
I wrote a View attachment build-k.zip scirpt to simplify the building of kernel alone. Copy it to the rom working directory (~/android/rom)
eg. For p6800, type command:
Code:
./build-k p6800
New boot.img will be output to the same directory as rom if no error.
3.1.2 Add/modify O/C, U/V, GOVERNORS, hardware drivers, etc.
As mentioned in 1.2, we can copy/modified the source from i9100 and n7000 kernels. For example, Dorimanx and Slyahkernel provide many useful code for us. The source of i9300 from Samsung may also provide some drivers update (eg. Mali)
Ref: Exynos4210 cpu menu., Mirror download
3.1.3 Default Orientation
Why the incall screen always landscape?
Many apks assume the default orientation is portrait but our tab's default orientation is landscape. It is a kernel behaviour so that recoveries (including the stock 3e recovery) are all in landscape.
To avoid this odd behaviour of apks like inCall screen, changing the default orientation in kernel is the ultimate solution.
It is already in my do list for a long time but trying to keep up with the android plaftform already occupy all my spare time...
I already have some idea how to do. Anyone interested to help on this can PM me. Already fixed in the platform
3.1.4 Update the kernel source
The existing kernel is base on Linux 3.0.x. It is outdated but I don't think Samsung would bother to update it. I had tried starting with the 3.4 source from Google but don't have enough time to carry on. I have filled some drivers already. Will take another shot later if I have time...
Anyone have experience in Linux kernel are welcome to help. No more guides are there, this would be a great challenge but fun!
3.2 device tree
Every device requires a device tree which:
a) Specify the hardware
b) define some overrided library. (eg. sensor, camera)
c) provide the extra files to be put in the initramfs. (init.<device>.rc, fstab.<device>, etc.)
If there are a few models variants, common parts would be put in a seperate common device tree (eg. smdk4210-tab for our tab). In this way, changing can be made once for all variants.
Most of the work on porting for a specific ROM would be on the device tree. Same as the kernel, we can get some update by modifying from other devices. CM's device tree for i9100, n7000 and i9300, etc. With a good device tree, we can port to any ROM.
3.3 Bluetooth support after 4.2.
In 4.2.2, I changed the source of framework, system_core, phone apk and device tree to work with bluez. It was a huge job! Hundreds of lines had been changed. Many files are replaced. It was quite clumsy but was the only way then. This way may not work for 4.3 onward.
Here are the details of both stack:
Bluedriod : http://source.android.com/devices/bluetooth.html
Bluez : http://www.kandroid.org/online-pdk/guide/bluetooth.html
3.3.1 We may modify the bluedroid to support our chip.
3.3.2 Working on the bluez support. I'm trying now.
  Bluez5 is OK now. See my thread: How to port Bluez to Android 4.4
3.4 Recoveries
With the device tree and kernel, we can build the recovery from source. CWM would be a side product of CM roms and TWRP has a tutorial.
The same View attachment build-k.zip script can be used to build recovery alone. In the rom working direcotry, to build recovery only
type command:
Code:
./build-k p6800 recovery
With no error, recovery.img will be at the same output directory as rom.
Local manifest
https://github.com/danielhk/local_manifest
All model share the same local_manifest.xml
daniel_hk, Check and commit to your tree my patches for PAC-4.2.2
Vaka2 said:
daniel_hk, Check and commit to your tree my patches for PAC-4.2.2
Click to expand...
Click to collapse
Thanks!
It nice to see someone interested in our development!
I have look into your changes briefly.
1. Some changes in media which I'll leave the user to decide. I rather keep the builds as genuie as possible.
2. Some of them are new commit of the original source which will automatically updated in a sync.
3. I forgot to upload a few minor projects to github.
One of which was android_build which will include the files like hciattach building from source. If you study the source of exteranl/bluetooth/bluez, they are there. That means it might have update later. No need to add as a blob.
Actually the best way is including them in PROJECT_PACKAGES section of the device.mk. It would have the same result without touching the original source. Less touch to the original source means fewer conflict later. I was caught up and did't have time to tidy up everything so I leave it there. Also, files from bluetooth should be put in the smdk4210-tab device tree. All model share the same source.
vendor_pac should be upload to official PAC's git. They already gave me an account but they use Google+ which I have trouble to login here. I was working on a job and I hadn't follow up. Now I'm working on 4.4 which PAC haven't release yet. So I put aside first.
You probably didn't have to waste you time if you PM me first.
Everytime I upload to github is a challenge, it always break before complete. I have to monitor it from time to time. Annoying! So I can only upload once a while when everything is ready...
To be honest, I really don't have time to keep up with the old source. The new ports already occupy all my spare times. With limited resource, I can only focus on major issues. Bluetooth after 4.3 is my first priorty. If it can be done, means we can go much further.
If you are interested, you may pick one of the thing I mentioned in this thread to start. Wifi-tethering or the vendor ril library is needed too. You may try it in 4.2.2 first. See what you are good at and interested to. PM me or post again if you have any questions and/or suggestion.
Thanks again for your effort.
daniel_hk said:
Thanks!
It nice to see someone interested in our development!
I have look into your changes briefly.
1. Some changes in media which I'll leave the user to decide. I rather keep the builds as genuie as possible.
2. Some of them are new commit of the original source which will automatically updated in a sync.
3. I forgot to upload a few minor projects to github.
One of which was android_build which will include the files like hciattach building from source. If you study the source of exteranl/bluetooth/bluez, they are there. That means it might have update later. No need to add as a blob.
Actually the best way is including them in PROJECT_PACKAGES section of the device.mk. It would have the same result without touching the original source. Less touch to the original source means fewer conflict later. I was caught up and did't have time to tidy up everything so I leave it there. Also, files from bluetooth should be put in the smdk4210-tab device tree. All model share the same source.
vendor_pac should be upload to official PAC's git. They already gave me an account but they use Google+ which I have trouble to login here. I was working on a job and I hadn't follow up. Now I'm working on 4.4 which PAC haven't release yet. So I put aside first.
You probably didn't have to waste you time if you PM me first.
Everytime I upload to github is a challenge, it always break before complete. I have to monitor it from time to time. Annoying! So I can only upload once a while when everything is ready...
To be honest, I really don't have time to keep up with the old source. The new ports already occupy all my spare times. With limited resource, I can only focus on major issues. Bluetooth after 4.3 is my first priorty. If it can be done, means we can go much further.
If you are interested, you may pick one of the thing I mentioned in this thread to start. Wifi-tethering or the vendor ril library is needed too. You may try it in 4.2.2 first. See what you are good at and interested to. PM me or post again if you have any questions and/or suggestion.
Thanks again for your effort.
Click to expand...
Click to collapse
Thanks to you Daniel for your immense effort on detailing all this! I'm far from a dev status like you and @UpInTheAir. But my support will always go to you developers. Both of you has done an impressive work for an outdated hardware and keep us happy with your Rom and Kernel. Again, thanks a lot.
Thanks, all hail daniel_hk for this!
Daniel,
I can only thank you for all the work he is having to keep our equipment (62xx, 68xx, TXX) alive and really Kitkat will give a new breath, for even in an experimental state already see how the device works smoother. A feather can not help, but I'm looking forward to seeing this in functional status.
As a suggestion, I honestly do not know the procedures, but it would be interesting to ask an official support OmniROM (ROM promising, others liked) and CM. The Galaxy SII has the same hardware, in which the use OmniROM and this magnifies the ROM. Maybe they (Team OmniROM) may offer official support or at least help in these matters!
I'm almost begging for support OmniROM, and Entropy512 (http://forum.xda-developers.com/member.php?u=591147&nocache=1&z=3487892739940434) Kindly reply me: "Someone who is working with one of Those devices and has it working needs to submit it. "
Sorry for my english
Hi Daniel,
Whe I try to repo sync, I was stopped by the error:
"fatal: Couldn't find remote ref refs/heads/cm-10.2"
"Cannot fetch danielhk/proprietary_vendor_samsung_smdk4210."
I was trying to build a cm-10.2 version.
I checked your repository and the folder was right there.
I am new to building android rom. There must be something obvious that I missed.
Thanks.
11nn93n9 said:
Hi Daniel,
Whe I try to repo sync, I was stopped by the error:
"fatal: Couldn't find remote ref refs/heads/cm-10.2"
"Cannot fetch danielhk/proprietary_vendor_samsung_smdk4210."
I was trying to build a cm-10.2 version.
I checked your repository and the folder was right there.
I am new to building android rom. There must be something obvious that I missed.
Thanks.
Click to expand...
Click to collapse
I think you get this line from my PAC manifest.
That was base on cm-10.1, default is cm-10.1. If you take a look of the project danielhk/proprietary_vendor_samsung_smdk4210 on github, you will find only one tree cm-10.1. cm-10.2 can use the same tree. I'll find time to update it later.
When you build cm-10.2, default tree is cm-10.2. The line without a revision will assume the default. That's why you can find it.
Your solution: Add the revision=cm-10.1 at the end of the project.
Code:
.... danielhk/proprietary_vendor_samsung_smdk4210" revision="cm-10.1" />
Good luck!
daniel_hk said:
I think you get this line from my PAC manifest.
That was base on cm-10.1, default is cm-10.1. If you take a look of the project danielhk/proprietary_vendor_samsung_smdk4210 on github, you will find only one tree cm-10.1. cm-10.2 can use the same tree. I'll find time to update it later.
When you build cm-10.2, default tree is cm-10.2. The line without a revision will assume the default. That's why you can find it.
Your solution: Add the revision=cm-10.1 at the end of the project.
Code:
.... danielhk/proprietary_vendor_samsung_smdk4210" revision="cm-10.1" />
Good luck!
Click to expand...
Click to collapse
Thank you for your help. Working on it. Its a big learning curve for me.
I made up to now the most progress with Ubuntu 13.04 64bit version building the cm 10.1 version.
With Ubuntu 12.04 and 13.10, I have been stopped much earlier than on 13.04.
Now I encountered the error below when running build-k p6800:
target thumb C++: libstagefright <= frameworks/av/media/libstagefright/ACodec.cpp
frameworks/av/media/libstagefright/ACodec.cpp:53:24: fatal error: sec_format.h: No such file or directory
compilation terminated.
make: *** [/home/lgeng/android/rom/out/target/product/p6800/obj/SHARED_LIBRARIES/libstagefright_intermediates/ACodec.o] Error 1
make: *** Waiting for unfinished jobs....
I downloaded the folder that contains the sec_format.h file from https://android.googlesource.com/device/samsung/crespo/. But It is not clear to me where to place the folder.
Thanks.
11nn93n9 said:
I made up to now the most progress with Ubuntu 13.04 64bit version building the cm 10.1 version.
With Ubuntu 12.04 and 13.10, I have been stopped much earlier than on 13.04.
Now I encountered the error below when running build-k p6800:
target thumb C++: libstagefright <= frameworks/av/media/libstagefright/ACodec.cpp
frameworks/av/media/libstagefright/ACodec.cpp:53:24: fatal error: sec_format.h: No such file or directory
compilation terminated.
make: *** [/home/lgeng/android/rom/out/target/product/p6800/obj/SHARED_LIBRARIES/libstagefright_intermediates/ACodec.o] Error 1
make: *** Waiting for unfinished jobs....
I downloaded the folder that contains the sec_format.h file from https://android.googlesource.com/device/samsung/crespo/. But It is not clear to me where to place the folder.
Thanks.
Click to expand...
Click to collapse
Not much I can tell. You have to provide the manifest.xml and local_manifest.xml if exist. And device tree changes if exist.
1. build-k is for kernel building only. frameworks_av seems not relevant.
2. crespo is another device. Not the right way to get missing file there.
3. With proper settings and manifest, Ubuntu 12.04 to 13.10 (which I'm using) have no apparent different for building.
If you are building cm-10.1, it is mature. No way there is missing file.
With no other info., I guest there is something wrong with your manifest or device tree. Mixing version projects, wrong flags in device tree, etc.
You might need more reading on what is device tree and manifest first.
Good luck!
Hi,
can you help me with integrating device to manifest.xml? I think there's the problem because everything runs fine until I write luch cm_p6200-userdebug, becuase it shows me that the device isn't found and in /android/rom/device, there isn't any folder called /samsung/p6200. I did everything by the guide, I only changed the local_manifest device info to p6200, because I own it. I'm using Ubuntu 14.04. Thanks for your help.
tom411 said:
Hi,
can you help me with integrating device to manifest.xml? I think there's the problem because everything runs fine until I write luch cm_p6200-userdebug, becuase it shows me that the device isn't found and in /android/rom/device, there isn't any folder called /samsung/p6200. I did everything by the guide, I only changed the local_manifest device info to p6200, because I own it. I'm using Ubuntu 14.04. Thanks for your help.
Click to expand...
Click to collapse
Not much details. next time provide detail. At least, send me your local_manifest.xml. It is definitely the source of your problem. You haven't tell which cm you built too.
I don't know what's wrong because I can't see anything in your side.
But I can tell you that device tree of p6200 didn't download. Check the typings of your local_manifest.xml. It should match the one in github.
Good luck!
TO ANYONE, YOU HAVE TO PROVIDE DETAILS. OTHERWISE, I DON'T KNOW HOW TO HELP!
I really don't have time to guess. You have to forgive me if I ignor your post.
From Nexus 7 上的 Tapatalk
Okay, sorry for it, I didn't know you need it. I want to build a Cm-11. I looked at my local_manifest and I think it's correct. Here is it
edify question for our 815's
Taken from one of your script's
mount("ext4", "EMMC", "/dev/block/mmcblk0p9", "/system");
Installing a .txt into sdcard0/data through .zip in recovery.
I used linux command to find paths for each of the memblocks - but didnt know which path, partition, I am looking for here. /system /userdata etc UHHHH
so to mount to the "sdcard0 /data"directory to install a plain .txt file would be ???
mount("ext4", "EMMC", "??????????????", "/data");
also can I call "/data" anything - like "/datadog" - since this is just a reference to a mount point and is temporary?
One other quicky
First I found this in an edify tutorial -
"/system partition is automatically mounted. this command is needed when you need to mount another partition beside /system or in any condition when recovery mode failed to mount your system partition. the system's location is /dev/stl9, cache /dev/stl10, and data /dev/stl11 (all partition type commonly rfs, will be differ if you have custom kernel or rom)."
since this is a custom rom does /system still auto mount - meaning in ref to to your code above - was it unnecessary but probably good practice or because this is a custom rom there are changes that move the location for /system. I noticed that " the system's location is /dev/stl9, cache /dev/stl10, and data /dev/stl11" was not in the memblock paths??
Start my intro to kernels tomorrow - Oh boy
Off subject - I knew Brazil - tough break with the injury though. Next wins - Argentina and Costa(CoastBaby)!! Going to bed now 6:00 AM WHAT.
Lt.col.johncross said:
Taken from one of your script's
mount("ext4", "EMMC", "/dev/block/mmcblk0p9", "/system");
Installing a .txt into sdcard0/data through .zip in recovery.
I used linux command to find paths for each of the memblocks - but didnt know which path, partition, I am looking for here. /system /userdata etc UHHHH
so to mount to the "sdcard0 /data"directory to install a plain .txt file would be ???
mount("ext4", "EMMC", "??????????????", "/data");
also can I call "/data" anything - like "/datadog" - since this is just a reference to a mount point and is temporary?
One other quicky
First I found this in an edify tutorial -
"/system partition is automatically mounted. this command is needed when you need to mount another partition beside /system or in any condition when recovery mode failed to mount your system partition. the system's location is /dev/stl9, cache /dev/stl10, and data /dev/stl11 (all partition type commonly rfs, will be differ if you have custom kernel or rom)."
since this is a custom rom does /system still auto mount - meaning in ref to to your code above - was it unnecessary but probably good practice or because this is a custom rom there are changes that move the location for /system. I noticed that " the system's location is /dev/stl9, cache /dev/stl10, and data /dev/stl11" was not in the memblock paths??
Start my intro to kernels tomorrow - Oh boy
Off subject - I knew Brazil - tough break with the injury though. Next wins - Argentina and Costa(CoastBaby)!! Going to bed now 6:00 AM WHAT.
Click to expand...
Click to collapse
I don't know what's your objective.
Some points to note:
1. command in updater-script use the function defined in updater-binary. Which are not necessarily a Linux executable command. These commands only valid in the updater-script.
2. You can only mount to an existing directory (mount point) which has not been mounted before. The mount command in Linux is a shell command which is executed by /bin/bash.
3. /system is mount by init following the sequence in .rc files. In recovery, a program is running to provide the interface for I/O. It doesn't require /system partition.
4. No matter which rom (stock or custom), the content of /dev are defined in kernel. Partitions info. is read from the PIT (partition info. table). Kernel will initialize the device at boot accordingly. They are similar to a harddisk partition.
5. our tab has emulated int. sdcard. It is part of the /data, at /data/media.
Hope these might help
earlier question simplified
My problem is with the mount command in a zip file to be used on our Carbon ROM partitions.
My goal is to make 4 different .zip files that can be installed with the recovery software. Each zip places one (the same) simple.txt file into a different folder then the previous zip did.
After I install the 4 zips I should be able to use my file manager app to view the simple.txt in each of the following folders
/sdcard0/data so the ????????? in => mount("ext4", "EMMC", "????????????", "/NAMEOFMOUNT"); would be ==>
/sdcard0/Download so the ????????? in => mount("ext4", "EMMC", "????????????", "/NAMEOFMOUNT"); would be ==>
/Root/data so the ????????? in => mount("ext4", "EMMC", "????????????", "/NAMEOFMOUNT"); would be ==>
/Root/system so the ????????? in => mount("ext4", "EMMC", "????????????", "/NAMEOFMOUNT"); would be ==>
This should give me what i need to fill in what I am missing on understanding this.
Thanks - I hope that this understandable
Off subject - Argentina taken care of biz - Costa is dead to me - Next winners Argentina and Germany
Just about there
6GB with intel I5 -1TB- is now setup as a dual boot with Windows 8.1 and Ubuntu 14.4. All the packages are installed etc.
My linux flavor is ARCH or Manjaro (arch based) - Not a big fan of unity, but since I did not want any pitfalls for support reasons I will use Ubuntu for now.
I now have a descent grasp on GIT and repo, as well as installing cyanogen on one supported device. It would appear that to install on our device any of the custom roms I would just need to provide a local manifest with the proper projects.
I am a little fuzzy on a few things but I think if you could please post two (i815's) local manifest's for two of our newer kitkat roms say Omni & Slim I should be able to figure out my answers or at least narrow down my misunderstandings to exact questions.
Thanks
All Hail GERMANY - - that final game was a real snooze fest.
daniel_hk said:
I don't know what's your objective.
Some points to note:
1. command in updater-script use the function defined in updater-binary. Which are not necessarily a Linux executable command. These commands only valid in the updater-script.
2. You can only mount to an existing directory (mount point) which has not been mounted before. The mount command in Linux is a shell command which is executed by /bin/bash.
3. /system is mount by init following the sequence in .rc files. In recovery, a program is running to provide the interface for I/O. It doesn't require /system partition.
4. No matter which rom (stock or custom), the content of /dev are defined in kernel. Partitions info. is read from the PIT (partition info. table). Kernel will initialize the device at boot accordingly. They are similar to a harddisk partition.
5. our tab has emulated int. sdcard. It is part of the /data, at /data/media.
Hope these might help
Click to expand...
Click to collapse
I'm going to see my mom for 2 days. I'll see if anything missing when return.

compiling kernel for N920C. boot.img won't work

Hey guys,
I have been trying to compile the N920C 6.0.1 from the source. Just one time the kernel worked but only when I didn't change anything in menuconfig. If I change even a word in kernel it wont boot up. What am I doing wrong?
My source file : SM-N920C_SEA_MM_Opensource.zip
My firmware file : SM-N920C_N920CXXU2BPB6_CAM_HiepGia_Samsungviet.zip
I was using NDK for toolchain and Linaro. May there be something missing like a tool or may the toolchain be wrong??
"gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz" && "android-ndk-r11b-linux-x86_64.zip"
My Makefile setting was like:
Code:
ARCH ?= arm64
CROSS_COMPILE ?= /root/Desktop/ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-
After make cmd the output file comes non-compressed called "Image" which is in "arch/arm64/boot/" . Does it make any difference since its not compressed like zImages ?
What is the correct process for converting Image file to boot.img. I have tried both "mkbootimage" and "abootimage" any other way to make boot.img ? Which one is more suitable for my situation?
The process I'm doing is:
Code:
1-)Copy toolchain and source to Kali
2-)Extract kernel source and edit Makefile(for cross_compile)
3-)make ARCH=arm64 ******.defconfig
4-)make menuconfig && save && exit
5-)make ARCH=arm64
6-)Copy "arch/arm64/boot/Image" to another directory
7-)Extract original boot.img from firmware file and then "./split_boot boot.img" with mkbootimg tool
8-)Replace the old kernel file from the boot.img with the new one
9-)Edit /ramdisk/default.prop ====> ro.secure=0 and save
10-)compress ramdisk to gzip
11-) ./mkbootimg --kernel /boot.img-kernel --ramdisk /boot.img-ramdisk.cpio.gz --board SYSMAGIC000KU --base 0x10000000 --pagesize 2048 --ramdiskaddr 0x11000000 -o newboot.img
12-)Tar the newbootimg to flashable zip
13-)Flash it with odin.... Voilaaaa phone won't boot up. Stuck at Samsung Galaxy Note 5 screen:)
What is wrong here?
Please don't tell me to search in forum I have read all of the threads about building kernel. Each one is different from the other so I wanna know what is more suitable in my situation
I know I have asked to many questions but I would appreciate if someone could help me through IRC or some instant messaging service
noone knows ?
Come on guys I have still been waiting for an answer. There are already kernels made by other people in this forum so it must be possible
dewctr said:
Come on guys I have still been waiting for an answer. There are already kernels made by other people in this forum so it must be possible
Click to expand...
Click to collapse
in my opinion it s a problem related to the 'initrd' file..i m diving into chime for now and stucking ; let s converge our efforts to fix all issues with kernel compilation, if u r intressted just pm me.
for info:
initrd provides the capability to load a RAM disk by the boot loader.
This RAM disk can then be mounted as the root file system and programs
can be run from it. Afterwards, a new root file system can be mounted
from a different device. The previous root (from initrd) is then moved
to a directory and can be subsequently unmounted.
initrd is mainly designed to allow system startup to occur in two phases,
where the kernel comes up with a minimum set of compiled-in drivers, and
where additional modules are loaded from initrd.
This document gives a brief overview of the use of initrd. A more detailed
discussion of the boot process can be found in [1].
Operation
---------
When using initrd, the system typically boots as follows:
1) the boot loader loads the kernel and the initial RAM disk
2) the kernel converts initrd into a "normal" RAM disk and
frees the memory used by initrd
3) if the root device is not /dev/ram0, the old (deprecated)
change_root procedure is followed. see the "Obsolete root change
mechanism" section below.
4) root device is mounted. if it is /dev/ram0, the initrd image is
then mounted as root
5) /sbin/init is executed (this can be any valid executable, including
shell scripts; it is run with uid 0 and can do basically everything
init can do).
6) init mounts the "real" root file system
7) init places the root file system at the root directory using the
pivot_root system call
8) init execs the /sbin/init on the new root filesystem, performing
the usual boot sequence
9) the initrd file system is removed
Note that changing the root directory does not involve unmounting it.
It is therefore possible to leave processes running on initrd during that
procedure. Also note that file systems mounted under initrd continue to
be accessible.
---------- Post added at 12:26 PM ---------- Previous post was at 12:18 PM ----------
did u try with latest ubertc toolchain with latest gcc 5.3 compiler?
pm me for info
it is nice to see that someone has also been interested in this thing. Even though Im interested in it, unfortunately, my knowledge is not even a half of yours. I'm not sure how I can be helpful for you but if you ask me things to do, I am ready to apply them. I can try to be helpful with your assistance
Do you want me to try with the toolchain and GCC you mentioned above?
BTW I got it working once without doing any change in defconfig but I don't remember which toolchain I compiled it with. I don't get why it doesn't work when I do changes.

Categories

Resources