]>
Commit | Line | Data |
---|---|---|
3b403b32 | 1 | #!/bin/bash |
cc02093d HH |
2 | # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- |
3 | # ex: ts=8 sw=4 sts=4 et filetype=sh | |
4 | # | |
5 | # Copyright 2005-2010 Harald Hoyer <harald@redhat.com> | |
6 | # Copyright 2005-2010 Red Hat, Inc. All rights reserved. | |
7 | # | |
8 | # This program is free software; you can redistribute it and/or modify | |
9 | # it under the terms of the GNU General Public License as published by | |
10 | # the Free Software Foundation; either version 2 of the License, or | |
11 | # (at your option) any later version. | |
12 | # | |
13 | # This program is distributed in the hope that it will be useful, | |
14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | # GNU General Public License for more details. | |
17 | # | |
18 | # You should have received a copy of the GNU General Public License | |
19 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
20 | # | |
074d12c1 | 21 | |
f7bccf37 HH |
22 | usage() |
23 | { | |
dde2db3d HH |
24 | { |
25 | echo "Usage: ${0##*/} [-s] [<initramfs file> [<filename>]]" | |
26 | echo | |
27 | echo "-h, --help print a help message and exit." | |
28 | echo "-s, --size sort the contents of the initramfs by size." | |
29 | echo | |
30 | } >&2 | |
f7bccf37 HH |
31 | } |
32 | ||
33 | [[ $# -le 2 ]] || { usage ; exit 1 ; } | |
3ea5d2e2 AW |
34 | |
35 | sorted=0 | |
36 | while getopts "s" opt; do | |
37 | case $opt in | |
38 | s) sorted=1;; | |
f7bccf37 HH |
39 | h) usage; exit 0;; |
40 | \?) usage; exit 1;; | |
3ea5d2e2 AW |
41 | esac |
42 | done | |
43 | shift $((OPTIND-1)) | |
44 | ||
dde2db3d HH |
45 | KERNEL_VERSION="$(uname -r)" |
46 | ||
47 | if [[ "$1" ]]; then | |
48 | image="$1" | |
49 | if ! [[ -f "$image" ]]; then | |
50 | { | |
51 | echo "$image does not exist" | |
52 | echo | |
53 | } >&2 | |
54 | usage | |
55 | exit 1 | |
56 | fi | |
57 | fi | |
58 | ||
59 | [[ -f /etc/machine-id ]] && read MACHINE_ID < /etc/machine-id | |
60 | ||
61 | if [[ $MACHINE_ID ]] && ( [[ -d /boot/${MACHINE_ID} ]] || [[ -L /boot/${MACHINE_ID} ]] ); then | |
62 | image="/boot/${MACHINE_ID}/${KERNEL_VERSION}/initrd" | |
63 | else | |
64 | image="/boot/initramfs-${KERNEL_VERSION}.img}" | |
65 | fi | |
66 | ||
67 | if ! [[ -f "$image" ]]; then | |
68 | { | |
69 | echo "No <initramfs file> specified and the default image '$image' cannot be accessed!" | |
70 | echo | |
71 | } >&2 | |
72 | usage | |
73 | exit 1 | |
74 | fi | |
074d12c1 | 75 | |
66fe35eb | 76 | CAT=zcat |
25ff71b0 | 77 | FILE_T=$(file --dereference "$image") |
66fe35eb | 78 | |
d20d307d | 79 | if echo "test"|xz|xz -dc --single-stream >/dev/null 2>&1; then |
c96425c3 HH |
80 | XZ_SINGLE_STREAM="--single-stream" |
81 | fi | |
82 | ||
b5c2fc11 | 83 | if [[ "$FILE_T" =~ :\ gzip\ compressed\ data ]]; then |
66fe35eb | 84 | CAT=zcat |
b5c2fc11 | 85 | elif [[ "$FILE_T" =~ :\ xz\ compressed\ data ]]; then |
c96425c3 | 86 | CAT="xzcat $XZ_SINGLE_STREAM" |
b5c2fc11 | 87 | elif [[ "$FILE_T" =~ :\ XZ\ compressed\ data ]]; then |
c96425c3 | 88 | CAT="xzcat $XZ_SINGLE_STREAM" |
bdb81899 HH |
89 | elif [[ "$FILE_T" =~ :\ LZMA ]]; then |
90 | CAT="xzcat $XZ_SINGLE_STREAM" | |
b5c2fc11 | 91 | elif [[ "$FILE_T" =~ :\ data ]]; then |
bdb81899 | 92 | CAT="xzcat $XZ_SINGLE_STREAM" |
66fe35eb HH |
93 | fi |
94 | ||
430bfefd | 95 | if [[ $# -eq 2 ]]; then |
829c2585 | 96 | $CAT $image | cpio --extract --verbose --quiet --to-stdout ${2#/} 2>/dev/null |
430bfefd HH |
97 | exit $? |
98 | fi | |
99 | ||
d8caa679 | 100 | echo "$image: $(du -h $image | while read a b; do echo $a;done)" |
074d12c1 | 101 | echo "========================================================================" |
a85ee030 | 102 | $CAT "$image" | cpio --extract --verbose --quiet --to-stdout '*lib/dracut/dracut-*' 2>/dev/null |
074d12c1 | 103 | echo "========================================================================" |
3ea5d2e2 AW |
104 | if [ "$sorted" -eq 1 ]; then |
105 | $CAT "$image" | cpio --extract --verbose --quiet --list | sort -n -k5 | |
106 | else | |
6d70aa78 | 107 | $CAT "$image" | cpio --extract --verbose --quiet --list | sort -k9 |
3ea5d2e2 | 108 | fi |
074d12c1 | 109 | echo "========================================================================" |