Lines 75-81
modules_scan() {
Link Here
|
75 |
elif [ "${USE_MDADM}" = '1' ] \ |
75 |
elif [ "${USE_MDADM}" = '1' ] \ |
76 |
|| [ "${USE_LVM_NORMAL}" = '1' ] \ |
76 |
|| [ "${USE_LVM_NORMAL}" = '1' ] \ |
77 |
|| [ "${USE_CRYPTSETUP}" = '1' ] \ |
77 |
|| [ "${USE_CRYPTSETUP}" = '1' ] \ |
78 |
|| [ "${USE_BTRFS}" = '1' ] \ |
|
|
79 |
|| [ "${USE_ZFS}" = '1' ] \ |
78 |
|| [ "${USE_ZFS}" = '1' ] \ |
80 |
|| [ "${USE_DMRAID_NORMAL}" = '1' ] |
79 |
|| [ "${USE_DMRAID_NORMAL}" = '1' ] |
81 |
then |
80 |
then |
Lines 561-568
conf_rc_no_umounts() {
Link Here
|
561 |
if nomount=$(grep -n '^[[:blank:]]*no_umounts=' ${conf}) |
560 |
if nomount=$(grep -n '^[[:blank:]]*no_umounts=' ${conf}) |
562 |
then |
561 |
then |
563 |
local i n data cmd IFS |
562 |
local i n data cmd IFS |
564 |
IFS=' |
563 |
IFS='' |
565 |
' |
|
|
566 |
set -- ${nomount} |
564 |
set -- ${nomount} |
567 |
unset IFS |
565 |
unset IFS |
568 |
|
566 |
|
Lines 1010-1015
run_emergency_shell() {
Link Here
|
1010 |
} |
1008 |
} |
1011 |
|
1009 |
|
1012 |
run_shell() { |
1010 |
run_shell() { |
|
|
1011 |
splashCmd 'verbose' >/dev/null & |
1012 |
|
1013 |
if [ -f "${GK_USERINTERACTION_DISABLED_STATEFILE}" ] |
1013 |
if [ -f "${GK_USERINTERACTION_DISABLED_STATEFILE}" ] |
1014 |
then |
1014 |
then |
1015 |
bad_msg "gk.userinteraction.disabled is set; Spawning a shell is disabled!" |
1015 |
bad_msg "gk.userinteraction.disabled is set; Spawning a shell is disabled!" |
Lines 1161-1167
bad_msg() {
Link Here
|
1161 |
|
1161 |
|
1162 |
if [ "$2" != '1' ] |
1162 |
if [ "$2" != '1' ] |
1163 |
then |
1163 |
then |
1164 |
splash 'verbose' >/dev/null & |
1164 |
splashCmd 'verbose' >/dev/null & |
1165 |
printf "%b\n" "${BAD}!!${NORMAL}${BOLD} ${msg_string} ${NORMAL}" |
1165 |
printf "%b\n" "${BAD}!!${NORMAL}${BOLD} ${msg_string} ${NORMAL}" |
1166 |
fi |
1166 |
fi |
1167 |
} |
1167 |
} |
Lines 1202-1214
crypt_filter() {
Link Here
|
1202 |
if [ "${CRYPT_SILENT}" = '1' ] |
1202 |
if [ "${CRYPT_SILENT}" = '1' ] |
1203 |
then |
1203 |
then |
1204 |
eval run ${1} >/dev/null 2>&1 |
1204 |
eval run ${1} >/dev/null 2>&1 |
|
|
1205 |
elif [ "${PLYMOUTH}" = '1' ] && plymouth_running |
1206 |
then |
1207 |
run plymouth ask-for-password --prompt "Enter LUKS passphrase" \ |
1208 |
--number-of-tries=3 --command="${2}" |
1209 |
res=$? |
1210 |
return ${res} |
1205 |
else |
1211 |
else |
1206 |
splash 'verbose' >/dev/null & |
1212 |
splashCmd 'verbose' >/dev/null & |
1207 |
eval run ${1} |
1213 |
eval run ${1} |
1208 |
res=$? |
1214 |
res=$? |
1209 |
if [ ${res} -eq 0 ] |
1215 |
if [ ${res} -eq 0 ] |
1210 |
then |
1216 |
then |
1211 |
splash set_msg 'Disk unlocked.' |
1217 |
splashCmd set_msg 'Disk unlocked.' |
1212 |
fi |
1218 |
fi |
1213 |
return ${res} |
1219 |
return ${res} |
1214 |
fi |
1220 |
fi |
Lines 1279-1284
prompt_user() {
Link Here
|
1279 |
fi |
1285 |
fi |
1280 |
[ -n "${3}" ] && local explnt=" or : ${3}" || local explnt="." |
1286 |
[ -n "${3}" ] && local explnt=" or : ${3}" || local explnt="." |
1281 |
|
1287 |
|
|
|
1288 |
splashCmd 'verbose' >/dev/null & |
1282 |
bad_msg "Could not find the ${2} in ${oldvalue}${explnt}" |
1289 |
bad_msg "Could not find the ${2} in ${oldvalue}${explnt}" |
1283 |
|
1290 |
|
1284 |
if [ -f "${GK_USERINTERACTION_DISABLED_STATEFILE}" ] |
1291 |
if [ -f "${GK_USERINTERACTION_DISABLED_STATEFILE}" ] |
Lines 1361-1366
prompt_user() {
Link Here
|
1361 |
eval ${1}'='${oldvalue} |
1368 |
eval ${1}'='${oldvalue} |
1362 |
;; |
1369 |
;; |
1363 |
esac |
1370 |
esac |
|
|
1371 |
|
1372 |
splashCmd 'quiet' >/dev/null & |
1364 |
} |
1373 |
} |
1365 |
|
1374 |
|
1366 |
cmdline_hwopts() { |
1375 |
cmdline_hwopts() { |
Lines 1433-1439
chooseKeymap() {
Link Here
|
1433 |
good_msg "Loading keymaps" |
1442 |
good_msg "Loading keymaps" |
1434 |
if [ -z "${keymap}" ] |
1443 |
if [ -z "${keymap}" ] |
1435 |
then |
1444 |
then |
1436 |
splash 'verbose' >/dev/null & |
1445 |
splashCmd 'verbose' >/dev/null & |
1437 |
run cat /lib/keymaps/keymapList |
1446 |
run cat /lib/keymaps/keymapList |
1438 |
read -t 10 -p '<< Load keymap (Enter for default): ' keymap |
1447 |
read -t 10 -p '<< Load keymap (Enter for default): ' keymap |
1439 |
case ${keymap} in |
1448 |
case ${keymap} in |
Lines 1491-1502
chooseKeymap() {
Link Here
|
1491 |
|
1500 |
|
1492 |
run mkdir -p /etc/sysconfig |
1501 |
run mkdir -p /etc/sysconfig |
1493 |
echo "XKEYBOARD=${keymap}" > /etc/sysconfig/keyboard |
1502 |
echo "XKEYBOARD=${keymap}" > /etc/sysconfig/keyboard |
1494 |
splash set_msg "Set keymap to '${keymap}'" |
1503 |
splashCmd set_msg "Set keymap to '${keymap}'" |
1495 |
elif [ -z "${keymap}" ] |
1504 |
elif [ -z "${keymap}" ] |
1496 |
then |
1505 |
then |
1497 |
good_msg |
1506 |
good_msg |
1498 |
good_msg "Keeping default keymap" |
1507 |
good_msg "Keeping default keymap" |
1499 |
splash set_msg "Keeping default keymap" |
1508 |
splashCmd set_msg "Keeping default keymap" |
1500 |
else |
1509 |
else |
1501 |
bad_msg "Sorry, but keymap '${keymap}' is invalid!" |
1510 |
bad_msg "Sorry, but keymap '${keymap}' is invalid!" |
1502 |
unset keymap |
1511 |
unset keymap |
Lines 1519-1524
splash() {
Link Here
|
1519 |
return 0 |
1528 |
return 0 |
1520 |
} |
1529 |
} |
1521 |
|
1530 |
|
|
|
1531 |
splashCmd() { |
1532 |
case "${1}" in |
1533 |
init) |
1534 |
if [ "${FBSPLASH}" = '1' ] |
1535 |
then |
1536 |
splash 'init' |
1537 |
elif [ "${PLYMOUTH}" = '1' ] |
1538 |
then |
1539 |
plymouthInit |
1540 |
fi |
1541 |
;; |
1542 |
|
1543 |
verbose) |
1544 |
if [ "${FBSPLASH}" = '1' ] |
1545 |
then |
1546 |
splash 'verbose' |
1547 |
elif [ "${PLYMOUTH}" = '1' ] |
1548 |
then |
1549 |
plymouth_running && run plymouth --hide-splash |
1550 |
fi |
1551 |
;; |
1552 |
|
1553 |
set_msg) |
1554 |
if [ "${FBSPLASH}" = '1' ] |
1555 |
then |
1556 |
splash 'set_msg' "${2}" |
1557 |
elif [ "${PLYMOUTH}" = '1' ] |
1558 |
then |
1559 |
plymouth_running && run plymouth --update="${2}" |
1560 |
fi |
1561 |
;; |
1562 |
|
1563 |
quiet) |
1564 |
plymouth_running && run plymouth --show-splash |
1565 |
;; |
1566 |
|
1567 |
hasroot) |
1568 |
plymouth_running && run plymouth --newroot="${2}" |
1569 |
;; |
1570 |
esac |
1571 |
} |
1572 |
|
1573 |
plymouth_running() { |
1574 |
[ -n "${PLYMOUTH_FAIL}" ] && return 1 |
1575 |
run plymouth --ping 2>/dev/null |
1576 |
return $? |
1577 |
} |
1578 |
|
1579 |
plymouthInit() { |
1580 |
good_msg "Starting Plymouth..." |
1581 |
run mkdir -p -m 0755 /run/plymouth || return 1 |
1582 |
|
1583 |
# Make sure that udev is done loading tty and drm |
1584 |
run udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1 |
1585 |
run udevadm trigger --action=add --subsystem-match=graphics \ |
1586 |
--subsystem-match=drm --subsystem-match=tty >/dev/null 2>&1 |
1587 |
udevsettle |
1588 |
|
1589 |
run plymouthd --mode=boot --attach-to-session \ |
1590 |
--pid-file=/run/plymouth/pid || { PLYMOUTH_FAIL=1; return 1; } |
1591 |
|
1592 |
plymouth_running && run plymouth --show-splash |
1593 |
good_msg "Plymouth initialized" |
1594 |
} |
1595 |
|
1522 |
start_volumes() { |
1596 |
start_volumes() { |
1523 |
# Here, we check for /dev/device-mapper, and if it exists, we setup a |
1597 |
# Here, we check for /dev/device-mapper, and if it exists, we setup a |
1524 |
# a symlink, which should hopefully fix bug #142775 and bug #147015 |
1598 |
# a symlink, which should hopefully fix bug #142775 and bug #147015 |
Lines 1612-1636
start_volumes() {
Link Here
|
1612 |
fi |
1686 |
fi |
1613 |
fi |
1687 |
fi |
1614 |
|
1688 |
|
1615 |
if [ "${USE_BTRFS}" = '1' ] |
|
|
1616 |
then |
1617 |
if ! hash btrfs >/dev/null 2>&1 |
1618 |
then |
1619 |
bad_msg "dobtrfs invoked but 'btrfs' not found; Skipping btrfs device scanning ..." |
1620 |
else |
1621 |
good_msg "Scanning for BTRFS devices ..." |
1622 |
|
1623 |
local btrfs_cmd="run btrfs device scan 2>&1" |
1624 |
is_log_enabled && btrfs_cmd="${btrfs_cmd} | tee -a '${GK_INIT_LOG}'" |
1625 |
|
1626 |
eval "${btrfs_cmd}" |
1627 |
if [ $? -ne 0 ] |
1628 |
then |
1629 |
bad_msg "Scanning for BTRFS devices failed!" |
1630 |
fi |
1631 |
fi |
1632 |
fi |
1633 |
|
1634 |
if [ "${USE_ZFS}" = '1' ] |
1689 |
if [ "${USE_ZFS}" = '1' ] |
1635 |
then |
1690 |
then |
1636 |
# Avoid race involving asynchronous module loading |
1691 |
# Avoid race involving asynchronous module loading |
Lines 1804-1809
openLUKS() {
Link Here
|
1804 |
local cryptsetup_options='' |
1859 |
local cryptsetup_options='' |
1805 |
|
1860 |
|
1806 |
local gpg_cmd="" |
1861 |
local gpg_cmd="" |
|
|
1862 |
local ply_cmd="" |
1807 |
if [ -e "${OPENED_LOCKFILE}" ] |
1863 |
if [ -e "${OPENED_LOCKFILE}" ] |
1808 |
then |
1864 |
then |
1809 |
good_msg "The LUKS device ${LUKS_DEVICE} meanwhile was opened by someone else." |
1865 |
good_msg "The LUKS device ${LUKS_DEVICE} meanwhile was opened by someone else." |
Lines 1925-1939
openLUKS() {
Link Here
|
1925 |
[ -e /dev/tty ] && run mv /dev/tty /dev/tty.org |
1981 |
[ -e /dev/tty ] && run mv /dev/tty /dev/tty.org |
1926 |
run mknod /dev/tty c 5 1 |
1982 |
run mknod /dev/tty c 5 1 |
1927 |
cryptsetup_options="${cryptsetup_options} -d -" |
1983 |
cryptsetup_options="${cryptsetup_options} -d -" |
1928 |
gpg_cmd="gpg --logger-file /dev/null --quiet --decrypt ${mntkey}${LUKS_KEY} |" |
1984 |
gpg_cmd="gpg --logger-file /dev/null --quiet --decrypt ${mntkey}${LUKS_KEY} | " |
|
|
1985 |
ply_cmd="gpg --logger-file /dev/null --quiet --passphrase-fd 0 --batch --no-tty --decrypt ${mntkey}${LUKS_KEY} | " |
1929 |
fi |
1986 |
fi |
1930 |
else |
1987 |
else |
1931 |
cryptsetup_options="${cryptsetup_options} -d ${mntkey}${LUKS_KEY}" |
1988 |
cryptsetup_options="${cryptsetup_options} -d ${mntkey}${LUKS_KEY}" |
1932 |
fi |
1989 |
fi |
1933 |
fi |
1990 |
fi |
1934 |
# At this point, keyfile or not, we're ready! |
1991 |
# At this point, keyfile or not, we're ready! |
1935 |
crypt_filter "${gpg_cmd}cryptsetup ${cryptsetup_options} luksOpen ${LUKS_DEVICE} ${LUKS_NAME}" |
1992 |
if [ "${PLYMOUTH}" = '1' ] |
|
|
1993 |
then |
1994 |
ply_cmd="${ply_cmd}cryptsetup ${cryptsetup_options} luksOpen ${LUKS_DEVICE} ${LUKS_NAME}" |
1995 |
local ply_cmd_file="$(mktemp -t "ply_cmd.XXXXXX")" |
1996 |
printf '#!/bin/sh\n%s\n' "${ply_cmd}" > "${ply_cmd_file}" |
1997 |
run chmod 500 "${ply_cmd_file}" |
1998 |
fi |
1999 |
crypt_filter "${gpg_cmd}cryptsetup ${cryptsetup_options} luksOpen ${LUKS_DEVICE} ${LUKS_NAME}" "${ply_cmd_file}" |
1936 |
crypt_filter_ret=$? |
2000 |
crypt_filter_ret=$? |
|
|
2001 |
if [ "${PLYMOUTH}" = '1' ] |
2002 |
then |
2003 |
run rm -f "${ply_cmd_file}" |
2004 |
fi |
1937 |
|
2005 |
|
1938 |
[ -e /dev/tty.org ] \ |
2006 |
[ -e /dev/tty.org ] \ |
1939 |
&& run rm -f /dev/tty \ |
2007 |
&& run rm -f /dev/tty \ |
Lines 2510-2527
cdupdate() {
Link Here
|
2510 |
fi |
2578 |
fi |
2511 |
} |
2579 |
} |
2512 |
|
2580 |
|
2513 |
setup_btrfsctl() { |
|
|
2514 |
# start BTRFS volume detection, if available |
2515 |
if hash btrfsctl >/dev/null 2>&1 |
2516 |
then |
2517 |
local btrfs_cmd="run btrfsctl -a 2>&1" |
2518 |
is_log_enabled && btrfs_cmd="${btrfs_cmd} | tee -a '${GK_INIT_LOG}'" |
2519 |
|
2520 |
eval "${btrfs_cmd}" |
2521 |
udevsettle |
2522 |
fi |
2523 |
} |
2524 |
|
2525 |
rundebugshell() { |
2581 |
rundebugshell() { |
2526 |
if is_debug |
2582 |
if is_debug |
2527 |
then |
2583 |
then |