お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-03-30 15:22:01

nanaya
メンバ
登録日: 2010-03-12

USBブート

Ubuntu 8.04 on USB HDD : 複数のPCで使う新しい方法
https://forums.ubuntulinux.jp/viewtopic.php?id=2057

この方法でUSBにubuntuをインストールして使おうとしているのですが、LiveCDでUSBブートを作ったPCでしか起動しません

ほかのパソコンではブートCDが起動してもエラー15というのが出てしまいUSBメモリを認識していないみたいなのですがどうしたものでしょう・・・

やはり、バージョンが違うとできないのでしょうか?ちなみにバージョンは8.10ですが、8.10ではこの方法を使えないのでしょうか?

初心者なのでなんとか助けてやってください、お願いします。

オフライン

 

#2 2010-03-30 18:19:39

hir0
メンバ
登録日: 2008-09-28

Re: USBブート

https://wiki.ubuntulinux.jp/UbuntuTips/UsbInstall/InstalltoUSBStorage
まず確認です。
URLの方法と照らし合わせて、手順10は間違いなく実行されたでしょうか。

ブートローダーをHDD(/dev/sda)では無くUSBメモリ(おそらく/deb/sdb)にインストールする必要が有ります。
USBメモリを抜いた状態でPCを起動して内蔵HDDのOSは起動しますか?


問題の改善には以下のURLを実行して下さい。
https://wiki.ubuntulinux.jp/UbuntuTips/Others/RepairMbrWithGrub

nanayaさんの状況により
・GRUBの更新
・GRUBのインストール
・設定ファイルの更新
が必要です。

URLの手順2はGRUBを新規インストールする場合です。
既にインストールされている場合は効果がありませんので、手順2の所で
$ update-grub

を実行して下さい、設定ファイル等を更新してくれます。

それから結果を報告下さい。
(出来れば上段のURLを手本に再インストール、もしくは手順の再確認を行って頂くとこちらも状況が読みやすいのですが)

オフライン

 

#3 2010-03-30 21:53:31

hir0
メンバ
登録日: 2008-09-28

Re: USBブート

あーーー!
思いっきり勘違いしていました、ゴメンなさい。

「起動ディスクを使用してUSBメモリから起動できない」
・インストールを行ったPCからは起動できる。
・他のPCからはエラー15で起動できない

えーと、まずUbuntuのバージョンですが関係ありませんがブートローダーのバージョンは大事です。
8.10は問題ないですが、9.04はユーザーの意思で、9.10以降はデフォルトで新バージョンのGRUBが採用されていますので入れ替えるか新しい起動ディスクを作らなければいけません。

エラーはアバウトな表現ですが、起動に必要なファイルを見失って居ます。
USBメモリには必要なファイルは有るはずなので、GRUBはUSBメモリ以外のデバイスを読みに行っているのでしょう。

起動ディスクを開いて bootフォルダが存在すれば中にあるgrubフォルダを開いて「menu.lst」と「device.map」の中身を教えて下さい。

それに加えて起動できるPCで、
$ sudo fdisk -l

起動できないPCからはUSBメモリを挿した状態でライブCDから起動して
$ sudo fdisk -l

この台のPCでの$ sudo fdisk -l の結果と起動ディスクの「menu.lst」と「device.map」をコピペで張り付けてください。

オフライン

 

#4 2010-03-30 21:55:17

hir0
メンバ
登録日: 2008-09-28

Re: USBブート

この台のPCでの$ sudo fdisk -l の結果 → この台のPCでの$ sudo fdisk -l の結果

オフライン

 

#5 2010-03-30 22:43:30

kiyop
拒否
From: http://kiyoandkei.bbs.fc2.com/
登録日: 2010-01-23

Re: USBブート

※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。

オフライン

 

#6 2010-03-30 22:57:57

nanaya
メンバ
登録日: 2010-03-12

Re: USBブート

menu.lstは

# menu.lst - See: grub(8), info grub, update-grub(8)
#            grub-install(8), grub-floppy(8),
#            grub-md5-crypt, /usr/share/doc/grub
#            and /usr/share/doc/grub-doc/.

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not use 'savedefault' or your
# array will desync and will not let you boot your system.
default        0

## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout        10

## hiddenmenu
# Hides the menu by default (press ESC to see the menu)
#hiddenmenu

# Pretty colours
color black/cyan blink-red/cyan

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line)  and entries protected by the
# command 'lock'
# e.g. password topsecret
#      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret

