Apparently back around 2006 there was an effort at Sun Labs to get OpenSolaris to work on CHRP(like) PowerPC machines. And according to the documentation, the kernel could even boot to shell on a G4 Apple.
That effort was called Polaris. It was difficult to find the CDDL-licensed sources, but I've made them available for everyone else to play with at https://github.com/andreiw/polaris
I haven't tried it out or done anything with the sources yet. The Solaris kernel is a pretty amazing piece of software, and a very portable and well-designed one to boot. I am glad Sun open-sourced it before folding, as it's code like this that should be influencing OS R&D for generations to come. It would be interesting to see the Polaris code being used as a base for an AArch64 investigation...
A
Wednesday, June 25, 2014
Tuesday, June 24, 2014
Sunday, June 22, 2014
iQUIK update
I now have a 1.5Ghz PowerBook 12" in my possession to test iQUIK with. This is of course a NewWorld, and not a primary target for the iQUIK boot loader...
Couple of observations to be made:
Couple of observations to be made:
- OpenFirmware 3.0 doesn't support partition zero booting (i.e. hd:0 or CHRP-spec hd:%BOOT). This means that iQUIK cannot be booted the same way as it boots on OldWorlds, but neither is it required. iQUIK can be booted on NewWorlds the same way as Yaboot, i.e. placing 'iquik.elf' on an HFS+ partition and blessing it.
- NewWorld OF requires appending ":0" for full-disk access to disk devices
I've also fixed a bug inside partition code that truncated offsets to 32 bits, and improved device path handling and parsing.
In short, though, it works. And it works quite well. So iQUIK now works on OldWorld and NewWorld machines. Yaboot - only on NewWorlds. Of course, Yaboot also supports CHRP machines, network booting and reads all filesystems supported by the underlying OpenFirmware implementation. So there's plenty of work to reach feature parity in that regard.
A
Tuesday, June 3, 2014
Detecting 'make' environment variables change
While playing with 'iquik' and trying to add a mode to build a reduced-logging version that is smaller, I ran into an interesting question - how do I force a rebuild of everything with a clean?
# # Example of a Makefile that detects "environment change". # # I.e.: # # andreiw-lnx:~/src/ make clean # Cleaning # andreiw-lnx:~/src/ make # Resuming build with env "" # Building with "" # andreiw-lnx:~/src/ make CONFIG_EXAMPLE=1 # Cleaning due to env change (was "" now "-DCONFIG_EXAMPLE") # Cleaning # Building with "-DCONFIG_EXAMPLE" # andreiw-lnx:~/src/ make CONFIG_EXAMPLE=1 # Resuming build with env "-DCONFIG_EXAMPLE" # Building with "-DCONFIG_EXAMPLE" # andreiw-lnx:~/src # ENV_FILE=old_build_env -include $(ENV_FILE) # # Environment definition. # ifeq ($(CONFIG_EXAMPLE), 1) BUILD_FLAGS = -DCONFIG_EXAMPLE endif BUILD_ENV = "OLD_BUILD_FLAGS=$(BUILD_FLAGS)" # # Detect environment change. # ifneq ($(BUILD_FLAGS),$(OLD_BUILD_FLAGS)) PRETARGET=clean_env else PRETARGET=log_env endif all: $(PRETARGET) target target: @echo Building with \"$(BUILD_FLAGS)\" log_env: @echo Resuming build with env \"$(BUILD_FLAGS)\" log_clean_env: @echo Cleaning due to env change \(was \"$(OLD_BUILD_FLAGS)\" now \"$(BUILD_FLAGS)\"\) clean_env: log_clean_env clean @rm -f $(ENV_FILE) @echo $(BUILD_ENV) > $(ENV_FILE) clean: @echo Cleaning
Subscribe to:
Posts (Atom)