Kernel Building Woes - Nexus 6 Q&A, Help & Troubleshooting

I am in the process of building my first ROM/kernel for my Nexus 6 and I am very excited to run something I made myself. I have my build environment, SaberMod, etc all set up and ready to go, but I'm running into a few issues. I couldn't find a good guide for kernel building, so I'm using the one on Google's site here. I did the first sync in the guide and it said it was downloading 1.51GB, but when I looked in shamu-kernel I found one 7.3MB file! I shrugged it off and did the second sync in the guide. It uploaded 998MB, then downloaded 998MB., and when I looked in msm it was empty! I can't find these missing files anywhere.
My questions are:
1. Where did the rest of my files go from my first sync?
2. What was it uploading during the second sync?
3. Where did the 998MB it "downloaded" go?
4. My machine is running Fedora 22. Maybe Google doesn't like Fedora so they aren't letting me download anything?
Thanks,
Jeff

Face_Plant said:
I am in the process of building my first ROM/kernel for my Nexus 6 and I am very excited to run something I made myself. I have my build environment, SaberMod, etc all set up and ready to go, but I'm running into a few issues. I couldn't find a good guide for kernel building, so I'm using the one on Google's site here. I did the first sync in the guide and it said it was downloading 1.51GB, but when I looked in shamu-kernel I found one 7.3MB file! I shrugged it off and did the second sync in the guide. It uploaded 998MB, then downloaded 998MB., and when I looked in msm it was empty! I can't find these missing files anywhere.
My questions are:
1. Where did the rest of my files go from my first sync?
2. What was it uploading during the second sync?
3. Where did the 998MB it "downloaded" go?
4. My machine is running Fedora 22. Maybe Google doesn't like Fedora so they aren't letting me download anything?
Thanks,
Jeff
Click to expand...
Click to collapse
Hidden folder called .git in there. It's where all git data gets stored unless you have something checked out, though it should have checked out the default branch.
Make sure everything is up to date for your build environment.
Then to get the kernel source, just do:
git clone https://android.googlesource.com/kernel/msm.git
git checkout android-msm-shamu-3.10-marshmallow
You could always limit the git clone to just that branch to save space/bandwidth.
One you do that, all you need is to setup the couple environment variables arch/subarch/cc then make the shamu-defconfig.
I'm honestly not sure what sync you're talking about though in your post... Everything on that page is git clone... Nothing syncs.
Sent from my Nexus 6 using Tapatalk

Yoinx said:
Hidden folder called .git in there. It's where all git data gets stored unless you have something checked out, though it should have checked out the default branch.
Make sure everything is up to date for your build environment.
Then to get the kernel source, just do:
git clone https://android.googlesource.com/kernel/msm.git
git checkout android-msm-shamu-3.10-marshmallow
You could always limit the git clone to just that branch to save space/bandwidth.
One you do that, all you need is to setup the couple environment variables arch/subarch/cc then make the shamu-defconfig.
I'm honestly not sure what sync you're talking about though in your post... Everything on that page is git clone... Nothing syncs.
Sent from my Nexus 6 using Tapatalk
Click to expand...
Click to collapse
Clone, sync, same difference. Thanks for the help! I'll work on it some more after class.
I have 2 final questions:
1. I'm trying to build a ROM that's prerooted, Busybox, init.d, all the usual basic stuff. Do I make those edits now before I compile it? Or do I build it, find it, unzip it, make my edits, then rezip it?
2. I have sort of the same question about the kernel. I want to disable forced encryption, the annoying corrupt boot message, and set SELinux to permissive. Do I make those edits now while it's still just a bunch of random files on my PC, or do I build it first then edit it like I mentioned in my first question?

Face_Plant said:
Clone, sync, same difference. Thanks for the help! I'll work on it some more after class.
I have 2 final questions:
1. I'm trying to build a ROM that's prerooted, Busybox, init.d, all the usual basic stuff. Do I make those edits now before I compile it? Or do I build it, find it, unzip it, make my edits, then rezip it?
2. I have sort of the same question about the kernel. I want to disable forced encryption, the annoying corrupt boot message, and set SELinux to permissive. Do I make those edits now while it's still just a bunch of random files on my PC, or do I build it first then edit it like I mentioned in my first question?
Click to expand...
Click to collapse
Clone and sync aren't the same... Clone is a one way pull, and exists in the git binary. Sync is bidirectional, if you have rights to modify the remote repo, and exists as a function of the repo tool. More or less...
You could do it either way, it's really up to you. Nothing you listed though really requires building from source. That stuff should all be able to be done by unpacking, modifying, and repacking existing Kernels/roms.
Sent from my Nexus 6 using Tapatalk