#
# examples
#
# title        Windows 95/98/NT/2000
# root        (hd0,0)
# makeactive
# chainloader    +1
#
# title        Linux
# root        (hd0,1)
# kernel    /vmlinuz root=/dev/hda2 ro
#

#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below

## DO NOT UNCOMMENT THEM, Just edit them to your needs

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
##      kopt_2_6_8=root=/dev/hdc1 ro
##      kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=UUID=5aa75fef-0eaf-43e0-995e-189a30f9d118 ro

## default grub root device
## e.g. groot=(hd0,0)
# groot=5aa75fef-0eaf-43e0-995e-189a30f9d118

## should update-grub create alternative automagic boot options
## e.g. alternative=true
##      alternative=false
# alternative=true

## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
##      lockalternative=false
# lockalternative=false

## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet splash

## should update-grub lock old automagic boot options
## e.g. lockold=false
##      lockold=true
# lockold=false

## Xen hypervisor options to use with the default Xen boot option
# xenhopt=

## Xen Linux kernel options to use with the default Xen boot option
# xenkopt=console=tty0

## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
##      altoptions=(recovery) single
# altoptions=(recovery mode) single

## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
##      howmany=7
# howmany=all

## should update-grub create memtest86 boot option
## e.g. memtest86=true
##      memtest86=false
# memtest86=true

## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false

## should update-grub add savedefault to the default options
## can be true or false
# savedefault=false

## ## End Default Options ##

title        Ubuntu 8.10, kernel 2.6.27-7-generic
uuid        5aa75fef-0eaf-43e0-995e-189a30f9d118
kernel        /boot/vmlinuz-2.6.27-7-generic root=UUID=5aa75fef-0eaf-43e0-995e-189a30f9d118 ro quiet splash
initrd        /boot/initrd.img-2.6.27-7-generic
quiet

title        Ubuntu 8.10, kernel 2.6.27-7-generic (recovery mode)
uuid        5aa75fef-0eaf-43e0-995e-189a30f9d118
kernel        /boot/vmlinuz-2.6.27-7-generic root=UUID=5aa75fef-0eaf-43e0-995e-189a30f9d118 ro  single
initrd        /boot/initrd.img-2.6.27-7-generic

title        Ubuntu 8.10, memtest86+
uuid        5aa75fef-0eaf-43e0-995e-189a30f9d118
kernel        /boot/memtest86+.bin
quiet

device.mapは

(hd0)    /dev/sda
(hd1)    /dev/sdb

でした

オフライン

 

#7 2010-03-30 23:19:39

hir0
メンバ
登録日: 2008-09-28

Re: USBブート

ブートローダーをwikiにまとめられたのですね。

通常?ブートローダーは何らかの方法でデバイス(HDD、パーティション、USBメモリ&HDD等)を読み込みます。
CDにインストールしたブートローダーからその機能が働くので有れば、nanayaさんの問題は苦もなく解決できます。

まだ情報が無いので原因を特定で来ていませんがGRUBではテキスト形式の設定を読み込むので自動で探し出してくれる事は、かなりスマートだと思います#5のリンクを参照して下さい(出きるかどうかの確認はしていません、)

GRUBにこだわりが無ければ色々なブートローダーを試してnanayaさんの使用状況や嗜好に叶うものをチョイスするのも選択肢です。


[使用状況,etc...]
・使うPCはある程度決まっている or 不特定である
・各ブートローダーの見た目の問題
・カスタマイズ性

話が変わってきていますが気にしないでください。
と言うのもkiyopさんも書かれている通り、設定さえ上手くいけば、もしくは環境が変わった状態でも上手く変化を設定に反映できれば問題は無いので、「起動できない」=「無理」では無いので安心して下さい。
(PCとの相性のトラブルは省きます)

オフライン

 

#8 2010-03-30 23:38:25

hir0
メンバ
登録日: 2008-09-28

Re: USBブート

あら、遅くまで起きて居られたのですね。
#6の投稿、ありがとうございます。

これで起動ディスクがどの様な設定を使っているか分かりました。

後の情報が遅れているのはコマンドでの操作が苦手なのかもしれませんね。
アプリケーション→アクセサリ→「端末」を起動すると「$」マークが現れます。

$ に続いて sudo fdisk -l と半角英数でタイプして下さい。 最後の l は小文字のエルです。

パスワードを聞かれますがログインパスワードを入力して下さい。
文字は表示されませんしカーソルも動きませんが正常です。
間違い無い様に入力したら「エンター」keyを。
ライブCDからの場最はパスワードは求められないかもしれません。

