commit f0f3bb7773702035250596503ec1dc8b39f7596f Author: Dalton Durst Date: Wed Feb 7 13:25:02 2018 -0600 Initial commit diff --git a/Android.mk b/Android.mk new file mode 100644 index 0000000..1bbb562 --- /dev/null +++ b/Android.mk @@ -0,0 +1,115 @@ +# +# Copyright (C) 2014 Jolla Oy +# Copyright (C) 2017 Marius Gripsgard +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LOCAL_PATH:= $(call my-dir) +HALIUM_PATH:=$(LOCAL_PATH) + +# We use the commandline and kernel configuration varables from +# build/core/Makefile to be consistent. Support for boot/recovery +# image specific kernel COMMANDLINE vars is provided but whether it +# works or not is down to your bootloader. + +HALIUM_BOOTIMG_COMMANDLINE := + +# Find any fstab files for required partition information. +# in AOSP we could use TARGET_VENDOR +# TARGET_VENDOR := $(shell echo $(PRODUCT_MANUFACTURER) | tr '[:upper:]' '[:lower:]') +# but Cyanogenmod seems to use device/*/$(TARGET_DEVICE) in config.mk so we will too. +HALIUM_FSTABS := $(shell find device/*/$(TARGET_DEVICE) -name *fstab* | grep -v goldfish) +# If fstab files were not found from primary device repo then they might be in +# some other device repo so try to search for them first in device/PRODUCT_MANUFACTURER. +# In many cases PRODUCT_MANUFACTURER is the short vendor name used in folder names. +ifeq "$(HALIUM_FSTABS)" "" +TARGET_VENDOR := "$(shell echo $(PRODUCT_MANUFACTURER) | tr '[:upper:]' '[:lower:]')" +HALIUM_FSTABS := $(shell find device/$(TARGET_VENDOR) -name *fstab* | grep -v goldfish) +endif +# Some devices devices have the short vendor name in PRODUCT_BRAND so try to +# search from device/PRODUCT_BRAND if fstab files are still not found. +ifeq "$(HALIUM_FSTABS)" "" +TARGET_VENDOR := "$(shell echo $(PRODUCT_BRAND) | tr '[:upper:]' '[:lower:]')" +HALIUM_FSTABS := $(shell find device/$(TARGET_VENDOR) -name *fstab* | grep -v goldfish) +endif + +ifneq ($(strip $(TARGET_NO_KERNEL)),true) + INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel +else + INSTALLED_KERNEL_TARGET := +endif + +HALIUM_BOOTIMAGE_ARGS := \ + $(addprefix --second ,$(INSTALLED_2NDBOOTLOADER_TARGET)) \ + --kernel $(INSTALLED_KERNEL_TARGET) + +ifeq ($(BOARD_KERNEL_SEPARATED_DT),true) + INSTALLED_DTIMAGE_TARGET := $(PRODUCT_OUT)/dt.img + HALIUM_BOOTIMAGE_ARGS += --dt $(INSTALLED_DTIMAGE_TARGET) + BOOTIMAGE_EXTRA_DEPS := $(INSTALLED_DTIMAGE_TARGET) +endif + +ifdef BOARD_KERNEL_BASE + HALIUM_BOOTIMAGE_ARGS += --base $(BOARD_KERNEL_BASE) +endif + +ifdef BOARD_KERNEL_PAGESIZE + HALIUM_BOOTIMAGE_ARGS += --pagesize $(BOARD_KERNEL_PAGESIZE) +endif + +# Strip lead/trail " from broken BOARD_KERNEL_CMDLINEs :( +HALIUM_BOARD_KERNEL_CMDLINE := $(shell echo '$(BOARD_KERNEL_CMDLINE)' | sed -e 's/^"//' -e 's/"$$//') + +ifneq "" "$(strip $(HALIUM_BOARD_KERNEL_CMDLINE) $(HALIUM_BOOTIMG_COMMANDLINE))" + HALIUM_BOOTIMAGE_ARGS += --cmdline "$(strip $(HALIUM_BOARD_KERNEL_CMDLINE) $(HALIUM_BOOTIMG_COMMANDLINE))" +endif + + +include $(CLEAR_VARS) +LOCAL_MODULE:= halium-boot +# Here we'd normally include $(BUILD_SHARED_LIBRARY) or something +# but nothing seems suitable for making an img like this +LOCAL_MODULE_CLASS := ROOT +LOCAL_MODULE_SUFFIX := .img +LOCAL_MODULE_PATH := $(PRODUCT_OUT) + +include $(BUILD_SYSTEM)/base_rules.mk +HALIUM_BOOT_INTERMEDIATE := $(call intermediates-dir-for,ROOT,$(LOCAL_MODULE),) + +.PHONY: HALIUM_BOOT_RAMDISK +HALIUM_BOOT_RAMDISK := $(HALIUM_BOOT_INTERMEDIATE)/halium-initramfs.gz +GET_INITRD := $(LOCAL_PATH)/get-initrd.sh + +$(LOCAL_BUILT_MODULE): $(INSTALLED_KERNEL_TARGET) $(HALIUM_BOOT_RAMDISK) $(BOOTIMAGE_EXTRA_DEPS) + @echo "Making halium-boot.img in $(dir $@) using $(INSTALLED_KERNEL_TARGET) $(HALIUM_BOOT_RAMDISK)" + @mkdir -p $(dir $@) + @rm -rf $@ +ifeq ($(BOARD_CUSTOM_MKBOOTIMG),pack_intel) + $(MKBOOTIMG) $(DEVICE_BASE_BOOT_IMAGE) $(INSTALLED_KERNEL_TARGET) $(HALIUM_BOOT_RAMDISK) $(cmdline) $@ +else + @mkbootimg --ramdisk $(HALIUM_BOOT_RAMDISK) $(HALIUM_BOOTIMAGE_ARGS) $(BOARD_MKBOOTIMG_ARGS) --output $@ +endif + +$(HALIUM_BOOT_RAMDISK): + @echo "Downloading initramfs to : $@" +ifdef BOARD_USE_LOCAL_INITRD + @echo "Using local initramfs at device/*/$(TARGET_DEVICE)/initramfs.gz" + @cp device/*/$(TARGET_DEVICE)/initramfs.gz $@ +else + @$(GET_INITRD) ${TARGET_KERNEL_ARCH} $@ +endif + +.PHONY: halium-common + +halium-common: bootimage mkbootimg halium-boot diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..d080327 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# UBports boot + +UBports initrd (upstart) + +#### Build + +``` +mka ubports-boot +``` + +#### Initrd debugging: + +``` +sudo fastboot boot ubports-boot.img -c break=[level] +``` + +Levels + +* modules +* premount +* mount +* mountroot +* bottom + +example: + +``` +sudo fastboot boot ubports-boot.img -c break=premount +``` + +And use telnet to login: + +``` +telnet 192.168.2.15 +``` diff --git a/check-kernel-config b/check-kernel-config new file mode 100755 index 0000000..c3cc239 --- /dev/null +++ b/check-kernel-config @@ -0,0 +1,372 @@ +#!/bin/bash + +FILE=$1 + +[ -f "$FILE" ] || { + echo "Provide a config file as argument" + exit +} + +write=false + +if [ "$2" = "-w" ]; then + write=true +fi + +CONFIGS_ON=" +CONFIG_IKCONFIG +CONFIG_CPUSETS +CONFIG_AUTOFS4_FS +CONFIG_TMPFS_XATTR +CONFIG_TMPFS_POSIX_ACL +CONFIG_CGROUP_DEVICE +CONFIG_CGROUP_MEM_RES_CTLR +CONFIG_CGROUP_MEM_RES_CTLR_SWAP +CONFIG_CGROUP_MEM_RES_CTLR_KMEM +CONFIG_RTC_DRV_CMOS +CONFIG_BLK_CGROUP +CONFIG_CGROUP_PERF +CONFIG_IKCONFIG_PROC +CONFIG_SYSVIPC +CONFIG_CGROUPS +CONFIG_CGROUP_FREEZER +CONFIG_NAMESPACES +CONFIG_UTS_NS +CONFIG_IPC_NS +CONFIG_USER_NS +CONFIG_PID_NS +CONFIG_NET_NS +CONFIG_AUDIT +CONFIG_AUDITSYSCALL +CONFIG_AUDIT_TREE +CONFIG_AUDIT_WATCH +CONFIG_CC_STACKPROTECTOR +CONFIG_DEBUG_RODATA +CONFIG_DEVTMPFS +CONFIG_DEVTMPFS_MOUNT +CONFIG_DEVPTS_MULTIPLE_INSTANCES +CONFIG_ECRYPT_FS +CONFIG_ECRYPT_FS_MESSAGING +CONFIG_ENCRYPTED_KEYS +CONFIG_EXT4_FS_POSIX_ACL +CONFIG_EXT4_FS_SECURITY +CONFIG_FSNOTIFY +CONFIG_DNOTIFY +CONFIG_INOTIFY_USER +CONFIG_FANOTIFY +CONFIG_FANOTIFY_ACCESS_PERMISSIONS +CONFIG_KEYS +CONFIG_SWAP +CONFIG_VT +CONFIG_VT_CONSOLE +CONFIG_SECCOMP +CONFIG_SECURITY +CONFIG_SECURITYFS +CONFIG_SECURITY_NETWORK +CONFIG_NETLABEL +CONFIG_SECURITY_PATH +CONFIG_SECURITY_SELINUX +CONFIG_SECURITY_SELINUX_BOOTPARAM +CONFIG_SECURITY_SELINUX_DISABLE +CONFIG_SECURITY_SELINUX_DEVELOP +CONFIG_SECURITY_SELINUX_AVC_STATS +CONFIG_SECURITY_SMACK +CONFIG_SECURITY_TOMOYO +CONFIG_DEFAULT_SECURITY_APPARMOR +CONFIG_SECURITY_APPARMOR +CONFIG_SECURITY_APPARMOR_HASH +CONFIG_SECURITY_APPARMOR_UNCONFINED_INIT +CONFIG_SECURITY_YAMA +CONFIG_SECURITY_YAMA_STACKED +CONFIG_STRICT_DEVMEM +CONFIG_SYN_COOKIES +CONFIG_BT +CONFIG_BT_RFCOMM +CONFIG_BT_RFCOMM_TTY +CONFIG_BT_BNEP +CONFIG_BT_BNEP_MC_FILTER +CONFIG_BT_BNEP_PROTO_FILTER +CONFIG_BT_HIDP +CONFIG_XFRM_USER +CONFIG_NET_KEY +CONFIG_INET +CONFIG_IP_ADVANCED_ROUTER +CONFIG_IP_MULTIPLE_TABLES +CONFIG_INET_AH +CONFIG_INET_ESP +CONFIG_INET_IPCOMP +CONFIG_INET_XFRM_MODE_TRANSPORT +CONFIG_INET_XFRM_MODE_TUNNEL +CONFIG_INET_XFRM_MODE_BEET +CONFIG_IPV6 +CONFIG_INET6_AH +CONFIG_INET6_ESP +CONFIG_INET6_IPCOMP +CONFIG_INET6_XFRM_MODE_TRANSPORT +CONFIG_INET6_XFRM_MODE_TUNNEL +CONFIG_INET6_XFRM_MODE_BEET +CONFIG_IPV6_MULTIPLE_TABLES +CONFIG_NETFILTER +CONFIG_NETFILTER_ADVANCED +CONFIG_NETFILTER_NETLINK +CONFIG_NETFILTER_NETLINK_ACCT +CONFIG_NETFILTER_NETLINK_LOG +CONFIG_NETFILTER_NETLINK_QUEUE +CONFIG_NETFILTER_TPROXY +CONFIG_NETFILTER_XTABLES +CONFIG_NETFILTER_XT_CONNMARK +CONFIG_NETFILTER_XT_MARK +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE +CONFIG_NETFILTER_XT_MATCH_CLUSTER +CONFIG_NETFILTER_XT_MATCH_COMMENT +CONFIG_NETFILTER_XT_MATCH_CONNBYTES +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT +CONFIG_NETFILTER_XT_MATCH_CONNMARK +CONFIG_NETFILTER_XT_MATCH_CONNTRACK +CONFIG_NETFILTER_XT_MATCH_CPU +CONFIG_NETFILTER_XT_MATCH_DCCP +CONFIG_NETFILTER_XT_MATCH_DEVGROUP +CONFIG_NETFILTER_XT_MATCH_DSCP +CONFIG_NETFILTER_XT_MATCH_ECN +CONFIG_NETFILTER_XT_MATCH_ESP +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT +CONFIG_NETFILTER_XT_MATCH_HELPER +CONFIG_NETFILTER_XT_MATCH_HL +CONFIG_NETFILTER_XT_MATCH_IPRANGE +CONFIG_NETFILTER_XT_MATCH_LENGTH +CONFIG_NETFILTER_XT_MATCH_LIMIT +CONFIG_NETFILTER_XT_MATCH_MAC +CONFIG_NETFILTER_XT_MATCH_MARK +CONFIG_NETFILTER_XT_MATCH_MULTIPORT +CONFIG_NETFILTER_XT_MATCH_NFACCT +CONFIG_NETFILTER_XT_MATCH_OSF +CONFIG_NETFILTER_XT_MATCH_OWNER +CONFIG_NETFILTER_XT_MATCH_PKTTYPE +CONFIG_NETFILTER_XT_MATCH_POLICY +CONFIG_NETFILTER_XT_MATCH_QUOTA +CONFIG_NETFILTER_XT_MATCH_QUOTA2 +CONFIG_NETFILTER_XT_MATCH_RATEEST +CONFIG_NETFILTER_XT_MATCH_REALM +CONFIG_NETFILTER_XT_MATCH_RECENT +CONFIG_NETFILTER_XT_MATCH_SCTP +CONFIG_NETFILTER_XT_MATCH_SOCKET +CONFIG_NETFILTER_XT_MATCH_STATE +CONFIG_NETFILTER_XT_MATCH_STATISTIC +CONFIG_NETFILTER_XT_MATCH_STRING +CONFIG_NETFILTER_XT_MATCH_TCPMSS +CONFIG_NETFILTER_XT_MATCH_TIME +CONFIG_NETFILTER_XT_MATCH_U32 +CONFIG_NETFILTER_XT_TARGET_AUDIT +CONFIG_NETFILTER_XT_TARGET_CHECKSUM +CONFIG_NETFILTER_XT_TARGET_CLASSIFY +CONFIG_NETFILTER_XT_TARGET_CONNMARK +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK +CONFIG_NETFILTER_XT_TARGET_CT +CONFIG_NETFILTER_XT_TARGET_DSCP +CONFIG_NETFILTER_XT_TARGET_HL +CONFIG_NETFILTER_XT_TARGET_IDLETIMER +CONFIG_NETFILTER_XT_TARGET_LED +CONFIG_NETFILTER_XT_TARGET_LOG +CONFIG_NETFILTER_XT_TARGET_MARK +CONFIG_NETFILTER_XT_TARGET_NFLOG +CONFIG_NETFILTER_XT_TARGET_NFQUEUE +CONFIG_NETFILTER_XT_TARGET_NOTRACK +CONFIG_NETFILTER_XT_TARGET_RATEEST +CONFIG_NETFILTER_XT_TARGET_SECMARK +CONFIG_NETFILTER_XT_TARGET_TCPMSS +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP +CONFIG_NETFILTER_XT_TARGET_TEE +CONFIG_NETFILTER_XT_TARGET_TPROXY +CONFIG_NETFILTER_XT_TARGET_TRACE +CONFIG_NF_CONNTRACK_ZONES +CONFIG_IP6_NF_FILTER +CONFIG_IP6_NF_IPTABLES +CONFIG_IP6_NF_MANGLE +CONFIG_IP6_NF_MATCH_AH +CONFIG_IP6_NF_MATCH_EUI64 +CONFIG_IP6_NF_MATCH_FRAG +CONFIG_IP6_NF_MATCH_HL +CONFIG_IP6_NF_MATCH_IPV6HEADER +CONFIG_IP6_NF_MATCH_MH +CONFIG_IP6_NF_MATCH_OPTS +CONFIG_IP6_NF_MATCH_RPFILTER +CONFIG_IP6_NF_MATCH_RT +CONFIG_IP6_NF_QUEUE +CONFIG_IP6_NF_RAW +CONFIG_IP6_NF_SECURITY +CONFIG_IP6_NF_TARGET_HL +CONFIG_IP6_NF_TARGET_REJECT +CONFIG_IP6_NF_TARGET_REJECT_SKERR +CONFIG_DNS_RESOLVER +CONFIG_IOSCHED_DEADLINE +CONFIG_SUSPEND_TIME +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS +CONFIG_CONSOLE_TRANSLATIONS +CONFIG_EVM +CONFIG_INTEGRITY_SIGNATURE +CONFIG_FHANDLE +CONFIG_EPOLL +CONFIG_SIGNALFD +CONFIG_TIMERFD +CONFIG_TMPFS_POSIX_ACL +" + +CONFIGS_OFF=" +CONFIG_NETPRIO_CGROUP +CONFIG_NET_CLS_CGROUP +CONFIG_FW_LOADER_USER_HELPER +CONFIG_ANDROID_LOW_MEMORY_KILLER +CONFIG_ANDROID_PARANOID_NETWORK +CONFIG_DEFAULT_SECURITY_DAC +CONFIG_DEFAULT_SECURITY_SELINUX +CONFIG_DEFAULT_SECURITY_TOMOYO +CONFIG_DEFAULT_SECURITY_YAMA +CONFIG_DEFAULT_SECURITY_SMACK +CONFIG_SECURITY_APPARMOR_STATS +CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX +CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER +CONFIG_BT_HCIBTUSB +CONFIG_BT_HCIBTSDIO +CONFIG_BT_HCIUART +CONFIG_BT_HCIBCM203X +CONFIG_BT_HCIBPA10X +CONFIG_BT_HCIBFUSB +CONFIG_BT_HCIVHCI +CONFIG_BT_MRVL +CONFIG_AF_RXRPC +CONFIG_KEYS_DEBUG_PROC_KEYS +CONFIG_XFRM_MIGRATE +CONFIG_XFRM_STATISTICS +CONFIG_XFRM_SUB_POLICY +CONFIG_COMPAT_BRK +CONFIG_DEVKMEM +CONFIG_NETFILTER_DEBUG +CONFIG_IP_SET +CONFIG_IP_VS +CONFIG_RT_GROUP_SCHED +CONFIG_ARM_UNWIND +CONFIG_VT_HW_CONSOLE_BINDING +CONFIG_FRAMEBUFFER_CONSOLE +CONFIG_SPEAKUP +CONFIG_CIFS_UPCALL +CONFIG_CIFS_DFS_UPCALL +CONFIG_KGDB +" +CONFIGS_EQ=" +CONFIG_DEFAULT_SECURITY=\"apparmor\" +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 +CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048 +CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024 +CONFIG_SECURITY_TOMOYO_POLICY_LOADER=\"/sbin/tomoyo-init\" +CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER=\"/sbin/init\" +CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_DEFAULT_IOSCHED=\"deadline\" +CONFIG_EVM_HMAC_VERSION=2 +" + +ered() { + echo -e "\033[31m" $@ +} + +egreen() { + echo -e "\033[32m" $@ +} + +ewhite() { + echo -e "\033[37m" $@ +} + +echo -e "\n\nChecking config file for Ubuntu Touch specific config options.\n\n" + +errors=0 +fixes=0 + +for c in $CONFIGS_ON $CONFIGS_OFF;do + cnt=`grep -w -c $c $FILE` + if [ $cnt -gt 1 ];then + ered "$c appears more than once in the config file, fix this" + errors=$((errors+1)) + fi + + if [ $cnt -eq 0 ];then + if $write ; then + ewhite "Creating $c" + echo "# $c is not set" >> "$FILE" + fixes=$((fixes+1)) + else + ered "$c is neither enabled nor disabled in the config file" + errors=$((errors+1)) + fi + fi +done + +for c in $CONFIGS_ON;do + if grep "$c=y\|$c=m" "$FILE" >/dev/null;then + egreen "$c is already set" + else + if $write ; then + ewhite "Setting $c" + sed -i "s,# $c is not set,$c=y," "$FILE" + fixes=$((fixes+1)) + else + ered "$c is not set, set it" + errors=$((errors+1)) + fi + fi +done + +for c in $CONFIGS_EQ;do + lhs=$(awk -F= '{ print $1 }' <(echo $c)) + rhs=$(awk -F= '{ print $2 }' <(echo $c)) + if grep "^$c" "$FILE" >/dev/null;then + egreen "$c is already set correctly." + continue + elif grep "^$lhs" "$FILE" >/dev/null;then + cur=$(awk -F= '{ print $2 }' <(grep "$lhs" "$FILE")) + ered "$lhs is set, but to $cur not $rhs." + if $write ; then + egreen "Setting $c correctly" + sed -i 's,^'"$lhs"'.*,# '"$lhs"' was '"$cur"'\n'"$c"',' "$FILE" + fixes=$((fixes+1)) + fi + else + if $write ; then + ewhite "Setting $c" + echo "$c" >> "$FILE" + fixes=$((fixes+1)) + else + ered "$c is not set" + errors=$((errors+1)) + fi + fi +done + +for c in $CONFIGS_OFF;do + if grep "$c=y\|$c=m" "$FILE" >/dev/null;then + if $write ; then + ewhite "Unsetting $c" + sed -i "s,$c=.*,# $c is not set," $FILE + fixes=$((fixes+1)) + else + ered "$c is set, unset it" + errors=$((errors+1)) + fi + else + egreen "$c is already unset" + fi +done + +if [ $errors -eq 0 ];then + egreen "\n\nConfig file checked, found no errors.\n\n" +else + ered "\n\nConfig file checked, found $errors errors that I did not fix.\n\n" +fi + +if [ $fixes -gt 0 ];then + egreen "Made $fixes fixes.\n\n" +fi + +ewhite " " diff --git a/get-initrd.sh b/get-initrd.sh new file mode 100755 index 0000000..b78a7ee --- /dev/null +++ b/get-initrd.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# Copyright (c) Dalton Durst, 2018 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +LINK_BASE="https://github.com/halium/initramfs-tools-halium/releases/download/continuous/initrd.img-touch-" + +ANROID_ARCH=$1 +TARGET=$2 + +# Decide architecture by target name +case $ANROID_ARCH in + "arm") ARCH="armhf";; + "arm64") ARCH="arm64";; + "x86") ARCH="i386";; +esac + +LINK_FULL="$LINK_BASE$ARCH" + +echo "Downloading $LINK_FULL" +curl --location $LINK_FULL --output "$TARGET" --silent \ No newline at end of file