Yoinx said:
Clone and sync aren't the same... Clone is a one way pull, and exists in the git binary. Sync is bidirectional, if you have rights to modify the remote repo, and exists as a function of the repo tool. More or less...
You could do it either way, it's really up to you. Nothing you listed though really requires building from source. That stuff should all be able to be done by unpacking, modifying, and repacking existing Kernels/roms.
Sent from my Nexus 6 using Tapatalk
Click to expand...
Click to collapse
I see. I was under the impression that a sync and clone just downloaded something from a repository, so I stupidly assumed they were the same.
I want to build from source so I can say I've done it and just because I can. It's been a good learning experience so far and it's also pretty fun!
Thanks for the help!

Related

**UPDATE**SuperG1-Computer 9/8/09 4:03am

Here is basic program for your windows computer that just does basic stuff.
It can reboot your phone to wherever you want like recovery, bootloader.
It will wipe your ext2/3 from recovery if you choose and it will repair your ext2/3.
This is still beta, so far everything that is on the app works. But when I say beta I mean I still to implement alot more features so just use it and then tell me what you guys want. I am working on implementing switchrom into it.
This is just about 3 hours of work so you will see alot more in the future.
Screenshots Below!
*(For those of you wondering it is writen in a mix of C++,vb.net,python,and MS-DOS)*
Twitter: http://twitter.com/kickfliprock13
** Oh I forgot to mention you need to have adb set up for this to work if you don't have it set up than it wont work. So if you want to set up just go here: http://punk-in.com/driver_vista.html
Continued
Changelog:
9/8/09: Added a link to tell you how to install usb drivers for your phone
Added links to our twitter's and plurk's
Fixed a few small bugs
Continued Again
This is for problems and things I am changing!
Problems:
Can't get it to put arguments into adb commands, for example adb shell sh /system/sd/switchrom -s (then the name they want to name it)
I suck with ShellExecute commands so I need to get better at those
Need to learn how to add .exe's and other files into a C++ file and then run it.
Changing:
I will probably be changing the layout in the next update
I will be learning ShellExecute commands hopefully. So then it can set up adb for you and do a switchrom.sh for you
looks good dling now btw how many programming languages do you know lol
Languages
I know a couple. This program is written in C++. I have only done C++ for about a week so I am still kind of a noob. But other than that I know: html, MS-DOS,Python, I am learning java, I know some C and C#.
I am taking some visual stuff right now, like blender and game development.
After that I want to learn CSS, and learn the reset of java and C++
do you think you can make it that the program can flash the new spl and radio so the phone won't brick. Anyway awesome program
It looks like it's just issuing the non-response ADB commands. Do you have anything there to capture the commandline output from ADB? I'm trying to get the push and pull confirmations for mine. It seems the stream is immedately written as blank and then changed to the confirmation but the change is not rewritten to the stream.
Also ADB does not have to be in a specific directory in order to work. Just change the working direcory of your process to the folder where you have them stored. I bundled the files with mine so I didn't have to worry about if someone didn't have them in the right place.
M..N said:
do you think you can make it that the program can flash the new spl and radio so the phone won't brick. Anyway awesome program
Click to expand...
Click to collapse
Yes, we are working on making that happen very soon. It is difficult but yeah, we already figured out a way to apply new radio,spl and get to hero in about a minute now we just need to implement that into the app but I just can't figure out exactly how to include multiple files in my C++ project but once I figure that out I will tell you.
Excellent thanks very much
Hi so how is this program coming along
Very well I almost have rooting figured out
Cool would this work on uk phones and when is the estimated release time

no rule to make target...libcamera.so

