├── README.md ├── docker-buildenv └── Dockerfile └── kernel └── check-config /README.md: -------------------------------------------------------------------------------- 1 | # A set of scripts useful when adapting an Android source tree to work for Ubuntu phones. 2 | 3 | Short description of the contents 4 | 5 | + docker-buildenv: Docker setup of a build environment for Ubuntu phone Android trees. 6 | + kernel: Script that sets the required values for kernel config options in a given config file 7 | + build: scripts to create a device tarball from Android build images, and a script to replace the 8 | Android system.img on a phone without reflashing it entirely 9 | -------------------------------------------------------------------------------- /docker-buildenv/Dockerfile: -------------------------------------------------------------------------------- 1 | # Set up an Ubuntu based environment suitable for building the Ubuntu Touch Android tree in 2 | # If you have squid-deb-proxy installed on your host, it will get used in the container 3 | # Build it and run it with your home dir bindmounted then run the build from your tree 4 | # docker build --rm -t yourimagename . 5 | # docker run -it -v /home/yourname/any/path:/home/developer yourimagename 6 | 7 | FROM ubuntu:13.10 8 | 9 | MAINTAINER Jani Monoses 10 | 11 | RUN /sbin/ip route | awk '/default/ { print "Acquire::http::Proxy \"http://"$3":8000\";" }' > /etc/apt/apt.conf.d/30proxy 12 | 13 | # Allow installing i386 debs required by some of the AOSP prebuilt tools 14 | 15 | RUN dpkg --add-architecture i386 16 | 17 | RUN apt-get update 18 | 19 | RUN DEBIAN_FRONTEND='noninteractive' apt-get install -y cpp-4.8 ccache gcc-4.8 g++-4.8 git gnupg flex bison gperf build-essential \ 20 | zip bzr curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ 21 | libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ 22 | libgl1-mesa-dev g++-multilib mingw32 ubuntu-dev-tools tofrodos \ 23 | python-markdown libxml2-utils xsltproc zlib1g-dev:i386 schedtool bsdiff bash-completion vim 24 | 25 | # Add default user 26 | RUN adduser --disabled-password --quiet --gecos Developer developer 27 | 28 | USER developer 29 | ENV HOME /home/developer 30 | WORKDIR /home/developer 31 | 32 | CMD ["/bin/bash"] 33 | -------------------------------------------------------------------------------- /kernel/check-config: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | FILE=$1 4 | 5 | [ -f "$FILE" ] || { 6 | echo "Provide a config file as argument" 7 | exit 8 | } 9 | 10 | write=false 11 | 12 | if [ "$2" = "-w" ]; then 13 | write=true 14 | fi 15 | 16 | CONFIGS_ON=" 17 | CONFIG_IKCONFIG 18 | CONFIG_IKCONFIG_PROC 19 | CONFIG_SYSVIPC 20 | CONFIG_CGROUPS 21 | CONFIG_CGROUP_FREEZER 22 | CONFIG_NAMESPACES 23 | CONFIG_UTS_NS 24 | CONFIG_IPC_NS 25 | CONFIG_USER_NS 26 | CONFIG_PID_NS 27 | CONFIG_NET_NS 28 | CONFIG_AUDIT 29 | CONFIG_AUDITSYSCALL 30 | CONFIG_AUDIT_TREE 31 | CONFIG_AUDIT_WATCH 32 | CONFIG_CC_STACKPROTECTOR 33 | CONFIG_DEBUG_RODATA 34 | CONFIG_DEVTMPFS 35 | CONFIG_DEVTMPFS_MOUNT 36 | CONFIG_DEVPTS_MULTIPLE_INSTANCES 37 | CONFIG_ECRYPT_FS 38 | CONFIG_ECRYPT_FS_MESSAGING 39 | CONFIG_ENCRYPTED_KEYS 40 | CONFIG_EXT4_FS_POSIX_ACL 41 | CONFIG_EXT4_FS_SECURITY 42 | CONFIG_FSNOTIFY 43 | CONFIG_DNOTIFY 44 | CONFIG_INOTIFY_USER 45 | CONFIG_FANOTIFY 46 | CONFIG_FANOTIFY_ACCESS_PERMISSIONS 47 | CONFIG_KEYS 48 | CONFIG_SWAP 49 | CONFIG_VT 50 | CONFIG_VT_CONSOLE 51 | CONFIG_SECCOMP 52 | CONFIG_SECURITY 53 | CONFIG_SECURITYFS 54 | CONFIG_SECURITY_NETWORK 55 | CONFIG_NETLABEL 56 | CONFIG_SECURITY_PATH 57 | CONFIG_SECURITY_SELINUX 58 | CONFIG_SECURITY_SELINUX_BOOTPARAM 59 | CONFIG_SECURITY_SELINUX_DISABLE 60 | CONFIG_SECURITY_SELINUX_DEVELOP 61 | CONFIG_SECURITY_SELINUX_AVC_STATS 62 | CONFIG_SECURITY_SMACK 63 | CONFIG_SECURITY_TOMOYO 64 | CONFIG_DEFAULT_SECURITY_APPARMOR 65 | CONFIG_SECURITY_APPARMOR 66 | CONFIG_SECURITY_APPARMOR_HASH 67 | CONFIG_SECURITY_APPARMOR_UNCONFINED_INIT 68 | CONFIG_SECURITY_YAMA 69 | CONFIG_SECURITY_YAMA_STACKED 70 | CONFIG_STRICT_DEVMEM 71 | CONFIG_SYN_COOKIES 72 | CONFIG_BT 73 | CONFIG_BT_RFCOMM 74 | CONFIG_BT_RFCOMM_TTY 75 | CONFIG_BT_BNEP 76 | CONFIG_BT_BNEP_MC_FILTER 77 | CONFIG_BT_BNEP_PROTO_FILTER 78 | CONFIG_BT_HIDP 79 | CONFIG_XFRM_USER 80 | CONFIG_NET_KEY 81 | CONFIG_INET 82 | CONFIG_IP_ADVANCED_ROUTER 83 | CONFIG_IP_MULTIPLE_TABLES 84 | CONFIG_INET_AH 85 | CONFIG_INET_ESP 86 | CONFIG_INET_IPCOMP 87 | CONFIG_INET_XFRM_MODE_TRANSPORT 88 | CONFIG_INET_XFRM_MODE_TUNNEL 89 | CONFIG_INET_XFRM_MODE_BEET 90 | CONFIG_IPV6 91 | CONFIG_INET6_AH 92 | CONFIG_INET6_ESP 93 | CONFIG_INET6_IPCOMP 94 | CONFIG_INET6_XFRM_MODE_TRANSPORT 95 | CONFIG_INET6_XFRM_MODE_TUNNEL 96 | CONFIG_INET6_XFRM_MODE_BEET 97 | CONFIG_IPV6_MULTIPLE_TABLES 98 | CONFIG_NETFILTER 99 | CONFIG_NETFILTER_ADVANCED 100 | CONFIG_NETFILTER_NETLINK 101 | CONFIG_NETFILTER_NETLINK_ACCT 102 | CONFIG_NETFILTER_NETLINK_LOG 103 | CONFIG_NETFILTER_NETLINK_QUEUE 104 | CONFIG_NETFILTER_TPROXY 105 | CONFIG_NETFILTER_XTABLES 106 | CONFIG_NETFILTER_XT_CONNMARK 107 | CONFIG_NETFILTER_XT_MARK 108 | CONFIG_NETFILTER_XT_MATCH_ADDRTYPE 109 | CONFIG_NETFILTER_XT_MATCH_CLUSTER 110 | CONFIG_NETFILTER_XT_MATCH_COMMENT 111 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES 112 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT 113 | CONFIG_NETFILTER_XT_MATCH_CONNMARK 114 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK 115 | CONFIG_NETFILTER_XT_MATCH_CPU 116 | CONFIG_NETFILTER_XT_MATCH_DCCP 117 | CONFIG_NETFILTER_XT_MATCH_DEVGROUP 118 | CONFIG_NETFILTER_XT_MATCH_DSCP 119 | CONFIG_NETFILTER_XT_MATCH_ECN 120 | CONFIG_NETFILTER_XT_MATCH_ESP 121 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT 122 | CONFIG_NETFILTER_XT_MATCH_HELPER 123 | CONFIG_NETFILTER_XT_MATCH_HL 124 | CONFIG_NETFILTER_XT_MATCH_IPRANGE 125 | CONFIG_NETFILTER_XT_MATCH_LENGTH 126 | CONFIG_NETFILTER_XT_MATCH_LIMIT 127 | CONFIG_NETFILTER_XT_MATCH_MAC 128 | CONFIG_NETFILTER_XT_MATCH_MARK 129 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT 130 | CONFIG_NETFILTER_XT_MATCH_NFACCT 131 | CONFIG_NETFILTER_XT_MATCH_OSF 132 | CONFIG_NETFILTER_XT_MATCH_OWNER 133 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE 134 | CONFIG_NETFILTER_XT_MATCH_POLICY 135 | CONFIG_NETFILTER_XT_MATCH_QUOTA 136 | CONFIG_NETFILTER_XT_MATCH_QUOTA2 137 | CONFIG_NETFILTER_XT_MATCH_RATEEST 138 | CONFIG_NETFILTER_XT_MATCH_REALM 139 | CONFIG_NETFILTER_XT_MATCH_RECENT 140 | CONFIG_NETFILTER_XT_MATCH_SCTP 141 | CONFIG_NETFILTER_XT_MATCH_SOCKET 142 | CONFIG_NETFILTER_XT_MATCH_STATE 143 | CONFIG_NETFILTER_XT_MATCH_STATISTIC 144 | CONFIG_NETFILTER_XT_MATCH_STRING 145 | CONFIG_NETFILTER_XT_MATCH_TCPMSS 146 | CONFIG_NETFILTER_XT_MATCH_TIME 147 | CONFIG_NETFILTER_XT_MATCH_U32 148 | CONFIG_NETFILTER_XT_TARGET_AUDIT 149 | CONFIG_NETFILTER_XT_TARGET_CHECKSUM 150 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY 151 | CONFIG_NETFILTER_XT_TARGET_CONNMARK 152 | CONFIG_NETFILTER_XT_TARGET_CONNSECMARK 153 | CONFIG_NETFILTER_XT_TARGET_CT 154 | CONFIG_NETFILTER_XT_TARGET_DSCP 155 | CONFIG_NETFILTER_XT_TARGET_HL 156 | CONFIG_NETFILTER_XT_TARGET_IDLETIMER 157 | CONFIG_NETFILTER_XT_TARGET_LED 158 | CONFIG_NETFILTER_XT_TARGET_LOG 159 | CONFIG_NETFILTER_XT_TARGET_MARK 160 | CONFIG_NETFILTER_XT_TARGET_NFLOG 161 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE 162 | CONFIG_NETFILTER_XT_TARGET_NOTRACK 163 | CONFIG_NETFILTER_XT_TARGET_RATEEST 164 | CONFIG_NETFILTER_XT_TARGET_SECMARK 165 | CONFIG_NETFILTER_XT_TARGET_TCPMSS 166 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP 167 | CONFIG_NETFILTER_XT_TARGET_TEE 168 | CONFIG_NETFILTER_XT_TARGET_TPROXY 169 | CONFIG_NETFILTER_XT_TARGET_TRACE 170 | CONFIG_NF_CONNTRACK_ZONES 171 | CONFIG_IP6_NF_FILTER 172 | CONFIG_IP6_NF_IPTABLES 173 | CONFIG_IP6_NF_MANGLE 174 | CONFIG_IP6_NF_MATCH_AH 175 | CONFIG_IP6_NF_MATCH_EUI64 176 | CONFIG_IP6_NF_MATCH_FRAG 177 | CONFIG_IP6_NF_MATCH_HL 178 | CONFIG_IP6_NF_MATCH_IPV6HEADER 179 | CONFIG_IP6_NF_MATCH_MH 180 | CONFIG_IP6_NF_MATCH_OPTS 181 | CONFIG_IP6_NF_MATCH_RPFILTER 182 | CONFIG_IP6_NF_MATCH_RT 183 | CONFIG_IP6_NF_QUEUE 184 | CONFIG_IP6_NF_RAW 185 | CONFIG_IP6_NF_SECURITY 186 | CONFIG_IP6_NF_TARGET_HL 187 | CONFIG_IP6_NF_TARGET_REJECT 188 | CONFIG_IP6_NF_TARGET_REJECT_SKERR 189 | CONFIG_DNS_RESOLVER 190 | CONFIG_IOSCHED_DEADLINE 191 | CONFIG_SUSPEND_TIME 192 | CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS 193 | CONFIG_CONSOLE_TRANSLATIONS 194 | CONFIG_EVM 195 | CONFIG_INTEGRITY_SIGNATURE 196 | CONFIG_FHANDLE 197 | CONFIG_EPOLL 198 | CONFIG_SIGNALFD 199 | CONFIG_TIMERFD 200 | CONFIG_TMPFS_POSIX_ACL 201 | " 202 | 203 | CONFIGS_OFF=" 204 | CONFIG_ANDROID_PARANOID_NETWORK 205 | CONFIG_DEFAULT_SECURITY_DAC 206 | CONFIG_DEFAULT_SECURITY_SELINUX 207 | CONFIG_DEFAULT_SECURITY_TOMOYO 208 | CONFIG_DEFAULT_SECURITY_YAMA 209 | CONFIG_DEFAULT_SECURITY_SMACK 210 | CONFIG_SECURITY_APPARMOR_STATS 211 | CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX 212 | CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER 213 | CONFIG_BT_HCIBTUSB 214 | CONFIG_BT_HCIBTSDIO 215 | CONFIG_BT_HCIUART 216 | CONFIG_BT_HCIBCM203X 217 | CONFIG_BT_HCIBPA10X 218 | CONFIG_BT_HCIBFUSB 219 | CONFIG_BT_HCIVHCI 220 | CONFIG_BT_MRVL 221 | CONFIG_AF_RXRPC 222 | CONFIG_KEYS_DEBUG_PROC_KEYS 223 | CONFIG_XFRM_MIGRATE 224 | CONFIG_XFRM_STATISTICS 225 | CONFIG_XFRM_SUB_POLICY 226 | CONFIG_COMPAT_BRK 227 | CONFIG_DEVKMEM 228 | CONFIG_NETFILTER_DEBUG 229 | CONFIG_IP_SET 230 | CONFIG_IP_VS 231 | CONFIG_RT_GROUP_SCHED 232 | CONFIG_ARM_UNWIND 233 | CONFIG_VT_HW_CONSOLE_BINDING 234 | CONFIG_FRAMEBUFFER_CONSOLE 235 | CONFIG_SPEAKUP 236 | CONFIG_CIFS_UPCALL 237 | CONFIG_CIFS_DFS_UPCALL 238 | CONFIG_KGDB 239 | " 240 | CONFIGS_EQ=" 241 | CONFIG_DEFAULT_SECURITY=\"apparmor\" 242 | CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 243 | CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0 244 | CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 245 | CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048 246 | CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024 247 | CONFIG_SECURITY_TOMOYO_POLICY_LOADER=\"/sbin/tomoyo-init\" 248 | CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER=\"/sbin/init\" 249 | CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 250 | CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 251 | CONFIG_DEFAULT_IOSCHED=\"deadline\" 252 | CONFIG_EVM_HMAC_VERSION=2 253 | " 254 | 255 | ered() { 256 | echo -e "\033[31m" $@ 257 | } 258 | 259 | egreen() { 260 | echo -e "\033[32m" $@ 261 | } 262 | 263 | ewhite() { 264 | echo -e "\033[37m" $@ 265 | } 266 | 267 | echo -e "\n\nChecking config file for Ubuntu Touch specific config options.\n\n" 268 | 269 | errors=0 270 | fixes=0 271 | 272 | for c in $CONFIGS_ON $CONFIGS_OFF;do 273 | cnt=`grep -w -c $c $FILE` 274 | if [ $cnt -gt 1 ];then 275 | ered "$c appears more than once in the config file, fix this" 276 | errors=$((errors+1)) 277 | fi 278 | 279 | if [ $cnt -eq 0 ];then 280 | if $write ; then 281 | ewhite "Creating $c" 282 | echo "# $c is not set" >> "$FILE" 283 | fixes=$((fixes+1)) 284 | else 285 | ered "$c is neither enabled nor disabled in the config file" 286 | errors=$((errors+1)) 287 | fi 288 | fi 289 | done 290 | 291 | for c in $CONFIGS_ON;do 292 | if grep "$c=y\|$c=m" "$FILE" >/dev/null;then 293 | egreen "$c is already set" 294 | else 295 | if $write ; then 296 | ewhite "Setting $c" 297 | sed -i "s,# $c is not set,$c=y," "$FILE" 298 | fixes=$((fixes+1)) 299 | else 300 | ered "$c is not set, set it" 301 | errors=$((errors+1)) 302 | fi 303 | fi 304 | done 305 | 306 | for c in $CONFIGS_EQ;do 307 | lhs=$(awk -F= '{ print $1 }' <(echo $c)) 308 | rhs=$(awk -F= '{ print $2 }' <(echo $c)) 309 | if grep "^$c" "$FILE" >/dev/null;then 310 | egreen "$c is already set correctly." 311 | continue 312 | elif grep "^$lhs" "$FILE" >/dev/null;then 313 | cur=$(awk -F= '{ print $2 }' <(grep "$lhs" "$FILE")) 314 | ered "$lhs is set, but to $cur not $rhs." 315 | if $write ; then 316 | egreen "Setting $c correctly" 317 | sed -i 's,^'"$lhs"'.*,# '"$lhs"' was '"$cur"'\n'"$c"',' "$FILE" 318 | fixes=$((fixes+1)) 319 | fi 320 | else 321 | if $write ; then 322 | ewhite "Setting $c" 323 | echo "$c" >> "$FILE" 324 | fixes=$((fixes+1)) 325 | else 326 | ered "$c is not set" 327 | errors=$((errors+1)) 328 | fi 329 | fi 330 | done 331 | 332 | for c in $CONFIGS_OFF;do 333 | if grep "$c=y\|$c=m" "$FILE" >/dev/null;then 334 | if $write ; then 335 | ewhite "Unsetting $c" 336 | sed -i "s,$c=.*,# $c is not set," $FILE 337 | fixes=$((fixes+1)) 338 | else 339 | ered "$c is set, unset it" 340 | errors=$((errors+1)) 341 | fi 342 | else 343 | egreen "$c is already unset" 344 | fi 345 | done 346 | 347 | if [ $errors -eq 0 ];then 348 | egreen "\n\nConfig file checked, found no errors.\n\n" 349 | else 350 | ered "\n\nConfig file checked, found $errors errors that I did not fix.\n\n" 351 | fi 352 | 353 | if [ $fixes -gt 0 ];then 354 | egreen "Made $fixes fixes.\n\n" 355 | fi 356 | 357 | ewhite " " 358 | --------------------------------------------------------------------------------