2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UbuntuからTiny Core Linux 7をUSBメモリにインストール

Last updated at Posted at 2017-01-27

今回は手元にあったUbuntuベースのLinuxBean 12のマシンを使ってUSBメモリにTiny Core Linuxをインストールした時のメモです。

Tiny Core Linuxのインストーラー(tc-install.sh)を使わない、手動でのインストール方法になりますので、ちょい面倒な内容となっています。

USBメモリのフォーマット

まずUSBメモリにパーティションを作成します。Tiny Core Linuxの場合、Linux用のパーティションを1つ作るだけでも起動できますので、とりあえず1つ作成します。起動できるようにBootable(起動可能)にしておきます。
既にフォーマット済みのUSBメモリを使う場合、自動的にマウントされている可能性がありますのでsudo umount /dev/sdb1とかしてマウントを解除した状態で作業を行う必要があります。

$ sudo cfdisk /dev/sdb

                           cfdisk (util-linux 2.20.1)

                              Disk Drive: /dev/sdb
                        Size: 2004877312 bytes, 2004 MB
              Heads: 42   Sectors per Track: 42   Cylinders: 2219

    Name        Flags      Part Type  FS Type          [Label]        Size (MB)
 ------------------------------------------------------------------------------
                            Pri/Log   Free Space                           0.04*
    sdb1        Boot        Primary   Linux                             2004.85*




     [   Help   ]  [   New    ]  [  Print   ]  [   Quit   ]  [  Units   ]
     [  Write   ]

                      Create new partition from free space

パーティションをいじった際はsudo partprobeか再起動してパーティションを変更したことを正しくOSに認識してもらいます。
OSが認識してくれたらフォーマットしラベルをつけマウントします。今回は「tinycore」という名前でつけました。

$ sudo mkfs.ext3 /dev/sdb1
$ sudo e2label /dev/sdb1 tinycore
$ sudo mount /dev/sdb1 /mnt

必要なファイルのコピー

展開するための作業用ディレクトリを作成します。

$ mkdir -p tinycore/iso
$ cd tinycore

Tiny Core Linuxのダウンロードページ」からCoreをダウンロードします。パスが分かっていればwget -N http://tinycorelinux.net/7.x/x86/release/Core-current.isoのような感じでダウンロードすることもできます。

ダウンロードしたISOファイルをマウントし必要なファイルをコピーします。

$ sudo mount -o loop Core-current.iso iso
$ sudo mkdir /mnt/boot
$ sudo cp iso/boot/vmlinuz /mnt/boot
$ sudo cp iso/boot/core.gz /mnt/boot

$ sudo mkdir /mnt/tce
$ sudo touch /mnt/tce/mydata.tgz
$ sudo chmod -R 755 /mnt/tce
$ sudo chown -R 1001:50 /mnt/tce

GRUBの登録

Tiny Core Linuxのgrubのパッケージをダウンロードし解凍します。解凍したものから必要なファイルをコピーします。