Hi guys, I've been wracking my brain on this on for a few hours now and I'm not getting anywhere.
I'm building AOSP from scratch. I've got all my proprietary libs copied over correctly but I'm getting the following error:
Code:
No rule to make target `vendor/htc/__DEVICE__/proprietary/libcamera.so', needed by `out/target/product/inc/obj/lib/libcamera.so'
I've done some extensive google searching, but nothing seems to explain it. I tried copying the library to obj/lib manually as well as system/lib, but it still errors out.
Any suggestions?
Thanks, Matt.
mattwood2000 said:
Hi guys, I've been wracking my brain on this on for a few hours now and I'm not getting anywhere.
I'm building AOSP from scratch. I've got all my proprietary libs copied over correctly but I'm getting the following error:
Code:
No rule to make target `vendor/htc/__DEVICE__/proprietary/libcamera.so', needed by `out/target/product/inc/obj/lib/libcamera.so'
I've done some extensive google searching, but nothing seems to explain it. I tried copying the library to obj/lib manually as well as system/lib, but it still errors out.
Any suggestions?
Thanks, Matt.
Click to expand...
Click to collapse
Out of curiosity, why are you building from scratch and not using an aosp based rom like CyanogenMod 7? I can't help you with your issue, i'm just curious.
When you say you have your proprietary libs, you mean that you ran the extract-files.sh before building?
jermaine151 said:
When you say you have your proprietary libs, you mean that you ran the extract-files.sh before building?
Click to expand...
Click to collapse
Yes and no - I manually copied over some of the files. I'm using this as a learning experience so I purposely didn't copy everything. However, I did grab all the proprietary libs (i.e libcamera.so, libhtc_ril.so, libEGL_adreno200.so, etc.).
I'm just wondering where in the build process it's getting hung up.
Thanks, Matt.
Look in the vendorblobs no rule to make can be missing file or broken path
I would suggest reading the .mk files from the device/vendor tree
But to find where your error comes run a search the text libcamera.so within the files be sure you include the entire project in your search ... it will take a while to search
Sent from my DROID2 using Tapatalk
mattwood2000 said:
Yes and no - I manually copied over some of the files. I'm using this as a learning experience so I purposely didn't copy everything. However, I did grab all the proprietary libs (i.e libcamera.so, libhtc_ril.so, libEGL_adreno200.so, etc.).
I'm just wondering where in the build process it's getting hung up.
Thanks, Matt.
Click to expand...
Click to collapse
Well, the script is there to eliminate user error, so I'd start over, run the script, and see what happens.

Bash replace sh?