もう一つ情報が欲しいです。
#6のmenu.lstはUSBメモリをUUIDと言うIDを使用して認識していますので、起動できないPCでUSBメモリのUUIDがどう認識されているのかが気になります。

起動できない方のPCにUSBメモリを挿した状態で、端末から
sudo blkid /dev/sdb1

と入力して結果をお願いします。
注)sudo blkid /dev/sdb1 の sdb1 はUSBメモリのデバイスファイル名です、分からなければsudo fdisk -l の結果を先に下さい。

オフライン

 

#9 2010-03-31 00:08:06

nanaya
メンバ
登録日: 2010-03-12

Re: USBブート

使えないPC

Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
Disk identifier: 0x073b869b

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         183     1464320   27  不明
Partition 1 does not end on cylinder boundary.
/dev/sda2             183       26735   213280768    7  HPFS/NTFS
/dev/sda3           26735       28559    14648320    7  HPFS/NTFS
/dev/sda4           28559       30402    14803128   27  不明

Disk /dev/sdb: 32.0 GB, 32078036992 bytes
255 heads, 63 sectors/track, 3899 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
Disk identifier: 0xc3072e18

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1        3797    30499371   83  Linux
/dev/sdb2            3798        3899      819315   82  Linux swap / Solaris

使えるPC

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
Disk identifier: 0x2da92da8

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        6687    53713296    7  HPFS/NTFS
/dev/sda2            6688       19457   102575025    7  HPFS/NTFS

Disk /dev/sdb: 32.0 GB, 32078036992 bytes
255 heads, 63 sectors/track, 3899 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
Disk identifier: 0xc3072e18

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1        3797    30499371   83  Linux
/dev/sdb2            3798        3899      819315   82  Linux swap / Solaris
でした

オフライン

 

#10 2010-03-31 00:32:08

nanaya
メンバ
登録日: 2010-03-12

Re: USBブート

遅くなってすいません…

/dev/sdb1: UUID="5aa75fef-0eaf-43e0-995e-189a30f9d118" TYPE="ext3"

あとこれでしたね、ではなにとぞよろしくお願いします

オフライン

 

#11 2010-03-31 21:12:16

hir0
メンバ
登録日: 2008-09-28

Re: USBブート

すみません、予想が外れてしまいました。

どちらのPCもUSBメモリの認識のしかたは同じでした、もちろん起動ディスクやUSBのUbuntuの設定も同じです。

稀に有るGRUBとハードの相性かもしれません(私の環境ではGRUB2から使用で切るようになりました)。
GRUBコマンドを駆使する方法も有るかもしれませんが、それは指揮者の方の登場に任せます。

私の方ではブートローダーを変えてみるのを提案します。
--------------------------------------------------------------
USBメモリではなく起動CDだと焼く手間が有りますので、手始めに ライブCDを起動ディスク代わりにして試して下さい。
https://wiki.ubuntulinux.jp/UbuntuTips/Others/RepairMbrWithGrub

手順1で起動するか試してください。
「boot=casper」を「root=/dev/sdb1」に変更です(手順2は実行しないでください)

まず間違いなく起動するはずです。

次にもう一度再起動、今度は「boot=casper」を「root=UUID=5aa75fef-0eaf-43e0-995e-189a30f9d118」

この方法は「isolinux」を利用した起動方法に当たります。
--------------------------------------------------------------
無事に起動できれば

・GRUBの問題である
・isolinuxは有効である

以上の事から他のブートローダーを使用すれば問題が解決するでしょう。

isolinux の起動ディスクは「スクリプト」形式の実行ファイルにしてあるので(多分、、、)後でURLを書き込みます。
GRUBについては私の場合「GRUB 2」から使用出きるようになったので他の候補も合わせて選考してみて下さい。

個人的にはトラブル時の助けが多いであろう「GRUB 2」で起動ディスクを作成する事ですが他にはkiyopさんのURLを参考にしてみて下さい。
--------------------------------------------------------------
お使いのPC(自宅)だけで起動ディスクを使用するのでしたら「grub4dos」を使用するとWindows環境でLinuxを起動できるようになります。
今回の状況での
メリットは、「起動ディスクを使用しなくても良く、USBだけの移動でスマートである」
デメリットは「USBブート出来ないWindows PC 全てにgrub4dosを入れなくてはイケない」

個人的に自宅で2~3台ならデメリットに感じないですがどうでしょうか、
その他のブートローダーにしても、ビジュアル的な違いはメニューの表示とカスタマイズ性位です。