$ wget -N http://tinycorelinux.net/7.x/x86/tcz/grub-0.97-splash.tcz
$ unsquashfs grub-0.97-splash.tcz 
$ sudo mkdir /mnt/boot/grub
$ sudo cp squashfs-root/usr/lib/grub/i386-pc/* /mnt/boot/grub

grubのメニューを登録します。

$ sudo vi /mnt/boot/grub/menu.lst
/mnt/boot/grub/menu.lst
default 0
timeout 3
title tinycore
kernel /boot/vmlinuz quiet waitusb=5 consoleblank=0 blacklist=pcspkr  tz=JST-9 notuc
initrd /boot/core.gz

今回指定したカーネルパラメーターの意味は以下のような感じです。

  • 「consoleblank=0」10分経っても画面がブラックアウトしないように
  • 「blacklist=pcspkr」モジュールを無効にしてビープ音が鳴らないように
  • 「tz=JST-9 notuc」タイムゾーンを日本に

grubを起動しroot と setup コマンドを使ってブートローダーを登録します。バッチモードで一気に実行してしまいます。

$ /bin/echo -e "root (hd1,0)\nsetup (hd1)" | sudo squashfs-root/usr/sbin/grub --batch
Probing devices to guess BIOS drives. This may take a long time.


    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

       [ Minimal BASH-like line editing is supported.   For
         the   first   word,  TAB  lists  possible  command
         completions.  Anywhere else TAB lists the possible
         completions of a device/filename. ]
grub> root (hd1,0)
 Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd1)"...  16 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd1) (hd1)1+16 p (hd1,0)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded
Done.

これで完了です。シャットダウン又はリブートしてUSBメモリからブートします。

アプリのインストール

インターネットが使えない環境やネットワークデバイスが認識されないPCもあるので、事前に必要なアプリをUbuntu上でダウンロード&インストールする方法です。

まずは簡単&適当なダウンローダーを作ります。

tce-dl.sh
#!/bin/sh

tcz=$1
[ ! "$(echo $tcz|grep tcz)" ] && tcz=$1.tcz
[ -e tce/optional ] && mkdir -p tce/optional
[ -e tce/optional/$tcz ] && exit 0
wget -NP tce/optional http://tinycorelinux.net/7.x/x86/tcz/$tcz
wget -NP tce/optional http://tinycorelinux.net/7.x/x86/tcz/$tcz.dep
wget -NP tce/optional http://tinycorelinux.net/7.x/x86/tcz/$tcz.md5.txt

[ $# -eq 1 ] && echo $tcz >> tce/onboot.lst 
[ ! -e tce/optional/$tcz.dep ] && exit 0
for f in $(cat tce/optional/$tcz.dep);do
  $0 $f noonboot
done

先ほど作成したダウンローダーを使って欲しいアプリをダウンロードします。

$ ./tce-dl.sh coreutils #shredを使うため
$ ./tce-dl.sh smartmontools #smartctlを使うため
$ ./tce-dl.sh hdparm #Secure Eraseを使うため
$ ./tce-dl.sh e2fsprogs #badblocksを使うため

起動時に読み込まれるアプリの一覧が作成されたかを確認します。

$ cat tce/onboot.lst 
coreutils.tcz
smartmontools.tcz
hdparm.tcz
e2fsprogs.tcz

USBメモリにコピーして完了です。

$ sudo mkdir /mnt/tce/optional
$ sudo cp tce/optional/* /mnt/tce/optional
$ sudo cp tce/onboot.lst* /mnt/tce
$ sudo chmod -R 755 /mnt/tce
$ sudo chown -R 1001:50 /mnt/tce

ホームディレクトリにファイルを設置

ホームディレクトリに自前で作成したスクリプトやファイルを設置する方法です。今回はサンプルとして以前作成した消去スクリプト(erase.sh)をホームディレクトリに設置してみます。

まずは作業用ディレクトリを作成します。

$ mkdir -p home/tc

作成した作業用ディレクトリに設置したいファイルを作成します。

$ vi home/tc/erase.sh
home/tc/erase.sh
#!/bin/sh
sudo sh -c "echo mem > /sys/power/state"
sudo hdparm -I /dev/sda >> log.txt 2>&1
if [ "$(sudo hdparm -I /dev/sda | grep 'for ENHANCED')" ]; then
    echo "Run Enhanced Erase" >> log.txt
    sudo hdparm --security-set-pass pass /dev/sda
    time sudo hdparm --security-erase-enhanced pass /dev/sda >> log.txt 2>&1
    sudo hdparm --security-unlock pass /dev/sda
elif [ "$(sudo hdparm -I /dev/sda | grep 'for SECURITY')" ]; then
    echo "Run Secure Erase" >> log.txt
    sudo hdparm --security-set-pass pass /dev/sda
    time sudo hdparm --security-erase pass /dev/sda >> log.txt 2>&1
    sudo hdparm --security-unlock pass /dev/sda
else
    echo "Run shred" >> log.txt
    time shred -n 1 /dev/sda >> log.txt 2>&1
fi
dd if=/dev/sda bs=32 count=1 | hexdump -C >> log.txt
dd if=/dev/sda bs=128M count=1 | cmp /dev/zero >> log.txt 2>&1
badblocks -v /dev/sda 2>> log.txt
echo "ID# ATTRIBUTE_NAME          VALUE WORST THRESH TYPE      RAW_VALUE" >> log.txt
sudo smartctl -A /dev/sda |egrep "^(  1|  5|19[6-8])" |sed -r "s/(0x[0-9a-f]+|Always|Offline|\-) +//g" >> log.txt
date >> log.txt
if [ ! "$(cat .profile | grep log.txt)" ]; then
        echo "cat log.txt" >> .profile
fi
filetool.sh -b
sudo reboot

作成したらパーミッションを設定して圧縮します。

$ chmod 755 home/tc/erase.sh
$ tar --owner=1001 --group=50 -czv home > tce/mydata.tgz

USBメモリーにコピーして完了です。

$ sudo cp tce/mydata.tgz /mnt/tce/
$ sudo chown 1001:50 /mnt/tce/mydata.tgz
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?