Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 565 log "About to switch root" | 565 log "About to switch root" |
| 566 stop_log_file | 566 stop_log_file |
| 567 exec switch_root -c /dev/console "$NEWROOT_MNT" /sbin/init | 567 exec switch_root -c /dev/console "$NEWROOT_MNT" /sbin/init |
| 568 | 568 |
| 569 # This should not really happen. | 569 # This should not really happen. |
| 570 log "Failed to switch root." | 570 log "Failed to switch root." |
| 571 save_log_file | 571 save_log_file |
| 572 return 1 | 572 return 1 |
| 573 } | 573 } |
| 574 | 574 |
| 575 is_nonchrome() { | |
| 576 crossystem mainfw_type?nonchrome | |
|
gauravsh
2011/03/23 02:25:18
it wasn't clear to me what exactly this does. Does
Randall Spangler
2011/03/23 15:54:17
Yes. (New feature of crossystem)
| |
| 577 } | |
| 578 | |
| 575 is_developer_mode() { | 579 is_developer_mode() { |
| 576 # See Firmware High-Level Spec for details on CHSW values | 580 # Legacy/unsupported systems are mapped to developer mode. |
| 577 CHSW=$(cat /sys/devices/platform/chromeos_acpi/CHSW) | 581 is_nonchrome && return 0 |
| 578 # If the switch is unsupported, treat as developer mode. | 582 # Otherwise the exit status will be accurate. |
| 579 [ -z "$CHSW" ] && return 0 | 583 crossystem devsw_boot?1 |
| 580 if [ $CHSW -gt 0 -a $((CHSW & 32)) -eq 32 ]; then | |
| 581 return 0 | |
| 582 fi | |
| 583 return 1 | |
| 584 } | 584 } |
| 585 | 585 |
| 586 lock_tpm() { | 586 lock_tpm() { |
| 587 if [ -z "$TPM_B_LOCKED" ]; then | 587 if [ -z "$TPM_B_LOCKED" ]; then |
| 588 # Depending on the system, the tpm may need to be started. | 588 # Depending on the system, the tpm may need to be started. |
| 589 # Don't fail if it doesn't work though. | 589 # Don't fail if it doesn't work though. |
| 590 tpmc startup | 590 tpmc startup |
| 591 tpmc ctest | 591 tpmc ctest |
| 592 if ! tpmc block; then | 592 if ! tpmc block; then |
| 593 log "An unrecoverable error occurred with your security device" | 593 if is_nonchrome; then |
| 594 log "Please power down and try again." | 594 log "No security chip appears to exist in this non-Chrome device." |
| 595 dlog "Failed to lock bGlobalLock." | 595 log "The security of your experience will suffer." |
| 596 on_error | 596 # Forge onward. |
| 597 return 1 # Never reached. | 597 else |
| 598 log "An unrecoverable error occurred with your security device" | |
| 599 log "Please power down and try again." | |
| 600 dlog "Failed to lock bGlobalLock." | |
| 601 on_error | |
| 602 return 1 # Never reached. | |
| 603 fi | |
| 598 fi | 604 fi |
| 599 TPM_B_LOCKED=y | 605 TPM_B_LOCKED=y |
| 600 fi | 606 fi |
| 601 if [ -z "$TPM_PP_LOCKED" ]; then | 607 if [ -z "$TPM_PP_LOCKED" ]; then |
| 602 # TODO: tpmc pplock if appropriate | 608 # TODO: tpmc pplock if appropriate |
| 603 TPM_PP_LOCKED=y | 609 TPM_PP_LOCKED=y |
| 604 fi | 610 fi |
| 605 return 0 | 611 return 0 |
| 606 } | 612 } |
| 607 | 613 |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 683 # USB device is unmounted, we can remove it now. | 689 # USB device is unmounted, we can remove it now. |
| 684 unmount_usb || on_error | 690 unmount_usb || on_error |
| 685 # Switch to the new root | 691 # Switch to the new root |
| 686 use_new_root || on_error | 692 use_new_root || on_error |
| 687 on_error # !! Never reached. !! | 693 on_error # !! Never reached. !! |
| 688 fi | 694 fi |
| 689 | 695 |
| 690 # If not, we must be a recovery kernel. | 696 # If not, we must be a recovery kernel. |
| 691 NEWROOT_MNT="$USB_MNT" | 697 NEWROOT_MNT="$USB_MNT" |
| 692 | 698 |
| 699 if is_nonchrome; then | |
| 700 log "Your computer does not appear to a Chrome computer!" | |
| 701 log " " | |
| 702 log "Your experience with Chromium OS will be suboptimal." | |
| 703 log " " | |
| 704 fi | |
| 705 | |
| 693 # Always lock the TPM. If a NVRAM reset is ever needed, we can change it. | 706 # Always lock the TPM. If a NVRAM reset is ever needed, we can change it. |
| 694 lock_tpm || on_error | 707 lock_tpm || on_error |
| 695 | 708 |
| 696 # Perform a full device mapper root validation to avoid any unexpected | 709 # Perform a full device mapper root validation to avoid any unexpected |
| 697 # failures during postinst. It also allows us to detect if the root is | 710 # failures during postinst. It also allows us to detect if the root is |
| 698 # intentionally mismatched - such as during Chromium OS recovery with a | 711 # intentionally mismatched - such as during Chromium OS recovery with a |
| 699 # Chrome OS recovery kernel. | 712 # Chrome OS recovery kernel. |
| 700 if ! validate_recovery_root; then | 713 if ! validate_recovery_root; then |
| 701 is_developer_mode || on_error | 714 is_developer_mode || on_error |
| 702 find_developer_root || on_error | 715 find_developer_root || on_error |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 729 exit 0 | 742 exit 0 |
| 730 } | 743 } |
| 731 | 744 |
| 732 # Make this source-able for testing. | 745 # Make this source-able for testing. |
| 733 if [ "$0" = "/init" ]; then | 746 if [ "$0" = "/init" ]; then |
| 734 main "$@" | 747 main "$@" |
| 735 # Should never reach here. | 748 # Should never reach here. |
| 736 exit 1 | 749 exit 1 |
| 737 fi | 750 fi |
| 738 | 751 |
| OLD | NEW |