cpio檔案系統的解壓和製作方法
[plain] view plain copy print?
- #!/bin/sh
-
# Copyright (C) Martin Schlemmer <
- # Copyright (C) 2006 Sam Ravnborg <[email protected]>
- #
- # Released under the terms of the GNU GPL
- #
- # Generate a cpio packed initramfs. It uses gen_init_cpio to generate
- # the cpio archive, and then compresses it.
-
# The script may also be used to generate the inputfile used for gen_init_cpio
- # This script assumes that gen_init_cpio is located in usr/ directory
- # error out on errors
- set -e
- usage() {
- cat << EOF
- Usage:
- $0 [-o <file>] [-u <uid>] [-g <gid>] {-d | <cpio_source>} ...
- -o <file> Create compressed initramfs file named <file> using
- gen_init_cpio and compressor depending on the extension
- -u <uid> User ID to map to user ID 0 (root).
- <uid> is only meaningful if <cpio_source> is a
- directory. "squash" forces all files to uid 0.
- -g <gid> Group ID to map to group ID 0 (root).
- <gid> is only meaningful if <cpio_source> is a
- directory. "squash" forces all files to gid 0.
- <cpio_source> File list or directory for cpio archive.
- If <cpio_source> is a .cpio file it will be used
- as direct input to initramfs.
- -d Output the default cpio list.
- All options except -o and -l may be repeated and are interpreted
- sequentially and immediately. -u and -g states are preserved across
- <cpio_source> options so an explicit "-u 0 -g 0" is required
- to reset the root/group mapping.
- EOF
- }
- # awk style field access
- # $1 - field number; rest is argument string
- field() {
- shift $1 ; echo $1
- }
- list_default_initramfs() {
- # echo usr/kinit/kinit
- :
- }
- default_initramfs() {
- cat <<-EOF >> ${output}
- # This is a very simple, default initramfs
- dir /dev 0755 0 0
- nod /dev/console 0600 0 0 c 5 1
- dir /root 0700 0 0
- # file /kinit usr/kinit/kinit 0755 0 0
- # slink /init kinit 0755 0 0
- EOF
- }
- filetype() {
- local argv1="$1"
- # symlink test must come before file test
- if [ -L "${argv1}" ]; then
- echo "slink"
- elif [ -f "${argv1}" ]; then
- echo "file"
- elif [ -d "${argv1}" ]; then
- echo "dir"
- elif [ -b "${argv1}" -o -c "${argv1}" ]; then
- echo "nod"
- elif [ -p "${argv1}" ]; then
- echo "pipe"
- elif [ -S "${argv1}" ]; then
- echo "sock"
- else
- echo "invalid"
- fi
- return 0
- }
- list_print_mtime() {
- :
- }
- print_mtime() {
- local my_mtime="0"
- if [ -e "$1" ]; then
- my_mtime=$(find "$1" -printf "%[email protected]\n" | sort -r | head -n 1)
- fi
- echo "# Last modified: ${my_mtime}" >> ${output}
- echo "" >> ${output}
- }
- list_parse() {
- [ ! -L "$1" ] && echo "$1 \\" || :
- }
- # for each file print a line in following format
- # <filetype> <name> <path to file> <octal mode> <uid> <gid>
- # for links, devices etc the format differs. See gen_init_cpio for details
- parse() {
- local location="$1"
- local name="/${location#${srcdir}}"
- # change '//' into '/'
- name=$(echo "$name" | sed -e 's://*:/:g')
- local mode="$2"
- local uid="$3"
- local gid="$4"
- local ftype=$(filetype "${location}")
- # remap uid/gid to 0 if necessary
- [ "$root_uid" = "squash" ] && uid=0 || [ "$uid" -eq "$root_uid" ] && uid=0
- [ "$root_gid" = "squash" ] && gid=0 || [ "$gid" -eq "$root_gid" ] && gid=0
- local str="${mode} ${uid} ${gid}"
- [ "${ftype}" = "invalid" ] && return 0
- [ "${location}" = "${srcdir}" ] && return 0
- case "${ftype}" in
- "file")
- str="${ftype} ${name} ${location} ${str}"
- ;;
- "nod")
- local dev=`LC_ALL=C ls -l "${location}"`
- local maj=`field 5 ${dev}`
- local min=`field 6 ${dev}`
- maj=${maj%,}
- [ -b "${location}" ] && dev="b" || dev="c"
- str="${ftype} ${name} ${str} ${dev} ${maj} ${min}"
- ;;
- "slink")
- local target=`readlink "${location}"`
- str="${ftype} ${name} ${target} ${str}"
- ;;
- *)
- str="${ftype} ${name} ${str}"
- ;;
- esac
- echo "${str}" >> ${output}
- return 0
- }
- unknown_option() {
- printf "ERROR: unknown option \"$arg\"\n" >&2
- printf "If the filename validly begins with '-', " >&2
- printf "then it must be prefixed\n" >&2
- printf "by './' so that it won't be interpreted as an option." >&2
- printf "\n" >&2
- usage >&2
- exit 1
- }
- list_header() {
- :
- }
- header() {
-
相關推薦
cpio檔案系統的解壓和製作方法
cpio解壓方法: 1. # gunzip XXX.cpio.gz 2. cpio -idmv < XXX.cpio 製作cpio格式檔案系統的方法: 1. 執行gen_initramfs_list
gz檔案的解壓和壓縮
Linux壓縮保留原始檔的方法:gzip –c filename > filename.gzLinux解壓縮保留原始檔的方法:gunzip –c filename.gz > filenamegunzip的用法 1.作用gunzip命令作用是解壓檔案,使用許可權是所有使用者。2.格式gunzip [
Mac上zip,rar,tar檔案命令解壓和壓縮
經常遇到在windowns上的壓縮檔案,在mac上解壓出現問題,特意總結了下在Terminal裡常用命令的方式解壓和壓縮檔案 1、zip壓縮檔案 zip命令的引數很多,可以利用"zip --help"
Linux 檔案的解壓和壓縮 —— gzip命令
一、gzip 命令的用途 gzip 是在 Linux 系統中經常使用的一個對檔案進行壓縮和解壓縮的命令 減少檔案大小有兩個明顯的好處,一是可以減少儲存空間,二是通過網路傳輸檔案時,可以減少傳輸的時間
linux下zip檔案、7z檔案的解壓和壓縮
linux下zip檔案的解壓命令:unzip;壓縮命令:zip。具體參考文章1。 linux下7z檔案的解壓命令:7za x;壓縮命令:7za a。具體參考文章2. 注意: 1、linux預設情況下沒有安裝7z檔案的解壓縮命令,需要安裝。 2、線上安裝命令為:sudo ap
xz檔案的解壓和壓縮
建立或解壓tar.xz檔案的方法 習慣了 tar czvf 或 tar xzvf 的人可能碰到 tar.xz也會想用單一命令搞定解壓或壓縮。其實不行 tar裡面沒有徵對xz格式的引數比如 z是針對 gzip,j是針對 bzip2。
centos7 tar.xz格式檔案的解壓方法
現在很多找到的軟體都是tar.xz的格式的,xz 是一個使用 LZMA壓縮演算法的無損資料壓縮檔案格式。 和gzip與bzip2一樣,同樣支援多檔案壓縮,但是約定不能將多於一個的目標檔案壓縮排同一個檔案檔案。 相反,xz通常作為一種歸檔檔案自身的壓縮格式,例如使用tar或cpioUnix程式建立的歸檔。
tar、tgz、gz檔案批量解壓方法
我是用for i in $(ls *.tgz);do tar xvf $i;done 批量解壓的tgz檔案的我是用for i in $(ls *.gz);do gzip -d $i;done批量解壓的gz檔案的。由於linux的tar命令不支援批量解壓,所以很多網友編寫了好多支援批量解壓的shell命令,收集
Linux下tar.xz結尾的檔案的解壓方法
今天嘗試編譯核心,下載到了一份tar.xz結尾的壓縮檔案,網上解決方法比較少,不過還是找到了,如下: $xz -d ***.tar.xz $tar -xvf ***.tar 可以看到這個壓縮包也是打包後再壓縮,外面是xz壓縮方式,裡層是tar打包方式。
記一次python3 大檔案解壓和操作
先說下:所謂的大檔案並不是壓縮檔案有多大,幾十兆的檔案而是解壓後幾百兆。其中就遇到解壓不成功的情況.、讀小檔案時成功,大檔案時失敗等 def unzip_to_txt_plus(zipfilename): zfile = zipfile.ZipFile(zipf
win10解壓安裝mysql方法及遇見的問題(缺少MSVCR120.dll檔案、服務無法啟動)
WIN10系統MYSQL的下載與安裝詳細教程第一步:下載MySQL具體過程如下: 1.選擇要下載的型別,64位還是32位:*點選download後就會到下圖的下載介面,這時最顯眼的是sign up,有些人會覺得需要先註冊賬號才能下載,點選圖中紅色的,直接免註冊下載。平時再下載
不需要解壓和寫入映象的U盤安裝Ubuntu Server方法
用這種方式無需先把下載好的ISO安裝映象檔案先解壓或寫入映象到U盤或硬碟。如果U盤已經是老毛桃WinPE最新版啟動選單(網管經常用它來直接恢復GHO來安裝Windows),還不需要破壞它,這個很棒。 實現這個的前提是因為老毛桃啟動選單支援直接讀取U盤/ISOS裡的所有ISO
Centos7 zip解壓和unzip壓縮檔案
1、安裝zip、unzip應用 yum install zip unzip 2、壓縮和解壓檔案 以下命令均在/home目錄下操作 cd /home #進入/home目錄 a、把/home目錄下面的mydata目錄壓縮為mydata.zip zip -
Ubuntu安裝 .7z 解壓和壓縮檔案
安裝方法: sudo apt-get install p7zip解壓檔案: 7z x manager.7z -r -o /home/xx解釋如下:x 代表解壓縮檔案,並且是按原始目錄解壓(還有個引數 e 也是解壓縮檔案,但其會將所有檔案都解壓到根下,而不是自己原有
linux下不同檔案字尾的壓縮檔案的解壓方法
1、*.tar 用 tar –xvf 解壓 2、*.gz 用 gzip -d或者gunzip 解壓 3、*.tar.gz和*.tgz 用 tar –xzf 解壓 4、*.bz2 用 bzip2 -d或者用bunzip2 解壓 5、*.tar.bz2用tar
DoNetZip類庫解壓和壓縮文件
tel direct cep ima tor pre style div cat using Ionic.Zip; public class ZipHelper { public static void ZipSingleFile(string
Linux 檔案系統的建立與掛載方法
轉自:https://blog.csdn.net/gz153016/article/details/51655994 Linux的 檔案系統的建立與掛載方法 1 Linux 檔案系統的建立 Linux的 作業系統在安裝伺服器時,安裝程式已經建立了自己的檔案系統,但是在使
tar.xz檔案如何解壓
XZ壓縮最新壓縮率之王 xz這個壓縮可能很多都很陌生,不過您可知道xz是絕大數Linux預設就帶的一個壓縮工具。 之前xz使用一直很少,所以幾乎沒有什麼提起。 我是在下載phpmyadmin的時候看到這種壓縮格式的,phpmyadmin壓縮包xz格式的居然比7z還要小,這引起我的
Spring boot 配置檔案詳解 (properties 和yml )
從其他框架來看 我們都有自己的配置檔案, hibernate有hbm,mybatis 有properties, 同樣, Spring boot 也有全域性配置檔案。 Springboot使用一個全域性的配置檔案,而且配置檔案的名字是固定的。 有兩種 application.properties
檔案與檔案系統的壓縮和打包
在linux系統中,壓縮檔案的副檔名大多是 tar tar.gz tgz gz bz2等 .gz gzip 程式壓縮的檔案 .bz2 bzip2 程式壓縮的檔案 .tar tar程式打包的資料,並沒有壓縮過 .tar.gz tar程式打包檔案,其