├── .gitignore ├── README.md ├── busybox_config └── config ├── fs ├── alpine-chroot-install ├── etc │ ├── conf.d │ │ └── qemu-guest-agent │ ├── group │ ├── init.d │ │ └── rcS │ ├── inittab │ ├── issue │ ├── passwd │ ├── resolv.conf │ └── securetty ├── init └── usr │ └── share │ └── udhcpc │ └── default.script ├── kconfig ├── aarch64.config └── x86_64.config └── puipui-linux-tool /.gitignore: -------------------------------------------------------------------------------- 1 | build-* 2 | *.tar.xz 3 | linux-* 4 | busybox-* 5 | dropbear-* 6 | socat-* 7 | *-linux-musl-* 8 | *.tgz 9 | *.tar.gz 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PUI PUI Linux 2 | 3 | ![puipui](https://user-images.githubusercontent.com/6500104/194863884-2b3fb507-e3ad-413c-93f1-b4249068f218.png) 4 | 5 | 6 | This is the minimum linux for testing the apple virtualization framework (https://github.com/Code-Hex/vz). So I assumed to support architectures are only x86\_64 and aarch64 (arm64). 7 | 8 | 9 | This vmlinux is actually very very small other than linux distributions. 10 | 11 | Since file size is very small in totally, I can do testing on the any CI with download them. 12 | 13 | ## Kernel 14 | 15 | What's supported: 16 | 17 | - Internet 18 | - VIRTIO (Virt device I/O) 19 | - virtio blk device 20 | - virtio console (via hvc drivers. e.g. `console=hvc0`) 21 | - virtio filesystem (virtfs) 22 | - af\_vsock 23 | 24 | ## Initramfs 25 | 26 | Our initramfs has a very simple init system controlled by `fs/init` script on this repository root. this script will do: 27 | 28 | - Mount any file systems (proc, sysfs and devfs). 29 | - Setup console which is an user specified by a console kernel parameter. 30 | - Find devices and add them to `/etc/inittab` and `/etc/securetty`. 31 | 32 | You can use it with other linux distributions. 33 | 34 | ## Usage 35 | 36 | ### Build all 37 | 38 | ``` 39 | $ ./puipui-linux-tool 40 | ``` 41 | 42 | ### Update Kernel config 43 | 44 | ``` 45 | $ ./puipui-linux-tool -u 46 | ``` 47 | 48 | ## Hack 49 | 50 | This tool is used musl cross compiler. On arm64 environment the tool will be downloaded those pre build toolchains from https://github.com/Code-Hex/musl-cross-make-arm64 51 | -------------------------------------------------------------------------------- /busybox_config/config: -------------------------------------------------------------------------------- 1 | # 2 | # Automatically generated make config: don't edit 3 | # Busybox version: 1.36.1 4 | # Tue Oct 29 00:09:56 2024 5 | # 6 | CONFIG_HAVE_DOT_CONFIG=y 7 | 8 | # 9 | # Settings 10 | # 11 | CONFIG_DESKTOP=y 12 | # CONFIG_EXTRA_COMPAT is not set 13 | # CONFIG_FEDORA_COMPAT is not set 14 | CONFIG_INCLUDE_SUSv2=y 15 | CONFIG_LONG_OPTS=y 16 | CONFIG_SHOW_USAGE=y 17 | CONFIG_FEATURE_VERBOSE_USAGE=y 18 | CONFIG_FEATURE_COMPRESS_USAGE=y 19 | CONFIG_LFS=y 20 | # CONFIG_PAM is not set 21 | CONFIG_FEATURE_DEVPTS=y 22 | CONFIG_FEATURE_UTMP=y 23 | CONFIG_FEATURE_WTMP=y 24 | CONFIG_FEATURE_PIDFILE=y 25 | CONFIG_PID_FILE_PATH="/var/run" 26 | CONFIG_BUSYBOX=y 27 | CONFIG_FEATURE_SHOW_SCRIPT=y 28 | CONFIG_FEATURE_INSTALLER=y 29 | # CONFIG_INSTALL_NO_USR is not set 30 | CONFIG_FEATURE_SUID=y 31 | CONFIG_FEATURE_SUID_CONFIG=y 32 | CONFIG_FEATURE_SUID_CONFIG_QUIET=y 33 | # CONFIG_FEATURE_PREFER_APPLETS is not set 34 | CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" 35 | # CONFIG_SELINUX is not set 36 | # CONFIG_FEATURE_CLEAN_UP is not set 37 | CONFIG_FEATURE_SYSLOG_INFO=y 38 | CONFIG_FEATURE_SYSLOG=y 39 | 40 | # 41 | # Build Options 42 | # 43 | # CONFIG_STATIC is not set 44 | # CONFIG_PIE is not set 45 | # CONFIG_NOMMU is not set 46 | # CONFIG_BUILD_LIBBUSYBOX is not set 47 | # CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set 48 | # CONFIG_FEATURE_INDIVIDUAL is not set 49 | # CONFIG_FEATURE_SHARED_BUSYBOX is not set 50 | CONFIG_CROSS_COMPILER_PREFIX="" 51 | CONFIG_SYSROOT="" 52 | CONFIG_EXTRA_CFLAGS="" 53 | CONFIG_EXTRA_LDFLAGS="" 54 | CONFIG_EXTRA_LDLIBS="" 55 | # CONFIG_USE_PORTABLE_CODE is not set 56 | CONFIG_STACK_OPTIMIZATION_386=y 57 | CONFIG_STATIC_LIBGCC=y 58 | 59 | # 60 | # Installation Options ("make install" behavior) 61 | # 62 | CONFIG_INSTALL_APPLET_SYMLINKS=y 63 | # CONFIG_INSTALL_APPLET_HARDLINKS is not set 64 | # CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set 65 | # CONFIG_INSTALL_APPLET_DONT is not set 66 | # CONFIG_INSTALL_SH_APPLET_SYMLINK is not set 67 | # CONFIG_INSTALL_SH_APPLET_HARDLINK is not set 68 | # CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set 69 | CONFIG_PREFIX="./_install" 70 | 71 | # 72 | # Debugging Options 73 | # 74 | # CONFIG_DEBUG is not set 75 | # CONFIG_DEBUG_PESSIMIZE is not set 76 | # CONFIG_DEBUG_SANITIZE is not set 77 | # CONFIG_UNIT_TEST is not set 78 | # CONFIG_WERROR is not set 79 | # CONFIG_WARN_SIMPLE_MSG is not set 80 | CONFIG_NO_DEBUG_LIB=y 81 | # CONFIG_DMALLOC is not set 82 | # CONFIG_EFENCE is not set 83 | 84 | # 85 | # Library Tuning 86 | # 87 | # CONFIG_FEATURE_USE_BSS_TAIL is not set 88 | CONFIG_FLOAT_DURATION=y 89 | CONFIG_FEATURE_RTMINMAX=y 90 | CONFIG_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS=y 91 | CONFIG_FEATURE_BUFFERS_USE_MALLOC=y 92 | # CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set 93 | # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set 94 | CONFIG_PASSWORD_MINLEN=6 95 | CONFIG_MD5_SMALL=1 96 | CONFIG_SHA1_SMALL=3 97 | CONFIG_SHA1_HWACCEL=y 98 | CONFIG_SHA256_HWACCEL=y 99 | CONFIG_SHA3_SMALL=1 100 | CONFIG_FEATURE_NON_POSIX_CP=y 101 | # CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set 102 | CONFIG_FEATURE_USE_SENDFILE=y 103 | CONFIG_FEATURE_COPYBUF_KB=4 104 | CONFIG_MONOTONIC_SYSCALL=y 105 | CONFIG_IOCTL_HEX2STR_ERROR=y 106 | CONFIG_FEATURE_EDITING=y 107 | CONFIG_FEATURE_EDITING_MAX_LEN=1024 108 | # CONFIG_FEATURE_EDITING_VI is not set 109 | CONFIG_FEATURE_EDITING_HISTORY=255 110 | CONFIG_FEATURE_EDITING_SAVEHISTORY=y 111 | # CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set 112 | CONFIG_FEATURE_REVERSE_SEARCH=y 113 | CONFIG_FEATURE_TAB_COMPLETION=y 114 | CONFIG_FEATURE_USERNAME_COMPLETION=y 115 | CONFIG_FEATURE_EDITING_FANCY_PROMPT=y 116 | CONFIG_FEATURE_EDITING_WINCH=y 117 | # CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set 118 | # CONFIG_LOCALE_SUPPORT is not set 119 | CONFIG_UNICODE_SUPPORT=y 120 | # CONFIG_UNICODE_USING_LOCALE is not set 121 | # CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set 122 | CONFIG_SUBST_WCHAR=63 123 | CONFIG_LAST_SUPPORTED_WCHAR=767 124 | # CONFIG_UNICODE_COMBINING_WCHARS is not set 125 | # CONFIG_UNICODE_WIDE_WCHARS is not set 126 | # CONFIG_UNICODE_BIDI_SUPPORT is not set 127 | # CONFIG_UNICODE_NEUTRAL_TABLE is not set 128 | # CONFIG_UNICODE_PRESERVE_BROKEN is not set 129 | # CONFIG_LOOP_CONFIGURE is not set 130 | # CONFIG_NO_LOOP_CONFIGURE is not set 131 | CONFIG_TRY_LOOP_CONFIGURE=y 132 | 133 | # 134 | # Applets 135 | # 136 | 137 | # 138 | # Archival Utilities 139 | # 140 | CONFIG_FEATURE_SEAMLESS_XZ=y 141 | CONFIG_FEATURE_SEAMLESS_LZMA=y 142 | CONFIG_FEATURE_SEAMLESS_BZ2=y 143 | CONFIG_FEATURE_SEAMLESS_GZ=y 144 | # CONFIG_FEATURE_SEAMLESS_Z is not set 145 | # CONFIG_AR is not set 146 | # CONFIG_FEATURE_AR_LONG_FILENAMES is not set 147 | # CONFIG_FEATURE_AR_CREATE is not set 148 | # CONFIG_UNCOMPRESS is not set 149 | CONFIG_GUNZIP=y 150 | CONFIG_ZCAT=y 151 | # CONFIG_FEATURE_GUNZIP_LONG_OPTIONS is not set 152 | CONFIG_BUNZIP2=y 153 | CONFIG_BZCAT=y 154 | CONFIG_UNLZMA=y 155 | CONFIG_LZCAT=y 156 | CONFIG_LZMA=y 157 | CONFIG_UNXZ=y 158 | CONFIG_XZCAT=y 159 | CONFIG_XZ=y 160 | CONFIG_BZIP2=y 161 | CONFIG_BZIP2_SMALL=8 162 | CONFIG_FEATURE_BZIP2_DECOMPRESS=y 163 | # CONFIG_CPIO is not set 164 | # CONFIG_FEATURE_CPIO_O is not set 165 | # CONFIG_FEATURE_CPIO_P is not set 166 | # CONFIG_FEATURE_CPIO_IGNORE_DEVNO is not set 167 | # CONFIG_FEATURE_CPIO_RENUMBER_INODES is not set 168 | # CONFIG_DPKG is not set 169 | # CONFIG_DPKG_DEB is not set 170 | CONFIG_GZIP=y 171 | CONFIG_FEATURE_GZIP_LONG_OPTIONS=y 172 | CONFIG_GZIP_FAST=0 173 | # CONFIG_FEATURE_GZIP_LEVELS is not set 174 | CONFIG_FEATURE_GZIP_DECOMPRESS=y 175 | CONFIG_LZOP=y 176 | # CONFIG_UNLZOP is not set 177 | # CONFIG_LZOPCAT is not set 178 | # CONFIG_LZOP_COMPR_HIGH is not set 179 | CONFIG_RPM=y 180 | CONFIG_RPM2CPIO=y 181 | CONFIG_TAR=y 182 | CONFIG_FEATURE_TAR_LONG_OPTIONS=y 183 | CONFIG_FEATURE_TAR_CREATE=y 184 | CONFIG_FEATURE_TAR_AUTODETECT=y 185 | CONFIG_FEATURE_TAR_FROM=y 186 | CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y 187 | CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y 188 | CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y 189 | CONFIG_FEATURE_TAR_TO_COMMAND=y 190 | CONFIG_FEATURE_TAR_UNAME_GNAME=y 191 | CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y 192 | # CONFIG_FEATURE_TAR_SELINUX is not set 193 | CONFIG_UNZIP=y 194 | CONFIG_FEATURE_UNZIP_CDF=y 195 | CONFIG_FEATURE_UNZIP_BZIP2=y 196 | CONFIG_FEATURE_UNZIP_LZMA=y 197 | CONFIG_FEATURE_UNZIP_XZ=y 198 | # CONFIG_FEATURE_LZMA_FAST is not set 199 | 200 | # 201 | # Coreutils 202 | # 203 | CONFIG_FEATURE_VERBOSE=y 204 | 205 | # 206 | # Common options for date and touch 207 | # 208 | CONFIG_FEATURE_TIMEZONE=y 209 | 210 | # 211 | # Common options for cp and mv 212 | # 213 | CONFIG_FEATURE_PRESERVE_HARDLINKS=y 214 | 215 | # 216 | # Common options for df, du, ls 217 | # 218 | CONFIG_FEATURE_HUMAN_READABLE=y 219 | CONFIG_BASENAME=y 220 | CONFIG_CAT=y 221 | CONFIG_FEATURE_CATN=y 222 | CONFIG_FEATURE_CATV=y 223 | CONFIG_CHGRP=y 224 | CONFIG_CHMOD=y 225 | CONFIG_CHOWN=y 226 | CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y 227 | CONFIG_CHROOT=y 228 | # CONFIG_CKSUM is not set 229 | # CONFIG_CRC32 is not set 230 | CONFIG_COMM=y 231 | CONFIG_CP=y 232 | CONFIG_FEATURE_CP_LONG_OPTIONS=y 233 | CONFIG_FEATURE_CP_REFLINK=y 234 | CONFIG_CUT=y 235 | CONFIG_FEATURE_CUT_REGEX=y 236 | CONFIG_DATE=y 237 | CONFIG_FEATURE_DATE_ISOFMT=y 238 | # CONFIG_FEATURE_DATE_NANO is not set 239 | CONFIG_FEATURE_DATE_COMPAT=y 240 | CONFIG_DD=y 241 | CONFIG_FEATURE_DD_SIGNAL_HANDLING=y 242 | CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y 243 | CONFIG_FEATURE_DD_IBS_OBS=y 244 | CONFIG_FEATURE_DD_STATUS=y 245 | CONFIG_DF=y 246 | CONFIG_FEATURE_DF_FANCY=y 247 | CONFIG_FEATURE_SKIP_ROOTFS=y 248 | CONFIG_DIRNAME=y 249 | CONFIG_DOS2UNIX=y 250 | # CONFIG_UNIX2DOS is not set 251 | CONFIG_DU=y 252 | CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y 253 | CONFIG_ECHO=y 254 | CONFIG_FEATURE_FANCY_ECHO=y 255 | CONFIG_ENV=y 256 | CONFIG_EXPAND=y 257 | CONFIG_UNEXPAND=y 258 | CONFIG_EXPR=y 259 | CONFIG_EXPR_MATH_SUPPORT_64=y 260 | CONFIG_FACTOR=y 261 | CONFIG_FALSE=y 262 | CONFIG_FOLD=y 263 | CONFIG_HEAD=y 264 | CONFIG_FEATURE_FANCY_HEAD=y 265 | CONFIG_HOSTID=y 266 | CONFIG_ID=y 267 | CONFIG_GROUPS=y 268 | CONFIG_INSTALL=y 269 | CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y 270 | CONFIG_LINK=y 271 | CONFIG_LN=y 272 | CONFIG_LOGNAME=y 273 | CONFIG_LS=y 274 | CONFIG_FEATURE_LS_FILETYPES=y 275 | CONFIG_FEATURE_LS_FOLLOWLINKS=y 276 | CONFIG_FEATURE_LS_RECURSIVE=y 277 | CONFIG_FEATURE_LS_WIDTH=y 278 | CONFIG_FEATURE_LS_SORTFILES=y 279 | CONFIG_FEATURE_LS_TIMESTAMPS=y 280 | CONFIG_FEATURE_LS_USERNAME=y 281 | CONFIG_FEATURE_LS_COLOR=y 282 | CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y 283 | CONFIG_MD5SUM=y 284 | CONFIG_SHA1SUM=y 285 | CONFIG_SHA256SUM=y 286 | CONFIG_SHA512SUM=y 287 | CONFIG_SHA3SUM=y 288 | 289 | # 290 | # Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum 291 | # 292 | CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y 293 | CONFIG_MKDIR=y 294 | CONFIG_MKFIFO=y 295 | CONFIG_MKNOD=y 296 | CONFIG_MKTEMP=y 297 | CONFIG_MV=y 298 | CONFIG_NICE=y 299 | CONFIG_NL=y 300 | CONFIG_NOHUP=y 301 | CONFIG_NPROC=y 302 | CONFIG_OD=y 303 | CONFIG_PASTE=y 304 | CONFIG_PRINTENV=y 305 | CONFIG_PRINTF=y 306 | CONFIG_PWD=y 307 | CONFIG_READLINK=y 308 | CONFIG_FEATURE_READLINK_FOLLOW=y 309 | CONFIG_REALPATH=y 310 | CONFIG_RM=y 311 | CONFIG_RMDIR=y 312 | CONFIG_SEQ=y 313 | CONFIG_SHRED=y 314 | CONFIG_SHUF=y 315 | CONFIG_SLEEP=y 316 | CONFIG_FEATURE_FANCY_SLEEP=y 317 | CONFIG_SORT=y 318 | CONFIG_FEATURE_SORT_BIG=y 319 | # CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set 320 | CONFIG_SPLIT=y 321 | CONFIG_FEATURE_SPLIT_FANCY=y 322 | CONFIG_STAT=y 323 | CONFIG_FEATURE_STAT_FORMAT=y 324 | CONFIG_FEATURE_STAT_FILESYSTEM=y 325 | CONFIG_STTY=y 326 | CONFIG_SUM=y 327 | CONFIG_SYNC=y 328 | CONFIG_FEATURE_SYNC_FANCY=y 329 | CONFIG_FSYNC=y 330 | CONFIG_TAC=y 331 | CONFIG_TAIL=y 332 | CONFIG_FEATURE_FANCY_TAIL=y 333 | CONFIG_TEE=y 334 | CONFIG_FEATURE_TEE_USE_BLOCK_IO=y 335 | CONFIG_TEST=y 336 | CONFIG_TEST1=y 337 | CONFIG_TEST2=y 338 | CONFIG_FEATURE_TEST_64=y 339 | CONFIG_TIMEOUT=y 340 | CONFIG_TOUCH=y 341 | CONFIG_FEATURE_TOUCH_SUSV3=y 342 | CONFIG_TR=y 343 | CONFIG_FEATURE_TR_CLASSES=y 344 | CONFIG_FEATURE_TR_EQUIV=y 345 | CONFIG_TRUE=y 346 | CONFIG_TRUNCATE=y 347 | CONFIG_TSORT=y 348 | # CONFIG_TTY is not set 349 | CONFIG_UNAME=y 350 | CONFIG_UNAME_OSNAME="GNU/Linux" 351 | CONFIG_BB_ARCH=y 352 | CONFIG_UNIQ=y 353 | CONFIG_UNLINK=y 354 | CONFIG_USLEEP=y 355 | CONFIG_UUDECODE=y 356 | # CONFIG_BASE32 is not set 357 | CONFIG_BASE64=y 358 | CONFIG_UUENCODE=y 359 | CONFIG_WC=y 360 | CONFIG_FEATURE_WC_LARGE=y 361 | CONFIG_WHO=y 362 | CONFIG_W=y 363 | CONFIG_USERS=y 364 | CONFIG_WHOAMI=y 365 | CONFIG_YES=y 366 | 367 | # 368 | # Console Utilities 369 | # 370 | # CONFIG_CHVT is not set 371 | CONFIG_CLEAR=y 372 | # CONFIG_DEALLOCVT is not set 373 | # CONFIG_DUMPKMAP is not set 374 | # CONFIG_FGCONSOLE is not set 375 | # CONFIG_KBD_MODE is not set 376 | # CONFIG_LOADFONT is not set 377 | # CONFIG_SETFONT is not set 378 | # CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set 379 | CONFIG_DEFAULT_SETFONT_DIR="" 380 | # CONFIG_FEATURE_LOADFONT_PSF2 is not set 381 | # CONFIG_FEATURE_LOADFONT_RAW is not set 382 | # CONFIG_LOADKMAP is not set 383 | # CONFIG_OPENVT is not set 384 | # CONFIG_RESET is not set 385 | # CONFIG_RESIZE is not set 386 | # CONFIG_FEATURE_RESIZE_PRINT is not set 387 | # CONFIG_SETCONSOLE is not set 388 | # CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set 389 | # CONFIG_SETKEYCODES is not set 390 | # CONFIG_SETLOGCONS is not set 391 | # CONFIG_SHOWKEY is not set 392 | 393 | # 394 | # Debian Utilities 395 | # 396 | # CONFIG_PIPE_PROGRESS is not set 397 | # CONFIG_RUN_PARTS is not set 398 | # CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set 399 | # CONFIG_FEATURE_RUN_PARTS_FANCY is not set 400 | # CONFIG_START_STOP_DAEMON is not set 401 | # CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set 402 | # CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set 403 | CONFIG_WHICH=y 404 | 405 | # 406 | # klibc-utils 407 | # 408 | # CONFIG_MINIPS is not set 409 | # CONFIG_NUKE is not set 410 | # CONFIG_RESUME is not set 411 | CONFIG_RUN_INIT=y 412 | 413 | # 414 | # Editors 415 | # 416 | CONFIG_AWK=y 417 | CONFIG_FEATURE_AWK_LIBM=y 418 | CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y 419 | # CONFIG_CMP is not set 420 | # CONFIG_DIFF is not set 421 | # CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set 422 | # CONFIG_FEATURE_DIFF_DIR is not set 423 | # CONFIG_ED is not set 424 | CONFIG_PATCH=y 425 | CONFIG_SED=y 426 | CONFIG_VI=y 427 | CONFIG_FEATURE_VI_MAX_LEN=4096 428 | # CONFIG_FEATURE_VI_8BIT is not set 429 | CONFIG_FEATURE_VI_COLON=y 430 | CONFIG_FEATURE_VI_COLON_EXPAND=y 431 | CONFIG_FEATURE_VI_YANKMARK=y 432 | CONFIG_FEATURE_VI_SEARCH=y 433 | # CONFIG_FEATURE_VI_REGEX_SEARCH is not set 434 | CONFIG_FEATURE_VI_USE_SIGNALS=y 435 | CONFIG_FEATURE_VI_DOT_CMD=y 436 | CONFIG_FEATURE_VI_READONLY=y 437 | CONFIG_FEATURE_VI_SETOPTS=y 438 | CONFIG_FEATURE_VI_SET=y 439 | CONFIG_FEATURE_VI_WIN_RESIZE=y 440 | CONFIG_FEATURE_VI_ASK_TERMINAL=y 441 | CONFIG_FEATURE_VI_UNDO=y 442 | CONFIG_FEATURE_VI_UNDO_QUEUE=y 443 | CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256 444 | # CONFIG_FEATURE_VI_VERBOSE_STATUS is not set 445 | # CONFIG_FEATURE_ALLOW_EXEC is not set 446 | 447 | # 448 | # Finding Utilities 449 | # 450 | # CONFIG_FIND is not set 451 | # CONFIG_FEATURE_FIND_PRINT0 is not set 452 | # CONFIG_FEATURE_FIND_MTIME is not set 453 | # CONFIG_FEATURE_FIND_ATIME is not set 454 | # CONFIG_FEATURE_FIND_CTIME is not set 455 | # CONFIG_FEATURE_FIND_MMIN is not set 456 | # CONFIG_FEATURE_FIND_AMIN is not set 457 | # CONFIG_FEATURE_FIND_CMIN is not set 458 | # CONFIG_FEATURE_FIND_PERM is not set 459 | # CONFIG_FEATURE_FIND_TYPE is not set 460 | # CONFIG_FEATURE_FIND_EXECUTABLE is not set 461 | # CONFIG_FEATURE_FIND_XDEV is not set 462 | # CONFIG_FEATURE_FIND_MAXDEPTH is not set 463 | # CONFIG_FEATURE_FIND_NEWER is not set 464 | # CONFIG_FEATURE_FIND_INUM is not set 465 | # CONFIG_FEATURE_FIND_SAMEFILE is not set 466 | # CONFIG_FEATURE_FIND_EXEC is not set 467 | # CONFIG_FEATURE_FIND_EXEC_PLUS is not set 468 | # CONFIG_FEATURE_FIND_USER is not set 469 | # CONFIG_FEATURE_FIND_GROUP is not set 470 | # CONFIG_FEATURE_FIND_NOT is not set 471 | # CONFIG_FEATURE_FIND_DEPTH is not set 472 | # CONFIG_FEATURE_FIND_PAREN is not set 473 | # CONFIG_FEATURE_FIND_SIZE is not set 474 | # CONFIG_FEATURE_FIND_PRUNE is not set 475 | # CONFIG_FEATURE_FIND_QUIT is not set 476 | # CONFIG_FEATURE_FIND_DELETE is not set 477 | # CONFIG_FEATURE_FIND_EMPTY is not set 478 | # CONFIG_FEATURE_FIND_PATH is not set 479 | # CONFIG_FEATURE_FIND_REGEX is not set 480 | # CONFIG_FEATURE_FIND_CONTEXT is not set 481 | # CONFIG_FEATURE_FIND_LINKS is not set 482 | CONFIG_GREP=y 483 | # CONFIG_EGREP is not set 484 | # CONFIG_FGREP is not set 485 | CONFIG_FEATURE_GREP_CONTEXT=y 486 | # CONFIG_XARGS is not set 487 | # CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set 488 | # CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set 489 | # CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set 490 | # CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set 491 | # CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR is not set 492 | # CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL is not set 493 | # CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE is not set 494 | 495 | # 496 | # Init Utilities 497 | # 498 | CONFIG_BOOTCHARTD=y 499 | CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER=y 500 | CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE=y 501 | CONFIG_HALT=y 502 | CONFIG_POWEROFF=y 503 | CONFIG_REBOOT=y 504 | CONFIG_FEATURE_WAIT_FOR_INIT=y 505 | # CONFIG_FEATURE_CALL_TELINIT is not set 506 | CONFIG_TELINIT_PATH="" 507 | CONFIG_INIT=y 508 | CONFIG_LINUXRC=y 509 | CONFIG_FEATURE_USE_INITTAB=y 510 | CONFIG_FEATURE_KILL_REMOVED=y 511 | CONFIG_FEATURE_KILL_DELAY=0 512 | CONFIG_FEATURE_INIT_SCTTY=y 513 | CONFIG_FEATURE_INIT_SYSLOG=y 514 | CONFIG_FEATURE_INIT_QUIET=y 515 | CONFIG_FEATURE_INIT_COREDUMPS=y 516 | CONFIG_INIT_TERMINAL_TYPE="linux" 517 | CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y 518 | 519 | # 520 | # Login/Password Management Utilities 521 | # 522 | CONFIG_FEATURE_SHADOWPASSWDS=y 523 | CONFIG_USE_BB_PWD_GRP=y 524 | CONFIG_USE_BB_SHADOW=y 525 | CONFIG_USE_BB_CRYPT=y 526 | CONFIG_USE_BB_CRYPT_SHA=y 527 | # CONFIG_ADD_SHELL is not set 528 | # CONFIG_REMOVE_SHELL is not set 529 | # CONFIG_ADDGROUP is not set 530 | # CONFIG_FEATURE_ADDUSER_TO_GROUP is not set 531 | CONFIG_ADDUSER=y 532 | CONFIG_FEATURE_CHECK_NAMES=y 533 | CONFIG_LAST_ID=60000 534 | CONFIG_FIRST_SYSTEM_ID=100 535 | CONFIG_LAST_SYSTEM_ID=999 536 | CONFIG_CHPASSWD=y 537 | CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des" 538 | # CONFIG_CRYPTPW is not set 539 | # CONFIG_MKPASSWD is not set 540 | # CONFIG_DELUSER is not set 541 | # CONFIG_DELGROUP is not set 542 | # CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set 543 | CONFIG_GETTY=y 544 | CONFIG_LOGIN=y 545 | # CONFIG_LOGIN_SESSION_AS_CHILD is not set 546 | CONFIG_LOGIN_SCRIPTS=y 547 | CONFIG_FEATURE_NOLOGIN=y 548 | CONFIG_FEATURE_SECURETTY=y 549 | CONFIG_PASSWD=y 550 | # CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set 551 | CONFIG_SU=y 552 | # CONFIG_FEATURE_SU_SYSLOG is not set 553 | CONFIG_FEATURE_SU_CHECKS_SHELLS=y 554 | # CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set 555 | # CONFIG_SULOGIN is not set 556 | # CONFIG_VLOCK is not set 557 | 558 | # 559 | # Linux Ext2 FS Progs 560 | # 561 | # CONFIG_CHATTR is not set 562 | CONFIG_FSCK=y 563 | # CONFIG_LSATTR is not set 564 | # CONFIG_TUNE2FS is not set 565 | 566 | # 567 | # Linux Module Utilities 568 | # 569 | CONFIG_MODPROBE_SMALL=y 570 | # CONFIG_DEPMOD is not set 571 | # CONFIG_INSMOD is not set 572 | # CONFIG_LSMOD is not set 573 | # CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set 574 | # CONFIG_MODINFO is not set 575 | # CONFIG_MODPROBE is not set 576 | # CONFIG_FEATURE_MODPROBE_BLACKLIST is not set 577 | # CONFIG_RMMOD is not set 578 | 579 | # 580 | # Options common to multiple modutils 581 | # 582 | # CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS is not set 583 | # CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set 584 | # CONFIG_FEATURE_2_4_MODULES is not set 585 | # CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set 586 | # CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set 587 | # CONFIG_FEATURE_INSMOD_LOADINKMEM is not set 588 | # CONFIG_FEATURE_INSMOD_LOAD_MAP is not set 589 | # CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set 590 | # CONFIG_FEATURE_CHECK_TAINTED_MODULE is not set 591 | # CONFIG_FEATURE_INSMOD_TRY_MMAP is not set 592 | # CONFIG_FEATURE_MODUTILS_ALIAS is not set 593 | # CONFIG_FEATURE_MODUTILS_SYMBOLS is not set 594 | CONFIG_DEFAULT_MODULES_DIR="" 595 | CONFIG_DEFAULT_DEPMOD_FILE="" 596 | 597 | # 598 | # Linux System Utilities 599 | # 600 | CONFIG_ACPID=y 601 | CONFIG_FEATURE_ACPID_COMPAT=y 602 | CONFIG_BLKDISCARD=y 603 | CONFIG_BLKID=y 604 | CONFIG_FEATURE_BLKID_TYPE=y 605 | CONFIG_BLOCKDEV=y 606 | # CONFIG_CAL is not set 607 | CONFIG_CHRT=y 608 | CONFIG_DMESG=y 609 | CONFIG_FEATURE_DMESG_PRETTY=y 610 | CONFIG_EJECT=y 611 | CONFIG_FEATURE_EJECT_SCSI=y 612 | CONFIG_FALLOCATE=y 613 | CONFIG_FATATTR=y 614 | CONFIG_FBSET=y 615 | CONFIG_FEATURE_FBSET_FANCY=y 616 | CONFIG_FEATURE_FBSET_READMODE=y 617 | CONFIG_FDFORMAT=y 618 | CONFIG_FDISK=y 619 | # CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set 620 | CONFIG_FEATURE_FDISK_WRITABLE=y 621 | # CONFIG_FEATURE_AIX_LABEL is not set 622 | # CONFIG_FEATURE_SGI_LABEL is not set 623 | # CONFIG_FEATURE_SUN_LABEL is not set 624 | # CONFIG_FEATURE_OSF_LABEL is not set 625 | # CONFIG_FEATURE_GPT_LABEL is not set 626 | CONFIG_FEATURE_FDISK_ADVANCED=y 627 | CONFIG_FINDFS=y 628 | CONFIG_FLOCK=y 629 | CONFIG_FDFLUSH=y 630 | CONFIG_FREERAMDISK=y 631 | CONFIG_FSCK_MINIX=y 632 | CONFIG_FSFREEZE=y 633 | CONFIG_FSTRIM=y 634 | CONFIG_GETOPT=y 635 | CONFIG_FEATURE_GETOPT_LONG=y 636 | CONFIG_HEXDUMP=y 637 | CONFIG_HD=y 638 | CONFIG_XXD=y 639 | CONFIG_HWCLOCK=y 640 | # CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set 641 | CONFIG_IONICE=y 642 | CONFIG_IPCRM=y 643 | CONFIG_IPCS=y 644 | CONFIG_LAST=y 645 | CONFIG_FEATURE_LAST_FANCY=y 646 | CONFIG_LOSETUP=y 647 | CONFIG_LSPCI=y 648 | CONFIG_LSUSB=y 649 | CONFIG_MDEV=y 650 | CONFIG_FEATURE_MDEV_CONF=y 651 | CONFIG_FEATURE_MDEV_RENAME=y 652 | CONFIG_FEATURE_MDEV_RENAME_REGEXP=y 653 | CONFIG_FEATURE_MDEV_EXEC=y 654 | CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y 655 | CONFIG_FEATURE_MDEV_DAEMON=y 656 | # CONFIG_MESG is not set 657 | # CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set 658 | # CONFIG_MKE2FS is not set 659 | # CONFIG_MKFS_EXT2 is not set 660 | # CONFIG_MKFS_MINIX is not set 661 | # CONFIG_FEATURE_MINIX2 is not set 662 | CONFIG_MKFS_REISER=y 663 | # CONFIG_MKDOSFS is not set 664 | # CONFIG_MKFS_VFAT is not set 665 | # CONFIG_MKSWAP is not set 666 | # CONFIG_FEATURE_MKSWAP_UUID is not set 667 | CONFIG_MORE=y 668 | CONFIG_MOUNT=y 669 | CONFIG_FEATURE_MOUNT_FAKE=y 670 | CONFIG_FEATURE_MOUNT_VERBOSE=y 671 | # CONFIG_FEATURE_MOUNT_HELPERS is not set 672 | CONFIG_FEATURE_MOUNT_LABEL=y 673 | # CONFIG_FEATURE_MOUNT_NFS is not set 674 | CONFIG_FEATURE_MOUNT_CIFS=y 675 | CONFIG_FEATURE_MOUNT_FLAGS=y 676 | CONFIG_FEATURE_MOUNT_FSTAB=y 677 | CONFIG_FEATURE_MOUNT_OTHERTAB=y 678 | CONFIG_MOUNTPOINT=y 679 | CONFIG_NOLOGIN=y 680 | # CONFIG_NOLOGIN_DEPENDENCIES is not set 681 | CONFIG_NSENTER=y 682 | CONFIG_PIVOT_ROOT=y 683 | # CONFIG_RDATE is not set 684 | CONFIG_RDEV=y 685 | CONFIG_READPROFILE=y 686 | CONFIG_RENICE=y 687 | CONFIG_REV=y 688 | # CONFIG_RTCWAKE is not set 689 | # CONFIG_SCRIPT is not set 690 | # CONFIG_SCRIPTREPLAY is not set 691 | # CONFIG_SETARCH is not set 692 | # CONFIG_LINUX32 is not set 693 | # CONFIG_LINUX64 is not set 694 | # CONFIG_SETPRIV is not set 695 | # CONFIG_FEATURE_SETPRIV_DUMP is not set 696 | # CONFIG_FEATURE_SETPRIV_CAPABILITIES is not set 697 | # CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES is not set 698 | CONFIG_SETSID=y 699 | CONFIG_SWAPON=y 700 | CONFIG_FEATURE_SWAPON_DISCARD=y 701 | CONFIG_FEATURE_SWAPON_PRI=y 702 | CONFIG_SWAPOFF=y 703 | CONFIG_FEATURE_SWAPONOFF_LABEL=y 704 | CONFIG_SWITCH_ROOT=y 705 | CONFIG_TASKSET=y 706 | CONFIG_FEATURE_TASKSET_FANCY=y 707 | CONFIG_FEATURE_TASKSET_CPULIST=y 708 | CONFIG_UEVENT=y 709 | CONFIG_UMOUNT=y 710 | CONFIG_FEATURE_UMOUNT_ALL=y 711 | # CONFIG_UNSHARE is not set 712 | CONFIG_WALL=y 713 | 714 | # 715 | # Common options for mount/umount 716 | # 717 | CONFIG_FEATURE_MOUNT_LOOP=y 718 | CONFIG_FEATURE_MOUNT_LOOP_CREATE=y 719 | # CONFIG_FEATURE_MTAB_SUPPORT is not set 720 | CONFIG_VOLUMEID=y 721 | 722 | # 723 | # Filesystem/Volume identification 724 | # 725 | CONFIG_FEATURE_VOLUMEID_BCACHE=y 726 | CONFIG_FEATURE_VOLUMEID_BTRFS=y 727 | CONFIG_FEATURE_VOLUMEID_CRAMFS=y 728 | CONFIG_FEATURE_VOLUMEID_EROFS=y 729 | CONFIG_FEATURE_VOLUMEID_EXFAT=y 730 | CONFIG_FEATURE_VOLUMEID_EXT=y 731 | CONFIG_FEATURE_VOLUMEID_F2FS=y 732 | CONFIG_FEATURE_VOLUMEID_FAT=y 733 | CONFIG_FEATURE_VOLUMEID_HFS=y 734 | CONFIG_FEATURE_VOLUMEID_ISO9660=y 735 | CONFIG_FEATURE_VOLUMEID_JFS=y 736 | CONFIG_FEATURE_VOLUMEID_LFS=y 737 | CONFIG_FEATURE_VOLUMEID_LINUXRAID=y 738 | CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y 739 | CONFIG_FEATURE_VOLUMEID_LUKS=y 740 | CONFIG_FEATURE_VOLUMEID_MINIX=y 741 | CONFIG_FEATURE_VOLUMEID_NILFS=y 742 | CONFIG_FEATURE_VOLUMEID_NTFS=y 743 | CONFIG_FEATURE_VOLUMEID_OCFS2=y 744 | CONFIG_FEATURE_VOLUMEID_REISERFS=y 745 | CONFIG_FEATURE_VOLUMEID_ROMFS=y 746 | CONFIG_FEATURE_VOLUMEID_SQUASHFS=y 747 | CONFIG_FEATURE_VOLUMEID_SYSV=y 748 | CONFIG_FEATURE_VOLUMEID_UBIFS=y 749 | CONFIG_FEATURE_VOLUMEID_UDF=y 750 | CONFIG_FEATURE_VOLUMEID_XFS=y 751 | 752 | # 753 | # Miscellaneous Utilities 754 | # 755 | # CONFIG_ADJTIMEX is not set 756 | # CONFIG_ASCII is not set 757 | # CONFIG_BBCONFIG is not set 758 | # CONFIG_FEATURE_COMPRESS_BBCONFIG is not set 759 | # CONFIG_BC is not set 760 | # CONFIG_DC is not set 761 | # CONFIG_FEATURE_DC_BIG is not set 762 | # CONFIG_FEATURE_DC_LIBM is not set 763 | # CONFIG_FEATURE_BC_INTERACTIVE is not set 764 | # CONFIG_FEATURE_BC_LONG_OPTIONS is not set 765 | CONFIG_BEEP=y 766 | CONFIG_FEATURE_BEEP_FREQ=4000 767 | CONFIG_FEATURE_BEEP_LENGTH_MS=30 768 | # CONFIG_CHAT is not set 769 | # CONFIG_FEATURE_CHAT_NOFAIL is not set 770 | # CONFIG_FEATURE_CHAT_TTY_HIFI is not set 771 | # CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set 772 | # CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set 773 | # CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set 774 | # CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set 775 | # CONFIG_FEATURE_CHAT_CLR_ABORT is not set 776 | # CONFIG_CONSPY is not set 777 | # CONFIG_CROND is not set 778 | # CONFIG_FEATURE_CROND_D is not set 779 | # CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set 780 | # CONFIG_FEATURE_CROND_SPECIAL_TIMES is not set 781 | CONFIG_FEATURE_CROND_DIR="" 782 | # CONFIG_CRONTAB is not set 783 | # CONFIG_DEVFSD is not set 784 | # CONFIG_DEVFSD_MODLOAD is not set 785 | # CONFIG_DEVFSD_FG_NP is not set 786 | # CONFIG_DEVFSD_VERBOSE is not set 787 | # CONFIG_FEATURE_DEVFS is not set 788 | CONFIG_DEVMEM=y 789 | # CONFIG_FBSPLASH is not set 790 | # CONFIG_FLASH_ERASEALL is not set 791 | # CONFIG_FLASH_LOCK is not set 792 | # CONFIG_FLASH_UNLOCK is not set 793 | # CONFIG_FLASHCP is not set 794 | # CONFIG_HDPARM is not set 795 | # CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set 796 | # CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set 797 | # CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set 798 | # CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set 799 | # CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set 800 | # CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set 801 | # CONFIG_HEXEDIT is not set 802 | # CONFIG_I2CGET is not set 803 | # CONFIG_I2CSET is not set 804 | # CONFIG_I2CDUMP is not set 805 | # CONFIG_I2CDETECT is not set 806 | # CONFIG_I2CTRANSFER is not set 807 | # CONFIG_INOTIFYD is not set 808 | CONFIG_LESS=y 809 | CONFIG_FEATURE_LESS_MAXLINES=9999999 810 | CONFIG_FEATURE_LESS_BRACKETS=y 811 | CONFIG_FEATURE_LESS_FLAGS=y 812 | CONFIG_FEATURE_LESS_TRUNCATE=y 813 | CONFIG_FEATURE_LESS_MARKS=y 814 | CONFIG_FEATURE_LESS_REGEXP=y 815 | CONFIG_FEATURE_LESS_WINCH=y 816 | CONFIG_FEATURE_LESS_ASK_TERMINAL=y 817 | CONFIG_FEATURE_LESS_DASHCMD=y 818 | CONFIG_FEATURE_LESS_LINENUMS=y 819 | CONFIG_FEATURE_LESS_RAW=y 820 | CONFIG_FEATURE_LESS_ENV=y 821 | # CONFIG_LSSCSI is not set 822 | # CONFIG_MAKEDEVS is not set 823 | # CONFIG_FEATURE_MAKEDEVS_LEAF is not set 824 | # CONFIG_FEATURE_MAKEDEVS_TABLE is not set 825 | # CONFIG_MAN is not set 826 | CONFIG_MICROCOM=y 827 | # CONFIG_MIM is not set 828 | # CONFIG_MT is not set 829 | # CONFIG_NANDWRITE is not set 830 | # CONFIG_NANDDUMP is not set 831 | # CONFIG_PARTPROBE is not set 832 | # CONFIG_RAIDAUTORUN is not set 833 | # CONFIG_READAHEAD is not set 834 | # CONFIG_RFKILL is not set 835 | CONFIG_RUNLEVEL=y 836 | CONFIG_RX=y 837 | CONFIG_SEEDRNG=y 838 | # CONFIG_SETFATTR is not set 839 | # CONFIG_SETSERIAL is not set 840 | CONFIG_STRINGS=y 841 | CONFIG_TIME=y 842 | CONFIG_TREE=y 843 | # CONFIG_TS is not set 844 | # CONFIG_TTYSIZE is not set 845 | # CONFIG_UBIATTACH is not set 846 | # CONFIG_UBIDETACH is not set 847 | # CONFIG_UBIMKVOL is not set 848 | # CONFIG_UBIRMVOL is not set 849 | # CONFIG_UBIRSVOL is not set 850 | # CONFIG_UBIUPDATEVOL is not set 851 | # CONFIG_UBIRENAME is not set 852 | # CONFIG_VOLNAME is not set 853 | # CONFIG_WATCHDOG is not set 854 | # CONFIG_FEATURE_WATCHDOG_OPEN_TWICE is not set 855 | 856 | # 857 | # Networking Utilities 858 | # 859 | # CONFIG_FEATURE_IPV6 is not set 860 | # CONFIG_FEATURE_UNIX_LOCAL is not set 861 | # CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set 862 | # CONFIG_VERBOSE_RESOLUTION_ERRORS is not set 863 | # CONFIG_FEATURE_ETC_NETWORKS is not set 864 | # CONFIG_FEATURE_ETC_SERVICES is not set 865 | CONFIG_FEATURE_HWIB=y 866 | # CONFIG_FEATURE_TLS_SHA1 is not set 867 | CONFIG_ARP=y 868 | # CONFIG_ARPING is not set 869 | # CONFIG_BRCTL is not set 870 | # CONFIG_FEATURE_BRCTL_FANCY is not set 871 | # CONFIG_FEATURE_BRCTL_SHOW is not set 872 | # CONFIG_DNSD is not set 873 | # CONFIG_ETHER_WAKE is not set 874 | # CONFIG_FTPD is not set 875 | # CONFIG_FEATURE_FTPD_WRITE is not set 876 | # CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set 877 | # CONFIG_FEATURE_FTPD_AUTHENTICATION is not set 878 | # CONFIG_FTPGET is not set 879 | # CONFIG_FTPPUT is not set 880 | # CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set 881 | CONFIG_HOSTNAME=y 882 | # CONFIG_DNSDOMAINNAME is not set 883 | # CONFIG_HTTPD is not set 884 | CONFIG_FEATURE_HTTPD_PORT_DEFAULT=0 885 | # CONFIG_FEATURE_HTTPD_RANGES is not set 886 | # CONFIG_FEATURE_HTTPD_SETUID is not set 887 | # CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set 888 | # CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set 889 | # CONFIG_FEATURE_HTTPD_CGI is not set 890 | # CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set 891 | # CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set 892 | # CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set 893 | # CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set 894 | # CONFIG_FEATURE_HTTPD_PROXY is not set 895 | # CONFIG_FEATURE_HTTPD_GZIP is not set 896 | # CONFIG_FEATURE_HTTPD_ETAG is not set 897 | # CONFIG_FEATURE_HTTPD_LAST_MODIFIED is not set 898 | # CONFIG_FEATURE_HTTPD_DATE is not set 899 | # CONFIG_FEATURE_HTTPD_ACL_IP is not set 900 | CONFIG_IFCONFIG=y 901 | CONFIG_FEATURE_IFCONFIG_STATUS=y 902 | CONFIG_FEATURE_IFCONFIG_SLIP=y 903 | CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y 904 | CONFIG_FEATURE_IFCONFIG_HW=y 905 | CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y 906 | CONFIG_IFENSLAVE=y 907 | CONFIG_IFPLUGD=y 908 | CONFIG_IFUP=y 909 | CONFIG_IFDOWN=y 910 | CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate" 911 | CONFIG_FEATURE_IFUPDOWN_IP=y 912 | CONFIG_FEATURE_IFUPDOWN_IPV4=y 913 | # CONFIG_FEATURE_IFUPDOWN_IPV6 is not set 914 | CONFIG_FEATURE_IFUPDOWN_MAPPING=y 915 | # CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set 916 | # CONFIG_INETD is not set 917 | # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set 918 | # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set 919 | # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set 920 | # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set 921 | # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set 922 | # CONFIG_FEATURE_INETD_RPC is not set 923 | CONFIG_IP=y 924 | # CONFIG_IPADDR is not set 925 | # CONFIG_IPLINK is not set 926 | # CONFIG_IPROUTE is not set 927 | # CONFIG_IPTUNNEL is not set 928 | # CONFIG_IPRULE is not set 929 | # CONFIG_IPNEIGH is not set 930 | CONFIG_FEATURE_IP_ADDRESS=y 931 | CONFIG_FEATURE_IP_LINK=y 932 | CONFIG_FEATURE_IP_ROUTE=y 933 | CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" 934 | CONFIG_FEATURE_IP_TUNNEL=y 935 | CONFIG_FEATURE_IP_RULE=y 936 | CONFIG_FEATURE_IP_NEIGH=y 937 | # CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set 938 | # CONFIG_IPCALC is not set 939 | # CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set 940 | # CONFIG_FEATURE_IPCALC_FANCY is not set 941 | # CONFIG_FAKEIDENTD is not set 942 | # CONFIG_NAMEIF is not set 943 | # CONFIG_FEATURE_NAMEIF_EXTENDED is not set 944 | # CONFIG_NBDCLIENT is not set 945 | CONFIG_NC=y 946 | # CONFIG_NETCAT is not set 947 | CONFIG_NC_SERVER=y 948 | CONFIG_NC_EXTRA=y 949 | CONFIG_NC_110_COMPAT=y 950 | CONFIG_NETSTAT=y 951 | CONFIG_FEATURE_NETSTAT_WIDE=y 952 | CONFIG_FEATURE_NETSTAT_PRG=y 953 | CONFIG_NSLOOKUP=y 954 | CONFIG_FEATURE_NSLOOKUP_BIG=y 955 | CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS=y 956 | # CONFIG_NTPD is not set 957 | # CONFIG_FEATURE_NTPD_SERVER is not set 958 | # CONFIG_FEATURE_NTPD_CONF is not set 959 | # CONFIG_FEATURE_NTP_AUTH is not set 960 | CONFIG_PING=y 961 | # CONFIG_PING6 is not set 962 | # CONFIG_FEATURE_FANCY_PING is not set 963 | # CONFIG_PSCAN is not set 964 | CONFIG_ROUTE=y 965 | CONFIG_SLATTACH=y 966 | # CONFIG_SSL_CLIENT is not set 967 | # CONFIG_TC is not set 968 | # CONFIG_FEATURE_TC_INGRESS is not set 969 | # CONFIG_TCPSVD is not set 970 | # CONFIG_UDPSVD is not set 971 | # CONFIG_TELNET is not set 972 | # CONFIG_FEATURE_TELNET_TTYPE is not set 973 | # CONFIG_FEATURE_TELNET_AUTOLOGIN is not set 974 | # CONFIG_FEATURE_TELNET_WIDTH is not set 975 | # CONFIG_TELNETD is not set 976 | # CONFIG_FEATURE_TELNETD_STANDALONE is not set 977 | CONFIG_FEATURE_TELNETD_PORT_DEFAULT=0 978 | # CONFIG_FEATURE_TELNETD_INETD_WAIT is not set 979 | # CONFIG_TFTP is not set 980 | # CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set 981 | # CONFIG_FEATURE_TFTP_HPA_COMPAT is not set 982 | # CONFIG_TFTPD is not set 983 | # CONFIG_FEATURE_TFTP_GET is not set 984 | # CONFIG_FEATURE_TFTP_PUT is not set 985 | # CONFIG_FEATURE_TFTP_BLOCKSIZE is not set 986 | # CONFIG_TFTP_DEBUG is not set 987 | # CONFIG_TLS is not set 988 | CONFIG_TRACEROUTE=y 989 | # CONFIG_TRACEROUTE6 is not set 990 | CONFIG_FEATURE_TRACEROUTE_VERBOSE=y 991 | CONFIG_FEATURE_TRACEROUTE_USE_ICMP=y 992 | # CONFIG_TUNCTL is not set 993 | # CONFIG_FEATURE_TUNCTL_UG is not set 994 | # CONFIG_VCONFIG is not set 995 | # CONFIG_WGET is not set 996 | # CONFIG_FEATURE_WGET_LONG_OPTIONS is not set 997 | # CONFIG_FEATURE_WGET_STATUSBAR is not set 998 | # CONFIG_FEATURE_WGET_FTP is not set 999 | # CONFIG_FEATURE_WGET_AUTHENTICATION is not set 1000 | # CONFIG_FEATURE_WGET_TIMEOUT is not set 1001 | # CONFIG_FEATURE_WGET_HTTPS is not set 1002 | # CONFIG_FEATURE_WGET_OPENSSL is not set 1003 | # CONFIG_WHOIS is not set 1004 | # CONFIG_ZCIP is not set 1005 | # CONFIG_UDHCPD is not set 1006 | # CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set 1007 | # CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set 1008 | CONFIG_DHCPD_LEASES_FILE="" 1009 | # CONFIG_DUMPLEASES is not set 1010 | # CONFIG_DHCPRELAY is not set 1011 | CONFIG_UDHCPC=y 1012 | CONFIG_FEATURE_UDHCPC_ARPING=y 1013 | CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y 1014 | CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" 1015 | CONFIG_UDHCPC6_DEFAULT_SCRIPT="" 1016 | # CONFIG_UDHCPC6 is not set 1017 | # CONFIG_FEATURE_UDHCPC6_RFC3646 is not set 1018 | # CONFIG_FEATURE_UDHCPC6_RFC4704 is not set 1019 | # CONFIG_FEATURE_UDHCPC6_RFC4833 is not set 1020 | # CONFIG_FEATURE_UDHCPC6_RFC5970 is not set 1021 | 1022 | # 1023 | # Common options for DHCP applets 1024 | # 1025 | CONFIG_UDHCPC_DEFAULT_INTERFACE="eth0" 1026 | # CONFIG_FEATURE_UDHCP_PORT is not set 1027 | CONFIG_UDHCP_DEBUG=2 1028 | CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 1029 | CONFIG_FEATURE_UDHCP_RFC3397=y 1030 | # CONFIG_FEATURE_UDHCP_8021Q is not set 1031 | CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" 1032 | 1033 | # 1034 | # Print Utilities 1035 | # 1036 | # CONFIG_LPD is not set 1037 | # CONFIG_LPR is not set 1038 | # CONFIG_LPQ is not set 1039 | 1040 | # 1041 | # Mail Utilities 1042 | # 1043 | CONFIG_FEATURE_MIME_CHARSET="" 1044 | # CONFIG_MAKEMIME is not set 1045 | # CONFIG_POPMAILDIR is not set 1046 | # CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set 1047 | # CONFIG_REFORMIME is not set 1048 | # CONFIG_FEATURE_REFORMIME_COMPAT is not set 1049 | # CONFIG_SENDMAIL is not set 1050 | 1051 | # 1052 | # Process Utilities 1053 | # 1054 | # CONFIG_FEATURE_FAST_TOP is not set 1055 | CONFIG_FEATURE_SHOW_THREADS=y 1056 | CONFIG_FREE=y 1057 | # CONFIG_FUSER is not set 1058 | CONFIG_IOSTAT=y 1059 | CONFIG_KILL=y 1060 | CONFIG_KILLALL=y 1061 | CONFIG_KILLALL5=y 1062 | CONFIG_LSOF=y 1063 | # CONFIG_MPSTAT is not set 1064 | # CONFIG_NMETER is not set 1065 | # CONFIG_PGREP is not set 1066 | # CONFIG_PKILL is not set 1067 | # CONFIG_PIDOF is not set 1068 | # CONFIG_FEATURE_PIDOF_SINGLE is not set 1069 | # CONFIG_FEATURE_PIDOF_OMIT is not set 1070 | # CONFIG_PMAP is not set 1071 | # CONFIG_POWERTOP is not set 1072 | # CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set 1073 | CONFIG_PS=y 1074 | # CONFIG_FEATURE_PS_WIDE is not set 1075 | # CONFIG_FEATURE_PS_LONG is not set 1076 | CONFIG_FEATURE_PS_TIME=y 1077 | # CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set 1078 | CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y 1079 | CONFIG_PSTREE=y 1080 | # CONFIG_PWDX is not set 1081 | # CONFIG_SMEMCAP is not set 1082 | CONFIG_BB_SYSCTL=y 1083 | # CONFIG_TOP is not set 1084 | # CONFIG_FEATURE_TOP_INTERACTIVE is not set 1085 | # CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE is not set 1086 | # CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS is not set 1087 | # CONFIG_FEATURE_TOP_SMP_CPU is not set 1088 | # CONFIG_FEATURE_TOP_DECIMALS is not set 1089 | # CONFIG_FEATURE_TOP_SMP_PROCESS is not set 1090 | # CONFIG_FEATURE_TOPMEM is not set 1091 | CONFIG_UPTIME=y 1092 | CONFIG_FEATURE_UPTIME_UTMP_SUPPORT=y 1093 | # CONFIG_WATCH is not set 1094 | 1095 | # 1096 | # Runit Utilities 1097 | # 1098 | # CONFIG_CHPST is not set 1099 | # CONFIG_SETUIDGID is not set 1100 | # CONFIG_ENVUIDGID is not set 1101 | # CONFIG_ENVDIR is not set 1102 | # CONFIG_SOFTLIMIT is not set 1103 | # CONFIG_RUNSV is not set 1104 | # CONFIG_RUNSVDIR is not set 1105 | # CONFIG_FEATURE_RUNSVDIR_LOG is not set 1106 | # CONFIG_SV is not set 1107 | CONFIG_SV_DEFAULT_SERVICE_DIR="" 1108 | # CONFIG_SVC is not set 1109 | # CONFIG_SVOK is not set 1110 | # CONFIG_SVLOGD is not set 1111 | # CONFIG_CHCON is not set 1112 | # CONFIG_GETENFORCE is not set 1113 | # CONFIG_GETSEBOOL is not set 1114 | # CONFIG_LOAD_POLICY is not set 1115 | # CONFIG_MATCHPATHCON is not set 1116 | # CONFIG_RUNCON is not set 1117 | # CONFIG_SELINUXENABLED is not set 1118 | # CONFIG_SESTATUS is not set 1119 | # CONFIG_SETENFORCE is not set 1120 | # CONFIG_SETFILES is not set 1121 | # CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set 1122 | # CONFIG_RESTORECON is not set 1123 | # CONFIG_SETSEBOOL is not set 1124 | 1125 | # 1126 | # Shells 1127 | # 1128 | CONFIG_SH_IS_ASH=y 1129 | # CONFIG_SH_IS_HUSH is not set 1130 | # CONFIG_SH_IS_NONE is not set 1131 | # CONFIG_BASH_IS_ASH is not set 1132 | # CONFIG_BASH_IS_HUSH is not set 1133 | CONFIG_BASH_IS_NONE=y 1134 | CONFIG_SHELL_ASH=y 1135 | CONFIG_ASH=y 1136 | CONFIG_ASH_OPTIMIZE_FOR_SIZE=y 1137 | CONFIG_ASH_INTERNAL_GLOB=y 1138 | CONFIG_ASH_BASH_COMPAT=y 1139 | # CONFIG_ASH_BASH_SOURCE_CURDIR is not set 1140 | CONFIG_ASH_BASH_NOT_FOUND_HOOK=y 1141 | CONFIG_ASH_JOB_CONTROL=y 1142 | CONFIG_ASH_ALIAS=y 1143 | CONFIG_ASH_RANDOM_SUPPORT=y 1144 | CONFIG_ASH_EXPAND_PRMT=y 1145 | CONFIG_ASH_IDLE_TIMEOUT=y 1146 | CONFIG_ASH_MAIL=y 1147 | CONFIG_ASH_ECHO=y 1148 | CONFIG_ASH_PRINTF=y 1149 | CONFIG_ASH_TEST=y 1150 | CONFIG_ASH_SLEEP=y 1151 | CONFIG_ASH_HELP=y 1152 | CONFIG_ASH_GETOPTS=y 1153 | CONFIG_ASH_CMDCMD=y 1154 | CONFIG_CTTYHACK=y 1155 | CONFIG_HUSH=y 1156 | CONFIG_SHELL_HUSH=y 1157 | CONFIG_HUSH_BASH_COMPAT=y 1158 | CONFIG_HUSH_BRACE_EXPANSION=y 1159 | # CONFIG_HUSH_BASH_SOURCE_CURDIR is not set 1160 | CONFIG_HUSH_LINENO_VAR=y 1161 | CONFIG_HUSH_INTERACTIVE=y 1162 | CONFIG_HUSH_SAVEHISTORY=y 1163 | CONFIG_HUSH_JOB=y 1164 | CONFIG_HUSH_TICK=y 1165 | CONFIG_HUSH_IF=y 1166 | CONFIG_HUSH_LOOPS=y 1167 | CONFIG_HUSH_CASE=y 1168 | CONFIG_HUSH_FUNCTIONS=y 1169 | CONFIG_HUSH_LOCAL=y 1170 | CONFIG_HUSH_RANDOM_SUPPORT=y 1171 | CONFIG_HUSH_MODE_X=y 1172 | CONFIG_HUSH_ECHO=y 1173 | CONFIG_HUSH_PRINTF=y 1174 | CONFIG_HUSH_TEST=y 1175 | CONFIG_HUSH_HELP=y 1176 | CONFIG_HUSH_EXPORT=y 1177 | CONFIG_HUSH_EXPORT_N=y 1178 | CONFIG_HUSH_READONLY=y 1179 | CONFIG_HUSH_KILL=y 1180 | CONFIG_HUSH_WAIT=y 1181 | CONFIG_HUSH_COMMAND=y 1182 | CONFIG_HUSH_TRAP=y 1183 | CONFIG_HUSH_TYPE=y 1184 | CONFIG_HUSH_TIMES=y 1185 | CONFIG_HUSH_READ=y 1186 | CONFIG_HUSH_SET=y 1187 | CONFIG_HUSH_UNSET=y 1188 | CONFIG_HUSH_ULIMIT=y 1189 | CONFIG_HUSH_UMASK=y 1190 | CONFIG_HUSH_GETOPTS=y 1191 | # CONFIG_HUSH_MEMLEAK is not set 1192 | 1193 | # 1194 | # Options common to all shells 1195 | # 1196 | CONFIG_FEATURE_SH_MATH=y 1197 | CONFIG_FEATURE_SH_MATH_64=y 1198 | CONFIG_FEATURE_SH_MATH_BASE=y 1199 | CONFIG_FEATURE_SH_EXTRA_QUIET=y 1200 | # CONFIG_FEATURE_SH_STANDALONE is not set 1201 | # CONFIG_FEATURE_SH_NOFORK is not set 1202 | CONFIG_FEATURE_SH_READ_FRAC=y 1203 | CONFIG_FEATURE_SH_HISTFILESIZE=y 1204 | CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS=y 1205 | 1206 | # 1207 | # System Logging Utilities 1208 | # 1209 | CONFIG_KLOGD=y 1210 | 1211 | # 1212 | # klogd should not be used together with syslog to kernel printk buffer 1213 | # 1214 | CONFIG_FEATURE_KLOGD_KLOGCTL=y 1215 | CONFIG_LOGGER=y 1216 | CONFIG_LOGREAD=y 1217 | CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y 1218 | CONFIG_SYSLOGD=y 1219 | CONFIG_FEATURE_ROTATE_LOGFILE=y 1220 | CONFIG_FEATURE_REMOTE_LOG=y 1221 | CONFIG_FEATURE_SYSLOGD_DUP=y 1222 | CONFIG_FEATURE_SYSLOGD_CFG=y 1223 | # CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set 1224 | CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 1225 | CONFIG_FEATURE_IPC_SYSLOG=y 1226 | CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16 1227 | CONFIG_FEATURE_KMSG_SYSLOG=y 1228 | -------------------------------------------------------------------------------- /fs/alpine-chroot-install: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # vim: set ts=4: 3 | #---help--- 4 | # Usage: alpine-chroot-install [options] 5 | # 6 | # This script installs Alpine Linux into a chroot and optionally sets up 7 | # qemu-user and binfmt to emulate different architecture (e.g. armhf). 8 | # 9 | # If qemu-user and binfmt is needed, the script checks if both are available. 10 | # If not, it tries to install them using apt-get. Beside this the script should 11 | # work on any Linux system. 12 | # 13 | # It also creates script "enter-chroot" inside the chroot directory, that may 14 | # be used to enter the chroot environment. That script do the following: 15 | # 16 | # 1. saves environment variables specified by $CHROOT_KEEP_VARS and PWD, 17 | # 2. chroots into $CHROOT_DIR, 18 | # 3. starts clean environment using "env -i", 19 | # 4. switches user and simulates full login using "su -l", 20 | # 5. loads saved environment variables and changes directory to saved PWD, 21 | # 6. executes specified command or "sh" if not provided. 22 | # 23 | # Example: 24 | # sudo alpine-chroot-install -d /alpine -p build-base -p cmake 25 | # /alpine/enter-chroot -u $USER ./build 26 | # 27 | # Options and environment variables: 28 | # -a ARCH CPU architecture for the chroot. If not set, then it's 29 | # the same as the host's architecture. If it's different 30 | # from the host's architecture, then it will be emulated 31 | # using qemu-user. Options: x86_64, x86, aarch64, armhf, 32 | # armv7, ppc64le, riscv64, s390x. 33 | # 34 | # -b ALPINE_BRANCH Alpine branch to install (default is latest-stable). 35 | # 36 | # -d CHROOT_DIR Absolute path to the directory where Alpine chroot 37 | # should be installed (default is /alpine). 38 | # 39 | # -i BIND_DIR Absolute path to the directory on the host system that 40 | # should be mounted on the same path inside the chroot 41 | # (default is PWD, if it's under /home, or none). 42 | # 43 | # -k CHROOT_KEEP_VARS... Names of the environment variables to pass from the 44 | # host environment into chroot by the enter-chroot 45 | # script. Name may be an extended regular expression. 46 | # Default: ARCH CI TRAVIS_.*. 47 | # 48 | # -m ALPINE_MIRROR... URI of the Aports mirror to fetch packages from 49 | # (default is http://dl-cdn.alpinelinux.org/alpine). 50 | # 51 | # -p ALPINE_PACKAGES... Alpine packages to install into the chroot (default is 52 | # build-base ca-certificates ssl_client). 53 | # 54 | # -r EXTRA_REPOS... Alpine repositories to be added to 55 | # /etc/apk/repositories (main and community from 56 | # $ALPINE_MIRROR are always added). 57 | # 58 | # -t TEMP_DIR Absolute path to the directory where to store temporary 59 | # files (defaults to `mktemp -d`). 60 | # 61 | # -h Show this help message and exit. 62 | # 63 | # -v Print version and exit. 64 | # 65 | # Each option can be also provided by environment variable. If both option and 66 | # variable is specified and the option accepts only one argument, then the 67 | # option takes precedence. 68 | # 69 | # https://github.com/alpinelinux/alpine-chroot-install 70 | #---help--- 71 | set -eu 72 | 73 | #======================= C o n s t a n t s =======================# 74 | 75 | : ${APK_TOOLS_URI:="https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.12.10/$(uname -m)/apk.static"} 76 | 77 | # Alpine APK keys for packages verification. 78 | ALPINE_KEYS=' 79 | 4a6a0840:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1yHJxQgsHQREclQu4Ohe\nqxTxd1tHcNnvnQTu/UrTky8wWvgXT+jpveroeWWnzmsYlDI93eLI2ORakxb3gA2O\nQ0Ry4ws8vhaxLQGC74uQR5+/yYrLuTKydFzuPaS1dK19qJPXB8GMdmFOijnXX4SA\njixuHLe1WW7kZVtjL7nufvpXkWBGjsfrvskdNA/5MfxAeBbqPgaq0QMEfxMAn6/R\nL5kNepi/Vr4S39Xvf2DzWkTLEK8pcnjNkt9/aafhWqFVW7m3HCAII6h/qlQNQKSo\nGuH34Q8GsFG30izUENV9avY7hSLq7nggsvknlNBZtFUcmGoQrtx3FmyYsIC8/R+B\nywIDAQAB 80 | 5243ef4b:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvNijDxJ8kloskKQpJdx+\nmTMVFFUGDoDCbulnhZMJoKNkSuZOzBoFC94omYPtxnIcBdWBGnrm6ncbKRlR+6oy\nDO0W7c44uHKCFGFqBhDasdI4RCYP+fcIX/lyMh6MLbOxqS22TwSLhCVjTyJeeH7K\naA7vqk+QSsF4TGbYzQDDpg7+6aAcNzg6InNePaywA6hbT0JXbxnDWsB+2/LLSF2G\nmnhJlJrWB1WGjkz23ONIWk85W4S0XB/ewDefd4Ly/zyIciastA7Zqnh7p3Ody6Q0\nsS2MJzo7p3os1smGjUF158s6m/JbVh4DN6YIsxwl2OjDOz9R0OycfJSDaBVIGZzg\ncQIDAQAB 81 | 524d27bb:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr8s1q88XpuJWLCZALdKj\nlN8wg2ePB2T9aIcaxryYE/Jkmtu+ZQ5zKq6BT3y/udt5jAsMrhHTwroOjIsF9DeG\ne8Y3vjz+Hh4L8a7hZDaw8jy3CPag47L7nsZFwQOIo2Cl1SnzUc6/owoyjRU7ab0p\niWG5HK8IfiybRbZxnEbNAfT4R53hyI6z5FhyXGS2Ld8zCoU/R4E1P0CUuXKEN4p0\n64dyeUoOLXEWHjgKiU1mElIQj3k/IF02W89gDj285YgwqA49deLUM7QOd53QLnx+\nxrIrPv3A+eyXMFgexNwCKQU9ZdmWa00MjjHlegSGK8Y2NPnRoXhzqSP9T9i2HiXL\nVQIDAQAB 82 | 5261cecb:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwlzMkl7b5PBdfMzGdCT0\ncGloRr5xGgVmsdq5EtJvFkFAiN8Ac9MCFy/vAFmS8/7ZaGOXoCDWbYVLTLOO2qtX\nyHRl+7fJVh2N6qrDDFPmdgCi8NaE+3rITWXGrrQ1spJ0B6HIzTDNEjRKnD4xyg4j\ng01FMcJTU6E+V2JBY45CKN9dWr1JDM/nei/Pf0byBJlMp/mSSfjodykmz4Oe13xB\nCa1WTwgFykKYthoLGYrmo+LKIGpMoeEbY1kuUe04UiDe47l6Oggwnl+8XD1MeRWY\nsWgj8sF4dTcSfCMavK4zHRFFQbGp/YFJ/Ww6U9lA3Vq0wyEI6MCMQnoSMFwrbgZw\nwwIDAQAB 83 | 58199dcc:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3v8/ye/V/t5xf4JiXLXa\nhWFRozsnmn3hobON20GdmkrzKzO/eUqPOKTpg2GtvBhK30fu5oY5uN2ORiv2Y2ht\neLiZ9HVz3XP8Fm9frha60B7KNu66FO5P2o3i+E+DWTPqqPcCG6t4Znk2BypILcit\nwiPKTsgbBQR2qo/cO01eLLdt6oOzAaF94NH0656kvRewdo6HG4urbO46tCAizvCR\nCA7KGFMyad8WdKkTjxh8YLDLoOCtoZmXmQAiwfRe9pKXRH/XXGop8SYptLqyVVQ+\ntegOD9wRs2tOlgcLx4F/uMzHN7uoho6okBPiifRX+Pf38Vx+ozXh056tjmdZkCaV\naQIDAQAB 84 | 58cbb476:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoSPnuAGKtRIS5fEgYPXD\n8pSGvKAmIv3A08LBViDUe+YwhilSHbYXUEAcSH1KZvOo1WT1x2FNEPBEFEFU1Eyc\n+qGzbA03UFgBNvArurHQ5Z/GngGqE7IarSQFSoqewYRtFSfp+TL9CUNBvM0rT7vz\n2eMu3/wWG+CBmb92lkmyWwC1WSWFKO3x8w+Br2IFWvAZqHRt8oiG5QtYvcZL6jym\nY8T6sgdDlj+Y+wWaLHs9Fc+7vBuyK9C4O1ORdMPW15qVSl4Lc2Wu1QVwRiKnmA+c\nDsH/m7kDNRHM7TjWnuj+nrBOKAHzYquiu5iB3Qmx+0gwnrSVf27Arc3ozUmmJbLj\nzQIDAQAB 85 | 58e4f17d:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvBxJN9ErBgdRcPr5g4hV\nqyUSGZEKuvQliq2Z9SRHLh2J43+EdB6A+yzVvLnzcHVpBJ+BZ9RV30EM9guck9sh\nr+bryZcRHyjG2wiIEoduxF2a8KeWeQH7QlpwGhuobo1+gA8L0AGImiA6UP3LOirl\nI0G2+iaKZowME8/tydww4jx5vG132JCOScMjTalRsYZYJcjFbebQQolpqRaGB4iG\nWqhytWQGWuKiB1A22wjmIYf3t96l1Mp+FmM2URPxD1gk/BIBnX7ew+2gWppXOK9j\n1BJpo0/HaX5XoZ/uMqISAAtgHZAqq+g3IUPouxTphgYQRTRYpz2COw3NF43VYQrR\nbQIDAQAB 86 | 60ac2099:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwR4uJVtJOnOFGchnMW5Y\nj5/waBdG1u5BTMlH+iQMcV5+VgWhmpZHJCBz3ocD+0IGk2I68S5TDOHec/GSC0lv\n6R9o6F7h429GmgPgVKQsc8mPTPtbjJMuLLs4xKc+viCplXc0Nc0ZoHmCH4da6fCV\ntdpHQjVe6F9zjdquZ4RjV6R6JTiN9v924dGMAkbW/xXmamtz51FzondKC52Gh8Mo\n/oA0/T0KsCMCi7tb4QNQUYrf+Xcha9uus4ww1kWNZyfXJB87a2kORLiWMfs2IBBJ\nTmZ2Fnk0JnHDb8Oknxd9PvJPT0mvyT8DA+KIAPqNvOjUXP4bnjEHJcoCP9S5HkGC\nIQIDAQAB 87 | 6165ee59:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAutQkua2CAig4VFSJ7v54\nALyu/J1WB3oni7qwCZD3veURw7HxpNAj9hR+S5N/pNeZgubQvJWyaPuQDm7PTs1+\ntFGiYNfAsiibX6Rv0wci3M+z2XEVAeR9Vzg6v4qoofDyoTbovn2LztaNEjTkB+oK\ntlvpNhg1zhou0jDVYFniEXvzjckxswHVb8cT0OMTKHALyLPrPOJzVtM9C1ew2Nnc\n3848xLiApMu3NBk0JqfcS3Bo5Y2b1FRVBvdt+2gFoKZix1MnZdAEZ8xQzL/a0YS5\nHd0wj5+EEKHfOd3A75uPa/WQmA+o0cBFfrzm69QDcSJSwGpzWrD1ScH3AK8nWvoj\nv7e9gukK/9yl1b4fQQ00vttwJPSgm9EnfPHLAtgXkRloI27H6/PuLoNvSAMQwuCD\nhQRlyGLPBETKkHeodfLoULjhDi1K2gKJTMhtbnUcAA7nEphkMhPWkBpgFdrH+5z4\nLxy+3ek0cqcI7K68EtrffU8jtUj9LFTUC8dERaIBs7NgQ/LfDbDfGh9g6qVj1hZl\nk9aaIPTm/xsi8v3u+0qaq7KzIBc9s59JOoA8TlpOaYdVgSQhHHLBaahOuAigH+VI\nisbC9vmqsThF2QdDtQt37keuqoda2E6sL7PUvIyVXDRfwX7uMDjlzTxHTymvq2Ck\nhtBqojBnThmjJQFgZXocHG8CAwEAAQ== 88 | 61666e3f:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlEyxkHggKCXC2Wf5Mzx4\nnZLFZvU2bgcA3exfNPO/g1YunKfQY+Jg4fr6tJUUTZ3XZUrhmLNWvpvSwDS19ZmC\nIXOu0+V94aNgnhMsk9rr59I8qcbsQGIBoHzuAl8NzZCgdbEXkiY90w1skUw8J57z\nqCsMBydAueMXuWqF5nGtYbi5vHwK42PffpiZ7G5Kjwn8nYMW5IZdL6ZnMEVJUWC9\nI4waeKg0yskczYDmZUEAtrn3laX9677ToCpiKrvmZYjlGl0BaGp3cxggP2xaDbUq\nqfFxWNgvUAb3pXD09JM6Mt6HSIJaFc9vQbrKB9KT515y763j5CC2KUsilszKi3mB\nHYe5PoebdjS7D1Oh+tRqfegU2IImzSwW3iwA7PJvefFuc/kNIijfS/gH/cAqAK6z\nbhdOtE/zc7TtqW2Wn5Y03jIZdtm12CxSxwgtCF1NPyEWyIxAQUX9ACb3M0FAZ61n\nfpPrvwTaIIxxZ01L3IzPLpbc44x/DhJIEU+iDt6IMTrHOphD9MCG4631eIdB0H1b\n6zbNX1CXTsafqHRFV9XmYYIeOMggmd90s3xIbEujA6HKNP/gwzO6CDJ+nHFDEqoF\nSkxRdTkEqjTjVKieURW7Swv7zpfu5PrsrrkyGnsRrBJJzXlm2FOOxnbI2iSL1B5F\nrO5kbUxFeZUIDq+7Yv4kLWcCAwEAAQ== 89 | 616a9724:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnC+bR4bHf/L6QdU4puhQ\ngl1MHePszRC38bzvVFDUJsmCaMCL2suCs2A2yxAgGb9pu9AJYLAmxQC4mM3jNqhg\n/E7yuaBbek3O02zN/ctvflJ250wZCy+z0ZGIp1ak6pu1j14IwHokl9j36zNfGtfv\nADVOcdpWITFFlPqwq1qt/H3UsKVmtiF3BNWWTeUEQwKvlU8ymxgS99yn0+4OPyNT\nL3EUeS+NQJtDS01unau0t7LnjUXn+XIneWny8bIYOQCuVR6s/gpIGuhBaUqwaJOw\n7jkJZYF2Ij7uPb4b5/R3vX2FfxxqEHqssFSg8FFUNTZz3qNZs0CRVyfA972g9WkJ\nhPfn31pQYil4QGRibCMIeU27YAEjXoqfJKEPh4UWMQsQLrEfdGfb8VgwrPbniGfU\nL3jKJR3VAafL9330iawzVQDlIlwGl6u77gEXMl9K0pfazunYhAp+BMP+9ot5ckK+\nosmrqj11qMESsAj083GeFdfV3pXEIwUytaB0AKEht9DbqUfiE/oeZ/LAXgySMtVC\nsbC4ESmgVeY2xSBIJdDyUap7FR49GGrw0W49NUv9gRgQtGGaNVQQO9oGL2PBC41P\niWF9GLoX30HIz1P8PF/cZvicSSPkQf2Z6TV+t0ebdGNS5DjapdnCrq8m9Z0pyKsQ\nuxAL2a7zX8l5i1CZh1ycUGsCAwEAAQ== 90 | 616abc23:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0MfCDrhODRCIxR9Dep1s\neXafh5CE5BrF4WbCgCsevyPIdvTeyIaW4vmO3bbG4VzhogDZju+R3IQYFuhoXP5v\nY+zYJGnwrgz3r5wYAvPnLEs1+dtDKYOgJXQj+wLJBW1mzRDL8FoRXOe5iRmn1EFS\nwZ1DoUvyu7/J5r0itKicZp3QKED6YoilXed+1vnS4Sk0mzN4smuMR9eO1mMCqNp9\n9KTfRDHTbakIHwasECCXCp50uXdoW6ig/xUAFanpm9LtK6jctNDbXDhQmgvAaLXZ\nLvFqoaYJ/CvWkyYCgL6qxvMvVmPoRv7OPcyni4xR/WgWa0MSaEWjgPx3+yj9fiMA\n1S02pFWFDOr5OUF/O4YhFJvUCOtVsUPPfA/Lj6faL0h5QI9mQhy5Zb9TTaS9jB6p\nLw7u0dJlrjFedk8KTJdFCcaGYHP6kNPnOxMylcB/5WcztXZVQD5WpCicGNBxCGMm\nW64SgrV7M07gQfL/32QLsdqPUf0i8hoVD8wfQ3EpbQzv6Fk1Cn90bZqZafg8XWGY\nwddhkXk7egrr23Djv37V2okjzdqoyLBYBxMz63qQzFoAVv5VoY2NDTbXYUYytOvG\nGJ1afYDRVWrExCech1mX5ZVUB1br6WM+psFLJFoBFl6mDmiYt0vMYBddKISsvwLl\nIJQkzDwtXzT2cSjoj3T5QekCAwEAAQ== 91 | 616ac3bc:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvaaoSLab+IluixwKV5Od\n0gib2YurjPatGIbn5Ov2DLUFYiebj2oJINXJSwUOO+4WcuHFEqiL/1rya+k5hLZt\nhnPL1tn6QD4rESznvGSasRCQNT2vS/oyZbTYJRyAtFkEYLlq0t3S3xBxxHWuvIf0\nqVxVNYpQWyM3N9RIeYBR/euXKJXileSHk/uq1I5wTC0XBIHWcthczGN0m9wBEiWS\n0m3cnPk4q0Ea8mUJ91Rqob19qETz6VbSPYYpZk3qOycjKosuwcuzoMpwU8KRiMFd\n5LHtX0Hx85ghGsWDVtS0c0+aJa4lOMGvJCAOvDfqvODv7gKlCXUpgumGpLdTmaZ8\n1RwqspAe3IqBcdKTqRD4m2mSg23nVx2FAY3cjFvZQtfooT7q1ItRV5RgH6FhQSl7\n+6YIMJ1Bf8AAlLdRLpg+doOUGcEn+pkDiHFgI8ylH1LKyFKw+eXaAml/7DaWZk1d\ndqggwhXOhc/UUZFQuQQ8A8zpA13PcbC05XxN2hyP93tCEtyynMLVPtrRwDnHxFKa\nqKzs3rMDXPSXRn3ZZTdKH3069ApkEjQdpcwUh+EmJ1Ve/5cdtzT6kKWCjKBFZP/s\n91MlRrX2BTRdHaU5QJkUheUtakwxuHrdah2F94lRmsnQlpPr2YseJu6sIE+Dnx4M\nCfhdVbQL2w54R645nlnohu8CAwEAAQ== 92 | 616adfeb:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAq0BFD1D4lIxQcsqEpQzU\npNCYM3aP1V/fxxVdT4DWvSI53JHTwHQamKdMWtEXetWVbP5zSROniYKFXd/xrD9X\n0jiGHey3lEtylXRIPxe5s+wXoCmNLcJVnvTcDtwx/ne2NLHxp76lyc25At+6RgE6\nADjLVuoD7M4IFDkAsd8UQ8zM0Dww9SylIk/wgV3ZkifecvgUQRagrNUdUjR56EBZ\nraQrev4hhzOgwelT0kXCu3snbUuNY/lU53CoTzfBJ5UfEJ5pMw1ij6X0r5S9IVsy\nKLWH1hiO0NzU2c8ViUYCly4Fe9xMTFc6u2dy/dxf6FwERfGzETQxqZvSfrRX+GLj\n/QZAXiPg5178hT/m0Y3z5IGenIC/80Z9NCi+byF1WuJlzKjDcF/TU72zk0+PNM/H\nKuppf3JT4DyjiVzNC5YoWJT2QRMS9KLP5iKCSThwVceEEg5HfhQBRT9M6KIcFLSs\nmFjx9kNEEmc1E8hl5IR3+3Ry8G5/bTIIruz14jgeY9u5jhL8Vyyvo41jgt9sLHR1\n/J1TxKfkgksYev7PoX6/ZzJ1ksWKZY5NFoDXTNYUgzFUTOoEaOg3BAQKadb3Qbbq\nXIrxmPBdgrn9QI7NCgfnAY3Tb4EEjs3ON/BNyEhUENcXOH6I1NbcuBQ7g9P73kE4\nVORdoc8MdJ5eoKBpO8Ww8HECAwEAAQ== 93 | 616ae350:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyduVzi1mWm+lYo2Tqt/0\nXkCIWrDNP1QBMVPrE0/ZlU2bCGSoo2Z9FHQKz/mTyMRlhNqTfhJ5qU3U9XlyGOPJ\npiM+b91g26pnpXJ2Q2kOypSgOMOPA4cQ42PkHBEqhuzssfj9t7x47ppS94bboh46\nxLSDRff/NAbtwTpvhStV3URYkxFG++cKGGa5MPXBrxIp+iZf9GnuxVdST5PGiVGP\nODL/b69sPJQNbJHVquqUTOh5Ry8uuD2WZuXfKf7/C0jC/ie9m2+0CttNu9tMciGM\nEyKG1/Xhk5iIWO43m4SrrT2WkFlcZ1z2JSf9Pjm4C2+HovYpihwwdM/OdP8Xmsnr\nDzVB4YvQiW+IHBjStHVuyiZWc+JsgEPJzisNY0Wyc/kNyNtqVKpX6dRhMLanLmy+\nf53cCSI05KPQAcGj6tdL+D60uKDkt+FsDa0BTAobZ31OsFVid0vCXtsbplNhW1IF\nHwsGXBTVcfXg44RLyL8Lk/2dQxDHNHzAUslJXzPxaHBLmt++2COa2EI1iWlvtznk\nOk9WP8SOAIj+xdqoiHcC4j72BOVVgiITIJNHrbppZCq6qPR+fgXmXa+sDcGh30m6\n9Wpbr28kLMSHiENCWTdsFij+NQTd5S47H7XTROHnalYDuF1RpS+DpQidT5tUimaT\nJZDr++FjKrnnijbyNF8b98UCAwEAAQ== 94 | 616db30d:MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnpUpyWDWjlUk3smlWeA0\nlIMW+oJ38t92CRLHH3IqRhyECBRW0d0aRGtq7TY8PmxjjvBZrxTNDpJT6KUk4LRm\na6A6IuAI7QnNK8SJqM0DLzlpygd7GJf8ZL9SoHSH+gFsYF67Cpooz/YDqWrlN7Vw\ntO00s0B+eXy+PCXYU7VSfuWFGK8TGEv6HfGMALLjhqMManyvfp8hz3ubN1rK3c8C\nUS/ilRh1qckdbtPvoDPhSbTDmfU1g/EfRSIEXBrIMLg9ka/XB9PvWRrekrppnQzP\nhP9YE3x/wbFc5QqQWiRCYyQl/rgIMOXvIxhkfe8H5n1Et4VAorkpEAXdsfN8KSVv\nLSMazVlLp9GYq5SUpqYX3KnxdWBgN7BJoZ4sltsTpHQ/34SXWfu3UmyUveWj7wp0\nx9hwsPirVI00EEea9AbP7NM2rAyu6ukcm4m6ATd2DZJIViq2es6m60AE6SMCmrQF\nwmk4H/kdQgeAELVfGOm2VyJ3z69fQuywz7xu27S6zTKi05Qlnohxol4wVb6OB7qG\nLPRtK9ObgzRo/OPumyXqlzAi/Yvyd1ZQk8labZps3e16bQp8+pVPiumWioMFJDWV\nGZjCmyMSU8V6MB6njbgLHoyg2LCukCAeSjbPGGGYhnKLm1AKSoJh3IpZuqcKCk5C\n8CM1S15HxV78s9dFntEqIokCAwEAAQ== 95 | ' 96 | 97 | # Version of alpine-chroot-install script. 98 | VERSION='0.14.0' 99 | 100 | 101 | #======================= F u n c t i o n s =======================# 102 | 103 | die() { 104 | printf '\033[1;31mERROR:\033[0m %s\n' "$@" >&2 # bold red 105 | exit 1 106 | } 107 | 108 | einfo() { 109 | printf '\n\033[1;36m> %s\033[0m\n' "$@" >&2 # bold cyan 110 | } 111 | 112 | ewarn() { 113 | printf '\033[1;33m> %s\033[0m\n' "$@" >&2 # bold yellow 114 | } 115 | 116 | # Writes Alpine APK keys embedded in this script into directory $1. 117 | dump_alpine_keys() { 118 | local dest_dir="$1" 119 | local content id line 120 | 121 | mkdir -p "$dest_dir" 122 | for line in $ALPINE_KEYS; do 123 | id=${line%%:*} 124 | content=${line#*:} 125 | 126 | printf -- "-----BEGIN PUBLIC KEY-----\n$content\n-----END PUBLIC KEY-----\n" \ 127 | > "$dest_dir/alpine-devel@lists.alpinelinux.org-$id.rsa.pub" 128 | done 129 | } 130 | 131 | normalize_arch() { 132 | case "$1" in 133 | x86 | i[3456]86) echo 'i386';; 134 | armhf | armv[4-9]) echo 'arm';; 135 | *) echo "$1";; 136 | esac 137 | } 138 | 139 | fetch_url() { 140 | local url="$1" 141 | 142 | echo "fetch $url" >&2 143 | if command -v curl >/dev/null; then 144 | curl --remote-name --connect-timeout 10 -fsSL "$url" 145 | elif command -v wget >/dev/null; then 146 | wget -T 10 --no-verbose "$url" 147 | else 148 | die 'Cannot download a file: neither curl nor wget is available!' 149 | fi 150 | } 151 | 152 | download_file() ( 153 | local url="$1" 154 | local sha256="$2" 155 | local dest="${3:-.}" 156 | 157 | mkdir -p "$dest" \ 158 | && cd "$dest" \ 159 | && rm -f "${url##*/}" \ 160 | && fetch_url "$url" \ 161 | && echo "$sha256 ${url##*/}" | sha256sum -c 162 | ) 163 | 164 | usage() { 165 | sed -En '/^#---help---/,/^#---help---/p' "$0" | sed -E 's/^# ?//; 1d;$d;' 166 | } 167 | 168 | gen_chroot_script() { 169 | cat <<-EOF 170 | #!/bin/sh 171 | set -e 172 | 173 | ENV_FILTER_REGEX='($(echo "$CHROOT_KEEP_VARS" | tr -s ' ' '|'))' 174 | EOF 175 | cat <<-'EOF' 176 | 177 | user='root' 178 | if [ $# -ge 2 ] && [ "$1" = '-u' ]; then 179 | user="$2"; shift 2 180 | fi 181 | oldpwd="$(pwd)" 182 | [ "$(id -u)" -eq 0 ] || _sudo='sudo' 183 | 184 | tmpfile="$(mktemp)" 185 | chmod 644 "$tmpfile" 186 | export | sed -En "s/^([^=]+ ${ENV_FILTER_REGEX}=)('.*'|\".*\")$/\1\3/p" > "$tmpfile" || true 187 | 188 | cd "$(dirname "$0")" 189 | $_sudo mv "$tmpfile" env.sh 190 | $_sudo chroot . /usr/bin/env -i su -l "$user" \ 191 | sh -c ". /etc/profile; . /env.sh; cd '$oldpwd' 2>/dev/null; \"\$@\"" \ 192 | -- "${@:-sh}" 193 | EOF 194 | # NOTE: ash does not load login profile when run with QEMU user-mode 195 | # emulation (I have no clue why), that's why /etc/profile is sourced here. 196 | } 197 | 198 | gen_destroy_script() { 199 | cat <<-'EOF' 200 | #!/bin/sh 201 | set -e 202 | 203 | remove=no 204 | case "$1" in 205 | -r | --remove) remove=yes;; 206 | '') ;; 207 | *) echo "Usage: $0 [-r | --remove]"; exit 1;; 208 | esac 209 | 210 | SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) 211 | [ "$(id -u)" -eq 0 ] || _sudo='sudo' 212 | 213 | # Unmounts all filesystem under the specified directory tree. 214 | cat /proc/mounts | cut -d' ' -f2 | grep "^$SCRIPT_DIR." | sort -r | while read path; do 215 | echo "Unmounting $path" >&2 216 | $_sudo umount -fn "$path" || exit 1 217 | done 218 | 219 | if [ "$remove" = yes ]; then 220 | rm_opts='' 221 | # Just to be extra careful... 222 | rm --help 2>&1 | grep -Fq 'one-file-system' && rm_opts='--one-file-system' 223 | 224 | echo "Removing $SCRIPT_DIR" >&2 225 | $_sudo rm -Rf $rm_opts "$SCRIPT_DIR" 226 | else 227 | echo "If you want to remove $SCRIPT_DIR directory, run: $0 --remove" >&2 228 | fi 229 | EOF 230 | } 231 | 232 | #============================ M a i n ============================# 233 | 234 | while getopts 'a:b:d:i:k:m:p:r:t:hv' OPTION; do 235 | case "$OPTION" in 236 | a) ARCH="$OPTARG";; 237 | b) ALPINE_BRANCH="$OPTARG";; 238 | d) CHROOT_DIR="$OPTARG";; 239 | i) BIND_DIR="$OPTARG";; 240 | k) CHROOT_KEEP_VARS="${CHROOT_KEEP_VARS:-} $OPTARG";; 241 | m) ALPINE_MIRROR="$OPTARG";; 242 | p) ALPINE_PACKAGES="${ALPINE_PACKAGES:-} $OPTARG";; 243 | r) EXTRA_REPOS="${EXTRA_REPOS:-} $OPTARG";; 244 | t) TEMP_DIR="$OPTARG";; 245 | h) usage; exit 0;; 246 | v) echo "alpine-chroot-install $VERSION"; exit 0;; 247 | esac 248 | done 249 | 250 | : ${ALPINE_BRANCH:="latest-stable"} 251 | : ${ALPINE_MIRROR:="http://dl-cdn.alpinelinux.org/alpine"} 252 | : ${ALPINE_PACKAGES:="build-base ca-certificates ssl_client openrc qemu-guest-agent"} 253 | : ${ARCH:=$(uname -m)} 254 | : ${BIND_DIR:=} 255 | : ${CHROOT_DIR:="/alpine"} 256 | : ${CHROOT_KEEP_VARS:="ARCH CI TRAVIS_.*"} 257 | : ${EXTRA_REPOS:=} 258 | : ${TEMP_DIR:=$(mktemp -d || echo /tmp/alpine)} 259 | 260 | # Note: Binding $PWD into chroot as default was a bad idea. It's convenient 261 | # on Travis, but dangerous in general. However, all existing .travis.yml relies 262 | # on this behaviour, so we can't (shouldn't) remove it completely. 263 | [ "$BIND_DIR" ] || case "$(pwd)" in 264 | /home/*) BIND_DIR="$(pwd)";; 265 | esac 266 | 267 | 268 | if [ "$(id -u)" -ne 0 ]; then 269 | die 'This script must be run as root!' 270 | fi 271 | 272 | mkdir -p "$CHROOT_DIR" 273 | cd "$CHROOT_DIR" 274 | 275 | (cd /bin && curl -OL $APK_TOOLS_URI) 276 | APK="/bin/apk.static" 277 | chmod +x "$APK" 278 | 279 | einfo "Installing Alpine Linux $ALPINE_BRANCH ($ARCH) into chroot" 280 | 281 | mkdir -p "$CHROOT_DIR"/etc/apk 282 | cd "$CHROOT_DIR" 283 | 284 | printf '%s\n' \ 285 | "$ALPINE_MIRROR/$ALPINE_BRANCH/main" \ 286 | "$ALPINE_MIRROR/$ALPINE_BRANCH/community" \ 287 | $EXTRA_REPOS \ 288 | > etc/apk/repositories 289 | 290 | dump_alpine_keys etc/apk/keys/ 291 | 292 | cp /etc/resolv.conf etc/resolv.conf 293 | mkdir -p etc/conf.d 294 | cp /etc/conf.d/qemu-guest-agent etc/conf.d/qemu-guest-agent 295 | 296 | "$APK" add \ 297 | --root . --update-cache --initdb --no-progress \ 298 | ${ARCH:+--arch $ARCH} \ 299 | alpine-baselayout apk-tools busybox busybox-suid musl-utils 300 | 301 | if "$APK" info --root . --no-progress --quiet alpine-release >/dev/null; then 302 | "$APK" add --root . --no-progress alpine-release 303 | else 304 | # In Alpine <3.17, this package contains /etc/os-release, 305 | # /etc/alpine-release and /etc/issue, but we don't wanna install all 306 | # its dependencies (e.g. openrc). 307 | "$APK" fetch --root . --no-progress --stdout alpine-base \ 308 | | tar -xz etc 309 | fi 310 | 311 | gen_chroot_script > enter-chroot 312 | gen_destroy_script > destroy 313 | chmod +x enter-chroot destroy 314 | 315 | 316 | einfo 'Binding filesystems into chroot' 317 | 318 | mount -v -t proc none proc 319 | mount -v --rbind /sys sys 320 | mount --make-rprivate sys 321 | mount -v --rbind /dev dev 322 | mount --make-rprivate dev 323 | 324 | # Some systems (Ubuntu?) symlinks /dev/shm to /run/shm. 325 | if [ -L /dev/shm ] && [ -d /run/shm ]; then 326 | mkdir -p run/shm 327 | mount -v --bind /run/shm run/shm 328 | mount --make-private run/shm 329 | fi 330 | 331 | if [ -d "$BIND_DIR" ]; then 332 | mkdir -p "${CHROOT_DIR}${BIND_DIR}" 333 | mount -v --bind "$BIND_DIR" "${CHROOT_DIR}${BIND_DIR}" 334 | mount --make-private "${CHROOT_DIR}${BIND_DIR}" 335 | fi 336 | 337 | 338 | einfo 'Setting up Alpine' 339 | 340 | ./enter-chroot <<-EOF 341 | set -e 342 | apk update 343 | apk add $ALPINE_PACKAGES 344 | 345 | if [ -d /etc/sudoers.d ] && [ ! -e /etc/sudoers.d/wheel ]; then 346 | echo '%wheel ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/wheel 347 | fi 348 | 349 | if [ -n "${SUDO_USER:-}" ]; then 350 | adduser -u "${SUDO_UID:-1000}" -G users -s /bin/sh -D "${SUDO_USER:-}" || true 351 | fi 352 | EOF 353 | 354 | cat >&2 <<-EOF 355 | --- 356 | Alpine installation is complete 357 | Run $CHROOT_DIR/enter-chroot [-u ] [command] to enter the chroot 358 | and $CHROOT_DIR/destroy [--remove] to destroy it. 359 | EOF 360 | -------------------------------------------------------------------------------- /fs/etc/conf.d/qemu-guest-agent: -------------------------------------------------------------------------------- 1 | # Specifies the transport method used to communicate to QEMU on the host side 2 | # Default: virtio-serial 3 | #GA_METHOD="virtio-serial" 4 | 5 | # Specifies the device path for the communications back to QEMU on the host 6 | # Default: /dev/virtio-ports/org.qemu.guest_agent.0 7 | GA_PATH="/dev/vport1p0" 8 | -------------------------------------------------------------------------------- /fs/etc/group: -------------------------------------------------------------------------------- 1 | root:x:0: 2 | guest:x:500: 3 | nobody:x:65534: 4 | -------------------------------------------------------------------------------- /fs/etc/init.d/rcS: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | echo 0 99999 > /proc/sys/net/ipv4/ping_group_range 4 | 5 | ifconfig lo 127.0.0.1 6 | ifconfig eth0 10.0.2.15 7 | route add default gw 10.0.2.2 8 | 9 | udhcpc 10 | 11 | # Power button event 12 | mkdir -p /etc/acpi/PWRF 13 | echo '#!/bin/sh' > /etc/acpi/PWRF/00000080 14 | echo 'poweroff' >> /etc/acpi/PWRF/00000080 15 | chmod +x /etc/acpi/PWRF/00000080 16 | acpid 17 | 18 | # Setup dropbear ssh 19 | touch /var/log/lastlog 20 | dropbear -R -I 60 -E > /var/log/dropbear 2>&1 21 | 22 | # Setup vsock server 23 | echo "Run socat as vsock ssh proxyserver (port=${VSOCK_PORT})" 24 | socat VSOCK-LISTEN:${VSOCK_PORT},reuseaddr,fork TCP:127.0.0.1:22 > /var/log/vsock-server 2>&1 & 25 | 26 | -------------------------------------------------------------------------------- /fs/etc/inittab: -------------------------------------------------------------------------------- 1 | # Note: BusyBox init works just fine without an inittab. If no inittab is 2 | # found, it has the following default behavior: 3 | # ::sysinit:/etc/init.d/rcS 4 | # ::askfirst:/bin/sh 5 | # ::ctrlaltdel:/sbin/reboot 6 | # ::shutdown:/sbin/swapoff -a 7 | # ::shutdown:/bin/umount -a -r 8 | # ::restart:/sbin/init 9 | # tty2::askfirst:/bin/sh 10 | # tty3::askfirst:/bin/sh 11 | # tty4::askfirst:/bin/sh 12 | # 13 | # Boot-time system configuration/initialization script. 14 | # This is run first except when booting in single-user mode. 15 | # 16 | ::sysinit:/etc/init.d/rcS 17 | 18 | -------------------------------------------------------------------------------- /fs/etc/issue: -------------------------------------------------------------------------------- 1 | Login with root and no password. 2 | 3 | -------------------------------------------------------------------------------- /fs/etc/passwd: -------------------------------------------------------------------------------- 1 | root::0:0:root:/root:/bin/sh 2 | nobody:x:65534:65534:nobody:/proc/self:/dev/null 3 | 4 | -------------------------------------------------------------------------------- /fs/etc/resolv.conf: -------------------------------------------------------------------------------- 1 | # Google's nameserver 2 | nameserver 8.8.8.8 3 | 4 | # Cloudflare's nameserver 5 | nameserver 1.1.1.1 6 | 7 | # Virtual DNS from qemu user network. 8 | nameserver 10.0.2.3 9 | -------------------------------------------------------------------------------- /fs/etc/securetty: -------------------------------------------------------------------------------- 1 | # /etc/securetty: list of terminals on which root is allowed to login. 2 | # See securetty(5) and login(1). 3 | console 4 | 5 | -------------------------------------------------------------------------------- /fs/init: -------------------------------------------------------------------------------- 1 | #!/bin/busybox sh 2 | 3 | parse_cmdline() { 4 | local IFS=' ' 5 | local cmdline=$(cat /proc/cmdline) 6 | for x in $cmdline; do 7 | case $x in 8 | vsock_port=*) 9 | export VSOCK_PORT="${x#vsock_port=}" 10 | ;; 11 | esac 12 | done 13 | } 14 | 15 | # Recursively resolve tty aliases like console or tty0 16 | list_console_devices() { 17 | if ! [ -e /sys/class/tty/$1/active ]; then 18 | echo $1 19 | return 20 | fi 21 | for dev in $(cat /sys/class/tty/$1/active); do 22 | list_console_devices $dev 23 | done 24 | } 25 | 26 | setup_inittab_console(){ 27 | term=vt100 28 | # Inquire the kernel for list of console= devices 29 | consoles="$(for c in console $KOPT_consoles; do list_console_devices $c; done)" 30 | for tty in $consoles; do 31 | # do nothing if inittab already have the tty set up 32 | if ! grep -q "^$tty:" /etc/inittab; then 33 | echo "# enable login on alternative console" \ 34 | >> /etc/inittab 35 | # Baudrate of 0 keeps settings from kernel 36 | echo "$tty::respawn:/sbin/getty -L 0 $tty $term" \ 37 | >> /etc/inittab 38 | fi 39 | if [ -e /etc/securetty ] && ! grep -q -w "$tty" /etc/securetty; then 40 | echo "$tty" >> /etc/securetty 41 | fi 42 | done 43 | } 44 | 45 | busybox rm /init 46 | busybox mkdir -p /etc/network /etc/init.d /proc /root /sbin /sys /usr/bin /usr/sbin /tmp /var/run /var/log /etc/dropbear 47 | 48 | /bin/busybox --install -s 49 | export PATH=/usr/bin:/bin:/usr/sbin:/sbin 50 | 51 | mount -t proc proc /proc 52 | mount -t sysfs sysfs /sys 53 | 54 | # See mdev.txt in busybox document 55 | mdev -s 56 | 57 | mount -t devtmpfs -o exec,nosuid,mode=0755,size=2M devtmpfs /dev 2>/dev/null \ 58 | || mount -t tmpfs -o exec,nosuid,mode=0755,size=2M tmpfs /dev 59 | 60 | # Make sure /dev/null is a device node. If /dev/null does not exist yet, the command 61 | # mounting the devtmpfs will create it implicitly as an file with the "2>" redirection. 62 | # The -c check is required to deal with initramfs with pre-seeded device nodes without 63 | # error message. 64 | [ -c /dev/null ] || mknod -m 666 /dev/null c 1 3 65 | 66 | # Make sure /dev/kmsg is a device node. Writing to /dev/kmsg allows the use of the 67 | # earlyprintk kernel option to monitor early init progress. As above, the -c check 68 | # prevents an error if the device node has already been seeded. 69 | [ -c /dev/kmsg ] || mknod -m 660 /dev/kmsg c 1 11 70 | 71 | # pty device nodes (later system will need it) 72 | [ -c /dev/ptmx ] || mknod -m 666 /dev/ptmx c 5 2 73 | [ -d /dev/pts ] || mkdir -m 755 /dev/pts 74 | mount -t devpts -o gid=5,mode=0620,noexec,nosuid devpts /dev/pts 75 | 76 | # shared memory area (later system will need it) 77 | [ -d /dev/shm ] || mkdir /dev/shm 78 | mount -t tmpfs -o nodev,nosuid,noexec shm /dev/shm 79 | 80 | hostname localhost 81 | echo 'root:passwd' | chpasswd 82 | 83 | parse_cmdline 84 | setup_inittab_console 85 | 86 | # Export VSOCK_PORT to the environment if not set 87 | : ${VSOCK_PORT:=2222} 88 | export VSOCK_PORT 89 | 90 | exec /linuxrc 91 | -------------------------------------------------------------------------------- /fs/usr/share/udhcpc/default.script: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Busybox udhcpc dispatcher script. Copyright (C) 2009 by Axel Beckert. 3 | # 4 | # Based on the busybox example scripts and the old udhcp source 5 | # package default.* scripts. 6 | RESOLV_CONF="/etc/resolv.conf" 7 | case $1 in 8 | bound|renew) 9 | [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast" 10 | [ -n "$subnet" ] && NETMASK="netmask $subnet" 11 | /sbin/ifconfig $interface $ip $BROADCAST $NETMASK 12 | if [ -n "$router" ]; then 13 | echo "$0: Resetting default routes" 14 | while /sbin/route del default gw 0.0.0.0 dev $interface; do :; done 15 | metric=0 16 | for i in $router; do 17 | /sbin/route add default gw $i dev $interface metric $metric 18 | metric=$(($metric + 1)) 19 | done 20 | fi 21 | # Update resolver configuration file 22 | R="" 23 | [ -n "$domain" ] && R="domain $domain 24 | " 25 | for i in $dns; do 26 | echo "$0: Adding DNS $i" 27 | R="${R}nameserver $i 28 | " 29 | done 30 | if [ -x /sbin/resolvconf ]; then 31 | echo -n "$R" | resolvconf -a "${interface}.udhcpc" 32 | else 33 | echo -n "$R" > "$RESOLV_CONF" 34 | fi 35 | ;; 36 | deconfig) 37 | if [ -x /sbin/resolvconf ]; then 38 | resolvconf -d "${interface}.udhcpc" 39 | fi 40 | /sbin/ifconfig $interface 0.0.0.0 41 | ;; 42 | leasefail) 43 | echo "$0: Lease failed: $message" 44 | ;; 45 | nak) 46 | echo "$0: Received a NAK: $message" 47 | ;; 48 | *) 49 | echo "$0: Unknown udhcpc command: $1"; 50 | exit 1; 51 | ;; 52 | esac 53 | -------------------------------------------------------------------------------- /kconfig/aarch64.config: -------------------------------------------------------------------------------- 1 | # CONFIG_LOCALVERSION_AUTO is not set 2 | # CONFIG_CROSS_MEMORY_ATTACH is not set 3 | CONFIG_NO_HZ=y 4 | CONFIG_HIGH_RES_TIMERS=y 5 | # CONFIG_CPU_ISOLATION is not set 6 | CONFIG_IKCONFIG=y 7 | CONFIG_IKCONFIG_PROC=y 8 | CONFIG_NAMESPACES=y 9 | # CONFIG_UTS_NS is not set 10 | # CONFIG_TIME_NS is not set 11 | # CONFIG_PID_NS is not set 12 | # CONFIG_NET_NS is not set 13 | CONFIG_BLK_DEV_INITRD=y 14 | # CONFIG_RD_BZIP2 is not set 15 | # CONFIG_RD_LZMA is not set 16 | # CONFIG_RD_XZ is not set 17 | # CONFIG_RD_LZO is not set 18 | # CONFIG_RD_LZ4 is not set 19 | # CONFIG_RD_ZSTD is not set 20 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y 21 | CONFIG_EXPERT=y 22 | # CONFIG_ARM64_ERRATUM_826319 is not set 23 | # CONFIG_ARM64_ERRATUM_827319 is not set 24 | # CONFIG_ARM64_ERRATUM_824069 is not set 25 | # CONFIG_ARM64_ERRATUM_819472 is not set 26 | # CONFIG_ARM64_ERRATUM_832075 is not set 27 | # CONFIG_ARM64_ERRATUM_843419 is not set 28 | # CONFIG_ARM64_ERRATUM_1024718 is not set 29 | # CONFIG_ARM64_ERRATUM_1165522 is not set 30 | # CONFIG_ARM64_ERRATUM_1319367 is not set 31 | # CONFIG_ARM64_ERRATUM_1530923 is not set 32 | # CONFIG_ARM64_ERRATUM_1463225 is not set 33 | # CONFIG_ARM64_ERRATUM_1508412 is not set 34 | # CONFIG_CAVIUM_ERRATUM_22375 is not set 35 | # CONFIG_CAVIUM_ERRATUM_23154 is not set 36 | # CONFIG_CAVIUM_ERRATUM_27456 is not set 37 | # CONFIG_CAVIUM_ERRATUM_30115 is not set 38 | # CONFIG_CAVIUM_TX2_ERRATUM_219 is not set 39 | # CONFIG_FUJITSU_ERRATUM_010001 is not set 40 | # CONFIG_HISILICON_ERRATUM_161600802 is not set 41 | # CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set 42 | # CONFIG_QCOM_FALKOR_ERRATUM_1009 is not set 43 | # CONFIG_QCOM_QDF2400_ERRATUM_0065 is not set 44 | # CONFIG_QCOM_FALKOR_ERRATUM_E1041 is not set 45 | # CONFIG_NVIDIA_CARMEL_CNP_ERRATUM is not set 46 | # CONFIG_SOCIONEXT_SYNQUACER_PREITS is not set 47 | # CONFIG_RODATA_FULL_DEFAULT_ENABLED is not set 48 | # CONFIG_ARM64_TAGGED_ADDR_ABI is not set 49 | # CONFIG_ARM64_HW_AFDBM is not set 50 | # CONFIG_ARM64_PAN is not set 51 | # CONFIG_ARM64_RAS_EXTN is not set 52 | # CONFIG_ARM64_CNP is not set 53 | # CONFIG_ARM64_PTR_AUTH is not set 54 | # CONFIG_ARM64_AMU_EXTN is not set 55 | # CONFIG_ARM64_TLB_RANGE is not set 56 | # CONFIG_ARM64_BTI is not set 57 | # CONFIG_ARM64_E0PD is not set 58 | # CONFIG_ARM64_SVE is not set 59 | # CONFIG_EFI is not set 60 | # CONFIG_SUSPEND is not set 61 | CONFIG_CPU_IDLE=y 62 | # CONFIG_SECCOMP is not set 63 | # CONFIG_STACKPROTECTOR is not set 64 | CONFIG_COMPAT_32BIT_TIME=y 65 | # CONFIG_VMAP_STACK is not set 66 | # CONFIG_BLOCK is not set 67 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 68 | # CONFIG_SLAB_MERGE_DEFAULT is not set 69 | # CONFIG_COMPAT_BRK is not set 70 | # CONFIG_COMPACTION is not set 71 | # CONFIG_MIGRATION is not set 72 | CONFIG_NET=y 73 | CONFIG_PACKET=y 74 | CONFIG_UNIX=y 75 | CONFIG_INET=y 76 | # CONFIG_INET_DIAG is not set 77 | # CONFIG_IPV6 is not set 78 | CONFIG_NETFILTER=y 79 | CONFIG_NETFILTER_NETLINK_QUEUE=y 80 | CONFIG_VSOCKETS=y 81 | CONFIG_VIRTIO_VSOCKETS=y 82 | # CONFIG_PCPU_DEV_REFCNT is not set 83 | # CONFIG_RPS is not set 84 | # CONFIG_BQL is not set 85 | CONFIG_BT=y 86 | CONFIG_BT_VIRTIO=y 87 | # CONFIG_WIRELESS is not set 88 | # CONFIG_ETHTOOL_NETLINK is not set 89 | CONFIG_PCI=y 90 | CONFIG_PCI_HOST_GENERIC=y 91 | CONFIG_DEVTMPFS=y 92 | CONFIG_DEVTMPFS_MOUNT=y 93 | # CONFIG_STANDALONE is not set 94 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set 95 | # CONFIG_ARM_SMCCC_SOC_ID is not set 96 | CONFIG_NETDEVICES=y 97 | CONFIG_NETCONSOLE=y 98 | CONFIG_VIRTIO_NET=y 99 | # CONFIG_NET_VENDOR_3COM is not set 100 | # CONFIG_NET_VENDOR_ADAPTEC is not set 101 | # CONFIG_NET_VENDOR_AGERE is not set 102 | # CONFIG_NET_VENDOR_ALACRITECH is not set 103 | # CONFIG_NET_VENDOR_ALTEON is not set 104 | # CONFIG_NET_VENDOR_AMAZON is not set 105 | # CONFIG_NET_VENDOR_AMD is not set 106 | # CONFIG_NET_VENDOR_AQUANTIA is not set 107 | # CONFIG_NET_VENDOR_ARC is not set 108 | # CONFIG_NET_VENDOR_ATHEROS is not set 109 | # CONFIG_NET_VENDOR_BROADCOM is not set 110 | # CONFIG_NET_VENDOR_CADENCE is not set 111 | # CONFIG_NET_VENDOR_CAVIUM is not set 112 | # CONFIG_NET_VENDOR_CHELSIO is not set 113 | # CONFIG_NET_VENDOR_CISCO is not set 114 | # CONFIG_NET_VENDOR_CORTINA is not set 115 | # CONFIG_NET_VENDOR_DEC is not set 116 | # CONFIG_NET_VENDOR_DLINK is not set 117 | # CONFIG_NET_VENDOR_EMULEX is not set 118 | # CONFIG_NET_VENDOR_EZCHIP is not set 119 | # CONFIG_NET_VENDOR_GOOGLE is not set 120 | # CONFIG_NET_VENDOR_HISILICON is not set 121 | # CONFIG_NET_VENDOR_HUAWEI is not set 122 | # CONFIG_NET_VENDOR_INTEL is not set 123 | # CONFIG_NET_VENDOR_LITEX is not set 124 | # CONFIG_NET_VENDOR_MARVELL is not set 125 | # CONFIG_NET_VENDOR_MELLANOX is not set 126 | # CONFIG_NET_VENDOR_MICREL is not set 127 | # CONFIG_NET_VENDOR_MICROCHIP is not set 128 | # CONFIG_NET_VENDOR_MICROSEMI is not set 129 | # CONFIG_NET_VENDOR_MICROSOFT is not set 130 | # CONFIG_NET_VENDOR_MYRI is not set 131 | # CONFIG_NET_VENDOR_NI is not set 132 | # CONFIG_NET_VENDOR_NATSEMI is not set 133 | # CONFIG_NET_VENDOR_NETERION is not set 134 | # CONFIG_NET_VENDOR_NETRONOME is not set 135 | # CONFIG_NET_VENDOR_NVIDIA is not set 136 | # CONFIG_NET_VENDOR_OKI is not set 137 | # CONFIG_NET_VENDOR_PACKET_ENGINES is not set 138 | # CONFIG_NET_VENDOR_PENSANDO is not set 139 | # CONFIG_NET_VENDOR_QLOGIC is not set 140 | # CONFIG_NET_VENDOR_BROCADE is not set 141 | # CONFIG_NET_VENDOR_QUALCOMM is not set 142 | # CONFIG_NET_VENDOR_RDC is not set 143 | # CONFIG_NET_VENDOR_REALTEK is not set 144 | # CONFIG_NET_VENDOR_RENESAS is not set 145 | # CONFIG_NET_VENDOR_ROCKER is not set 146 | # CONFIG_NET_VENDOR_SAMSUNG is not set 147 | # CONFIG_NET_VENDOR_SEEQ is not set 148 | # CONFIG_NET_VENDOR_SILAN is not set 149 | # CONFIG_NET_VENDOR_SIS is not set 150 | # CONFIG_NET_VENDOR_SOLARFLARE is not set 151 | # CONFIG_NET_VENDOR_SMSC is not set 152 | # CONFIG_NET_VENDOR_SOCIONEXT is not set 153 | # CONFIG_NET_VENDOR_STMICRO is not set 154 | # CONFIG_NET_VENDOR_SUN is not set 155 | # CONFIG_NET_VENDOR_SYNOPSYS is not set 156 | # CONFIG_NET_VENDOR_TEHUTI is not set 157 | # CONFIG_NET_VENDOR_TI is not set 158 | # CONFIG_NET_VENDOR_VIA is not set 159 | # CONFIG_NET_VENDOR_WIZNET is not set 160 | # CONFIG_NET_VENDOR_XILINX is not set 161 | # CONFIG_WLAN is not set 162 | CONFIG_INPUT_EVDEV=y 163 | CONFIG_KEYBOARD_GPIO=y 164 | # CONFIG_INPUT_MOUSE is not set 165 | # CONFIG_VT is not set 166 | # CONFIG_LEGACY_PTYS is not set 167 | # CONFIG_LDISC_AUTOLOAD is not set 168 | CONFIG_SERIAL_AMBA_PL011=y 169 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y 170 | CONFIG_VIRTIO_CONSOLE=y 171 | CONFIG_HW_RANDOM_VIRTIO=y 172 | # CONFIG_DEVMEM is not set 173 | # CONFIG_DEVPORT is not set 174 | # CONFIG_PTP_1588_CLOCK is not set 175 | CONFIG_GPIOLIB=y 176 | # CONFIG_GPIO_CDEV is not set 177 | CONFIG_GPIO_PL061=y 178 | CONFIG_GPIO_VIRTIO=y 179 | # CONFIG_HWMON is not set 180 | CONFIG_DRM=y 181 | CONFIG_DRM_VIRTIO_GPU=y 182 | # CONFIG_HID_SUPPORT is not set 183 | # CONFIG_USB_SUPPORT is not set 184 | CONFIG_VIRTIO_PCI=y 185 | # CONFIG_VIRTIO_PCI_LEGACY is not set 186 | CONFIG_VIRTIO_BALLOON=y 187 | CONFIG_VIRTIO_MMIO=y 188 | # CONFIG_VHOST_MENU is not set 189 | # CONFIG_SURFACE_PLATFORMS is not set 190 | # CONFIG_ARM_ARCH_TIMER_EVTSTREAM is not set 191 | # CONFIG_FSL_ERRATUM_A008585 is not set 192 | # CONFIG_HISILICON_ERRATUM_161010101 is not set 193 | # CONFIG_ARM64_ERRATUM_858921 is not set 194 | # CONFIG_IOMMU_SUPPORT is not set 195 | # CONFIG_DNOTIFY is not set 196 | # CONFIG_INOTIFY_USER is not set 197 | CONFIG_FUSE_FS=y 198 | CONFIG_VIRTIO_FS=y 199 | CONFIG_TMPFS=y 200 | CONFIG_TMPFS_POSIX_ACL=y 201 | # CONFIG_MISC_FILESYSTEMS is not set 202 | # CONFIG_NETWORK_FILESYSTEMS is not set 203 | CONFIG_PRINTK_TIME=y 204 | # CONFIG_SYMBOLIC_ERRNAME is not set 205 | # CONFIG_DEBUG_BUGVERBOSE is not set 206 | # CONFIG_DEBUG_MISC is not set 207 | CONFIG_STRIP_ASM_SYMS=y 208 | # CONFIG_SECTION_MISMATCH_WARN_ONLY is not set 209 | # CONFIG_FTRACE is not set 210 | # CONFIG_RUNTIME_TESTING_MENU is not set 211 | -------------------------------------------------------------------------------- /kconfig/x86_64.config: -------------------------------------------------------------------------------- 1 | # CONFIG_LOCALVERSION_AUTO is not set 2 | CONFIG_HZ_PERIODIC=y 3 | CONFIG_NO_HZ=y 4 | CONFIG_HIGH_RES_TIMERS=y 5 | CONFIG_NAMESPACES=y 6 | # CONFIG_UTS_NS is not set 7 | # CONFIG_TIME_NS is not set 8 | # CONFIG_PID_NS is not set 9 | CONFIG_BLK_DEV_INITRD=y 10 | # CONFIG_RD_BZIP2 is not set 11 | # CONFIG_RD_LZMA is not set 12 | # CONFIG_RD_XZ is not set 13 | # CONFIG_RD_LZO is not set 14 | # CONFIG_RD_LZ4 is not set 15 | # CONFIG_RD_ZSTD is not set 16 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y 17 | CONFIG_EXPERT=y 18 | CONFIG_SMP=y 19 | CONFIG_HYPERVISOR_GUEST=y 20 | CONFIG_PARAVIRT=y 21 | CONFIG_PARAVIRT_SPINLOCKS=y 22 | CONFIG_XEN=y 23 | CONFIG_XEN_PVH=y 24 | CONFIG_PARAVIRT_TIME_ACCOUNTING=y 25 | CONFIG_NR_CPUS=256 26 | # CONFIG_SCHED_MC is not set 27 | CONFIG_EFI=y 28 | CONFIG_EFI_STUB=y 29 | CONFIG_HZ_100=y 30 | CONFIG_HIBERNATION=y 31 | CONFIG_ACPI_PCI_SLOT=y 32 | CONFIG_ACPI_APEI=y 33 | CONFIG_CPU_IDLE_GOV_LADDER=y 34 | # CONFIG_SECCOMP is not set 35 | # CONFIG_MQ_IOSCHED_DEADLINE is not set 36 | # CONFIG_MQ_IOSCHED_KYBER is not set 37 | # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 38 | # CONFIG_SLAB_MERGE_DEFAULT is not set 39 | # CONFIG_COMPAT_BRK is not set 40 | # CONFIG_COMPACTION is not set 41 | # CONFIG_VM_EVENT_COUNTERS is not set 42 | CONFIG_NET=y 43 | CONFIG_PACKET=y 44 | CONFIG_UNIX=y 45 | CONFIG_INET=y 46 | CONFIG_IP_PNP=y 47 | CONFIG_IP_PNP_DHCP=y 48 | CONFIG_IP_PNP_BOOTP=y 49 | CONFIG_IP_PNP_RARP=y 50 | # CONFIG_IPV6 is not set 51 | CONFIG_NETFILTER=y 52 | CONFIG_NETFILTER_NETLINK_QUEUE=y 53 | CONFIG_VSOCKETS=y 54 | CONFIG_VIRTIO_VSOCKETS=y 55 | CONFIG_BT=y 56 | CONFIG_BT_VIRTIO=y 57 | CONFIG_PCI=y 58 | CONFIG_PCI_MSI=y 59 | CONFIG_DEVTMPFS=y 60 | CONFIG_DEVTMPFS_MOUNT=y 61 | # CONFIG_STANDALONE is not set 62 | # CONFIG_PREVENT_FIRMWARE_BUILD is not set 63 | CONFIG_OF=y 64 | CONFIG_BLK_DEV_LOOP=y 65 | CONFIG_VIRTIO_BLK=y 66 | # CONFIG_SCSI_PROC_FS is not set 67 | # CONFIG_BLK_DEV_BSG is not set 68 | CONFIG_VMWARE_PVSCSI=y 69 | CONFIG_ATA=y 70 | # CONFIG_ATA_VERBOSE_ERROR is not set 71 | # CONFIG_ATA_FORCE is not set 72 | # CONFIG_SATA_PMP is not set 73 | CONFIG_SATA_AHCI=y 74 | CONFIG_ATA_PIIX=y 75 | CONFIG_ATA_GENERIC=y 76 | CONFIG_FUSION=y 77 | CONFIG_NETDEVICES=y 78 | CONFIG_NETCONSOLE=y 79 | CONFIG_VIRTIO_NET=y 80 | CONFIG_E1000=y 81 | # CONFIG_XEN_NETDEV_FRONTEND is not set 82 | CONFIG_INPUT_EVDEV=y 83 | # CONFIG_INPUT_KEYBOARD is not set 84 | # CONFIG_INPUT_MOUSE is not set 85 | # CONFIG_SERIO is not set 86 | # CONFIG_LEGACY_PTYS is not set 87 | # CONFIG_LEGACY_TIOCSTI is not set 88 | # CONFIG_LDISC_AUTOLOAD is not set 89 | CONFIG_SERIAL_8250=y 90 | # CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set 91 | # CONFIG_SERIAL_8250_PNP is not set 92 | CONFIG_SERIAL_8250_CONSOLE=y 93 | # CONFIG_SERIAL_8250_PCI is not set 94 | # CONFIG_SERIAL_8250_EXAR is not set 95 | CONFIG_SERIAL_8250_NR_UARTS=16 96 | CONFIG_SERIAL_8250_EXTENDED=y 97 | CONFIG_SERIAL_8250_MANY_PORTS=y 98 | CONFIG_SERIAL_8250_SHARE_IRQ=y 99 | CONFIG_SERIAL_8250_RSA=y 100 | # CONFIG_SERIAL_8250_LPSS is not set 101 | # CONFIG_SERIAL_8250_MID is not set 102 | # CONFIG_SERIAL_8250_PERICOM is not set 103 | CONFIG_SERIAL_DEV_BUS=y 104 | CONFIG_TTY_PRINTK=y 105 | CONFIG_VIRTIO_CONSOLE=y 106 | # CONFIG_HW_RANDOM_VIA is not set 107 | CONFIG_HW_RANDOM_VIRTIO=y 108 | CONFIG_NVRAM=y 109 | CONFIG_I2C_I801=y 110 | # CONFIG_PTP_1588_CLOCK is not set 111 | CONFIG_POWER_RESET=y 112 | # CONFIG_HWMON is not set 113 | CONFIG_DRM=y 114 | CONFIG_DRM_VIRTIO_GPU=y 115 | CONFIG_FB=y 116 | CONFIG_FB_EFI=y 117 | # CONFIG_HID is not set 118 | # CONFIG_USB_SUPPORT is not set 119 | CONFIG_VIRTIO_PCI=y 120 | CONFIG_VIRTIO_BALLOON=y 121 | CONFIG_VIRTIO_INPUT=y 122 | CONFIG_VIRTIO_MMIO=y 123 | CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y 124 | # CONFIG_VHOST_MENU is not set 125 | # CONFIG_XEN_BALLOON is not set 126 | # CONFIG_XEN_DEV_EVTCHN is not set 127 | # CONFIG_XEN_BACKEND is not set 128 | # CONFIG_XENFS is not set 129 | # CONFIG_XEN_SYS_HYPERVISOR is not set 130 | # CONFIG_XEN_GNTDEV is not set 131 | # CONFIG_XEN_GRANT_DEV_ALLOC is not set 132 | # CONFIG_SURFACE_PLATFORMS is not set 133 | CONFIG_INTEL_IOMMU=y 134 | CONFIG_VIRTIO_IOMMU=y 135 | CONFIG_EXT4_FS=y 136 | # CONFIG_DNOTIFY is not set 137 | # CONFIG_INOTIFY_USER is not set 138 | CONFIG_FUSE_FS=y 139 | CONFIG_CUSE=y 140 | CONFIG_VIRTIO_FS=y 141 | CONFIG_OVERLAY_FS=y 142 | CONFIG_ISO9660_FS=y 143 | CONFIG_VFAT_FS=y 144 | CONFIG_FAT_DEFAULT_UTF8=y 145 | CONFIG_TMPFS=y 146 | CONFIG_TMPFS_POSIX_ACL=y 147 | # CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set 148 | CONFIG_CRYPTO_DEV_VIRTIO=y 149 | CONFIG_CRC_ITU_T=y 150 | CONFIG_PRINTK_TIME=y 151 | # CONFIG_SYMBOLIC_ERRNAME is not set 152 | CONFIG_STRIP_ASM_SYMS=y 153 | # CONFIG_SECTION_MISMATCH_WARN_ONLY is not set 154 | # CONFIG_RCU_TRACE is not set 155 | # CONFIG_FTRACE is not set 156 | # CONFIG_RUNTIME_TESTING_MENU is not set 157 | -------------------------------------------------------------------------------- /puipui-linux-tool: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # vim: set ts=4: 3 | #---help--- 4 | # Usage: puipui-linux-tool [options] 5 | # 6 | # This script builds puipui linux kernel and it's initramfs. 7 | # 8 | # Options: 9 | # -u Only updates linux kernel config files. it does not build kernel or initramfs. 10 | #---help--- 11 | 12 | set -eu 13 | 14 | version=1.0.3 15 | 16 | srcdir="$PWD" 17 | target_arch="aarch64 x86_64" 18 | kernver=6.11.5 19 | busyboxver=1.36.1 20 | dropbearver=2024.86 21 | socatver=1.8.0.1 22 | name="PUI PUI Linux" 23 | 24 | #if [ -z "$SOURCE_DATE_EPOCH" ]; then 25 | SOURCE_DATE_EPOCH=$(date -u "+%s") 26 | #fi 27 | 28 | msg() { echo -e "\033]2; $*\007\n=== $*"; } 29 | 30 | usage() { 31 | sed -En '/^#---help---/,/^#---help---/p' "$0" | sed -E 's/^# ?//; 1d;$d;' 32 | } 33 | 34 | fetch() { 35 | local url="$1" 36 | local archive=${url##*/} 37 | (cd $srcdir && curl -OL $url) 38 | tar -xvf "$srcdir"/"$archive" -C "$srcdir" 39 | } 40 | 41 | _kernelarch() { 42 | local arch="$1" 43 | if [ $arch == aarch64 ]; then 44 | echo arm64 45 | elif [ $arch == x86_64 ]; then 46 | echo x86 47 | else echo "Unknown TARGET $arch"; exit 1; 48 | fi 49 | } 50 | 51 | _kconfig() { 52 | local fname="$1" 53 | echo "kconfig/$fname" 54 | } 55 | 56 | _builddir() { 57 | local arch="$1" 58 | local dirname="$2" 59 | echo "$srcdir"/build-$arch/$dirname 60 | } 61 | 62 | _artifact() { 63 | local arch="$1" 64 | _builddir $arch "artifact" 65 | } 66 | 67 | _cross_compile_target() { 68 | local arch="$1" 69 | echo $arch-linux-musl- 70 | } 71 | 72 | _musl_path() { 73 | local arch="$1" 74 | local machine_arch="$(uname -m)" 75 | if [ $arch == $machine_arch ]; then 76 | echo $arch-linux-musl-native 77 | else 78 | echo $arch-linux-musl-cross 79 | fi 80 | } 81 | 82 | setup_musl_path() { 83 | local arch="$1" 84 | local musl_path="$(_musl_path $arch)" 85 | local musl_abs_path="$srcdir/$musl_path" 86 | local musl_prefix="$arch-linux-musl-" 87 | local machine_arch="$(uname -m)" 88 | if [ "aarch64" == $machine_arch ]; then 89 | fetch "https://github.com/Code-Hex/musl-cross-make-arm64/releases/download/v0.0.4/${musl_path}.tar.gz" 90 | tar xvf "$musl_abs_path.tar.gz" 91 | else 92 | fetch "https://musl.cc/${musl_path}.tgz" 93 | tar xvf "$musl_abs_path.tgz" 94 | ln -s $musl_abs_path/bin/{strip,"${musl_prefix}strip"} 95 | fi 96 | } 97 | 98 | _prepareconfig() { 99 | local _arch="$1" 100 | local _config=$(_kconfig $_arch.config) 101 | local _builddir=$(_builddir $_arch linux-kernel) 102 | mkdir -p "$_builddir" 103 | 104 | local PATH="$srcdir/$(_musl_path $_arch)/bin:$PATH" 105 | cp "$srcdir"/$_config "$_builddir"/.config 106 | msg "Configuring $name kernel ($_arch)" 107 | make -C "$srcdir"/linux-$kernver \ 108 | CROSS_COMPILE=$(_cross_compile_target $_arch) \ 109 | O="$_builddir" \ 110 | ARCH="$(_kernelarch $_arch)" \ 111 | olddefconfig 112 | } 113 | 114 | build_kern() { 115 | unset LDFLAGS 116 | export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" 117 | for _arch in $target_arch; do 118 | _prepareconfig "$_arch" 119 | done 120 | for _arch in $target_arch; do 121 | msg "Building $_arch $name kernel" 122 | 123 | # Target validation 124 | if [ $_arch == aarch64 ]; then 125 | VMLINUX=arch/arm64/boot/Image.gz 126 | elif [ $_arch == x86_64 ]; then 127 | VMLINUX=arch/x86/boot/bzImage 128 | else echo "Unknown TARGET $_arch"; exit 1; 129 | fi 130 | 131 | local PATH="$srcdir/$(_musl_path $_arch)/bin:$PATH" 132 | cd $(_builddir $_arch linux-kernel) 133 | make CROSS_COMPILE=$(_cross_compile_target $_arch) \ 134 | ARCH="$(_kernelarch $_arch)" \ 135 | AWK="${AWK:-mawk}" \ 136 | KBUILD_BUILD_VERSION="$version-PUI PUI!" \ 137 | KBUILD_BUILD_HOST="molbuilder" \ 138 | KBUILD_BUILD_USER="codehex" \ 139 | -j $(nproc) 140 | 141 | local artifactdir=$(_artifact $_arch) 142 | mkdir -p $artifactdir 143 | cp "$VMLINUX" "$artifactdir" 144 | done 145 | } 146 | 147 | build_initramfs() { 148 | unset LDFLAGS 149 | 150 | for _arch in $target_arch; do 151 | msg "Building $_arch busybox and initramfs" 152 | 153 | local _fsdir=$(_builddir $_arch fs) 154 | local _builddir=$(_builddir $_arch busybox) 155 | 156 | # Copy original fs to build target 157 | rm -rf $_fsdir 158 | cp -r "$srcdir"/fs $_fsdir 159 | mkdir -p "$_fsdir"/bin 160 | 161 | # Install dropbear 162 | install_dropbear $_arch $_fsdir 163 | 164 | # Install socat 165 | install_socat $_arch $_fsdir 166 | 167 | # Install static curl binary to bin directory 168 | local _curl_tool_dir=$(_builddir $_arch curl) 169 | install -Dm0755 "$_curl_tool_dir"/curl "$_fsdir"/bin 170 | 171 | # Copy ca-certificates for using curl (https) 172 | mkdir -p "$_fsdir"/etc/ssl/certs 173 | cp /etc/ssl/certs/ca-certificates.crt "$_fsdir"/etc/ssl/certs 174 | 175 | # Remove man pages 176 | rm -rf "$_fsdir"/usr/share/man 177 | 178 | # Make build directory 179 | rm -rf $_builddir 180 | mkdir -p $_builddir 181 | 182 | 183 | cp "$srcdir"/busybox_config/config "$_builddir"/.config 184 | 185 | local PATH="$srcdir/$(_musl_path $_arch)/bin:$PATH" 186 | make -C "$srcdir"/busybox-$busyboxver \ 187 | CROSS_COMPILE=$(_cross_compile_target $_arch) \ 188 | O="$_builddir" \ 189 | oldconfig 190 | 191 | # Change workspace to busybox target directory 192 | cd $_builddir 193 | make CROSS_COMPILE=$(_cross_compile_target $_arch) \ 194 | LDFLAGS="-static" \ 195 | ARCH="$(_kernelarch $_arch)" \ 196 | CONFIG_PREFIX="$_fsdir" || exit 1 197 | 198 | install -Dm0755 busybox "$_fsdir"/bin 199 | cd $_fsdir 200 | find . | cpio -o -H newc | gzip -9 > $(_artifact $_arch)/initramfs.cpio.gz 201 | done 202 | } 203 | 204 | download_curl() { 205 | local _mirror="https://github.com/moparisthebest/static-curl/releases/download/v7.86.0" 206 | for _arch in $target_arch; do 207 | local _curl_dir=$(_builddir $_arch curl) 208 | local _target="curl-$([ $_arch == x86_64 ] && echo amd64 || echo aarch64)" 209 | local _curl_url="$_mirror/$_target" 210 | 211 | if ! [ -f "$_curl_dir"/"$_target" ]; then 212 | mkdir -p $_curl_dir 213 | (cd $_curl_dir && curl -OL $_curl_url && cp $_target curl) 214 | fi 215 | done 216 | } 217 | 218 | # install to fs on each arch 219 | install_dropbear() { 220 | local _arch="$1" 221 | local _fsdir="$2" 222 | 223 | local PATH="$srcdir/$(_musl_path $_arch)/bin:$PATH" 224 | local _target=$(_cross_compile_target $_arch) 225 | local CC="${_target}cc" 226 | local AR="${_target}ar" 227 | local RANLIB="${_target}ranlib" 228 | local STRIP="${_target}strip" 229 | local _builddir=$(_builddir $_arch dropbear) 230 | local _dropbear_src="$srcdir"/"dropbear-${dropbearver}" 231 | 232 | mkdir -p "$_builddir" 233 | (cd $_dropbear_src && ./configure --build=$_arch -prefix=$_fsdir --disable-zlib --enable-static --disable-loginfunc --disable-wtmp) 234 | 235 | cd $_builddir 236 | make -C $_dropbear_src \ 237 | CC=$CC AR=$AR RANLIB=$RANLIB STRIP=$STRIP \ 238 | PROGRAMS="dropbear" STATIC=1 clean strip install 239 | } 240 | 241 | install_socat() { 242 | local _arch="$1" 243 | local _fsdir="$2" 244 | 245 | local PATH="$srcdir/$(_musl_path $_arch)/bin:$PATH" 246 | local _target=$(_cross_compile_target $_arch) 247 | local CC="${_target}cc" 248 | local AR="${_target}ar" 249 | local RANLIB="${_target}ranlib" 250 | local STRIP="${_target}strip" 251 | local _builddir=$(_builddir $_arch socat) 252 | local _socat_src="$srcdir"/"socat-${socatver}" 253 | 254 | mkdir -p "$_builddir" 255 | 256 | # socat-1.7.4.3 - fdname.c:(.text+): undefined reference to getprotobynumber_r 257 | # https://git.alpinelinux.org/aports/commit/main/socat/APKBUILD?id=5edc9195355ced3db991c1a7cda5648d52019b11 258 | ( 259 | cd $_socat_src && \ 260 | CFLAGS="-static -Os -s" ./configure \ 261 | --build=$_arch \ 262 | --prefix=$_fsdir \ 263 | --disable-man \ 264 | --disable-openssl \ 265 | --disable-readline \ 266 | --disable-libwrap \ 267 | --disable-sycls \ 268 | --disable-filan && \ 269 | sed -Ei 's/#define\s+HAVE_GETPROTOBYNUMBER_R.*/#define HAVE_GETPROTOBYNUMBER_R 0/' config.h && \ 270 | sed -Ei 's/#define\s+HAVE_(.*)64.*/#define HAVE_\164 0/' config.h 271 | ) 272 | 273 | cd $_builddir 274 | make -C $_socat_src \ 275 | CC=$CC AR=$AR RANLIB=$RANLIB STRIP=$STRIP \ 276 | clean install 277 | } 278 | 279 | pack_artifacts() { 280 | cd $srcdir 281 | for _arch in $target_arch; do 282 | msg "Packing artifacts for $_arch" 283 | local _artifactdir=$(_artifact $_arch) 284 | tar -czvf "puipui_linux_v${version}_$_arch.tar.gz" -C $_artifactdir . 285 | done 286 | } 287 | 288 | updateconfigs() { 289 | for _arch in $target_arch; do 290 | msg "Update $name kernel config ($_arch)" 291 | local _config=$(_kconfig $_arch.config) 292 | local _builddir=$(_builddir $_arch linux-kernel) 293 | mkdir -p "$_builddir" 294 | local actions="listnewconfig oldconfig" 295 | if ! [ -f "$_builddir"/.config ]; then 296 | cp "$srcdir"/$_config "$_builddir"/.config 297 | actions="olddefconfig" 298 | env | grep ^CONFIG_ >> "$_builddir"/.config || true 299 | fi 300 | make -j1 -C "$srcdir"/linux-$kernver \ 301 | O="$_builddir" \ 302 | ARCH="$(_kernelarch $_arch)" \ 303 | $actions savedefconfig 304 | 305 | cp "$_builddir"/defconfig "$srcdir"/$_config 306 | done 307 | } 308 | 309 | 310 | 311 | while getopts ':uhv' OPTION; do 312 | case "$OPTION" in 313 | u) updateconfigs || true; exit 0;; 314 | h) usage; exit 0;; 315 | v) echo "puipui-linux-tool $version"; exit 0;; 316 | esac 317 | done 318 | 319 | if ! [ -d linux-"$kernver" ]; then 320 | msg "Download linux kernel $kernver" 321 | fetch "https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-${kernver}.tar.xz" 322 | fi 323 | 324 | if ! [ -d busybox-"$busyboxver" ]; then 325 | msg "Download busybox $busyboxver" 326 | fetch "https://busybox.net/downloads/busybox-${busyboxver}.tar.bz2" 327 | fi 328 | 329 | if ! [ -d dropbear-"$dropbearver" ]; then 330 | msg "Download dropbear $dropbearver" 331 | fetch "https://matt.ucc.asn.au/dropbear/releases/dropbear-${dropbearver}.tar.bz2" 332 | fi 333 | 334 | if ! [ -d socat-"$socatver" ]; then 335 | msg "Download socat $socatver" 336 | fetch "http://www.dest-unreach.org/socat/download/socat-${socatver}.tar.gz" 337 | fi 338 | 339 | if ! [ -d $(_musl_path "aarch64") ]; then 340 | msg "Download aarch64-linux-musl" 341 | setup_musl_path "aarch64" 342 | fi 343 | 344 | if ! [ -d $(_musl_path "x86_64") ]; then 345 | msg "Download x86_64-linux-musl" 346 | setup_musl_path "x86_64" 347 | fi 348 | 349 | build_kern 350 | download_curl 351 | build_initramfs 352 | pack_artifacts 353 | --------------------------------------------------------------------------------