Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(168)

Side by Side Diff: init

Issue 6723023: [0.11.257.B] cherrypick: use crossystem for developer mode and nonchrome detection (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/initramfs.git@0.11.257.B
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/sh -x 1 #!/bin/sh -x
2 2
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 # 6 #
7 # /init script for use in factory install shim. Requires busybox in 7 # /init script for use in factory install shim. Requires busybox in
8 # /bin/busybox, and a symlink from /bin/sh -> busybox. 8 # /bin/busybox, and a symlink from /bin/sh -> busybox.
9 9
10 # USB card partition and mount point. 10 # USB card partition and mount point.
(...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 log "About to switch root" 649 log "About to switch root"
650 stop_log_file 650 stop_log_file
651 exec switch_root -c /dev/console "$NEWROOT_MNT" /sbin/init 651 exec switch_root -c /dev/console "$NEWROOT_MNT" /sbin/init
652 652
653 # This should not really happen. 653 # This should not really happen.
654 log "Failed to switch root." 654 log "Failed to switch root."
655 save_log_file 655 save_log_file
656 return 1 656 return 1
657 } 657 }
658 658
659 is_nonchrome() {
660 crossystem mainfw_type?nonchrome
661 }
662
659 is_developer_mode() { 663 is_developer_mode() {
660 # See Firmware High-Level Spec for details on CHSW values 664 # Legacy/unsupported systems are mapped to developer mode.
661 CHSW=$(cat /sys/devices/platform/chromeos_acpi/CHSW) 665 is_nonchrome && return 0
662 # If the switch is unsupported, treat as developer mode. 666 # Otherwise the exit status will be accurate.
663 [ -z "$CHSW" ] && return 0 667 crossystem devsw_boot?1
664 if [ $CHSW -gt 0 -a $((CHSW & 32)) -eq 32 ]; then
665 return 0
666 fi
667 return 1
668 } 668 }
669 669
670 lock_tpm() { 670 lock_tpm() {
671 if [ -z "$TPM_B_LOCKED" ]; then 671 if [ -z "$TPM_B_LOCKED" ]; then
672 # Depending on the system, the tpm may need to be started. 672 # Depending on the system, the tpm may need to be started.
673 # Don't fail if it doesn't work though. 673 # Don't fail if it doesn't work though.
674 tpmc startup 674 tpmc startup
675 tpmc ctest 675 tpmc ctest
676 if ! tpmc block; then 676 if ! tpmc block; then
677 log "An unrecoverable error occurred with your security device" 677 if is_nonchrome; then
678 log "Please power down and try again." 678 log "No security chip appears to exist in this non-Chrome device."
679 dlog "Failed to lock bGlobalLock." 679 log "The security of your experience will suffer."
680 on_error 680 # Forge onward.
681 return 1 # Never reached. 681 else
682 log "An unrecoverable error occurred with your security device"
683 log "Please power down and try again."
684 dlog "Failed to lock bGlobalLock."
685 on_error
686 return 1 # Never reached.
687 fi
682 fi 688 fi
683 TPM_B_LOCKED=y 689 TPM_B_LOCKED=y
684 fi 690 fi
685 if [ -z "$TPM_PP_LOCKED" ]; then 691 if [ -z "$TPM_PP_LOCKED" ]; then
686 # TODO: tpmc pplock if appropriate 692 # TODO: tpmc pplock if appropriate
687 TPM_PP_LOCKED=y 693 TPM_PP_LOCKED=y
688 fi 694 fi
689 return 0 695 return 0
690 } 696 }
691 697
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 # USB device is unmounted, we can remove it now. 773 # USB device is unmounted, we can remove it now.
768 unmount_usb || on_error 774 unmount_usb || on_error
769 # Switch to the new root 775 # Switch to the new root
770 use_new_root || on_error 776 use_new_root || on_error
771 on_error # !! Never reached. !! 777 on_error # !! Never reached. !!
772 fi 778 fi
773 779
774 # If not, we must be a recovery kernel. 780 # If not, we must be a recovery kernel.
775 NEWROOT_MNT="$USB_MNT" 781 NEWROOT_MNT="$USB_MNT"
776 782
783 if is_nonchrome; then
784 log " "
785 log "Your computer does not appear to a Chrome computer!"
786 log " "
787 log "Your experience with Chromium OS will be suboptimal."
788 log " "
789 fi
790
777 # Always lock the TPM. If a NVRAM reset is ever needed, we can change it. 791 # Always lock the TPM. If a NVRAM reset is ever needed, we can change it.
778 lock_tpm || on_error 792 lock_tpm || on_error
779 793
780 # Perform a full device mapper root validation to avoid any unexpected 794 # Perform a full device mapper root validation to avoid any unexpected
781 # failures during postinst. It also allows us to detect if the root is 795 # failures during postinst. It also allows us to detect if the root is
782 # intentionally mismatched - such as during Chromium OS recovery with a 796 # intentionally mismatched - such as during Chromium OS recovery with a
783 # Chrome OS recovery kernel. 797 # Chrome OS recovery kernel.
784 if ! validate_recovery_root; then 798 if ! validate_recovery_root; then
785 is_developer_mode || on_error 799 is_developer_mode || on_error
786 find_developer_root || find_shim_root || on_error 800 find_developer_root || find_shim_root || on_error
(...skipping 26 matching lines...) Expand all
813 exit 0 827 exit 0
814 } 828 }
815 829
816 # Make this source-able for testing. 830 # Make this source-able for testing.
817 if [ "$0" = "/init" ]; then 831 if [ "$0" = "/init" ]; then
818 main "$@" 832 main "$@"
819 # Should never reach here. 833 # Should never reach here.
820 exit 1 834 exit 1
821 fi 835 fi
822 836
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698