Server IP : 127.0.0.2 / Your IP : 18.119.136.32 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/initramfs-tools/scripts/ |
Upload File : |
# Local filesystem mounting -*- shell-script -*- local_top() { if [ "${local_top_used}" != "yes" ]; then [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-top" run_scripts /scripts/local-top [ "$quiet" != "y" ] && log_end_msg fi local_top_used=yes } local_block() { [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-block" run_scripts /scripts/local-block "$@" [ "$quiet" != "y" ] && log_end_msg } local_premount() { if [ "${local_premount_used}" != "yes" ]; then [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-premount" run_scripts /scripts/local-premount [ "$quiet" != "y" ] && log_end_msg fi local_premount_used=yes } local_bottom() { if [ "${local_premount_used}" = "yes" ] || [ "${local_top_used}" = "yes" ]; then [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-bottom" run_scripts /scripts/local-bottom [ "$quiet" != "y" ] && log_end_msg fi local_premount_used=no local_top_used=no } # $1=device ID to mount # $2=optionname (for root and etc) # Sets $DEV to the resolved device node local_device_setup() { local dev_id="$1" local name="$2" local real_dev # If wait-for-root understands this prefix, then use it to wait for # the device rather than settling the whole of udev. case "$dev_id" in UUID=*|LABEL=*|/dev/*) FSTYPE=$( wait-for-root "$dev_id" 10 ) ;; *) wait_for_udev 10 ;; esac # Load ubi with the correct MTD partition and return since fstype # doesn't work with a char device like ubi. if [ -n "$UBIMTD" ]; then modprobe ubi mtd=$UBIMTD DEV="${dev_id}" return fi # Don't wait for a device that doesn't have a corresponding # device in /dev and isn't resolvable by blkid (e.g. mtd0) if [ "${dev_id#/dev}" = "${dev_id}" ] && [ "${dev_id#*=}" = "${dev_id}" ]; then DEV="${dev_id}" return fi # If the root device hasn't shown up yet, give it a little while # to allow for asynchronous device discovery (e.g. USB). We # also need to keep invoking the local-block scripts in case # there are devices stacked on top of those. if ! real_dev=$(resolve_device "${dev_id}") || ! get_fstype "${real_dev}" >/dev/null; then log_begin_msg "Waiting for ${name} file system" # Timeout is max(30, rootdelay) seconds (approximately) case $DPKG_ARCH in powerpc|ppc64|ppc64el) slumber=180 ;; *) slumber=30 ;; esac if [ ${ROOTDELAY:-0} -gt $slumber ]; then slumber=$ROOTDELAY fi while true; do sleep 1 local_block "${dev_id}" if real_dev=$(resolve_device "${dev_id}") && get_fstype "${real_dev}" >/dev/null; then wait_for_udev 10 log_end_msg 0 break fi slumber=$(( ${slumber} - 1 )) if [ ${slumber} -eq 0 ]; then log_end_msg 1 || true break fi done fi # We've given up, but we'll let the user fix matters if they can while ! real_dev=$(resolve_device "${dev_id}") || ! get_fstype "${real_dev}" >/dev/null; do echo "Gave up waiting for ${name} device. Common problems:" echo " - Boot args (cat /proc/cmdline)" echo " - Check rootdelay= (did the system wait long enough?)" if [ "${name}" = root ]; then echo " - Check root= (did the system wait for the right device?)" fi echo " - Missing modules (cat /proc/modules; ls /dev)" panic "ALERT! ${dev_id} does not exist. Dropping to a shell!" done DEV="${real_dev}" } local_mount_root() { local_top local_device_setup "${ROOT}" root ROOT="${DEV}" # Get the root filesystem type if not set if [ -z "${ROOTFSTYPE}" ]; then FSTYPE=$(get_fstype "${ROOT}") else FSTYPE=${ROOTFSTYPE} fi local_premount if [ "${readonly}" = "y" ] && \ [ -z "$LOOP" ]; then roflag=-r else roflag=-w fi # FIXME This has no error checking [ -n "${FSTYPE}" ] && modprobe ${FSTYPE} checkfs ${ROOT} root # FIXME This has no error checking # Mount root mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt} mountroot_status="$?" if [ "$LOOP" ]; then if [ "$mountroot_status" != 0 ]; then if [ ${FSTYPE} = ntfs ] || [ ${FSTYPE} = vfat ]; then panic " Could not mount the partition ${ROOT}. This could also happen if the file system is not clean because of an operating system crash, an interrupted boot process, an improper shutdown, or unplugging of a removable device without first unmounting or ejecting it. To fix this, simply reboot into Windows, let it fully start, log in, run 'chkdsk /r', then gracefully shut down and reboot back into Windows. After this you should be able to reboot again and resume the installation. (filesystem = ${FSTYPE}, error code = $mountroot_status) " fi fi mkdir -p /host mount -o move ${rootmnt} /host while [ ! -e "/host/${LOOP#/}" ]; do panic "ALERT! /host/${LOOP#/} does not exist. Dropping to a shell!" done # Get the loop filesystem type if not set if [ -z "${LOOPFSTYPE}" ]; then eval $(fstype < "/host/${LOOP#/}") else FSTYPE="${LOOPFSTYPE}" fi if [ "$FSTYPE" = "unknown" ] && [ -x /sbin/blkid ]; then FSTYPE=$(/sbin/blkid -s TYPE -o value "/host/${LOOP#/}") [ -z "$FSTYPE" ] && FSTYPE="unknown" fi if [ ${readonly} = y ]; then roflag=-r else roflag=-w fi # FIXME This has no error checking modprobe loop modprobe ${FSTYPE} # FIXME This has no error checking mount ${roflag} -o loop -t ${FSTYPE} ${LOOPFLAGS} "/host/${LOOP#/}" ${rootmnt} if [ -d ${rootmnt}/host ]; then mount -o move /host ${rootmnt}/host fi fi } local_mount_fs() { read_fstab_entry "$1" local_device_setup "$MNT_FSNAME" "$1" MNT_FSNAME="${DEV}" local_premount if [ "${readonly}" = "y" ]; then roflag=-r else roflag=-w fi # FIXME This has no error checking modprobe "${MNT_TYPE}" if [ "$MNT_PASS" != 0 ]; then checkfs "$MNT_FSNAME" "$MNT_DIR" fi # FIXME This has no error checking # Mount filesystem mount ${roflag} -t "${MNT_TYPE}" -o "${MNT_OPTS}" "$MNT_FSNAME" "${rootmnt}${MNT_DIR}" } mountroot() { local_mount_root } mount_top() { # Note, also called directly in case it's overridden. local_top } mount_premount() { # Note, also called directly in case it's overridden. local_premount } mount_bottom() { # Note, also called directly in case it's overridden. local_bottom }