まずはライブCDを利用してダメな方のPCでUSBから起動できるかの確認をしてみて下さい。

オフライン

 

#12 2010-03-31 21:32:05

hir0
メンバ
登録日: 2008-09-28

Re: USBブート

↑(訂正) 指揮者 → 識者

isolinux を使用した方法です。
https://forums.ubuntulinux.jp/viewtopic.php?pid=32085#p32085
#1~#5 辺りに目を通して見て下さい

使い方でファイルを「boot.sh」で保存と有りますが、名前が衝突する場合は他の名前で構いませんので半角英数で変更してください。
その場合、#2の実行方法内の「boot.sh」も変更した名称に差し替えて実行して下さい。

nanayaさんの環境に合わせて設定ファイル(メニュー部分)をよりスマートに書き換えた方が良いかも。

以下にスクリプトを張り付けます。
#!/bin/bash を含む全てをコピーしてください(#---ここまで-----は含まれても含まれなくても構いません)



#+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*



#!/bin/bash

clear
cd

kstinf=($(ls /lib/modules))
putnum=0
echo -e "--------------------------------------------\n"
echo -e "\tmake boot cd \n"
echo -e "--------------------------------------------\n"
echo -e "\tUSBデバイスで使用しているカーネルを選択して下さい"
echo -e " 左の番号を入力してエンタ−キーを押してください"
while :
do
    for ((u=0; u<${#kstinf[*]}; u++)) do
        if [ "$u" -eq "$putnum" ]; then
            attbl[$u]="tput rev"
        else
            attbl[$u]=""
        fi
    done
    for ((i=0; i<${#kstinf[*]}; i++)) do
        tp=`expr $i + 1`
        tput cup `expr $i + 12`
        echo -e "\t  [`expr $i + 1`]: `${attbl[$tp]}` ${kstinf[i]} `tput sgr0`"
    done
    echo -e "\n\t 入力:"
    if [ "$putnum" -eq 0 ]; then
        tput cup `expr ${#kstinf[*]} + 13` 15
        read cip
        for ((jag = 0; jag<=${#kstinf[*]}; jag ++)) do
            if [ $cip == $jag ]; then
                fla=1
                break
            else
                fla=0
            fi
        done
        if [ $fla = 0 ]; then
            echo -e "不正な入力値です終了します"
            exit
        fi
        if [ "$cip" -lt 1 -o "$cip" -gt ${#kstinf[*]} ]; then
            putnum=0
        else
            putnum=$cip
            echo -e "\t ${kstinf[`expr $putnum - 1`]} を選択しました"
            break
        fi
    fi
done
vm=$(ls /boot | grep vmlinuz-${kstinf[`expr $putnum - 1`]})
ini=$(ls /boot | grep initrd.img-${kstinf[`expr $putnum - 1`]})

echo -e "\n\t ディスクイメージファイルを作成します\n" 
echo -e "\t$vm\n\t$ini\n\t'bootcd.iso'"
echo -e "ホームフォルダにTemporary.9.Folderが作成されます\n"
echo -e "\t    [Yes or No(y/n)] "

tput sc;tput cup 22 28
read ans
if [ $ans = y ] || [ $ans = n ]; then
    while :
    do
        case $ans in
            y ) echo -e "\t\t処理中です"
                   fl=1
                break ;;
            n ) echo -e "\t\t中断します"0

                   fl=0
                   break ;;
        esac
    done
else
    echo -e "\tIt is only 'y' or 'n'"
fi

if [ $fl =  0 ]; then
    exit
fi

if [ $fl = 1 ]; then
    mkdir -p Temporary.9.Folder/isolinux Temporary.9.Folder/casper
    cd ~/Temporary.9.Folder
    cp /boot/$vm casper/vmlinuz
    cp /boot/$ini casper/initrd.gz
    cp /usr/lib/syslinux/vesamenu.c32 isolinux
    cp /usr/lib/syslinux/isolinux.bin isolinux
        cat > isolinux/isolinux.cfg << EOF
default vesamenu.c32
prompt 0
menu title Please start to choose
menu tabmsg -- Press [Tab] key to keanel option /exit to [Esc] key --
timeout 30
label sdb1
  menu label Start device is sdb1
  menu default
  kernel /casper/vmlinuz
  append initrd=/casper/initrd.gz root=/dev/sdb1 ro quiet splash --

label sdb2
  menu label Start device is sdb2
  kernel /casper/vmlinuz
  append initrd=/casper/initrd.gz root=/dev/sdb2 ro quiet splash --

label sdc1
  menu label Start device is sdc1
  kernel /casper/vmlinuz
  append initrd=/casper/initrd.gz root=/dev/sdc1 ro quiet splash --
EOF

    sudo genisoimage -R -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o bootcd.iso ./
    sudo sync
fi
echo -e "場所、ホームフォルダにあるTemporary.9.Folderの中にあるbootcd.isoをディスクに焼いてください"

#----"ここまで"---------------

オフライン

 

#13 2010-03-31 21:48:48

hir0
メンバ
登録日: 2008-09-28

Re: USBブート

あ~、、、isolinuxにはカーネルのアップデート後は作り直さないといけない手間がありましたねorz

別のブートローダーで「チェインロード」と言われる手順で起動させるとカーネルアップデートにも耐えれるのですが、情報をどんどん入れると混乱すると思いますので、取りあえず起動を試してみるか、情報を募って取捨選択されるかをお任せします。

オフライン

 

#14 2010-04-01 23:51:16

nanaya
メンバ
登録日: 2010-03-12

Re: USBブート

返信ありがとうございます。

ちょっと昨日、今日と私用でできなかったため。明日挑戦したいと思います

オフライン

 

#15 2010-04-03 10:12:08

jackalope
メンバ
登録日: 2009-01-01

Re: USBブート

nanayaさん による投稿:

Ubuntu 8.04 on USB HDD : 複数のPCで使う新しい方法
https://forums.ubuntulinux.jp/viewtopic.php?id=2057
この方法でUSBにubuntuをインストールして使おうとしているのですが、LiveCDでUSBブートを作ったPCでしか起動しません
ほかのパソコンではブートCDが起動してもエラー15というのが出てしまいUSBメモリを認識していないみたいなのですがどうしたものでしょう・・・
やはり、バージョンが違うとできないのでしょうか?ちなみにバージョンは8.10ですが、8.10ではこの方法を使えないのでしょうか?

起動するPCはBIOSがUSBからの起動をサポートしていて、起動しないPCはサポートしていないのでしょう。
起動するPCはBIOSをUSBから起動するように設定すれば今回作ったCDROMを使用しなくてもUbuntuが起動するはずです。
起動しないPCはBIOSがUSBからの起動に対応していないと思われますのでUSBのUbuntuを起動するCDROMが必要になるのですが、今回作ったCDROMはUbuntuのバージョンの違いが原因と思われる不具合があり正常な物ではない。
リンク先のスクリプトは8.04用であり8.10では使えない。
不具合の箇所は、menu.lstのuuid        5aa75fef-0eaf-43e0-995e-189a30f9d118です。
この行を削除かroot (cd)にすれば起動しないPCも起動するはずです。

オフライン

 

#16 2010-04-03 23:08:49

hir0
メンバ
登録日: 2008-09-28

Re: USBブート

あ~ゴメンなさい、ダメな所を見つけられませんでした。

jackalopeさんがご指摘されている箇所は太字の所です。

title        Ubuntu 8.10, kernel 2.6.27-7-generic
uuid        5aa75fef-0eaf-43e0-995e-189a30f9d118
kernel        /boot/vmlinuz-2.6.27-7-generic root=UUID=5aa75fef-0eaf-43e0-995e-189a30f9d118 ro quiet splash
initrd        /boot/initrd.img-2.6.27-7-generic
quiet

さて、書き換えてisoを作り直すのですが、、、、

「boot-hdd.sh」の10行め辺りにある

sed -i -e 's/hd0,0/cd/' bootcd/boot/grub/menu.lst

の下に次の一行を追加して下さい。

sed -i -e 's/^uuid/root\t(cd)\n\#/g' bootcd/boot/grub/menu.lst

これで8.10と9.04に対応したスクリプトに変更出来ます(のはず)

オフライン

 

#17 2010-04-06 21:22:34

nanaya
メンバ
登録日: 2010-03-12

Re: USBブート

毎回返信が遅れてすみません

hir0さんに最後に示していただいた方法でやった結果異なる複数のパソコンでUSBブートできました。

この初心者にお付き合いいただき本当にありがとうございました

オフライン

 

#18 2010-04-06 23:22:36

hir0
メンバ
登録日: 2008-09-28

Re: USBブート

nanaya さんへ 
いえ、私の方こそ jackalope さんが登場されなかったら違う起動ディスクや、アレやコレやと引っ張りまわしていたかと思うと恥ずかしい限りです。

jackalope さん、有難うございました。

オフライン

 

Board footer

Powered by FluxBB