Id love to replace sh with bash. sh is becoming a pain. What would I have to do to complete this process? Sorry, I'm a n00b to android in many aspects as I know plenty of linux, but I've never done any deving for arm or android.
I'd also like to add support for bash profiles and the best location would be /sdcard/Android/data. To be clear, I'm not looking to add bash, but to replace sh with bash.
A very easy way to have bash is the app "Better Terminal Emulator Pro", it's included there. The app is not free, but worth the few bucks.
I guess it would be quite easy to replace sh with the files included there, but I wouldn't recommend this. I change as little as possible of the system, and for me it was always enough to be able to call bash.
It's hard to predict what could happen after a replacement of sh ...
I agree with the warning, and with the recommendation. Better Terminal Emulator is great and the most well featured terminal that I have been able to find. It also puts the extra files it needs for the enhanced shell in /data/ instead of crowding up the system directory with extra binaries etc.
actually its not that bad if I can get bash built. you can rename sh to sh0 then create a symbolic link called sh to bash. instant replacement and bash will be called instead of sh.
I just need to know how to get to that point. I don't need a better terminal, I paid for sufbs and love it. it would just be better all around to have bash instead of sh.
Sent from my DROID3 using xda premium
So just do it.. It's your phone.
I told you where you can get a bash binary. Or you could compile it, shouldn't be very hard.
I just say I wouldn't, no way. You have no rescue CD.
(OK, thanks to a few people we now can re-install the system -- most likely)
rweb said:
So just do it.. It's your phone.
I told you where you can get a bash binary. Or you could compile it, shouldn't be very hard.
I just say I wouldn't, no way. You have no rescue CD.
(OK, thanks to a few people we now can re-install the system -- most likely)
Click to expand...
Click to collapse
I actually think I may have found a way. I've never cross-compiled software before so was hoping someone who has knew what I wanted and could tell me what I need to do. I've downloaded bash and am going to give it a try. I will test it before actually applying the replacement idea, but I think I can do this
I thought cross-compiling would be harder than this, but who knows? According to this source it isn't all that bad...
And of course it doesn't work
./configure --host=arm-linux --enable-static-link --without-bash-mollac
configure: WARNING: unrecognized options: --without-bash-mollac
configure: WARNING: If you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used.
checking build system type... x86_64-unknown-linux-gnu
checking host system type... arm-unknown-linux-gnu
Beginning configuration for bash-4.2-release for arm-unknown-linux-gnu
checking for arm-linux-gcc... arm-none-linux-gnueabi-gcc
checking for C compiler default output file name...
configure: error: in `/home/darksurf/Downloads/bash-4.2':
configure: error: C compiler cannot create executables
See `config.log' for more details.
any ideas? I'm using a gentoo based system.
There is a binary in the link YOU posted above, this binary works on D3. What's wrong with this?
Frankly, I do not understand you. Maybe your real goal is to learn how to compile Android binaries, but then you give up way to early.
rweb said:
There is a binary in the link YOU posted above, this binary works on D3. What's wrong with this?
Frankly, I do not understand you. Maybe your real goal is to learn how to compile Android binaries, but then you give up way to early.
Click to expand...
Click to collapse
In addition to that link, I had compiled it for us about a month back: http://www.mediafire.com/?b71lcdpnqn07egj
I highly advise not modifying /system/bin. I've bricked my phone several times doing that. Best option is to put bash in /system/xbin and modify /etc/profile to set the PATH variable to /system/xbin:/system/bin:$PATH
Darksurf said:
And of course it doesn't work
./configure --host=arm-linux --enable-static-link --without-bash-mollac
configure: WARNING: unrecognized options: --without-bash-mollac
configure: WARNING: If you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used.
checking build system type... x86_64-unknown-linux-gnu
checking host system type... arm-unknown-linux-gnu
Beginning configuration for bash-4.2-release for arm-unknown-linux-gnu
checking for arm-linux-gcc... arm-none-linux-gnueabi-gcc
checking for C compiler default output file name...
configure: error: in `/home/darksurf/Downloads/bash-4.2':
configure: error: C compiler cannot create executables
See `config.log' for more details.
any ideas? I'm using a gentoo based system.
Click to expand...
Click to collapse
I use gentoo myself, I recognize that error "C compiler cannot create executables" as one caused by gcc upgrades (changing gcc versions w/out updating environment variables etc but I've only seen it when not cross-compiling). Also, are you trying to use crossdev or Codesourcery? Codesourcery seems to generate less errors and there are many many guides for it available on google (I always get errors w/crossdev but the same code will compile error free w/codesourcery).
thanx, im using crossdev. ill give code sourcery a try. im asking because im not near my computer now, but is there an ebuild.
Sent from my DROID3 using xda premium
No, you have to grab the files off their website. Codesourcery.com or wget http://www.codesourcery.com/sgpp/li...-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 if you need a quick link, I think this is the version I have installed..
dude, u r my hero thanx.
Sent from my DROID3 using xda premium
Darksurf said:
dude, u r my hero thanx.
Sent from my DROID3 using xda premium
Click to expand...
Click to collapse
I assume it's compiling or your at least beyond your previous error. Glad to hear it.
Shenanigans?
I'm thinking... maybe you *don't* know a lot of Linux. But I admire your courage. We're here to help. And when you figure out how to push bash there, try ksh next.
--#
7April said:
I'm thinking... maybe you *don't* know a lot of Linux. But I admire your courage. We're here to help. And when you figure out how to push bash there, try ksh next.
--#
Click to expand...
Click to collapse
And ohh how helpful and informative that post was! Pretty sure pushing files to your phone has nothing to do with linux all. Pretty sure your not here to help at all but just to ridicule and also play the fool. When you figure out the difference between push and compile ....
Anyways, i just noticed that codesourcery is in portage now though i do know that some versions will cause compile errors where others wont not sure why, probably because i'm not a 31337 linux guru like april7, sigh someday

[DEVELOPMENT] FlashCast developer support thread

This thread is for FlashCast image developers ONLY. If you are not developing a FlashCast image, please do not post here. Post in the main thread instead.
Hello developers! I hope that this thread can serve as a place for you to ask any questions you may have about FlashCast development or internals, make feature requests, and report issues you're having. I will edit this post with FAQs as they come up. Until then, take a look at my documentation on GitHub, which contains documentation and sample code to help you create FlashCast mods.
tchebb said:
This thread is for FlashCast image developers ONLY. If you are not developing a FlashCast image, please do not post here. Post in the main thread instead.
Hello developers! I hope that this thread can serve as a place for you to ask any questions you may have about FlashCast development or internals, make feature requests, and report issues you're having. I will edit this post with FAQs as they come up. Until then, take a look at my flashcast-samples repository on GitHub, which contains documentation and sample code to help you create FlashCast mods.
Click to expand...
Click to collapse
So far its working great! Plan on releasing a rooted 13300 system image with this soon, but I was wondering, is there a possibility you could create a partition backup option? so like
Code:
backup_mtd_partition 'rootfs' 'system.img'
Where it will make a folder called backup on the jump drive, and store the rootfs file system with the name of system.img? also a md5 for each file would be nice. I know I could just have a script dd the mount point, but would be nice to see a function to call.
ddggttff3 said:
So far its working great! Plan on releasing a rooted 13300 system image with this soon, but I was wondering, is there a possibility you could create a partition backup option? so like
Code:
backup_mtd_partition 'rootfs' 'system.img'
Where it will make a folder called backup on the SD card, and store the rootfs file system with the name of system.img? also a md5 for each file would be nice. I know I could just have a script dd the mount point, but would be nice to see a function to call.
Click to expand...
Click to collapse
This would definitely be a useful feature. I can see a few implementation details that would need to be worked out in a non-obvious fashion, though:
There is currently no way for a imager script to directly access the root of the user partition. This is intended to prevent multiple scripts from having access to the same filesystem and possibly overwriting each others' files. Instead, scripts are executed in a temporary directory whose contents are discarded on device shutdown. It seems like the solution to this would be to create numbered backup directories, like there are numbered logs now, for mods to place their backups in.
It wouldn't be desirable for a mod to take a backup every time it was flashed, as not everyone cares about backups and they take up lots of space. There would need to be some way for the user to decide whether or not they wanted backups. Maybe another flag file?
Finally, taking a backup of an MTD partition using nanddump (dd should not be used to image NAND partitions, since it is not bad-block aware) images the entire partition, when (in the case of squashfs) only a small part actually has a filesystem on it. This means that a single rootfs backup will take up 400MB on the USB drive. I would want to implement something which can back up only the part of a partition which squashfs is using before I release backup functionality.
Obviously, this is a prime candidate for a new helper function, because of these non-trivial complications. I'll see if I can make the necessary changes to FlashCast and release backup functionality as part of v1.1. Thanks for the suggestion!
One more suggestion, if you do not mind.
How about the ability to flash multiple zips at once? So, if I have 2 files I want to flash, first one will stay eureka_image.zip, and then the next one would be eureka_image1.zip, or some similar process to allow multiple zips.
The issue here would be a naming scheme that would be easy for users to use and understand. so maybe if you flash a single file, just use eureka_image.zip, and if multiple, each would have a number added, starting from 1 and counting up in the order you want them flashed?
ddggttff3 said:
One more suggestion, if you do not mind.
How about the ability to flash multiple zips at once? So, if I have 2 files I want to flash, first one will stay eureka_image.zip, and then the next one would be eureka_image1.zip, or some similar process to allow multiple zips.
The issue here would be a naming scheme that would be easy for users to use and understand. so maybe if you flash a single file, just use eureka_image.zip, and if multiple, each would have a number added, starting from 1 and counting up in the order you want them flashed?
Click to expand...
Click to collapse
This is something I intend to implement. My current plan is to support a eureka_images directory, which can contain any combination of zipped and unzipped mods which will be flashed in alphabetical order. Mod authors can distribute their mods with a prefixed number, so, for example, you could distribute 00_13300_rooted.zip and 59_unlocator_dns.zip. I'll write a standard for how to determine the numbers (e.g. full system images get 00-09, major/minor filesystem changes get 40-49/50-59 respectively depending on how many files they affect, etc). It's not perfect and there can still be conflicts, but it should allow most mods to be flashed in a mostly sane order. I'm open to any suggestions or improvements you might have.
tchebb said:
This is something I intend to implement. My current plan is to support a eureka_images directory, which can contain any combination of zipped and unzipped mods which will be flashed in alphabetical order. Mod authors can distribute their mods with a prefixed number, so, for example, you could distribute 00_13300_rooted.zip and 59_unlocator_dns.zip. I'll write a standard for how to determine the numbers (e.g. full system images get 00-09, major/minor filesystem changes get 40-49/50-59 respectively depending on how many files they affect, etc). It's not perfect and there can still be conflicts, but it should allow most mods to be flashed in a mostly sane order. I'm open to any suggestions or improvements you might have.
Click to expand...
Click to collapse
Sounds great to me! Only other suggestion I have is to add another flag file which would allow Flashcast to continue flashing the multiple zips, even if one errors out.
So, by default if multiple zips are going to be flashed, and it errors on the first, it would stop, get a red LED, and then reboot.
with a flag file present, maybe ignore_errors, even if it errors out on the first zip, it would continue down the chain of zips until it finishes all of them.
Anyone got any idea how to get started with some themes for the chromecast? Will be more than happy to help, as soon i know where to start.
bormeth said:
Anyone got any idea how to get started with some themes for the chromecast? Will be more than happy to help, as soon i know where to start.
Click to expand...
Click to collapse
Most of the resources seem to be kept in the .pak files contained in /chrome. The first step to theming would be figuring out what format those are in and how to unpack and repack them. You might want to start by taking a look at the content_shell source code, as it might have some documentation or scripts for working with .pak files.
tchebb said:
Most of the resources seem to be kept in the .pak files contained in /chrome. The first step to theming would be figuring out what format those are in and how to unpack and repack them. You might want to start by taking a look at the content_shell source code, as it might have some documentation or scripts for working with .pak files.
Click to expand...
Click to collapse
Im gonna dive into it
Have a little bug report.
If a person has more then 85~MB in their eureka_image folder, and then they start a SquashFS File system edit, flashcast will report an error saying out of space. Now, here is the error part. Even though it failed to mount with an error, the imager.sh file will continue to run, and will then attempt to flash back a corrupt file, causing a non-bootable chromecast until the system partition is re-flashed.
bormeth said:
Anyone got any idea how to get started with some themes for the chromecast? Will be more than happy to help, as soon i know where to start.
Click to expand...
Click to collapse
The first script on THIS SITE will unpack the .PAK files, although it unpacks everything as a .png as it was made for a different Chromium device. So you would have to manually go rename all the files to their correct extension for the files, but because it expects everything to be a .png it won't pack back properly. The second script, technically should unpack/pack as proper file extensions, but I never got it to work right as I have little to no knowledge of Python.
The chromium source has a script,data_pack.py (which I can't link to since I'm a new user ATM) which can be used to pack and unpack .PAK files. The script posted above seems to be lifted from this source and modified to detect a few filetypes and write the unpacked files. But if you want to modify or add images and need to repack them, this script will help you figure it out. I'll work on adding and making some changes to the theme and give some instructions.
how to mount usb drive
Haven't used linux in years. Thanks!
Hey, want to do some poking around in the flashcast .bin file...how do I go about doing that? What is the file format, and is the image mountable in linux? Even better might be to extract files/folders from the image...what tool can I use to do that?
Ok, so I'm doing some dinking around...I've looked into buildroot, and I think for the most part I understand what is going on. I also tried building from source, and it appears to have worked. So, from this poking around I have a few assumptions I've made and a few questions. Correct me if I'm wrong anywhere but.......
Basically, you've built a generic bootloader for the device using buildroot. This is not related at all to the stock CC bootloader (although maybe you borrowed a few drivers, etc). I would guess that the buildroot bootloader has just what you need to display a picture on the TV and do some basic file system operations, and I would also guess that the buildroot bootloader is missing a few features that the stock bootloader has - therefore, it wouldn't be possible to run a full-fledged ROM off of this bootloader. Am I right so far? If so, what is missing from the buildroot bootloader? Libraries? Binaries? No idea?
Also, to access something like USB storage, the buildroot bootloader is able to include the required /dev devices, whereas it wouldn't be possible to include this on CC's stock bootloader without the source. So, doing something like accessing a ROM from an external flash drive isn't feasible because of these limitations? Basically, all that is possible with the current bootloader (of course, the insecure one which allows for unsigned code to run) is to add a few binaries to the stock CC ROM (things like adb, dropbear, etc), maybe add some access to those binaries through Web GUI, etc.
Am I on the right track? Is there anything you would add/correct? Thanks for the help. I'm trying to understand
tomg09 said:
Ok, so I'm doing some dinking around...I've looked into buildroot, and I think for the most part I understand what is going on. I also tried building from source, and it appears to have worked. So, from this poking around I have a few assumptions I've made and a few questions. Correct me if I'm wrong anywhere but.......
Basically, you've built a generic bootloader for the device using buildroot. This is not related at all to the stock CC bootloader (although maybe you borrowed a few drivers, etc). I would guess that the buildroot bootloader has just what you need to display a picture on the TV and do some basic file system operations, and I would also guess that the buildroot bootloader is missing a few features that the stock bootloader has - therefore, it wouldn't be possible to run a full-fledged ROM off of this bootloader. Am I right so far? If so, what is missing from the buildroot bootloader? Libraries? Binaries? No idea?
Also, to access something like USB storage, the buildroot bootloader is able to include the required /dev devices, whereas it wouldn't be possible to include this on CC's stock bootloader without the source. So, doing something like accessing a ROM from an external flash drive isn't feasible because of these limitations? Basically, all that is possible with the current bootloader (of course, the insecure one which allows for unsigned code to run) is to add a few binaries to the stock CC ROM (things like adb, dropbear, etc), maybe add some access to those binaries through Web GUI, etc.
Am I on the right track? Is there anything you would add/correct? Thanks for the help. I'm trying to understand
Click to expand...
Click to collapse
Buildroot does not let us build a bootloader, it lets us build a custom linux distribution that runs on the chromecast. The reason it is unable to do anything "graphical" minus the static image is due to licensing of the marvell GPU driver the chromecast uses. It is currently closed source, so it is unable to be compiled. We can use the blob from the stock OS, but ATM there is no need, and this can cause licensing issues.
Also, you can still access /dev and such on the stock OS. The big thing is the stock OS has usb input disabled at a kernel level, so it doesn't mount or detect any devices plugged in when the OS is running. This is circumvented though if you build and use your own custom kernel. For the features Eureka-ROM adds to the stock OS, we add those by using googles open source cross compiler for the device to build supported binaries.
Hmm...interesting. So, if I understand the booting process properly, upon power-on, a small bit of code called the bootloader is run, loading the kernel into memory (where, among other things, the graphics driver is located). From there, other components of the operating system are loaded on "top" of the kernel. So, it's not the bootloader that's rebuilt - but the kernel - with buildroot. Now, what sort of things would be possible if an open source alternative for the graphics driver were available (bear with me in the hypothetical), or even if one were to take the blob from the stock CC kernel? Turn CC into an android stick, complete with USB input device compatibility maybe?
Now on another note. I want to learn about cross-compiling. I am thinking of trying my hand at cross-compiling samba for the chromecast. Now if I understand the buildroot compiling process correctly, the right compiler for making chromecast-runnable binaries is compiled (or do you include it externally), and in theory, it should be possible to compile samba, right? I've been poking around the buildroot directory tree with the chromecast source superimposed over the top, and as of yet, I havent found the compiling binary (gcc, maybe?). I will look in a bit more depth. Once I find this, it should be as simple as specifying host and target architecture, putting the compiler for the CC in PATH, and compiling, right?
Thanks again for your help, and if you feel this isn't the appropriate place to post this, let me know.
tomg09 said:
Hmm...interesting. So, if I understand the booting process properly, upon power-on, a small bit of code called the bootloader is run, loading the kernel into memory (where, among other things, the graphics driver is located). From there, other components of the operating system are loaded on "top" of the kernel. So, it's not the bootloader that's rebuilt - but the kernel - with buildroot. Now, what sort of things would be possible if an open source alternative for the graphics driver were available (bear with me in the hypothetical), or even if one were to take the blob from the stock CC kernel? Turn CC into an android stick, complete with USB input device compatibility maybe?
Now on another note. I want to learn about cross-compiling. I am thinking of trying my hand at cross-compiling samba for the chromecast. Now if I understand the buildroot compiling process correctly, the right compiler for making chromecast-runnable binaries is compiled (or do you include it externally), and in theory, it should be possible to compile samba, right? I've been poking around the buildroot directory tree with the chromecast source superimposed over the top, and as of yet, I haven't found the compiling binary (gcc, maybe?). I will look in a bit more depth. Once I find this, it should be as simple as specifying host and target architecture, putting the compiler for the CC in PATH, and compiling, right?
Thanks again for your help, and if you feel this isn't the appropriate place to post this, let me know.
Click to expand...
Click to collapse
If we had a fully working open source graphics driver, lots could be accomplished. Full custom linux distributions could run x11 shells, we could have xbmc working with hardware decoding, and yes android would technically be possible if enough people wanted to put the time and effort into it. You can take the blob from the rom to do some of this, but things like hardware accelerated decoding will still not be possible due to the fact there is no documentation on how to use the blobs properly for things like that. (this is my understanding so I may be off on some small details, @tchebb can probably explain it more in depth.)
As for cross compiling, you just need to use googles prebuilt toolchain as the compile source.
Link: https://code.google.com/p/chromecast-mirrored-source/source/browse?repo=prebuilt
Mind if I ask why you want to compile samba? do you want to host media or files from a chromecast device? I actually have CIFS added to the eureka-kernel configs on our repo, so if you compile our kernel from source, you can mount samba shares on the chromecast device using the CLI.
ddggttff3 said:
As for cross compiling, you just need to use googles prebuilt toolchain as the compile source.
Link: https://code.google.com/p/chromecast-mirrored-source/source/browse?repo=prebuilt
Mind if I ask why you want to compile samba? do you want to host media or files from a chromecast device? I actually have CIFS added to the eureka-kernel configs on our repo, so if you compile our kernel from source, you can mount samba shares on the chromecast device using the CLI.
Click to expand...
Click to collapse
Cool. Thanks for the link. Basically, I'm just looking to learn about cross compiling for mobile devices. I figure samba seems easy enough. It was the first thing that came to mind. Any other ideas for something to cut my teeth on? Other binaries that would be well suited to CC, but are easy to compile?
tomg09 said:
Cool. Thanks for the link. Basically, I'm just looking to learn about cross compiling for mobile devices. I figure samba seems easy enough. It was the first thing that came to mind. Any other ideas for something to cut my teeth on? Other binaries that would be well suited to CC, but are easy to compile?
Click to expand...
Click to collapse
One more question...I've looked through the toolchain...the way it's set up is somewhat confusing. In the root directory of the toolchain: bin=gcc, g++, everything else I need to compile. What are the two folders entitled "arm-unknown-linux-gnueabi" and "target-arm-unknown-linux-gnueabi"? They seem to have relevant stuff (one has gcc, g++, etc except without the arm-unk... prefix, and other binaries which seem important). How do I use these/should I use these/why are they kept separate?
Thanks for the help.

Problem with VCS deleting all the project files

After spending some time on making one of my first apps, I decided to use GitHub, to let a friend of mine develop it alongside. I read some documentation and looked on how to integrate Git with Android Studio. I set everything up and i did my first push on a remote branch and merged it with the master. After the push was finished (I used the VCS push), the project reloaded and all the files were gone, except local.properties, the ones in the .idea folder and the project's .iml file. But not only gone frome the master, gone from my local project directory. This is extremely upsetting, mainly because I was already around 40 in development. Please could anybody explain to me why this happened and, if anybody knows how to, to get my files back?
PS this is my repo's master branch: https://github.com/Baldomo/SileForAndroid

Categories

Resources