SFSファイルをロードする際にスクリプトを実行することはできますか

パピーリナックスを初めて使う方

モデレータ: 暇人, YoN, nyu

ssnys
記事: 64
登録日時: 14/02/19(水) 17:50

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by ssnys »

thinkpadnerdさん、ルビーさん、Zstepさん返信頂きまして誠にありがとうございます。 :D

まさかこんなにも回答頂けるとは思っていませんでした。 :shock:
thinkpadnerd さんが書きました: 改めて tahrpup の初期状態からやってみたら、pinstall.sh は残りました。「バックグラウンドでスクリプトを実行している」旨のメッセージが出るので、スクリプトが動いているのは確かです。
当方でも以下のようなコマンドでdevx_precise_5.7.1.sfs等々をロードしていましたが、やはり/pinstall.shがそのまま残ります。

コード: 全て選択

~# ls /
bin  etc     lib         mnt  proc  run   selinux  tmp  var
dev  initrd  lost+found  opt  root  sbin  sys      usr
~# sfs_load -c +devx_precise_5.7.1.sfs
gtk-update-icon-cache: Cache file created successfully.
sfs_load: メニューを更新中…
Generating /root/.jwmrc...
sfs_load: スクリプトをバックグラウンドで実行中...
sfs_load: --custom 'devx_precise_5.7.1.sfs' は無事ロードされました。
アンロードするまではこのファイルを削除したり移動したりしないでください。
~# ls /
bin  etc     lib         mnt  pinstall.sh  root  sbin     sys  usr
dev  initrd  lost+found  opt  proc         run   selinux  tmp  var
~# sfs_load -c -devx_precise_5.7.1.sfs
sfs_load: Stopping script...
Stopping rsync daemon: rsyncgtk-update-icon-cache: Cache file created successfully.
sfs_load: メニューを更新中…
sfs_load: 'defaulttexteditor' is reset.
Generating /root/.jwmrc...
sfs_load: --custom 'devx_precise_5.7.1.sfs' はアンロードされました。
~# ls /
bin  etc     lib         mnt  proc  run   selinux  tmp  var
dev  initrd  lost+found  opt  root  sbin  sys      usr
Zstep さんが書きました: /etc/init.dもしくは/root/Startupにsfsをロードしたとき実行させたい
コマンドを書いたスクリプトを組み込んでおけばいいみたいですね
以下のような流れでtest.sfsを作成、ロードしてみました。

コード: 全て選択

~# pwd
/root
~# ls -Rl test/
test/:
total 0
drwxr-xr-x 3 root root 60  5月 30 00:21 etc

test/etc:
total 0
drwxr-xr-x 2 root root 60  5月 30 00:21 init.d

test/etc/init.d:
total 4
-rwxr-xr-x 1 root root 94  5月 30 00:20 test.sh
~# mksquashfs test/ test.sfs
Parallel mksquashfs: Using 1 processor
Creating 4.0 filesystem on test.sfs, block size 131072.
[===================================================================|] 1/1 100%
Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072
	compressed data, compressed metadata, compressed fragments, compressed xattrs
	duplicates are removed
Filesystem size 0.36 Kbytes (0.00 Mbytes)
	77.64% of uncompressed filesystem size (0.46 Kbytes)
Inode table size 68 bytes (0.07 Kbytes)
	52.31% of uncompressed inode table size (130 bytes)
Directory table size 56 bytes (0.05 Kbytes)
	71.79% of uncompressed directory table size (78 bytes)
Number of duplicate files found 0
Number of inodes 4
Number of files 1
Number of fragments 1
Number of symbolic links  0
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 3
Number of ids (unique uids + gids) 1
Number of uids 1
	root (0)
Number of gids 1
	root (0)
~# ls xxx
ls: cannot access xxx: No such file or directory
~# sfs_load -c +test.sfs
sfs_load: 
sfs_load: スクリプトをバックグラウンドで実行中...
sfs_load: --custom 'test.sfs' は無事ロードされました。
'/root/test.sfs' は '/mnt/home' にコピーされました。
アンロードするまではこのファイルを削除したり移動したりしないでください。 オリジ ナルは移動や削除しても構いません。
~# ls xxx
xxx
~# sfs_load -c -test.sfs
sfs_load: Stopping script...
sfs_load: --custom 'test.sfs' はアンロードされました。
~# ls xxx
ls: cannot access xxx: No such file or directory
ロード時に/root/xxxが作成され、アンロード時に/root/xxxが削除されています。正しく求めていた答えです。 :wink:
ルビー さんが書きました: 初心者と言う割には、初心者とは思えない質問を連発なさってますが、素朴な疑問として、sfsロードでsfsのスクリプトを走らせて、何をなさりたいのでしょうか。
Puppy Linuxについては初心者故色々とお手数をお掛けして申し訳ございません。現在DebianパッケージファイルをSFSファイルに変換するスクリプトを作成している次第なのですが、その際に問題となるのが、インストール/アンインストール時に実行されるスクリプトです。これらのスクリプトはシンボリックリンクを作成したり、wgetでファイルをダウンロードしたりと色々な処理をしています。これらの機能についてSFSファイルのロード/アンロード時に同様のことが出来ればと思った次第です。

何れに致しましてもthinkpadnerdさん、ルビーさん、Zstepさんのおかげで無事解決致しました。誠にありがとうございます。 :P

---

ここからは余談ですが、/usr/sbin/sfs_loadの345行目から352行目まで以下のような記述がありました。おそらくロード時に以下のディレクトリ内にあるファイルについてを色々と処理していると思われます。 :roll:

コード: 全て選択

  HAS_MODULES=$(ls $MNTPNT/lib/modules 2>/dev/null)
  HAS_FONTS=$(find -L $MNTPNT/usr/share/fonts -mindepth 1 -not -type d -printf '/%P\n' 2>/dev/null)
  HAS_DESKTOPS=$(ls $MNTPNT/usr/share/applications 2>/dev/null)
  HAS_SCRIPTS=$(ls $MNTPNT/etc/init.d 2>/dev/null)
  HAS_STARTUPS=$(ls $MNTPNT/root/Startup 2>/dev/null)
  HAS_PROFILE=$(ls $MNTPNT/etc/profile.d 2>/dev/null) # 28 Oct 2011
  HAS_ICONS=$(find -L $MNTPNT/usr/share/icons/hicolor -not -type d -printf '/%P\n' 2>/dev/null)
  HAS_GLIB_SCHEMA=$(ls $MNTPNT/usr/share/glib-2.0/schemas/ 2>/dev/null)
💻Lenovo G550(CPU: Intel Celeron 900 @ 2.20GHz, RAM: 971MB, HDD: 149.05GiB) + Precise-571JP
🖥HITACHI FLORA 310 DL7(CPU: Intel Pentium III 700 MHz, RAM: 384MB) + Precise-571JP
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by ルビー »

Zstep さんが書きました:/etc/init.dもしくは/root/Startupにsfsをロードしたとき実行させたい
コマンドを書いたスクリプトを組み込んでおけばいいみたいですね
そうか、sfsの中に入れるのですね。
sfsをロードする人が、ローカルのファイルをいじるのって何故?だったのですけど、やっと分かりました。
良く、読んでなかった(^^;。
ssnys さんが書きました:Puppy Linuxについては初心者故色々とお手数をお掛けして申し訳ございません。現在DebianパッケージファイルをSFSファイルに変換するスクリプトを作成している次第なのですが、その際に問題となるのが、インストール/アンインストール時に実行されるスクリプトです。
すると、ssnysさんはDebian使いの方なのですね。
.debでしたら、そのままパッケージマネージャでインストールできると思いますが、スクリプト入っているとやっぱりダメなのかな。

パピーではないそうですが本家で人気の、DebianDogなら親和性も高いだろうし、使い慣れたパッケージがそのまま使えるかもしれません。
Debianの知識が無いと扱いも難しいようで、Debian使いの方には向いているのではないでしょうか。
ssnys
記事: 64
登録日時: 14/02/19(水) 17:50

Re: SFSファイルをロードする際にスクリプトを実行することはできますか

投稿記事 by ssnys »

ルビーさん返信頂きありがとうございます。 :D
ルビー さんが書きました: すると、ssnysさんはDebian使いの方なのですね。
.debでしたら、そのままパッケージマネージャでインストールできると思いますが、スクリプト入っているとやっぱりダメなのかな。
誤解を招いて申し訳ございません。当方はDebianは殆ど利用したことが無く、Linuxについては今も昔もPuppy Linuxを主としています。

新たにアプリケーションを利用する場合、自分でmakeするのは面倒なため、Ubuntuのリポジトリhttps://packages.ubuntu.com/からDebianパッケージファイルをダウンロードしてくることが多いのです。Debianパッケージファイルはそのままインストール可能ですが、それですとpupsaveの領域を消費してしまうため、できる限りSFS化していきたいと考えている次第なのです。
💻Lenovo G550(CPU: Intel Celeron 900 @ 2.20GHz, RAM: 971MB, HDD: 149.05GiB) + Precise-571JP
🖥HITACHI FLORA 310 DL7(CPU: Intel Pentium III 700 MHz, RAM: 384MB) + Precise-571JP
返信する